packages feed

amazonka-evidently (empty) → 2.0

raw patch · 189 files changed

+19923/−0 lines, 189 filesdep +amazonka-coredep +amazonka-evidentlydep +amazonka-test

Dependencies added: amazonka-core, amazonka-evidently, 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 CloudWatch Evidently SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2021-02-01@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-evidently)+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.Evidently](http://hackage.haskell.org/package/amazonka-evidently/docs/Amazonka-Evidently.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-evidently` 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-evidently.cabal view
@@ -0,0 +1,184 @@+cabal-version:      2.2+name:               amazonka-evidently+version:            2.0+synopsis:           Amazon CloudWatch Evidently 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 @2021-02-01@ of the AWS service descriptions, licensed under Apache 2.0.+  .+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.+  .+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.+  .+  Generated lenses can be found in "Amazonka.Evidently.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.Evidently" 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-evidently++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.Evidently+    Amazonka.Evidently.BatchEvaluateFeature+    Amazonka.Evidently.CreateExperiment+    Amazonka.Evidently.CreateFeature+    Amazonka.Evidently.CreateLaunch+    Amazonka.Evidently.CreateProject+    Amazonka.Evidently.CreateSegment+    Amazonka.Evidently.DeleteExperiment+    Amazonka.Evidently.DeleteFeature+    Amazonka.Evidently.DeleteLaunch+    Amazonka.Evidently.DeleteProject+    Amazonka.Evidently.DeleteSegment+    Amazonka.Evidently.EvaluateFeature+    Amazonka.Evidently.GetExperiment+    Amazonka.Evidently.GetExperimentResults+    Amazonka.Evidently.GetFeature+    Amazonka.Evidently.GetLaunch+    Amazonka.Evidently.GetProject+    Amazonka.Evidently.GetSegment+    Amazonka.Evidently.Lens+    Amazonka.Evidently.ListExperiments+    Amazonka.Evidently.ListFeatures+    Amazonka.Evidently.ListLaunches+    Amazonka.Evidently.ListProjects+    Amazonka.Evidently.ListSegmentReferences+    Amazonka.Evidently.ListSegments+    Amazonka.Evidently.ListTagsForResource+    Amazonka.Evidently.PutProjectEvents+    Amazonka.Evidently.StartExperiment+    Amazonka.Evidently.StartLaunch+    Amazonka.Evidently.StopExperiment+    Amazonka.Evidently.StopLaunch+    Amazonka.Evidently.TagResource+    Amazonka.Evidently.TestSegmentPattern+    Amazonka.Evidently.Types+    Amazonka.Evidently.Types.ChangeDirectionEnum+    Amazonka.Evidently.Types.CloudWatchLogsDestination+    Amazonka.Evidently.Types.CloudWatchLogsDestinationConfig+    Amazonka.Evidently.Types.EvaluationRequest+    Amazonka.Evidently.Types.EvaluationResult+    Amazonka.Evidently.Types.EvaluationRule+    Amazonka.Evidently.Types.Event+    Amazonka.Evidently.Types.EventType+    Amazonka.Evidently.Types.Experiment+    Amazonka.Evidently.Types.ExperimentBaseStat+    Amazonka.Evidently.Types.ExperimentExecution+    Amazonka.Evidently.Types.ExperimentReport+    Amazonka.Evidently.Types.ExperimentReportName+    Amazonka.Evidently.Types.ExperimentResultRequestType+    Amazonka.Evidently.Types.ExperimentResultResponseType+    Amazonka.Evidently.Types.ExperimentResultsData+    Amazonka.Evidently.Types.ExperimentSchedule+    Amazonka.Evidently.Types.ExperimentStatus+    Amazonka.Evidently.Types.ExperimentStopDesiredState+    Amazonka.Evidently.Types.ExperimentType+    Amazonka.Evidently.Types.Feature+    Amazonka.Evidently.Types.FeatureEvaluationStrategy+    Amazonka.Evidently.Types.FeatureStatus+    Amazonka.Evidently.Types.FeatureSummary+    Amazonka.Evidently.Types.Launch+    Amazonka.Evidently.Types.LaunchExecution+    Amazonka.Evidently.Types.LaunchGroup+    Amazonka.Evidently.Types.LaunchGroupConfig+    Amazonka.Evidently.Types.LaunchStatus+    Amazonka.Evidently.Types.LaunchStopDesiredState+    Amazonka.Evidently.Types.LaunchType+    Amazonka.Evidently.Types.MetricDefinition+    Amazonka.Evidently.Types.MetricDefinitionConfig+    Amazonka.Evidently.Types.MetricGoal+    Amazonka.Evidently.Types.MetricGoalConfig+    Amazonka.Evidently.Types.MetricMonitor+    Amazonka.Evidently.Types.MetricMonitorConfig+    Amazonka.Evidently.Types.OnlineAbConfig+    Amazonka.Evidently.Types.OnlineAbDefinition+    Amazonka.Evidently.Types.Project+    Amazonka.Evidently.Types.ProjectAppConfigResource+    Amazonka.Evidently.Types.ProjectAppConfigResourceConfig+    Amazonka.Evidently.Types.ProjectDataDelivery+    Amazonka.Evidently.Types.ProjectDataDeliveryConfig+    Amazonka.Evidently.Types.ProjectStatus+    Amazonka.Evidently.Types.ProjectSummary+    Amazonka.Evidently.Types.PutProjectEventsResultEntry+    Amazonka.Evidently.Types.RefResource+    Amazonka.Evidently.Types.S3Destination+    Amazonka.Evidently.Types.S3DestinationConfig+    Amazonka.Evidently.Types.ScheduledSplit+    Amazonka.Evidently.Types.ScheduledSplitConfig+    Amazonka.Evidently.Types.ScheduledSplitsLaunchConfig+    Amazonka.Evidently.Types.ScheduledSplitsLaunchDefinition+    Amazonka.Evidently.Types.Segment+    Amazonka.Evidently.Types.SegmentOverride+    Amazonka.Evidently.Types.SegmentReferenceResourceType+    Amazonka.Evidently.Types.Treatment+    Amazonka.Evidently.Types.TreatmentConfig+    Amazonka.Evidently.Types.VariableValue+    Amazonka.Evidently.Types.Variation+    Amazonka.Evidently.Types.VariationConfig+    Amazonka.Evidently.Types.VariationValueType+    Amazonka.Evidently.UntagResource+    Amazonka.Evidently.UpdateExperiment+    Amazonka.Evidently.UpdateFeature+    Amazonka.Evidently.UpdateLaunch+    Amazonka.Evidently.UpdateProject+    Amazonka.Evidently.UpdateProjectDataDelivery+    Amazonka.Evidently.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-evidently-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.Evidently+    Test.Amazonka.Evidently.Internal+    Test.Amazonka.Gen.Evidently++  build-depends:+    , amazonka-core         >=2.0 && <2.1+    , amazonka-evidently+    , amazonka-test         >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/BatchEvaluateFeature.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/BatchEvaluateFeatureResponse.proto view
+ fixture/CreateExperiment.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/CreateExperimentResponse.proto view
+ fixture/CreateFeature.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/CreateFeatureResponse.proto view
+ fixture/CreateLaunch.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/CreateLaunchResponse.proto view
+ fixture/CreateProject.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/CreateProjectResponse.proto view
+ fixture/CreateSegment.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/CreateSegmentResponse.proto view
+ fixture/DeleteExperiment.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/DeleteExperimentResponse.proto view
+ fixture/DeleteFeature.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/DeleteFeatureResponse.proto view
+ fixture/DeleteLaunch.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/DeleteLaunchResponse.proto view
+ fixture/DeleteProject.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/DeleteProjectResponse.proto view
+ fixture/DeleteSegment.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/DeleteSegmentResponse.proto view
+ fixture/EvaluateFeature.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/EvaluateFeatureResponse.proto view
+ fixture/GetExperiment.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/GetExperimentResponse.proto view
+ fixture/GetExperimentResults.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/GetExperimentResultsResponse.proto view
+ fixture/GetFeature.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/GetFeatureResponse.proto view
+ fixture/GetLaunch.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/GetLaunchResponse.proto view
+ fixture/GetProject.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/GetProjectResponse.proto view
+ fixture/GetSegment.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/GetSegmentResponse.proto view
+ fixture/ListExperiments.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/ListExperimentsResponse.proto view
+ fixture/ListFeatures.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/ListFeaturesResponse.proto view
+ fixture/ListLaunches.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/ListLaunchesResponse.proto view
+ fixture/ListProjects.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/ListProjectsResponse.proto view
+ fixture/ListSegmentReferences.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/ListSegmentReferencesResponse.proto view
+ fixture/ListSegments.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/ListSegmentsResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/PutProjectEvents.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/PutProjectEventsResponse.proto view
+ fixture/StartExperiment.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/StartExperimentResponse.proto view
+ fixture/StartLaunch.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/StartLaunchResponse.proto view
+ fixture/StopExperiment.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/StopExperimentResponse.proto view
+ fixture/StopLaunch.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/StopLaunchResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/TestSegmentPattern.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/TestSegmentPatternResponse.proto view
+ fixture/UntagResource.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/UpdateExperiment.yaml view
@@ -0,0 +1,10 @@+---+method: PATCH+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/UpdateExperimentResponse.proto view
+ fixture/UpdateFeature.yaml view
@@ -0,0 +1,10 @@+---+method: PATCH+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/UpdateFeatureResponse.proto view
+ fixture/UpdateLaunch.yaml view
@@ -0,0 +1,10 @@+---+method: PATCH+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/UpdateLaunchResponse.proto view
+ fixture/UpdateProject.yaml view
@@ -0,0 +1,10 @@+---+method: PATCH+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/UpdateProjectDataDelivery.yaml view
@@ -0,0 +1,10 @@+---+method: PATCH+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/evidently/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  evidently.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/UpdateProjectDataDeliveryResponse.proto view
+ fixture/UpdateProjectResponse.proto view
+ gen/Amazonka/Evidently.hs view
@@ -0,0 +1,598 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.Evidently+-- 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 @2021-02-01@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- You can use Amazon CloudWatch Evidently to safely validate new features+-- by serving them to a specified percentage of your users while you roll+-- out the feature. You can monitor the performance of the new feature to+-- help you decide when to ramp up traffic to your users. This helps you+-- reduce risk and identify unintended consequences before you fully launch+-- the feature.+--+-- You can also conduct A\/B experiments to make feature design decisions+-- based on evidence and data. An experiment can test as many as five+-- variations at once. Evidently collects experiment data and analyzes it+-- using statistical methods. It also provides clear recommendations about+-- which variations perform better. You can test both user-facing features+-- and backend features.+module Amazonka.Evidently+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** AccessDeniedException+    _AccessDeniedException,++    -- ** ConflictException+    _ConflictException,++    -- ** InternalServerException+    _InternalServerException,++    -- ** ResourceNotFoundException+    _ResourceNotFoundException,++    -- ** ServiceQuotaExceededException+    _ServiceQuotaExceededException,++    -- ** ServiceUnavailableException+    _ServiceUnavailableException,++    -- ** ThrottlingException+    _ThrottlingException,++    -- ** ValidationException+    _ValidationException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** BatchEvaluateFeature+    BatchEvaluateFeature (BatchEvaluateFeature'),+    newBatchEvaluateFeature,+    BatchEvaluateFeatureResponse (BatchEvaluateFeatureResponse'),+    newBatchEvaluateFeatureResponse,++    -- ** CreateExperiment+    CreateExperiment (CreateExperiment'),+    newCreateExperiment,+    CreateExperimentResponse (CreateExperimentResponse'),+    newCreateExperimentResponse,++    -- ** CreateFeature+    CreateFeature (CreateFeature'),+    newCreateFeature,+    CreateFeatureResponse (CreateFeatureResponse'),+    newCreateFeatureResponse,++    -- ** CreateLaunch+    CreateLaunch (CreateLaunch'),+    newCreateLaunch,+    CreateLaunchResponse (CreateLaunchResponse'),+    newCreateLaunchResponse,++    -- ** CreateProject+    CreateProject (CreateProject'),+    newCreateProject,+    CreateProjectResponse (CreateProjectResponse'),+    newCreateProjectResponse,++    -- ** CreateSegment+    CreateSegment (CreateSegment'),+    newCreateSegment,+    CreateSegmentResponse (CreateSegmentResponse'),+    newCreateSegmentResponse,++    -- ** DeleteExperiment+    DeleteExperiment (DeleteExperiment'),+    newDeleteExperiment,+    DeleteExperimentResponse (DeleteExperimentResponse'),+    newDeleteExperimentResponse,++    -- ** DeleteFeature+    DeleteFeature (DeleteFeature'),+    newDeleteFeature,+    DeleteFeatureResponse (DeleteFeatureResponse'),+    newDeleteFeatureResponse,++    -- ** DeleteLaunch+    DeleteLaunch (DeleteLaunch'),+    newDeleteLaunch,+    DeleteLaunchResponse (DeleteLaunchResponse'),+    newDeleteLaunchResponse,++    -- ** DeleteProject+    DeleteProject (DeleteProject'),+    newDeleteProject,+    DeleteProjectResponse (DeleteProjectResponse'),+    newDeleteProjectResponse,++    -- ** DeleteSegment+    DeleteSegment (DeleteSegment'),+    newDeleteSegment,+    DeleteSegmentResponse (DeleteSegmentResponse'),+    newDeleteSegmentResponse,++    -- ** EvaluateFeature+    EvaluateFeature (EvaluateFeature'),+    newEvaluateFeature,+    EvaluateFeatureResponse (EvaluateFeatureResponse'),+    newEvaluateFeatureResponse,++    -- ** GetExperiment+    GetExperiment (GetExperiment'),+    newGetExperiment,+    GetExperimentResponse (GetExperimentResponse'),+    newGetExperimentResponse,++    -- ** GetExperimentResults+    GetExperimentResults (GetExperimentResults'),+    newGetExperimentResults,+    GetExperimentResultsResponse (GetExperimentResultsResponse'),+    newGetExperimentResultsResponse,++    -- ** GetFeature+    GetFeature (GetFeature'),+    newGetFeature,+    GetFeatureResponse (GetFeatureResponse'),+    newGetFeatureResponse,++    -- ** GetLaunch+    GetLaunch (GetLaunch'),+    newGetLaunch,+    GetLaunchResponse (GetLaunchResponse'),+    newGetLaunchResponse,++    -- ** GetProject+    GetProject (GetProject'),+    newGetProject,+    GetProjectResponse (GetProjectResponse'),+    newGetProjectResponse,++    -- ** GetSegment+    GetSegment (GetSegment'),+    newGetSegment,+    GetSegmentResponse (GetSegmentResponse'),+    newGetSegmentResponse,++    -- ** ListExperiments (Paginated)+    ListExperiments (ListExperiments'),+    newListExperiments,+    ListExperimentsResponse (ListExperimentsResponse'),+    newListExperimentsResponse,++    -- ** ListFeatures (Paginated)+    ListFeatures (ListFeatures'),+    newListFeatures,+    ListFeaturesResponse (ListFeaturesResponse'),+    newListFeaturesResponse,++    -- ** ListLaunches (Paginated)+    ListLaunches (ListLaunches'),+    newListLaunches,+    ListLaunchesResponse (ListLaunchesResponse'),+    newListLaunchesResponse,++    -- ** ListProjects (Paginated)+    ListProjects (ListProjects'),+    newListProjects,+    ListProjectsResponse (ListProjectsResponse'),+    newListProjectsResponse,++    -- ** ListSegmentReferences (Paginated)+    ListSegmentReferences (ListSegmentReferences'),+    newListSegmentReferences,+    ListSegmentReferencesResponse (ListSegmentReferencesResponse'),+    newListSegmentReferencesResponse,++    -- ** ListSegments (Paginated)+    ListSegments (ListSegments'),+    newListSegments,+    ListSegmentsResponse (ListSegmentsResponse'),+    newListSegmentsResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** PutProjectEvents+    PutProjectEvents (PutProjectEvents'),+    newPutProjectEvents,+    PutProjectEventsResponse (PutProjectEventsResponse'),+    newPutProjectEventsResponse,++    -- ** StartExperiment+    StartExperiment (StartExperiment'),+    newStartExperiment,+    StartExperimentResponse (StartExperimentResponse'),+    newStartExperimentResponse,++    -- ** StartLaunch+    StartLaunch (StartLaunch'),+    newStartLaunch,+    StartLaunchResponse (StartLaunchResponse'),+    newStartLaunchResponse,++    -- ** StopExperiment+    StopExperiment (StopExperiment'),+    newStopExperiment,+    StopExperimentResponse (StopExperimentResponse'),+    newStopExperimentResponse,++    -- ** StopLaunch+    StopLaunch (StopLaunch'),+    newStopLaunch,+    StopLaunchResponse (StopLaunchResponse'),+    newStopLaunchResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** TestSegmentPattern+    TestSegmentPattern (TestSegmentPattern'),+    newTestSegmentPattern,+    TestSegmentPatternResponse (TestSegmentPatternResponse'),+    newTestSegmentPatternResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateExperiment+    UpdateExperiment (UpdateExperiment'),+    newUpdateExperiment,+    UpdateExperimentResponse (UpdateExperimentResponse'),+    newUpdateExperimentResponse,++    -- ** UpdateFeature+    UpdateFeature (UpdateFeature'),+    newUpdateFeature,+    UpdateFeatureResponse (UpdateFeatureResponse'),+    newUpdateFeatureResponse,++    -- ** UpdateLaunch+    UpdateLaunch (UpdateLaunch'),+    newUpdateLaunch,+    UpdateLaunchResponse (UpdateLaunchResponse'),+    newUpdateLaunchResponse,++    -- ** UpdateProject+    UpdateProject (UpdateProject'),+    newUpdateProject,+    UpdateProjectResponse (UpdateProjectResponse'),+    newUpdateProjectResponse,++    -- ** UpdateProjectDataDelivery+    UpdateProjectDataDelivery (UpdateProjectDataDelivery'),+    newUpdateProjectDataDelivery,+    UpdateProjectDataDeliveryResponse (UpdateProjectDataDeliveryResponse'),+    newUpdateProjectDataDeliveryResponse,++    -- * Types++    -- ** ChangeDirectionEnum+    ChangeDirectionEnum (..),++    -- ** EventType+    EventType (..),++    -- ** ExperimentBaseStat+    ExperimentBaseStat (..),++    -- ** ExperimentReportName+    ExperimentReportName (..),++    -- ** ExperimentResultRequestType+    ExperimentResultRequestType (..),++    -- ** ExperimentResultResponseType+    ExperimentResultResponseType (..),++    -- ** ExperimentStatus+    ExperimentStatus (..),++    -- ** ExperimentStopDesiredState+    ExperimentStopDesiredState (..),++    -- ** ExperimentType+    ExperimentType (..),++    -- ** FeatureEvaluationStrategy+    FeatureEvaluationStrategy (..),++    -- ** FeatureStatus+    FeatureStatus (..),++    -- ** LaunchStatus+    LaunchStatus (..),++    -- ** LaunchStopDesiredState+    LaunchStopDesiredState (..),++    -- ** LaunchType+    LaunchType (..),++    -- ** ProjectStatus+    ProjectStatus (..),++    -- ** SegmentReferenceResourceType+    SegmentReferenceResourceType (..),++    -- ** VariationValueType+    VariationValueType (..),++    -- ** CloudWatchLogsDestination+    CloudWatchLogsDestination (CloudWatchLogsDestination'),+    newCloudWatchLogsDestination,++    -- ** CloudWatchLogsDestinationConfig+    CloudWatchLogsDestinationConfig (CloudWatchLogsDestinationConfig'),+    newCloudWatchLogsDestinationConfig,++    -- ** EvaluationRequest+    EvaluationRequest (EvaluationRequest'),+    newEvaluationRequest,++    -- ** EvaluationResult+    EvaluationResult (EvaluationResult'),+    newEvaluationResult,++    -- ** EvaluationRule+    EvaluationRule (EvaluationRule'),+    newEvaluationRule,++    -- ** Event+    Event (Event'),+    newEvent,++    -- ** Experiment+    Experiment (Experiment'),+    newExperiment,++    -- ** ExperimentExecution+    ExperimentExecution (ExperimentExecution'),+    newExperimentExecution,++    -- ** ExperimentReport+    ExperimentReport (ExperimentReport'),+    newExperimentReport,++    -- ** ExperimentResultsData+    ExperimentResultsData (ExperimentResultsData'),+    newExperimentResultsData,++    -- ** ExperimentSchedule+    ExperimentSchedule (ExperimentSchedule'),+    newExperimentSchedule,++    -- ** Feature+    Feature (Feature'),+    newFeature,++    -- ** FeatureSummary+    FeatureSummary (FeatureSummary'),+    newFeatureSummary,++    -- ** Launch+    Launch (Launch'),+    newLaunch,++    -- ** LaunchExecution+    LaunchExecution (LaunchExecution'),+    newLaunchExecution,++    -- ** LaunchGroup+    LaunchGroup (LaunchGroup'),+    newLaunchGroup,++    -- ** LaunchGroupConfig+    LaunchGroupConfig (LaunchGroupConfig'),+    newLaunchGroupConfig,++    -- ** MetricDefinition+    MetricDefinition (MetricDefinition'),+    newMetricDefinition,++    -- ** MetricDefinitionConfig+    MetricDefinitionConfig (MetricDefinitionConfig'),+    newMetricDefinitionConfig,++    -- ** MetricGoal+    MetricGoal (MetricGoal'),+    newMetricGoal,++    -- ** MetricGoalConfig+    MetricGoalConfig (MetricGoalConfig'),+    newMetricGoalConfig,++    -- ** MetricMonitor+    MetricMonitor (MetricMonitor'),+    newMetricMonitor,++    -- ** MetricMonitorConfig+    MetricMonitorConfig (MetricMonitorConfig'),+    newMetricMonitorConfig,++    -- ** OnlineAbConfig+    OnlineAbConfig (OnlineAbConfig'),+    newOnlineAbConfig,++    -- ** OnlineAbDefinition+    OnlineAbDefinition (OnlineAbDefinition'),+    newOnlineAbDefinition,++    -- ** Project+    Project (Project'),+    newProject,++    -- ** ProjectAppConfigResource+    ProjectAppConfigResource (ProjectAppConfigResource'),+    newProjectAppConfigResource,++    -- ** ProjectAppConfigResourceConfig+    ProjectAppConfigResourceConfig (ProjectAppConfigResourceConfig'),+    newProjectAppConfigResourceConfig,++    -- ** ProjectDataDelivery+    ProjectDataDelivery (ProjectDataDelivery'),+    newProjectDataDelivery,++    -- ** ProjectDataDeliveryConfig+    ProjectDataDeliveryConfig (ProjectDataDeliveryConfig'),+    newProjectDataDeliveryConfig,++    -- ** ProjectSummary+    ProjectSummary (ProjectSummary'),+    newProjectSummary,++    -- ** PutProjectEventsResultEntry+    PutProjectEventsResultEntry (PutProjectEventsResultEntry'),+    newPutProjectEventsResultEntry,++    -- ** RefResource+    RefResource (RefResource'),+    newRefResource,++    -- ** S3Destination+    S3Destination (S3Destination'),+    newS3Destination,++    -- ** S3DestinationConfig+    S3DestinationConfig (S3DestinationConfig'),+    newS3DestinationConfig,++    -- ** ScheduledSplit+    ScheduledSplit (ScheduledSplit'),+    newScheduledSplit,++    -- ** ScheduledSplitConfig+    ScheduledSplitConfig (ScheduledSplitConfig'),+    newScheduledSplitConfig,++    -- ** ScheduledSplitsLaunchConfig+    ScheduledSplitsLaunchConfig (ScheduledSplitsLaunchConfig'),+    newScheduledSplitsLaunchConfig,++    -- ** ScheduledSplitsLaunchDefinition+    ScheduledSplitsLaunchDefinition (ScheduledSplitsLaunchDefinition'),+    newScheduledSplitsLaunchDefinition,++    -- ** Segment+    Segment (Segment'),+    newSegment,++    -- ** SegmentOverride+    SegmentOverride (SegmentOverride'),+    newSegmentOverride,++    -- ** Treatment+    Treatment (Treatment'),+    newTreatment,++    -- ** TreatmentConfig+    TreatmentConfig (TreatmentConfig'),+    newTreatmentConfig,++    -- ** VariableValue+    VariableValue (VariableValue'),+    newVariableValue,++    -- ** Variation+    Variation (Variation'),+    newVariation,++    -- ** VariationConfig+    VariationConfig (VariationConfig'),+    newVariationConfig,+  )+where++import Amazonka.Evidently.BatchEvaluateFeature+import Amazonka.Evidently.CreateExperiment+import Amazonka.Evidently.CreateFeature+import Amazonka.Evidently.CreateLaunch+import Amazonka.Evidently.CreateProject+import Amazonka.Evidently.CreateSegment+import Amazonka.Evidently.DeleteExperiment+import Amazonka.Evidently.DeleteFeature+import Amazonka.Evidently.DeleteLaunch+import Amazonka.Evidently.DeleteProject+import Amazonka.Evidently.DeleteSegment+import Amazonka.Evidently.EvaluateFeature+import Amazonka.Evidently.GetExperiment+import Amazonka.Evidently.GetExperimentResults+import Amazonka.Evidently.GetFeature+import Amazonka.Evidently.GetLaunch+import Amazonka.Evidently.GetProject+import Amazonka.Evidently.GetSegment+import Amazonka.Evidently.Lens+import Amazonka.Evidently.ListExperiments+import Amazonka.Evidently.ListFeatures+import Amazonka.Evidently.ListLaunches+import Amazonka.Evidently.ListProjects+import Amazonka.Evidently.ListSegmentReferences+import Amazonka.Evidently.ListSegments+import Amazonka.Evidently.ListTagsForResource+import Amazonka.Evidently.PutProjectEvents+import Amazonka.Evidently.StartExperiment+import Amazonka.Evidently.StartLaunch+import Amazonka.Evidently.StopExperiment+import Amazonka.Evidently.StopLaunch+import Amazonka.Evidently.TagResource+import Amazonka.Evidently.TestSegmentPattern+import Amazonka.Evidently.Types+import Amazonka.Evidently.UntagResource+import Amazonka.Evidently.UpdateExperiment+import Amazonka.Evidently.UpdateFeature+import Amazonka.Evidently.UpdateLaunch+import Amazonka.Evidently.UpdateProject+import Amazonka.Evidently.UpdateProjectDataDelivery+import Amazonka.Evidently.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 'Evidently'.++-- $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/Evidently/BatchEvaluateFeature.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.Evidently.BatchEvaluateFeature+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- This operation assigns feature variation to user sessions. For each user+-- session, you pass in an @entityID@ that represents the user. Evidently+-- then checks the evaluation rules and assigns the variation.+--+-- The first rules that are evaluated are the override rules. If the+-- user\'s @entityID@ matches an override rule, the user is served the+-- variation specified by that rule.+--+-- Next, if there is a launch of the feature, the user might be assigned to+-- a variation in the launch. The chance of this depends on the percentage+-- of users that are allocated to that launch. If the user is enrolled in+-- the launch, the variation they are served depends on the allocation of+-- the various feature variations used for the launch.+--+-- If the user is not assigned to a launch, and there is an ongoing+-- experiment for this feature, the user might be assigned to a variation+-- in the experiment. The chance of this depends on the percentage of users+-- that are allocated to that experiment. If the user is enrolled in the+-- experiment, the variation they are served depends on the allocation of+-- the various feature variations used for the experiment.+--+-- If the user is not assigned to a launch or experiment, they are served+-- the default variation.+module Amazonka.Evidently.BatchEvaluateFeature+  ( -- * Creating a Request+    BatchEvaluateFeature (..),+    newBatchEvaluateFeature,++    -- * Request Lenses+    batchEvaluateFeature_project,+    batchEvaluateFeature_requests,++    -- * Destructuring the Response+    BatchEvaluateFeatureResponse (..),+    newBatchEvaluateFeatureResponse,++    -- * Response Lenses+    batchEvaluateFeatureResponse_results,+    batchEvaluateFeatureResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchEvaluateFeature' smart constructor.+data BatchEvaluateFeature = BatchEvaluateFeature'+  { -- | The name or ARN of the project that contains the feature being+    -- evaluated.+    project :: Prelude.Text,+    -- | An array of structures, where each structure assigns a feature variation+    -- to one user session.+    requests :: Prelude.NonEmpty EvaluationRequest+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchEvaluateFeature' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'project', 'batchEvaluateFeature_project' - The name or ARN of the project that contains the feature being+-- evaluated.+--+-- 'requests', 'batchEvaluateFeature_requests' - An array of structures, where each structure assigns a feature variation+-- to one user session.+newBatchEvaluateFeature ::+  -- | 'project'+  Prelude.Text ->+  -- | 'requests'+  Prelude.NonEmpty EvaluationRequest ->+  BatchEvaluateFeature+newBatchEvaluateFeature pProject_ pRequests_ =+  BatchEvaluateFeature'+    { project = pProject_,+      requests = Lens.coerced Lens.# pRequests_+    }++-- | The name or ARN of the project that contains the feature being+-- evaluated.+batchEvaluateFeature_project :: Lens.Lens' BatchEvaluateFeature Prelude.Text+batchEvaluateFeature_project = Lens.lens (\BatchEvaluateFeature' {project} -> project) (\s@BatchEvaluateFeature' {} a -> s {project = a} :: BatchEvaluateFeature)++-- | An array of structures, where each structure assigns a feature variation+-- to one user session.+batchEvaluateFeature_requests :: Lens.Lens' BatchEvaluateFeature (Prelude.NonEmpty EvaluationRequest)+batchEvaluateFeature_requests = Lens.lens (\BatchEvaluateFeature' {requests} -> requests) (\s@BatchEvaluateFeature' {} a -> s {requests = a} :: BatchEvaluateFeature) Prelude.. Lens.coerced++instance Core.AWSRequest BatchEvaluateFeature where+  type+    AWSResponse BatchEvaluateFeature =+      BatchEvaluateFeatureResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchEvaluateFeatureResponse'+            Prelude.<$> (x Data..?> "results" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable BatchEvaluateFeature where+  hashWithSalt _salt BatchEvaluateFeature' {..} =+    _salt+      `Prelude.hashWithSalt` project+      `Prelude.hashWithSalt` requests++instance Prelude.NFData BatchEvaluateFeature where+  rnf BatchEvaluateFeature' {..} =+    Prelude.rnf project+      `Prelude.seq` Prelude.rnf requests++instance Data.ToHeaders BatchEvaluateFeature where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchEvaluateFeature where+  toJSON BatchEvaluateFeature' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("requests" Data..= requests)]+      )++instance Data.ToPath BatchEvaluateFeature where+  toPath BatchEvaluateFeature' {..} =+    Prelude.mconcat+      ["/projects/", Data.toBS project, "/evaluations"]++instance Data.ToQuery BatchEvaluateFeature where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchEvaluateFeatureResponse' smart constructor.+data BatchEvaluateFeatureResponse = BatchEvaluateFeatureResponse'+  { -- | An array of structures, where each structure displays the results of one+    -- feature evaluation assignment to one user session.+    results :: Prelude.Maybe [EvaluationResult],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchEvaluateFeatureResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'results', 'batchEvaluateFeatureResponse_results' - An array of structures, where each structure displays the results of one+-- feature evaluation assignment to one user session.+--+-- 'httpStatus', 'batchEvaluateFeatureResponse_httpStatus' - The response's http status code.+newBatchEvaluateFeatureResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchEvaluateFeatureResponse+newBatchEvaluateFeatureResponse pHttpStatus_ =+  BatchEvaluateFeatureResponse'+    { results =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An array of structures, where each structure displays the results of one+-- feature evaluation assignment to one user session.+batchEvaluateFeatureResponse_results :: Lens.Lens' BatchEvaluateFeatureResponse (Prelude.Maybe [EvaluationResult])+batchEvaluateFeatureResponse_results = Lens.lens (\BatchEvaluateFeatureResponse' {results} -> results) (\s@BatchEvaluateFeatureResponse' {} a -> s {results = a} :: BatchEvaluateFeatureResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+batchEvaluateFeatureResponse_httpStatus :: Lens.Lens' BatchEvaluateFeatureResponse Prelude.Int+batchEvaluateFeatureResponse_httpStatus = Lens.lens (\BatchEvaluateFeatureResponse' {httpStatus} -> httpStatus) (\s@BatchEvaluateFeatureResponse' {} a -> s {httpStatus = a} :: BatchEvaluateFeatureResponse)++instance Prelude.NFData BatchEvaluateFeatureResponse where+  rnf BatchEvaluateFeatureResponse' {..} =+    Prelude.rnf results+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/CreateExperiment.hs view
@@ -0,0 +1,393 @@+{-# 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.Evidently.CreateExperiment+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates an Evidently /experiment/. Before you create an experiment, you+-- must create the feature to use for the experiment.+--+-- An experiment helps you make feature design decisions based on evidence+-- and data. An experiment can test as many as five variations at once.+-- Evidently collects experiment data and analyzes it by statistical+-- methods, and provides clear recommendations about which variations+-- perform better.+--+-- You can optionally specify a @segment@ to have the experiment consider+-- only certain audience types in the experiment, such as using only user+-- sessions from a certain location or who use a certain internet browser.+--+-- Don\'t use this operation to update an existing experiment. Instead, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_UpdateExperiment.html UpdateExperiment>.+module Amazonka.Evidently.CreateExperiment+  ( -- * Creating a Request+    CreateExperiment (..),+    newCreateExperiment,++    -- * Request Lenses+    createExperiment_description,+    createExperiment_onlineAbConfig,+    createExperiment_randomizationSalt,+    createExperiment_samplingRate,+    createExperiment_segment,+    createExperiment_tags,+    createExperiment_metricGoals,+    createExperiment_name,+    createExperiment_project,+    createExperiment_treatments,++    -- * Destructuring the Response+    CreateExperimentResponse (..),+    newCreateExperimentResponse,++    -- * Response Lenses+    createExperimentResponse_httpStatus,+    createExperimentResponse_experiment,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateExperiment' smart constructor.+data CreateExperiment = CreateExperiment'+  { -- | An optional description of the experiment.+    description :: Prelude.Maybe Prelude.Text,+    -- | A structure that contains the configuration of which variation to use as+    -- the \"control\" version. tThe \"control\" version is used for comparison+    -- with other variations. This structure also specifies how much experiment+    -- traffic is allocated to each variation.+    onlineAbConfig :: Prelude.Maybe OnlineAbConfig,+    -- | When Evidently assigns a particular user session to an experiment, it+    -- must use a randomization ID to determine which variation the user+    -- session is served. This randomization ID is a combination of the entity+    -- ID and @randomizationSalt@. If you omit @randomizationSalt@, Evidently+    -- uses the experiment name as the @randomizationSalt@.+    randomizationSalt :: Prelude.Maybe Prelude.Text,+    -- | The portion of the available audience that you want to allocate to this+    -- experiment, in thousandths of a percent. The available audience is the+    -- total audience minus the audience that you have allocated to overrides+    -- or current launches of this feature.+    --+    -- This is represented in thousandths of a percent. For example, specify+    -- 10,000 to allocate 10% of the available audience.+    samplingRate :: Prelude.Maybe Prelude.Natural,+    -- | Specifies an audience /segment/ to use in the experiment. When a segment+    -- is used in an experiment, only user sessions that match the segment+    -- pattern are used in the experiment.+    segment :: Prelude.Maybe Prelude.Text,+    -- | Assigns one or more tags (key-value pairs) to the experiment.+    --+    -- Tags can help you organize and categorize your resources. You can also+    -- use them to scope user permissions by granting a user permission to+    -- access or change only resources with certain tag values.+    --+    -- Tags don\'t have any semantic meaning to Amazon Web Services and are+    -- interpreted strictly as strings of characters.+    --+    -- >  <p>You can associate as many as 50 tags with an experiment.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | An array of structures that defines the metrics used for the experiment,+    -- and whether a higher or lower value for each metric is the goal.+    metricGoals :: Prelude.NonEmpty MetricGoalConfig,+    -- | A name for the new experiment.+    name :: Prelude.Text,+    -- | The name or ARN of the project that you want to create the new+    -- experiment in.+    project :: Prelude.Text,+    -- | An array of structures that describe the configuration of each feature+    -- variation used in the experiment.+    treatments :: [TreatmentConfig]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateExperiment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createExperiment_description' - An optional description of the experiment.+--+-- 'onlineAbConfig', 'createExperiment_onlineAbConfig' - A structure that contains the configuration of which variation to use as+-- the \"control\" version. tThe \"control\" version is used for comparison+-- with other variations. This structure also specifies how much experiment+-- traffic is allocated to each variation.+--+-- 'randomizationSalt', 'createExperiment_randomizationSalt' - When Evidently assigns a particular user session to an experiment, it+-- must use a randomization ID to determine which variation the user+-- session is served. This randomization ID is a combination of the entity+-- ID and @randomizationSalt@. If you omit @randomizationSalt@, Evidently+-- uses the experiment name as the @randomizationSalt@.+--+-- 'samplingRate', 'createExperiment_samplingRate' - The portion of the available audience that you want to allocate to this+-- experiment, in thousandths of a percent. The available audience is the+-- total audience minus the audience that you have allocated to overrides+-- or current launches of this feature.+--+-- This is represented in thousandths of a percent. For example, specify+-- 10,000 to allocate 10% of the available audience.+--+-- 'segment', 'createExperiment_segment' - Specifies an audience /segment/ to use in the experiment. When a segment+-- is used in an experiment, only user sessions that match the segment+-- pattern are used in the experiment.+--+-- 'tags', 'createExperiment_tags' - Assigns one or more tags (key-value pairs) to the experiment.+--+-- Tags can help you organize and categorize your resources. You can also+-- use them to scope user permissions by granting a user permission to+-- access or change only resources with certain tag values.+--+-- Tags don\'t have any semantic meaning to Amazon Web Services and are+-- interpreted strictly as strings of characters.+--+-- >  <p>You can associate as many as 50 tags with an experiment.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+--+-- 'metricGoals', 'createExperiment_metricGoals' - An array of structures that defines the metrics used for the experiment,+-- and whether a higher or lower value for each metric is the goal.+--+-- 'name', 'createExperiment_name' - A name for the new experiment.+--+-- 'project', 'createExperiment_project' - The name or ARN of the project that you want to create the new+-- experiment in.+--+-- 'treatments', 'createExperiment_treatments' - An array of structures that describe the configuration of each feature+-- variation used in the experiment.+newCreateExperiment ::+  -- | 'metricGoals'+  Prelude.NonEmpty MetricGoalConfig ->+  -- | 'name'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  CreateExperiment+newCreateExperiment pMetricGoals_ pName_ pProject_ =+  CreateExperiment'+    { description = Prelude.Nothing,+      onlineAbConfig = Prelude.Nothing,+      randomizationSalt = Prelude.Nothing,+      samplingRate = Prelude.Nothing,+      segment = Prelude.Nothing,+      tags = Prelude.Nothing,+      metricGoals = Lens.coerced Lens.# pMetricGoals_,+      name = pName_,+      project = pProject_,+      treatments = Prelude.mempty+    }++-- | An optional description of the experiment.+createExperiment_description :: Lens.Lens' CreateExperiment (Prelude.Maybe Prelude.Text)+createExperiment_description = Lens.lens (\CreateExperiment' {description} -> description) (\s@CreateExperiment' {} a -> s {description = a} :: CreateExperiment)++-- | A structure that contains the configuration of which variation to use as+-- the \"control\" version. tThe \"control\" version is used for comparison+-- with other variations. This structure also specifies how much experiment+-- traffic is allocated to each variation.+createExperiment_onlineAbConfig :: Lens.Lens' CreateExperiment (Prelude.Maybe OnlineAbConfig)+createExperiment_onlineAbConfig = Lens.lens (\CreateExperiment' {onlineAbConfig} -> onlineAbConfig) (\s@CreateExperiment' {} a -> s {onlineAbConfig = a} :: CreateExperiment)++-- | When Evidently assigns a particular user session to an experiment, it+-- must use a randomization ID to determine which variation the user+-- session is served. This randomization ID is a combination of the entity+-- ID and @randomizationSalt@. If you omit @randomizationSalt@, Evidently+-- uses the experiment name as the @randomizationSalt@.+createExperiment_randomizationSalt :: Lens.Lens' CreateExperiment (Prelude.Maybe Prelude.Text)+createExperiment_randomizationSalt = Lens.lens (\CreateExperiment' {randomizationSalt} -> randomizationSalt) (\s@CreateExperiment' {} a -> s {randomizationSalt = a} :: CreateExperiment)++-- | The portion of the available audience that you want to allocate to this+-- experiment, in thousandths of a percent. The available audience is the+-- total audience minus the audience that you have allocated to overrides+-- or current launches of this feature.+--+-- This is represented in thousandths of a percent. For example, specify+-- 10,000 to allocate 10% of the available audience.+createExperiment_samplingRate :: Lens.Lens' CreateExperiment (Prelude.Maybe Prelude.Natural)+createExperiment_samplingRate = Lens.lens (\CreateExperiment' {samplingRate} -> samplingRate) (\s@CreateExperiment' {} a -> s {samplingRate = a} :: CreateExperiment)++-- | Specifies an audience /segment/ to use in the experiment. When a segment+-- is used in an experiment, only user sessions that match the segment+-- pattern are used in the experiment.+createExperiment_segment :: Lens.Lens' CreateExperiment (Prelude.Maybe Prelude.Text)+createExperiment_segment = Lens.lens (\CreateExperiment' {segment} -> segment) (\s@CreateExperiment' {} a -> s {segment = a} :: CreateExperiment)++-- | Assigns one or more tags (key-value pairs) to the experiment.+--+-- Tags can help you organize and categorize your resources. You can also+-- use them to scope user permissions by granting a user permission to+-- access or change only resources with certain tag values.+--+-- Tags don\'t have any semantic meaning to Amazon Web Services and are+-- interpreted strictly as strings of characters.+--+-- >  <p>You can associate as many as 50 tags with an experiment.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+createExperiment_tags :: Lens.Lens' CreateExperiment (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createExperiment_tags = Lens.lens (\CreateExperiment' {tags} -> tags) (\s@CreateExperiment' {} a -> s {tags = a} :: CreateExperiment) Prelude.. Lens.mapping Lens.coerced++-- | An array of structures that defines the metrics used for the experiment,+-- and whether a higher or lower value for each metric is the goal.+createExperiment_metricGoals :: Lens.Lens' CreateExperiment (Prelude.NonEmpty MetricGoalConfig)+createExperiment_metricGoals = Lens.lens (\CreateExperiment' {metricGoals} -> metricGoals) (\s@CreateExperiment' {} a -> s {metricGoals = a} :: CreateExperiment) Prelude.. Lens.coerced++-- | A name for the new experiment.+createExperiment_name :: Lens.Lens' CreateExperiment Prelude.Text+createExperiment_name = Lens.lens (\CreateExperiment' {name} -> name) (\s@CreateExperiment' {} a -> s {name = a} :: CreateExperiment)++-- | The name or ARN of the project that you want to create the new+-- experiment in.+createExperiment_project :: Lens.Lens' CreateExperiment Prelude.Text+createExperiment_project = Lens.lens (\CreateExperiment' {project} -> project) (\s@CreateExperiment' {} a -> s {project = a} :: CreateExperiment)++-- | An array of structures that describe the configuration of each feature+-- variation used in the experiment.+createExperiment_treatments :: Lens.Lens' CreateExperiment [TreatmentConfig]+createExperiment_treatments = Lens.lens (\CreateExperiment' {treatments} -> treatments) (\s@CreateExperiment' {} a -> s {treatments = a} :: CreateExperiment) Prelude.. Lens.coerced++instance Core.AWSRequest CreateExperiment where+  type+    AWSResponse CreateExperiment =+      CreateExperimentResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateExperimentResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "experiment")+      )++instance Prelude.Hashable CreateExperiment where+  hashWithSalt _salt CreateExperiment' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` onlineAbConfig+      `Prelude.hashWithSalt` randomizationSalt+      `Prelude.hashWithSalt` samplingRate+      `Prelude.hashWithSalt` segment+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` metricGoals+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` project+      `Prelude.hashWithSalt` treatments++instance Prelude.NFData CreateExperiment where+  rnf CreateExperiment' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf onlineAbConfig+      `Prelude.seq` Prelude.rnf randomizationSalt+      `Prelude.seq` Prelude.rnf samplingRate+      `Prelude.seq` Prelude.rnf segment+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf metricGoals+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf project+      `Prelude.seq` Prelude.rnf treatments++instance Data.ToHeaders CreateExperiment where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateExperiment where+  toJSON CreateExperiment' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            ("onlineAbConfig" Data..=)+              Prelude.<$> onlineAbConfig,+            ("randomizationSalt" Data..=)+              Prelude.<$> randomizationSalt,+            ("samplingRate" Data..=) Prelude.<$> samplingRate,+            ("segment" Data..=) Prelude.<$> segment,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("metricGoals" Data..= metricGoals),+            Prelude.Just ("name" Data..= name),+            Prelude.Just ("treatments" Data..= treatments)+          ]+      )++instance Data.ToPath CreateExperiment where+  toPath CreateExperiment' {..} =+    Prelude.mconcat+      ["/projects/", Data.toBS project, "/experiments"]++instance Data.ToQuery CreateExperiment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateExperimentResponse' smart constructor.+data CreateExperimentResponse = CreateExperimentResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A structure containing the configuration details of the experiment that+    -- you created.+    experiment :: Experiment+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateExperimentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createExperimentResponse_httpStatus' - The response's http status code.+--+-- 'experiment', 'createExperimentResponse_experiment' - A structure containing the configuration details of the experiment that+-- you created.+newCreateExperimentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'experiment'+  Experiment ->+  CreateExperimentResponse+newCreateExperimentResponse pHttpStatus_ pExperiment_ =+  CreateExperimentResponse'+    { httpStatus =+        pHttpStatus_,+      experiment = pExperiment_+    }++-- | The response's http status code.+createExperimentResponse_httpStatus :: Lens.Lens' CreateExperimentResponse Prelude.Int+createExperimentResponse_httpStatus = Lens.lens (\CreateExperimentResponse' {httpStatus} -> httpStatus) (\s@CreateExperimentResponse' {} a -> s {httpStatus = a} :: CreateExperimentResponse)++-- | A structure containing the configuration details of the experiment that+-- you created.+createExperimentResponse_experiment :: Lens.Lens' CreateExperimentResponse Experiment+createExperimentResponse_experiment = Lens.lens (\CreateExperimentResponse' {experiment} -> experiment) (\s@CreateExperimentResponse' {} a -> s {experiment = a} :: CreateExperimentResponse)++instance Prelude.NFData CreateExperimentResponse where+  rnf CreateExperimentResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf experiment
+ gen/Amazonka/Evidently/CreateFeature.hs view
@@ -0,0 +1,343 @@+{-# 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.Evidently.CreateFeature+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates an Evidently /feature/ that you want to launch or test. You can+-- define up to five variations of a feature, and use these variations in+-- your launches and experiments. A feature must be created in a project.+-- For information about creating a project, see+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_CreateProject.html CreateProject>.+--+-- Don\'t use this operation to update an existing feature. Instead, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_UpdateFeature.html UpdateFeature>.+module Amazonka.Evidently.CreateFeature+  ( -- * Creating a Request+    CreateFeature (..),+    newCreateFeature,++    -- * Request Lenses+    createFeature_defaultVariation,+    createFeature_description,+    createFeature_entityOverrides,+    createFeature_evaluationStrategy,+    createFeature_tags,+    createFeature_name,+    createFeature_project,+    createFeature_variations,++    -- * Destructuring the Response+    CreateFeatureResponse (..),+    newCreateFeatureResponse,++    -- * Response Lenses+    createFeatureResponse_feature,+    createFeatureResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateFeature' smart constructor.+data CreateFeature = CreateFeature'+  { -- | The name of the variation to use as the default variation. The default+    -- variation is served to users who are not allocated to any ongoing+    -- launches or experiments of this feature.+    --+    -- This variation must also be listed in the @variations@ structure.+    --+    -- If you omit @defaultVariation@, the first variation listed in the+    -- @variations@ structure is used as the default variation.+    defaultVariation :: Prelude.Maybe Prelude.Text,+    -- | An optional description of the feature.+    description :: Prelude.Maybe Prelude.Text,+    -- | Specify users that should always be served a specific variation of a+    -- feature. Each user is specified by a key-value pair . For each key,+    -- specify a user by entering their user ID, account ID, or some other+    -- identifier. For the value, specify the name of the variation that they+    -- are to be served.+    entityOverrides :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Specify @ALL_RULES@ to activate the traffic allocation specified by any+    -- ongoing launches or experiments. Specify @DEFAULT_VARIATION@ to serve+    -- the default variation to all users instead.+    evaluationStrategy :: Prelude.Maybe FeatureEvaluationStrategy,+    -- | Assigns one or more tags (key-value pairs) to the feature.+    --+    -- Tags can help you organize and categorize your resources. You can also+    -- use them to scope user permissions by granting a user permission to+    -- access or change only resources with certain tag values.+    --+    -- Tags don\'t have any semantic meaning to Amazon Web Services and are+    -- interpreted strictly as strings of characters.+    --+    -- >  <p>You can associate as many as 50 tags with a feature.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name for the new feature.+    name :: Prelude.Text,+    -- | The name or ARN of the project that is to contain the new feature.+    project :: Prelude.Text,+    -- | An array of structures that contain the configuration of the feature\'s+    -- different variations.+    variations :: Prelude.NonEmpty VariationConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateFeature' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'defaultVariation', 'createFeature_defaultVariation' - The name of the variation to use as the default variation. The default+-- variation is served to users who are not allocated to any ongoing+-- launches or experiments of this feature.+--+-- This variation must also be listed in the @variations@ structure.+--+-- If you omit @defaultVariation@, the first variation listed in the+-- @variations@ structure is used as the default variation.+--+-- 'description', 'createFeature_description' - An optional description of the feature.+--+-- 'entityOverrides', 'createFeature_entityOverrides' - Specify users that should always be served a specific variation of a+-- feature. Each user is specified by a key-value pair . For each key,+-- specify a user by entering their user ID, account ID, or some other+-- identifier. For the value, specify the name of the variation that they+-- are to be served.+--+-- 'evaluationStrategy', 'createFeature_evaluationStrategy' - Specify @ALL_RULES@ to activate the traffic allocation specified by any+-- ongoing launches or experiments. Specify @DEFAULT_VARIATION@ to serve+-- the default variation to all users instead.+--+-- 'tags', 'createFeature_tags' - Assigns one or more tags (key-value pairs) to the feature.+--+-- Tags can help you organize and categorize your resources. You can also+-- use them to scope user permissions by granting a user permission to+-- access or change only resources with certain tag values.+--+-- Tags don\'t have any semantic meaning to Amazon Web Services and are+-- interpreted strictly as strings of characters.+--+-- >  <p>You can associate as many as 50 tags with a feature.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+--+-- 'name', 'createFeature_name' - The name for the new feature.+--+-- 'project', 'createFeature_project' - The name or ARN of the project that is to contain the new feature.+--+-- 'variations', 'createFeature_variations' - An array of structures that contain the configuration of the feature\'s+-- different variations.+newCreateFeature ::+  -- | 'name'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  -- | 'variations'+  Prelude.NonEmpty VariationConfig ->+  CreateFeature+newCreateFeature pName_ pProject_ pVariations_ =+  CreateFeature'+    { defaultVariation = Prelude.Nothing,+      description = Prelude.Nothing,+      entityOverrides = Prelude.Nothing,+      evaluationStrategy = Prelude.Nothing,+      tags = Prelude.Nothing,+      name = pName_,+      project = pProject_,+      variations = Lens.coerced Lens.# pVariations_+    }++-- | The name of the variation to use as the default variation. The default+-- variation is served to users who are not allocated to any ongoing+-- launches or experiments of this feature.+--+-- This variation must also be listed in the @variations@ structure.+--+-- If you omit @defaultVariation@, the first variation listed in the+-- @variations@ structure is used as the default variation.+createFeature_defaultVariation :: Lens.Lens' CreateFeature (Prelude.Maybe Prelude.Text)+createFeature_defaultVariation = Lens.lens (\CreateFeature' {defaultVariation} -> defaultVariation) (\s@CreateFeature' {} a -> s {defaultVariation = a} :: CreateFeature)++-- | An optional description of the feature.+createFeature_description :: Lens.Lens' CreateFeature (Prelude.Maybe Prelude.Text)+createFeature_description = Lens.lens (\CreateFeature' {description} -> description) (\s@CreateFeature' {} a -> s {description = a} :: CreateFeature)++-- | Specify users that should always be served a specific variation of a+-- feature. Each user is specified by a key-value pair . For each key,+-- specify a user by entering their user ID, account ID, or some other+-- identifier. For the value, specify the name of the variation that they+-- are to be served.+createFeature_entityOverrides :: Lens.Lens' CreateFeature (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createFeature_entityOverrides = Lens.lens (\CreateFeature' {entityOverrides} -> entityOverrides) (\s@CreateFeature' {} a -> s {entityOverrides = a} :: CreateFeature) Prelude.. Lens.mapping Lens.coerced++-- | Specify @ALL_RULES@ to activate the traffic allocation specified by any+-- ongoing launches or experiments. Specify @DEFAULT_VARIATION@ to serve+-- the default variation to all users instead.+createFeature_evaluationStrategy :: Lens.Lens' CreateFeature (Prelude.Maybe FeatureEvaluationStrategy)+createFeature_evaluationStrategy = Lens.lens (\CreateFeature' {evaluationStrategy} -> evaluationStrategy) (\s@CreateFeature' {} a -> s {evaluationStrategy = a} :: CreateFeature)++-- | Assigns one or more tags (key-value pairs) to the feature.+--+-- Tags can help you organize and categorize your resources. You can also+-- use them to scope user permissions by granting a user permission to+-- access or change only resources with certain tag values.+--+-- Tags don\'t have any semantic meaning to Amazon Web Services and are+-- interpreted strictly as strings of characters.+--+-- >  <p>You can associate as many as 50 tags with a feature.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+createFeature_tags :: Lens.Lens' CreateFeature (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createFeature_tags = Lens.lens (\CreateFeature' {tags} -> tags) (\s@CreateFeature' {} a -> s {tags = a} :: CreateFeature) Prelude.. Lens.mapping Lens.coerced++-- | The name for the new feature.+createFeature_name :: Lens.Lens' CreateFeature Prelude.Text+createFeature_name = Lens.lens (\CreateFeature' {name} -> name) (\s@CreateFeature' {} a -> s {name = a} :: CreateFeature)++-- | The name or ARN of the project that is to contain the new feature.+createFeature_project :: Lens.Lens' CreateFeature Prelude.Text+createFeature_project = Lens.lens (\CreateFeature' {project} -> project) (\s@CreateFeature' {} a -> s {project = a} :: CreateFeature)++-- | An array of structures that contain the configuration of the feature\'s+-- different variations.+createFeature_variations :: Lens.Lens' CreateFeature (Prelude.NonEmpty VariationConfig)+createFeature_variations = Lens.lens (\CreateFeature' {variations} -> variations) (\s@CreateFeature' {} a -> s {variations = a} :: CreateFeature) Prelude.. Lens.coerced++instance Core.AWSRequest CreateFeature where+  type+    AWSResponse CreateFeature =+      CreateFeatureResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateFeatureResponse'+            Prelude.<$> (x Data..?> "feature")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateFeature where+  hashWithSalt _salt CreateFeature' {..} =+    _salt+      `Prelude.hashWithSalt` defaultVariation+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` entityOverrides+      `Prelude.hashWithSalt` evaluationStrategy+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` project+      `Prelude.hashWithSalt` variations++instance Prelude.NFData CreateFeature where+  rnf CreateFeature' {..} =+    Prelude.rnf defaultVariation+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf entityOverrides+      `Prelude.seq` Prelude.rnf evaluationStrategy+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf project+      `Prelude.seq` Prelude.rnf variations++instance Data.ToHeaders CreateFeature where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateFeature where+  toJSON CreateFeature' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("defaultVariation" Data..=)+              Prelude.<$> defaultVariation,+            ("description" Data..=) Prelude.<$> description,+            ("entityOverrides" Data..=)+              Prelude.<$> entityOverrides,+            ("evaluationStrategy" Data..=)+              Prelude.<$> evaluationStrategy,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("name" Data..= name),+            Prelude.Just ("variations" Data..= variations)+          ]+      )++instance Data.ToPath CreateFeature where+  toPath CreateFeature' {..} =+    Prelude.mconcat+      ["/projects/", Data.toBS project, "/features"]++instance Data.ToQuery CreateFeature where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateFeatureResponse' smart constructor.+data CreateFeatureResponse = CreateFeatureResponse'+  { -- | A structure that contains information about the new feature.+    feature :: Prelude.Maybe Feature,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateFeatureResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'feature', 'createFeatureResponse_feature' - A structure that contains information about the new feature.+--+-- 'httpStatus', 'createFeatureResponse_httpStatus' - The response's http status code.+newCreateFeatureResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateFeatureResponse+newCreateFeatureResponse pHttpStatus_ =+  CreateFeatureResponse'+    { feature = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A structure that contains information about the new feature.+createFeatureResponse_feature :: Lens.Lens' CreateFeatureResponse (Prelude.Maybe Feature)+createFeatureResponse_feature = Lens.lens (\CreateFeatureResponse' {feature} -> feature) (\s@CreateFeatureResponse' {} a -> s {feature = a} :: CreateFeatureResponse)++-- | The response's http status code.+createFeatureResponse_httpStatus :: Lens.Lens' CreateFeatureResponse Prelude.Int+createFeatureResponse_httpStatus = Lens.lens (\CreateFeatureResponse' {httpStatus} -> httpStatus) (\s@CreateFeatureResponse' {} a -> s {httpStatus = a} :: CreateFeatureResponse)++instance Prelude.NFData CreateFeatureResponse where+  rnf CreateFeatureResponse' {..} =+    Prelude.rnf feature+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/CreateLaunch.hs view
@@ -0,0 +1,328 @@+{-# 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.Evidently.CreateLaunch+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a /launch/ of a given feature. Before you create a launch, you+-- must create the feature to use for the launch.+--+-- You can use a launch to safely validate new features by serving them to+-- a specified percentage of your users while you roll out the feature. You+-- can monitor the performance of the new feature to help you decide when+-- to ramp up traffic to more users. This helps you reduce risk and+-- identify unintended consequences before you fully launch the feature.+--+-- Don\'t use this operation to update an existing launch. Instead, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_UpdateLaunch.html UpdateLaunch>.+module Amazonka.Evidently.CreateLaunch+  ( -- * Creating a Request+    CreateLaunch (..),+    newCreateLaunch,++    -- * Request Lenses+    createLaunch_description,+    createLaunch_metricMonitors,+    createLaunch_randomizationSalt,+    createLaunch_scheduledSplitsConfig,+    createLaunch_tags,+    createLaunch_groups,+    createLaunch_name,+    createLaunch_project,++    -- * Destructuring the Response+    CreateLaunchResponse (..),+    newCreateLaunchResponse,++    -- * Response Lenses+    createLaunchResponse_httpStatus,+    createLaunchResponse_launch,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateLaunch' smart constructor.+data CreateLaunch = CreateLaunch'+  { -- | An optional description for the launch.+    description :: Prelude.Maybe Prelude.Text,+    -- | An array of structures that define the metrics that will be used to+    -- monitor the launch performance.+    metricMonitors :: Prelude.Maybe [MetricMonitorConfig],+    -- | When Evidently assigns a particular user session to a launch, it must+    -- use a randomization ID to determine which variation the user session is+    -- served. This randomization ID is a combination of the entity ID and+    -- @randomizationSalt@. If you omit @randomizationSalt@, Evidently uses the+    -- launch name as the @randomizationSalt@.+    randomizationSalt :: Prelude.Maybe Prelude.Text,+    -- | An array of structures that define the traffic allocation percentages+    -- among the feature variations during each step of the launch.+    scheduledSplitsConfig :: Prelude.Maybe ScheduledSplitsLaunchConfig,+    -- | Assigns one or more tags (key-value pairs) to the launch.+    --+    -- Tags can help you organize and categorize your resources. You can also+    -- use them to scope user permissions by granting a user permission to+    -- access or change only resources with certain tag values.+    --+    -- Tags don\'t have any semantic meaning to Amazon Web Services and are+    -- interpreted strictly as strings of characters.+    --+    -- >  <p>You can associate as many as 50 tags with a launch.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | An array of structures that contains the feature and variations that are+    -- to be used for the launch.+    groups :: Prelude.NonEmpty LaunchGroupConfig,+    -- | The name for the new launch.+    name :: Prelude.Text,+    -- | The name or ARN of the project that you want to create the launch in.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateLaunch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createLaunch_description' - An optional description for the launch.+--+-- 'metricMonitors', 'createLaunch_metricMonitors' - An array of structures that define the metrics that will be used to+-- monitor the launch performance.+--+-- 'randomizationSalt', 'createLaunch_randomizationSalt' - When Evidently assigns a particular user session to a launch, it must+-- use a randomization ID to determine which variation the user session is+-- served. This randomization ID is a combination of the entity ID and+-- @randomizationSalt@. If you omit @randomizationSalt@, Evidently uses the+-- launch name as the @randomizationSalt@.+--+-- 'scheduledSplitsConfig', 'createLaunch_scheduledSplitsConfig' - An array of structures that define the traffic allocation percentages+-- among the feature variations during each step of the launch.+--+-- 'tags', 'createLaunch_tags' - Assigns one or more tags (key-value pairs) to the launch.+--+-- Tags can help you organize and categorize your resources. You can also+-- use them to scope user permissions by granting a user permission to+-- access or change only resources with certain tag values.+--+-- Tags don\'t have any semantic meaning to Amazon Web Services and are+-- interpreted strictly as strings of characters.+--+-- >  <p>You can associate as many as 50 tags with a launch.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+--+-- 'groups', 'createLaunch_groups' - An array of structures that contains the feature and variations that are+-- to be used for the launch.+--+-- 'name', 'createLaunch_name' - The name for the new launch.+--+-- 'project', 'createLaunch_project' - The name or ARN of the project that you want to create the launch in.+newCreateLaunch ::+  -- | 'groups'+  Prelude.NonEmpty LaunchGroupConfig ->+  -- | 'name'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  CreateLaunch+newCreateLaunch pGroups_ pName_ pProject_ =+  CreateLaunch'+    { description = Prelude.Nothing,+      metricMonitors = Prelude.Nothing,+      randomizationSalt = Prelude.Nothing,+      scheduledSplitsConfig = Prelude.Nothing,+      tags = Prelude.Nothing,+      groups = Lens.coerced Lens.# pGroups_,+      name = pName_,+      project = pProject_+    }++-- | An optional description for the launch.+createLaunch_description :: Lens.Lens' CreateLaunch (Prelude.Maybe Prelude.Text)+createLaunch_description = Lens.lens (\CreateLaunch' {description} -> description) (\s@CreateLaunch' {} a -> s {description = a} :: CreateLaunch)++-- | An array of structures that define the metrics that will be used to+-- monitor the launch performance.+createLaunch_metricMonitors :: Lens.Lens' CreateLaunch (Prelude.Maybe [MetricMonitorConfig])+createLaunch_metricMonitors = Lens.lens (\CreateLaunch' {metricMonitors} -> metricMonitors) (\s@CreateLaunch' {} a -> s {metricMonitors = a} :: CreateLaunch) Prelude.. Lens.mapping Lens.coerced++-- | When Evidently assigns a particular user session to a launch, it must+-- use a randomization ID to determine which variation the user session is+-- served. This randomization ID is a combination of the entity ID and+-- @randomizationSalt@. If you omit @randomizationSalt@, Evidently uses the+-- launch name as the @randomizationSalt@.+createLaunch_randomizationSalt :: Lens.Lens' CreateLaunch (Prelude.Maybe Prelude.Text)+createLaunch_randomizationSalt = Lens.lens (\CreateLaunch' {randomizationSalt} -> randomizationSalt) (\s@CreateLaunch' {} a -> s {randomizationSalt = a} :: CreateLaunch)++-- | An array of structures that define the traffic allocation percentages+-- among the feature variations during each step of the launch.+createLaunch_scheduledSplitsConfig :: Lens.Lens' CreateLaunch (Prelude.Maybe ScheduledSplitsLaunchConfig)+createLaunch_scheduledSplitsConfig = Lens.lens (\CreateLaunch' {scheduledSplitsConfig} -> scheduledSplitsConfig) (\s@CreateLaunch' {} a -> s {scheduledSplitsConfig = a} :: CreateLaunch)++-- | Assigns one or more tags (key-value pairs) to the launch.+--+-- Tags can help you organize and categorize your resources. You can also+-- use them to scope user permissions by granting a user permission to+-- access or change only resources with certain tag values.+--+-- Tags don\'t have any semantic meaning to Amazon Web Services and are+-- interpreted strictly as strings of characters.+--+-- >  <p>You can associate as many as 50 tags with a launch.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+createLaunch_tags :: Lens.Lens' CreateLaunch (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createLaunch_tags = Lens.lens (\CreateLaunch' {tags} -> tags) (\s@CreateLaunch' {} a -> s {tags = a} :: CreateLaunch) Prelude.. Lens.mapping Lens.coerced++-- | An array of structures that contains the feature and variations that are+-- to be used for the launch.+createLaunch_groups :: Lens.Lens' CreateLaunch (Prelude.NonEmpty LaunchGroupConfig)+createLaunch_groups = Lens.lens (\CreateLaunch' {groups} -> groups) (\s@CreateLaunch' {} a -> s {groups = a} :: CreateLaunch) Prelude.. Lens.coerced++-- | The name for the new launch.+createLaunch_name :: Lens.Lens' CreateLaunch Prelude.Text+createLaunch_name = Lens.lens (\CreateLaunch' {name} -> name) (\s@CreateLaunch' {} a -> s {name = a} :: CreateLaunch)++-- | The name or ARN of the project that you want to create the launch in.+createLaunch_project :: Lens.Lens' CreateLaunch Prelude.Text+createLaunch_project = Lens.lens (\CreateLaunch' {project} -> project) (\s@CreateLaunch' {} a -> s {project = a} :: CreateLaunch)++instance Core.AWSRequest CreateLaunch where+  type AWSResponse CreateLaunch = CreateLaunchResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateLaunchResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "launch")+      )++instance Prelude.Hashable CreateLaunch where+  hashWithSalt _salt CreateLaunch' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` metricMonitors+      `Prelude.hashWithSalt` randomizationSalt+      `Prelude.hashWithSalt` scheduledSplitsConfig+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` groups+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` project++instance Prelude.NFData CreateLaunch where+  rnf CreateLaunch' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf metricMonitors+      `Prelude.seq` Prelude.rnf randomizationSalt+      `Prelude.seq` Prelude.rnf scheduledSplitsConfig+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf groups+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders CreateLaunch where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateLaunch where+  toJSON CreateLaunch' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            ("metricMonitors" Data..=)+              Prelude.<$> metricMonitors,+            ("randomizationSalt" Data..=)+              Prelude.<$> randomizationSalt,+            ("scheduledSplitsConfig" Data..=)+              Prelude.<$> scheduledSplitsConfig,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("groups" Data..= groups),+            Prelude.Just ("name" Data..= name)+          ]+      )++instance Data.ToPath CreateLaunch where+  toPath CreateLaunch' {..} =+    Prelude.mconcat+      ["/projects/", Data.toBS project, "/launches"]++instance Data.ToQuery CreateLaunch where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateLaunchResponse' smart constructor.+data CreateLaunchResponse = CreateLaunchResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A structure that contains the configuration of the launch that was+    -- created.+    launch :: Launch+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateLaunchResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createLaunchResponse_httpStatus' - The response's http status code.+--+-- 'launch', 'createLaunchResponse_launch' - A structure that contains the configuration of the launch that was+-- created.+newCreateLaunchResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'launch'+  Launch ->+  CreateLaunchResponse+newCreateLaunchResponse pHttpStatus_ pLaunch_ =+  CreateLaunchResponse'+    { httpStatus = pHttpStatus_,+      launch = pLaunch_+    }++-- | The response's http status code.+createLaunchResponse_httpStatus :: Lens.Lens' CreateLaunchResponse Prelude.Int+createLaunchResponse_httpStatus = Lens.lens (\CreateLaunchResponse' {httpStatus} -> httpStatus) (\s@CreateLaunchResponse' {} a -> s {httpStatus = a} :: CreateLaunchResponse)++-- | A structure that contains the configuration of the launch that was+-- created.+createLaunchResponse_launch :: Lens.Lens' CreateLaunchResponse Launch+createLaunchResponse_launch = Lens.lens (\CreateLaunchResponse' {launch} -> launch) (\s@CreateLaunchResponse' {} a -> s {launch = a} :: CreateLaunchResponse)++instance Prelude.NFData CreateLaunchResponse where+  rnf CreateLaunchResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf launch
+ gen/Amazonka/Evidently/CreateProject.hs view
@@ -0,0 +1,303 @@+{-# 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.Evidently.CreateProject+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a project, which is the logical object in Evidently that can+-- contain features, launches, and experiments. Use projects to group+-- similar features together.+--+-- To update an existing project, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_UpdateProject.html UpdateProject>.+module Amazonka.Evidently.CreateProject+  ( -- * Creating a Request+    CreateProject (..),+    newCreateProject,++    -- * Request Lenses+    createProject_appConfigResource,+    createProject_dataDelivery,+    createProject_description,+    createProject_tags,+    createProject_name,++    -- * Destructuring the Response+    CreateProjectResponse (..),+    newCreateProjectResponse,++    -- * Response Lenses+    createProjectResponse_httpStatus,+    createProjectResponse_project,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateProject' smart constructor.+data CreateProject = CreateProject'+  { -- | Use this parameter if the project will use /client-side evaluation+    -- powered by AppConfig/. Client-side evaluation allows your application to+    -- assign variations to user sessions locally instead of by calling the+    -- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_EvaluateFeature.html EvaluateFeature>+    -- operation. This mitigates the latency and availability risks that come+    -- with an API call. For more information, see+    -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-client-side-evaluation.html Client-side evaluation - powered by AppConfig.>+    --+    -- This parameter is a structure that contains information about the+    -- AppConfig application and environment that will be used as for+    -- client-side evaluation.+    --+    -- To create a project that uses client-side evaluation, you must have the+    -- @evidently:ExportProjectAsConfiguration@ permission.+    appConfigResource :: Prelude.Maybe ProjectAppConfigResourceConfig,+    -- | A structure that contains information about where Evidently is to store+    -- evaluation events for longer term storage, if you choose to do so. If+    -- you choose not to store these events, Evidently deletes them after using+    -- them to produce metrics and other experiment results that you can view.+    dataDelivery :: Prelude.Maybe ProjectDataDeliveryConfig,+    -- | An optional description of the project.+    description :: Prelude.Maybe Prelude.Text,+    -- | Assigns one or more tags (key-value pairs) to the project.+    --+    -- Tags can help you organize and categorize your resources. You can also+    -- use them to scope user permissions by granting a user permission to+    -- access or change only resources with certain tag values.+    --+    -- Tags don\'t have any semantic meaning to Amazon Web Services and are+    -- interpreted strictly as strings of characters.+    --+    -- >  <p>You can associate as many as 50 tags with a project.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name for the project.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateProject' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'appConfigResource', 'createProject_appConfigResource' - Use this parameter if the project will use /client-side evaluation+-- powered by AppConfig/. Client-side evaluation allows your application to+-- assign variations to user sessions locally instead of by calling the+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_EvaluateFeature.html EvaluateFeature>+-- operation. This mitigates the latency and availability risks that come+-- with an API call. For more information, see+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-client-side-evaluation.html Client-side evaluation - powered by AppConfig.>+--+-- This parameter is a structure that contains information about the+-- AppConfig application and environment that will be used as for+-- client-side evaluation.+--+-- To create a project that uses client-side evaluation, you must have the+-- @evidently:ExportProjectAsConfiguration@ permission.+--+-- 'dataDelivery', 'createProject_dataDelivery' - A structure that contains information about where Evidently is to store+-- evaluation events for longer term storage, if you choose to do so. If+-- you choose not to store these events, Evidently deletes them after using+-- them to produce metrics and other experiment results that you can view.+--+-- 'description', 'createProject_description' - An optional description of the project.+--+-- 'tags', 'createProject_tags' - Assigns one or more tags (key-value pairs) to the project.+--+-- Tags can help you organize and categorize your resources. You can also+-- use them to scope user permissions by granting a user permission to+-- access or change only resources with certain tag values.+--+-- Tags don\'t have any semantic meaning to Amazon Web Services and are+-- interpreted strictly as strings of characters.+--+-- >  <p>You can associate as many as 50 tags with a project.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+--+-- 'name', 'createProject_name' - The name for the project.+newCreateProject ::+  -- | 'name'+  Prelude.Text ->+  CreateProject+newCreateProject pName_ =+  CreateProject'+    { appConfigResource = Prelude.Nothing,+      dataDelivery = Prelude.Nothing,+      description = Prelude.Nothing,+      tags = Prelude.Nothing,+      name = pName_+    }++-- | Use this parameter if the project will use /client-side evaluation+-- powered by AppConfig/. Client-side evaluation allows your application to+-- assign variations to user sessions locally instead of by calling the+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_EvaluateFeature.html EvaluateFeature>+-- operation. This mitigates the latency and availability risks that come+-- with an API call. For more information, see+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-client-side-evaluation.html Client-side evaluation - powered by AppConfig.>+--+-- This parameter is a structure that contains information about the+-- AppConfig application and environment that will be used as for+-- client-side evaluation.+--+-- To create a project that uses client-side evaluation, you must have the+-- @evidently:ExportProjectAsConfiguration@ permission.+createProject_appConfigResource :: Lens.Lens' CreateProject (Prelude.Maybe ProjectAppConfigResourceConfig)+createProject_appConfigResource = Lens.lens (\CreateProject' {appConfigResource} -> appConfigResource) (\s@CreateProject' {} a -> s {appConfigResource = a} :: CreateProject)++-- | A structure that contains information about where Evidently is to store+-- evaluation events for longer term storage, if you choose to do so. If+-- you choose not to store these events, Evidently deletes them after using+-- them to produce metrics and other experiment results that you can view.+createProject_dataDelivery :: Lens.Lens' CreateProject (Prelude.Maybe ProjectDataDeliveryConfig)+createProject_dataDelivery = Lens.lens (\CreateProject' {dataDelivery} -> dataDelivery) (\s@CreateProject' {} a -> s {dataDelivery = a} :: CreateProject)++-- | An optional description of the project.+createProject_description :: Lens.Lens' CreateProject (Prelude.Maybe Prelude.Text)+createProject_description = Lens.lens (\CreateProject' {description} -> description) (\s@CreateProject' {} a -> s {description = a} :: CreateProject)++-- | Assigns one or more tags (key-value pairs) to the project.+--+-- Tags can help you organize and categorize your resources. You can also+-- use them to scope user permissions by granting a user permission to+-- access or change only resources with certain tag values.+--+-- Tags don\'t have any semantic meaning to Amazon Web Services and are+-- interpreted strictly as strings of characters.+--+-- >  <p>You can associate as many as 50 tags with a project.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+createProject_tags :: Lens.Lens' CreateProject (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createProject_tags = Lens.lens (\CreateProject' {tags} -> tags) (\s@CreateProject' {} a -> s {tags = a} :: CreateProject) Prelude.. Lens.mapping Lens.coerced++-- | The name for the project.+createProject_name :: Lens.Lens' CreateProject Prelude.Text+createProject_name = Lens.lens (\CreateProject' {name} -> name) (\s@CreateProject' {} a -> s {name = a} :: CreateProject)++instance Core.AWSRequest CreateProject where+  type+    AWSResponse CreateProject =+      CreateProjectResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateProjectResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "project")+      )++instance Prelude.Hashable CreateProject where+  hashWithSalt _salt CreateProject' {..} =+    _salt+      `Prelude.hashWithSalt` appConfigResource+      `Prelude.hashWithSalt` dataDelivery+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` name++instance Prelude.NFData CreateProject where+  rnf CreateProject' {..} =+    Prelude.rnf appConfigResource+      `Prelude.seq` Prelude.rnf dataDelivery+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf name++instance Data.ToHeaders CreateProject where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateProject where+  toJSON CreateProject' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("appConfigResource" Data..=)+              Prelude.<$> appConfigResource,+            ("dataDelivery" Data..=) Prelude.<$> dataDelivery,+            ("description" Data..=) Prelude.<$> description,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("name" Data..= name)+          ]+      )++instance Data.ToPath CreateProject where+  toPath = Prelude.const "/projects"++instance Data.ToQuery CreateProject where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateProjectResponse' smart constructor.+data CreateProjectResponse = CreateProjectResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A structure that contains information about the created project.+    project :: Project+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateProjectResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createProjectResponse_httpStatus' - The response's http status code.+--+-- 'project', 'createProjectResponse_project' - A structure that contains information about the created project.+newCreateProjectResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'project'+  Project ->+  CreateProjectResponse+newCreateProjectResponse pHttpStatus_ pProject_ =+  CreateProjectResponse'+    { httpStatus = pHttpStatus_,+      project = pProject_+    }++-- | The response's http status code.+createProjectResponse_httpStatus :: Lens.Lens' CreateProjectResponse Prelude.Int+createProjectResponse_httpStatus = Lens.lens (\CreateProjectResponse' {httpStatus} -> httpStatus) (\s@CreateProjectResponse' {} a -> s {httpStatus = a} :: CreateProjectResponse)++-- | A structure that contains information about the created project.+createProjectResponse_project :: Lens.Lens' CreateProjectResponse Project+createProjectResponse_project = Lens.lens (\CreateProjectResponse' {project} -> project) (\s@CreateProjectResponse' {} a -> s {project = a} :: CreateProjectResponse)++instance Prelude.NFData CreateProjectResponse where+  rnf CreateProjectResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf project
+ gen/Amazonka/Evidently/CreateSegment.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.Evidently.CreateSegment+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Use this operation to define a /segment/ of your audience. A segment is+-- a portion of your audience that share one or more characteristics.+-- Examples could be Chrome browser users, users in Europe, or Firefox+-- browser users in Europe who also fit other criteria that your+-- application collects, such as age.+--+-- Using a segment in an experiment limits that experiment to evaluate only+-- the users who match the segment criteria. Using one or more segments in+-- a launch allows you to define different traffic splits for the different+-- audience segments.+--+-- >  <p>For more information about segment pattern syntax, see <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments.html#CloudWatch-Evidently-segments-syntax.html"> Segment rule pattern syntax</a>.</p> <p>The pattern that you define for a segment is matched against the value of <code>evaluationContext</code>, which is passed into Evidently in the <a href="https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_EvaluateFeature.html">EvaluateFeature</a> operation, when Evidently assigns a feature variation to a user.</p>+module Amazonka.Evidently.CreateSegment+  ( -- * Creating a Request+    CreateSegment (..),+    newCreateSegment,++    -- * Request Lenses+    createSegment_description,+    createSegment_tags,+    createSegment_name,+    createSegment_pattern,++    -- * Destructuring the Response+    CreateSegmentResponse (..),+    newCreateSegmentResponse,++    -- * Response Lenses+    createSegmentResponse_httpStatus,+    createSegmentResponse_segment,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateSegment' smart constructor.+data CreateSegment = CreateSegment'+  { -- | An optional description for this segment.+    description :: Prelude.Maybe Prelude.Text,+    -- | Assigns one or more tags (key-value pairs) to the segment.+    --+    -- Tags can help you organize and categorize your resources. You can also+    -- use them to scope user permissions by granting a user permission to+    -- access or change only resources with certain tag values.+    --+    -- Tags don\'t have any semantic meaning to Amazon Web Services and are+    -- interpreted strictly as strings of characters.+    --+    -- >  <p>You can associate as many as 50 tags with a segment.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A name for the segment.+    name :: Prelude.Text,+    -- | The pattern to use for the segment. For more information about pattern+    -- syntax, see+    -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments.html#CloudWatch-Evidently-segments-syntax.html Segment rule pattern syntax>.+    pattern' :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateSegment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createSegment_description' - An optional description for this segment.+--+-- 'tags', 'createSegment_tags' - Assigns one or more tags (key-value pairs) to the segment.+--+-- Tags can help you organize and categorize your resources. You can also+-- use them to scope user permissions by granting a user permission to+-- access or change only resources with certain tag values.+--+-- Tags don\'t have any semantic meaning to Amazon Web Services and are+-- interpreted strictly as strings of characters.+--+-- >  <p>You can associate as many as 50 tags with a segment.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+--+-- 'name', 'createSegment_name' - A name for the segment.+--+-- 'pattern'', 'createSegment_pattern' - The pattern to use for the segment. For more information about pattern+-- syntax, see+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments.html#CloudWatch-Evidently-segments-syntax.html Segment rule pattern syntax>.+newCreateSegment ::+  -- | 'name'+  Prelude.Text ->+  -- | 'pattern''+  Prelude.Text ->+  CreateSegment+newCreateSegment pName_ pPattern_ =+  CreateSegment'+    { description = Prelude.Nothing,+      tags = Prelude.Nothing,+      name = pName_,+      pattern' = pPattern_+    }++-- | An optional description for this segment.+createSegment_description :: Lens.Lens' CreateSegment (Prelude.Maybe Prelude.Text)+createSegment_description = Lens.lens (\CreateSegment' {description} -> description) (\s@CreateSegment' {} a -> s {description = a} :: CreateSegment)++-- | Assigns one or more tags (key-value pairs) to the segment.+--+-- Tags can help you organize and categorize your resources. You can also+-- use them to scope user permissions by granting a user permission to+-- access or change only resources with certain tag values.+--+-- Tags don\'t have any semantic meaning to Amazon Web Services and are+-- interpreted strictly as strings of characters.+--+-- >  <p>You can associate as many as 50 tags with a segment.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>+createSegment_tags :: Lens.Lens' CreateSegment (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createSegment_tags = Lens.lens (\CreateSegment' {tags} -> tags) (\s@CreateSegment' {} a -> s {tags = a} :: CreateSegment) Prelude.. Lens.mapping Lens.coerced++-- | A name for the segment.+createSegment_name :: Lens.Lens' CreateSegment Prelude.Text+createSegment_name = Lens.lens (\CreateSegment' {name} -> name) (\s@CreateSegment' {} a -> s {name = a} :: CreateSegment)++-- | The pattern to use for the segment. For more information about pattern+-- syntax, see+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments.html#CloudWatch-Evidently-segments-syntax.html Segment rule pattern syntax>.+createSegment_pattern :: Lens.Lens' CreateSegment Prelude.Text+createSegment_pattern = Lens.lens (\CreateSegment' {pattern'} -> pattern') (\s@CreateSegment' {} a -> s {pattern' = a} :: CreateSegment)++instance Core.AWSRequest CreateSegment where+  type+    AWSResponse CreateSegment =+      CreateSegmentResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateSegmentResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "segment")+      )++instance Prelude.Hashable CreateSegment where+  hashWithSalt _salt CreateSegment' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` pattern'++instance Prelude.NFData CreateSegment where+  rnf CreateSegment' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf pattern'++instance Data.ToHeaders CreateSegment where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateSegment where+  toJSON CreateSegment' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("name" Data..= name),+            Prelude.Just ("pattern" Data..= pattern')+          ]+      )++instance Data.ToPath CreateSegment where+  toPath = Prelude.const "/segments"++instance Data.ToQuery CreateSegment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateSegmentResponse' smart constructor.+data CreateSegmentResponse = CreateSegmentResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A structure that contains the complete information about the segment+    -- that was just created.+    segment :: Segment+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateSegmentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createSegmentResponse_httpStatus' - The response's http status code.+--+-- 'segment', 'createSegmentResponse_segment' - A structure that contains the complete information about the segment+-- that was just created.+newCreateSegmentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'segment'+  Segment ->+  CreateSegmentResponse+newCreateSegmentResponse pHttpStatus_ pSegment_ =+  CreateSegmentResponse'+    { httpStatus = pHttpStatus_,+      segment = pSegment_+    }++-- | The response's http status code.+createSegmentResponse_httpStatus :: Lens.Lens' CreateSegmentResponse Prelude.Int+createSegmentResponse_httpStatus = Lens.lens (\CreateSegmentResponse' {httpStatus} -> httpStatus) (\s@CreateSegmentResponse' {} a -> s {httpStatus = a} :: CreateSegmentResponse)++-- | A structure that contains the complete information about the segment+-- that was just created.+createSegmentResponse_segment :: Lens.Lens' CreateSegmentResponse Segment+createSegmentResponse_segment = Lens.lens (\CreateSegmentResponse' {segment} -> segment) (\s@CreateSegmentResponse' {} a -> s {segment = a} :: CreateSegmentResponse)++instance Prelude.NFData CreateSegmentResponse where+  rnf CreateSegmentResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf segment
+ gen/Amazonka/Evidently/DeleteExperiment.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.Evidently.DeleteExperiment+-- 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 Evidently experiment. The feature used for the experiment is+-- not deleted.+--+-- To stop an experiment without deleting it, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_StopExperiment.html StopExperiment>.+module Amazonka.Evidently.DeleteExperiment+  ( -- * Creating a Request+    DeleteExperiment (..),+    newDeleteExperiment,++    -- * Request Lenses+    deleteExperiment_experiment,+    deleteExperiment_project,++    -- * Destructuring the Response+    DeleteExperimentResponse (..),+    newDeleteExperimentResponse,++    -- * Response Lenses+    deleteExperimentResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteExperiment' smart constructor.+data DeleteExperiment = DeleteExperiment'+  { -- | The name of the experiment to delete.+    experiment :: Prelude.Text,+    -- | The name or ARN of the project that contains the experiment to delete.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteExperiment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'experiment', 'deleteExperiment_experiment' - The name of the experiment to delete.+--+-- 'project', 'deleteExperiment_project' - The name or ARN of the project that contains the experiment to delete.+newDeleteExperiment ::+  -- | 'experiment'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  DeleteExperiment+newDeleteExperiment pExperiment_ pProject_ =+  DeleteExperiment'+    { experiment = pExperiment_,+      project = pProject_+    }++-- | The name of the experiment to delete.+deleteExperiment_experiment :: Lens.Lens' DeleteExperiment Prelude.Text+deleteExperiment_experiment = Lens.lens (\DeleteExperiment' {experiment} -> experiment) (\s@DeleteExperiment' {} a -> s {experiment = a} :: DeleteExperiment)++-- | The name or ARN of the project that contains the experiment to delete.+deleteExperiment_project :: Lens.Lens' DeleteExperiment Prelude.Text+deleteExperiment_project = Lens.lens (\DeleteExperiment' {project} -> project) (\s@DeleteExperiment' {} a -> s {project = a} :: DeleteExperiment)++instance Core.AWSRequest DeleteExperiment where+  type+    AWSResponse DeleteExperiment =+      DeleteExperimentResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteExperimentResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteExperiment where+  hashWithSalt _salt DeleteExperiment' {..} =+    _salt+      `Prelude.hashWithSalt` experiment+      `Prelude.hashWithSalt` project++instance Prelude.NFData DeleteExperiment where+  rnf DeleteExperiment' {..} =+    Prelude.rnf experiment+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders DeleteExperiment where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteExperiment where+  toPath DeleteExperiment' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/experiments/",+        Data.toBS experiment+      ]++instance Data.ToQuery DeleteExperiment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteExperimentResponse' smart constructor.+data DeleteExperimentResponse = DeleteExperimentResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteExperimentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteExperimentResponse_httpStatus' - The response's http status code.+newDeleteExperimentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteExperimentResponse+newDeleteExperimentResponse pHttpStatus_ =+  DeleteExperimentResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deleteExperimentResponse_httpStatus :: Lens.Lens' DeleteExperimentResponse Prelude.Int+deleteExperimentResponse_httpStatus = Lens.lens (\DeleteExperimentResponse' {httpStatus} -> httpStatus) (\s@DeleteExperimentResponse' {} a -> s {httpStatus = a} :: DeleteExperimentResponse)++instance Prelude.NFData DeleteExperimentResponse where+  rnf DeleteExperimentResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/DeleteFeature.hs view
@@ -0,0 +1,166 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.DeleteFeature+-- 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 Evidently feature.+module Amazonka.Evidently.DeleteFeature+  ( -- * Creating a Request+    DeleteFeature (..),+    newDeleteFeature,++    -- * Request Lenses+    deleteFeature_feature,+    deleteFeature_project,++    -- * Destructuring the Response+    DeleteFeatureResponse (..),+    newDeleteFeatureResponse,++    -- * Response Lenses+    deleteFeatureResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteFeature' smart constructor.+data DeleteFeature = DeleteFeature'+  { -- | The name of the feature to delete.+    feature :: Prelude.Text,+    -- | The name or ARN of the project that contains the feature to delete.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteFeature' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'feature', 'deleteFeature_feature' - The name of the feature to delete.+--+-- 'project', 'deleteFeature_project' - The name or ARN of the project that contains the feature to delete.+newDeleteFeature ::+  -- | 'feature'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  DeleteFeature+newDeleteFeature pFeature_ pProject_ =+  DeleteFeature'+    { feature = pFeature_,+      project = pProject_+    }++-- | The name of the feature to delete.+deleteFeature_feature :: Lens.Lens' DeleteFeature Prelude.Text+deleteFeature_feature = Lens.lens (\DeleteFeature' {feature} -> feature) (\s@DeleteFeature' {} a -> s {feature = a} :: DeleteFeature)++-- | The name or ARN of the project that contains the feature to delete.+deleteFeature_project :: Lens.Lens' DeleteFeature Prelude.Text+deleteFeature_project = Lens.lens (\DeleteFeature' {project} -> project) (\s@DeleteFeature' {} a -> s {project = a} :: DeleteFeature)++instance Core.AWSRequest DeleteFeature where+  type+    AWSResponse DeleteFeature =+      DeleteFeatureResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteFeatureResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteFeature where+  hashWithSalt _salt DeleteFeature' {..} =+    _salt+      `Prelude.hashWithSalt` feature+      `Prelude.hashWithSalt` project++instance Prelude.NFData DeleteFeature where+  rnf DeleteFeature' {..} =+    Prelude.rnf feature+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders DeleteFeature where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteFeature where+  toPath DeleteFeature' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/features/",+        Data.toBS feature+      ]++instance Data.ToQuery DeleteFeature where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteFeatureResponse' smart constructor.+data DeleteFeatureResponse = DeleteFeatureResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteFeatureResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteFeatureResponse_httpStatus' - The response's http status code.+newDeleteFeatureResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteFeatureResponse+newDeleteFeatureResponse pHttpStatus_ =+  DeleteFeatureResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+deleteFeatureResponse_httpStatus :: Lens.Lens' DeleteFeatureResponse Prelude.Int+deleteFeatureResponse_httpStatus = Lens.lens (\DeleteFeatureResponse' {httpStatus} -> httpStatus) (\s@DeleteFeatureResponse' {} a -> s {httpStatus = a} :: DeleteFeatureResponse)++instance Prelude.NFData DeleteFeatureResponse where+  rnf DeleteFeatureResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/DeleteLaunch.hs view
@@ -0,0 +1,168 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.DeleteLaunch+-- 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 Evidently launch. The feature used for the launch is not+-- deleted.+--+-- To stop a launch without deleting it, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_StopLaunch.html StopLaunch>.+module Amazonka.Evidently.DeleteLaunch+  ( -- * Creating a Request+    DeleteLaunch (..),+    newDeleteLaunch,++    -- * Request Lenses+    deleteLaunch_launch,+    deleteLaunch_project,++    -- * Destructuring the Response+    DeleteLaunchResponse (..),+    newDeleteLaunchResponse,++    -- * Response Lenses+    deleteLaunchResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteLaunch' smart constructor.+data DeleteLaunch = DeleteLaunch'+  { -- | The name of the launch to delete.+    launch :: Prelude.Text,+    -- | The name or ARN of the project that contains the launch to delete.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteLaunch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'launch', 'deleteLaunch_launch' - The name of the launch to delete.+--+-- 'project', 'deleteLaunch_project' - The name or ARN of the project that contains the launch to delete.+newDeleteLaunch ::+  -- | 'launch'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  DeleteLaunch+newDeleteLaunch pLaunch_ pProject_ =+  DeleteLaunch'+    { launch = pLaunch_,+      project = pProject_+    }++-- | The name of the launch to delete.+deleteLaunch_launch :: Lens.Lens' DeleteLaunch Prelude.Text+deleteLaunch_launch = Lens.lens (\DeleteLaunch' {launch} -> launch) (\s@DeleteLaunch' {} a -> s {launch = a} :: DeleteLaunch)++-- | The name or ARN of the project that contains the launch to delete.+deleteLaunch_project :: Lens.Lens' DeleteLaunch Prelude.Text+deleteLaunch_project = Lens.lens (\DeleteLaunch' {project} -> project) (\s@DeleteLaunch' {} a -> s {project = a} :: DeleteLaunch)++instance Core.AWSRequest DeleteLaunch where+  type AWSResponse DeleteLaunch = DeleteLaunchResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteLaunchResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteLaunch where+  hashWithSalt _salt DeleteLaunch' {..} =+    _salt+      `Prelude.hashWithSalt` launch+      `Prelude.hashWithSalt` project++instance Prelude.NFData DeleteLaunch where+  rnf DeleteLaunch' {..} =+    Prelude.rnf launch+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders DeleteLaunch where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteLaunch where+  toPath DeleteLaunch' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/launches/",+        Data.toBS launch+      ]++instance Data.ToQuery DeleteLaunch where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteLaunchResponse' smart constructor.+data DeleteLaunchResponse = DeleteLaunchResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteLaunchResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteLaunchResponse_httpStatus' - The response's http status code.+newDeleteLaunchResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteLaunchResponse+newDeleteLaunchResponse pHttpStatus_ =+  DeleteLaunchResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+deleteLaunchResponse_httpStatus :: Lens.Lens' DeleteLaunchResponse Prelude.Int+deleteLaunchResponse_httpStatus = Lens.lens (\DeleteLaunchResponse' {httpStatus} -> httpStatus) (\s@DeleteLaunchResponse' {} a -> s {httpStatus = a} :: DeleteLaunchResponse)++instance Prelude.NFData DeleteLaunchResponse where+  rnf DeleteLaunchResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/DeleteProject.hs view
@@ -0,0 +1,146 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.DeleteProject+-- 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 Evidently project. Before you can delete a project, you must+-- delete all the features that the project contains. To delete a feature,+-- use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_DeleteFeature.html DeleteFeature>.+module Amazonka.Evidently.DeleteProject+  ( -- * Creating a Request+    DeleteProject (..),+    newDeleteProject,++    -- * Request Lenses+    deleteProject_project,++    -- * Destructuring the Response+    DeleteProjectResponse (..),+    newDeleteProjectResponse,++    -- * Response Lenses+    deleteProjectResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteProject' smart constructor.+data DeleteProject = DeleteProject'+  { -- | The name or ARN of the project to delete.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteProject' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'project', 'deleteProject_project' - The name or ARN of the project to delete.+newDeleteProject ::+  -- | 'project'+  Prelude.Text ->+  DeleteProject+newDeleteProject pProject_ =+  DeleteProject' {project = pProject_}++-- | The name or ARN of the project to delete.+deleteProject_project :: Lens.Lens' DeleteProject Prelude.Text+deleteProject_project = Lens.lens (\DeleteProject' {project} -> project) (\s@DeleteProject' {} a -> s {project = a} :: DeleteProject)++instance Core.AWSRequest DeleteProject where+  type+    AWSResponse DeleteProject =+      DeleteProjectResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteProjectResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteProject where+  hashWithSalt _salt DeleteProject' {..} =+    _salt `Prelude.hashWithSalt` project++instance Prelude.NFData DeleteProject where+  rnf DeleteProject' {..} = Prelude.rnf project++instance Data.ToHeaders DeleteProject where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteProject where+  toPath DeleteProject' {..} =+    Prelude.mconcat ["/projects/", Data.toBS project]++instance Data.ToQuery DeleteProject where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteProjectResponse' smart constructor.+data DeleteProjectResponse = DeleteProjectResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteProjectResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteProjectResponse_httpStatus' - The response's http status code.+newDeleteProjectResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteProjectResponse+newDeleteProjectResponse pHttpStatus_ =+  DeleteProjectResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+deleteProjectResponse_httpStatus :: Lens.Lens' DeleteProjectResponse Prelude.Int+deleteProjectResponse_httpStatus = Lens.lens (\DeleteProjectResponse' {httpStatus} -> httpStatus) (\s@DeleteProjectResponse' {} a -> s {httpStatus = a} :: DeleteProjectResponse)++instance Prelude.NFData DeleteProjectResponse where+  rnf DeleteProjectResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/DeleteSegment.hs view
@@ -0,0 +1,145 @@+{-# 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.Evidently.DeleteSegment+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes a segment. You can\'t delete a segment that is being used in a+-- launch or experiment, even if that launch or experiment is not currently+-- running.+module Amazonka.Evidently.DeleteSegment+  ( -- * Creating a Request+    DeleteSegment (..),+    newDeleteSegment,++    -- * Request Lenses+    deleteSegment_segment,++    -- * Destructuring the Response+    DeleteSegmentResponse (..),+    newDeleteSegmentResponse,++    -- * Response Lenses+    deleteSegmentResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteSegment' smart constructor.+data DeleteSegment = DeleteSegment'+  { -- | Specifies the segment to delete.+    segment :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteSegment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'segment', 'deleteSegment_segment' - Specifies the segment to delete.+newDeleteSegment ::+  -- | 'segment'+  Prelude.Text ->+  DeleteSegment+newDeleteSegment pSegment_ =+  DeleteSegment' {segment = pSegment_}++-- | Specifies the segment to delete.+deleteSegment_segment :: Lens.Lens' DeleteSegment Prelude.Text+deleteSegment_segment = Lens.lens (\DeleteSegment' {segment} -> segment) (\s@DeleteSegment' {} a -> s {segment = a} :: DeleteSegment)++instance Core.AWSRequest DeleteSegment where+  type+    AWSResponse DeleteSegment =+      DeleteSegmentResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteSegmentResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteSegment where+  hashWithSalt _salt DeleteSegment' {..} =+    _salt `Prelude.hashWithSalt` segment++instance Prelude.NFData DeleteSegment where+  rnf DeleteSegment' {..} = Prelude.rnf segment++instance Data.ToHeaders DeleteSegment where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteSegment where+  toPath DeleteSegment' {..} =+    Prelude.mconcat ["/segments/", Data.toBS segment]++instance Data.ToQuery DeleteSegment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteSegmentResponse' smart constructor.+data DeleteSegmentResponse = DeleteSegmentResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteSegmentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteSegmentResponse_httpStatus' - The response's http status code.+newDeleteSegmentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteSegmentResponse+newDeleteSegmentResponse pHttpStatus_ =+  DeleteSegmentResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+deleteSegmentResponse_httpStatus :: Lens.Lens' DeleteSegmentResponse Prelude.Int+deleteSegmentResponse_httpStatus = Lens.lens (\DeleteSegmentResponse' {httpStatus} -> httpStatus) (\s@DeleteSegmentResponse' {} a -> s {httpStatus = a} :: DeleteSegmentResponse)++instance Prelude.NFData DeleteSegmentResponse where+  rnf DeleteSegmentResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/EvaluateFeature.hs view
@@ -0,0 +1,306 @@+{-# 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.Evidently.EvaluateFeature+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- This operation assigns a feature variation to one given user session.+-- You pass in an @entityID@ that represents the user. Evidently then+-- checks the evaluation rules and assigns the variation.+--+-- The first rules that are evaluated are the override rules. If the+-- user\'s @entityID@ matches an override rule, the user is served the+-- variation specified by that rule.+--+-- >  <p>If there is a current launch with this feature that uses segment overrides, and if the user session's <code>evaluationContext</code> matches a segment rule defined in a segment override, the configuration in the segment overrides is used. For more information about segments, see <a href="https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_CreateSegment.html">CreateSegment</a> and <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments.html">Use segments to focus your audience</a>.</p> <p>If there is a launch with no segment overrides, the user might be assigned to a variation in the launch. The chance of this depends on the percentage of users that are allocated to that launch. If the user is enrolled in the launch, the variation they are served depends on the allocation of the various feature variations used for the launch.</p> <p>If the user is not assigned to a launch, and there is an ongoing experiment for this feature, the user might be assigned to a variation in the experiment. The chance of this depends on the percentage of users that are allocated to that experiment.</p> <p>If the experiment uses a segment, then only user sessions with <code>evaluationContext</code> values that match the segment rule are used in the experiment.</p> <p>If the user is enrolled in the experiment, the variation they are served depends on the allocation of the various feature variations used for the experiment. </p> <p>If the user is not assigned to a launch or experiment, they are served the default variation.</p>+module Amazonka.Evidently.EvaluateFeature+  ( -- * Creating a Request+    EvaluateFeature (..),+    newEvaluateFeature,++    -- * Request Lenses+    evaluateFeature_evaluationContext,+    evaluateFeature_entityId,+    evaluateFeature_feature,+    evaluateFeature_project,++    -- * Destructuring the Response+    EvaluateFeatureResponse (..),+    newEvaluateFeatureResponse,++    -- * Response Lenses+    evaluateFeatureResponse_details,+    evaluateFeatureResponse_reason,+    evaluateFeatureResponse_value,+    evaluateFeatureResponse_variation,+    evaluateFeatureResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newEvaluateFeature' smart constructor.+data EvaluateFeature = EvaluateFeature'+  { -- | A JSON object of attributes that you can optionally pass in as part of+    -- the evaluation event sent to Evidently from the user session. Evidently+    -- can use this value to match user sessions with defined audience+    -- segments. For more information, see+    -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments.html Use segments to focus your audience>.+    --+    -- >  <p>If you include this parameter, the value must be a JSON object. A JSON array is not supported.</p>+    evaluationContext :: Prelude.Maybe Prelude.Text,+    -- | An internal ID that represents a unique user of the application. This+    -- @entityID@ is checked against any override rules assigned for this+    -- feature.+    entityId :: Prelude.Text,+    -- | The name of the feature being evaluated.+    feature :: Prelude.Text,+    -- | The name or ARN of the project that contains this feature.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EvaluateFeature' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'evaluationContext', 'evaluateFeature_evaluationContext' - A JSON object of attributes that you can optionally pass in as part of+-- the evaluation event sent to Evidently from the user session. Evidently+-- can use this value to match user sessions with defined audience+-- segments. For more information, see+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments.html Use segments to focus your audience>.+--+-- >  <p>If you include this parameter, the value must be a JSON object. A JSON array is not supported.</p>+--+-- 'entityId', 'evaluateFeature_entityId' - An internal ID that represents a unique user of the application. This+-- @entityID@ is checked against any override rules assigned for this+-- feature.+--+-- 'feature', 'evaluateFeature_feature' - The name of the feature being evaluated.+--+-- 'project', 'evaluateFeature_project' - The name or ARN of the project that contains this feature.+newEvaluateFeature ::+  -- | 'entityId'+  Prelude.Text ->+  -- | 'feature'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  EvaluateFeature+newEvaluateFeature pEntityId_ pFeature_ pProject_ =+  EvaluateFeature'+    { evaluationContext =+        Prelude.Nothing,+      entityId = pEntityId_,+      feature = pFeature_,+      project = pProject_+    }++-- | A JSON object of attributes that you can optionally pass in as part of+-- the evaluation event sent to Evidently from the user session. Evidently+-- can use this value to match user sessions with defined audience+-- segments. For more information, see+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments.html Use segments to focus your audience>.+--+-- >  <p>If you include this parameter, the value must be a JSON object. A JSON array is not supported.</p>+evaluateFeature_evaluationContext :: Lens.Lens' EvaluateFeature (Prelude.Maybe Prelude.Text)+evaluateFeature_evaluationContext = Lens.lens (\EvaluateFeature' {evaluationContext} -> evaluationContext) (\s@EvaluateFeature' {} a -> s {evaluationContext = a} :: EvaluateFeature)++-- | An internal ID that represents a unique user of the application. This+-- @entityID@ is checked against any override rules assigned for this+-- feature.+evaluateFeature_entityId :: Lens.Lens' EvaluateFeature Prelude.Text+evaluateFeature_entityId = Lens.lens (\EvaluateFeature' {entityId} -> entityId) (\s@EvaluateFeature' {} a -> s {entityId = a} :: EvaluateFeature)++-- | The name of the feature being evaluated.+evaluateFeature_feature :: Lens.Lens' EvaluateFeature Prelude.Text+evaluateFeature_feature = Lens.lens (\EvaluateFeature' {feature} -> feature) (\s@EvaluateFeature' {} a -> s {feature = a} :: EvaluateFeature)++-- | The name or ARN of the project that contains this feature.+evaluateFeature_project :: Lens.Lens' EvaluateFeature Prelude.Text+evaluateFeature_project = Lens.lens (\EvaluateFeature' {project} -> project) (\s@EvaluateFeature' {} a -> s {project = a} :: EvaluateFeature)++instance Core.AWSRequest EvaluateFeature where+  type+    AWSResponse EvaluateFeature =+      EvaluateFeatureResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          EvaluateFeatureResponse'+            Prelude.<$> (x Data..?> "details")+            Prelude.<*> (x Data..?> "reason")+            Prelude.<*> (x Data..?> "value")+            Prelude.<*> (x Data..?> "variation")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable EvaluateFeature where+  hashWithSalt _salt EvaluateFeature' {..} =+    _salt+      `Prelude.hashWithSalt` evaluationContext+      `Prelude.hashWithSalt` entityId+      `Prelude.hashWithSalt` feature+      `Prelude.hashWithSalt` project++instance Prelude.NFData EvaluateFeature where+  rnf EvaluateFeature' {..} =+    Prelude.rnf evaluationContext+      `Prelude.seq` Prelude.rnf entityId+      `Prelude.seq` Prelude.rnf feature+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders EvaluateFeature where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON EvaluateFeature where+  toJSON EvaluateFeature' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("evaluationContext" Data..=)+              Prelude.<$> evaluationContext,+            Prelude.Just ("entityId" Data..= entityId)+          ]+      )++instance Data.ToPath EvaluateFeature where+  toPath EvaluateFeature' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/evaluations/",+        Data.toBS feature+      ]++instance Data.ToQuery EvaluateFeature where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newEvaluateFeatureResponse' smart constructor.+data EvaluateFeatureResponse = EvaluateFeatureResponse'+  { -- | If this user was assigned to a launch or experiment, this field lists+    -- the launch or experiment name.+    details :: Prelude.Maybe Prelude.Text,+    -- | Specifies the reason that the user session was assigned this variation.+    -- Possible values include @DEFAULT@, meaning the user was served the+    -- default variation; @LAUNCH_RULE_MATCH@, if the user session was enrolled+    -- in a launch; @EXPERIMENT_RULE_MATCH@, if the user session was enrolled+    -- in an experiment; or @ENTITY_OVERRIDES_MATCH@, if the user\'s @entityId@+    -- matches an override rule.+    reason :: Prelude.Maybe Prelude.Text,+    -- | The value assigned to this variation to differentiate it from the other+    -- variations of this feature.+    value :: Prelude.Maybe VariableValue,+    -- | The name of the variation that was served to the user session.+    variation :: 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 'EvaluateFeatureResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'details', 'evaluateFeatureResponse_details' - If this user was assigned to a launch or experiment, this field lists+-- the launch or experiment name.+--+-- 'reason', 'evaluateFeatureResponse_reason' - Specifies the reason that the user session was assigned this variation.+-- Possible values include @DEFAULT@, meaning the user was served the+-- default variation; @LAUNCH_RULE_MATCH@, if the user session was enrolled+-- in a launch; @EXPERIMENT_RULE_MATCH@, if the user session was enrolled+-- in an experiment; or @ENTITY_OVERRIDES_MATCH@, if the user\'s @entityId@+-- matches an override rule.+--+-- 'value', 'evaluateFeatureResponse_value' - The value assigned to this variation to differentiate it from the other+-- variations of this feature.+--+-- 'variation', 'evaluateFeatureResponse_variation' - The name of the variation that was served to the user session.+--+-- 'httpStatus', 'evaluateFeatureResponse_httpStatus' - The response's http status code.+newEvaluateFeatureResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  EvaluateFeatureResponse+newEvaluateFeatureResponse pHttpStatus_ =+  EvaluateFeatureResponse'+    { details = Prelude.Nothing,+      reason = Prelude.Nothing,+      value = Prelude.Nothing,+      variation = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | If this user was assigned to a launch or experiment, this field lists+-- the launch or experiment name.+evaluateFeatureResponse_details :: Lens.Lens' EvaluateFeatureResponse (Prelude.Maybe Prelude.Text)+evaluateFeatureResponse_details = Lens.lens (\EvaluateFeatureResponse' {details} -> details) (\s@EvaluateFeatureResponse' {} a -> s {details = a} :: EvaluateFeatureResponse)++-- | Specifies the reason that the user session was assigned this variation.+-- Possible values include @DEFAULT@, meaning the user was served the+-- default variation; @LAUNCH_RULE_MATCH@, if the user session was enrolled+-- in a launch; @EXPERIMENT_RULE_MATCH@, if the user session was enrolled+-- in an experiment; or @ENTITY_OVERRIDES_MATCH@, if the user\'s @entityId@+-- matches an override rule.+evaluateFeatureResponse_reason :: Lens.Lens' EvaluateFeatureResponse (Prelude.Maybe Prelude.Text)+evaluateFeatureResponse_reason = Lens.lens (\EvaluateFeatureResponse' {reason} -> reason) (\s@EvaluateFeatureResponse' {} a -> s {reason = a} :: EvaluateFeatureResponse)++-- | The value assigned to this variation to differentiate it from the other+-- variations of this feature.+evaluateFeatureResponse_value :: Lens.Lens' EvaluateFeatureResponse (Prelude.Maybe VariableValue)+evaluateFeatureResponse_value = Lens.lens (\EvaluateFeatureResponse' {value} -> value) (\s@EvaluateFeatureResponse' {} a -> s {value = a} :: EvaluateFeatureResponse)++-- | The name of the variation that was served to the user session.+evaluateFeatureResponse_variation :: Lens.Lens' EvaluateFeatureResponse (Prelude.Maybe Prelude.Text)+evaluateFeatureResponse_variation = Lens.lens (\EvaluateFeatureResponse' {variation} -> variation) (\s@EvaluateFeatureResponse' {} a -> s {variation = a} :: EvaluateFeatureResponse)++-- | The response's http status code.+evaluateFeatureResponse_httpStatus :: Lens.Lens' EvaluateFeatureResponse Prelude.Int+evaluateFeatureResponse_httpStatus = Lens.lens (\EvaluateFeatureResponse' {httpStatus} -> httpStatus) (\s@EvaluateFeatureResponse' {} a -> s {httpStatus = a} :: EvaluateFeatureResponse)++instance Prelude.NFData EvaluateFeatureResponse where+  rnf EvaluateFeatureResponse' {..} =+    Prelude.rnf details+      `Prelude.seq` Prelude.rnf reason+      `Prelude.seq` Prelude.rnf value+      `Prelude.seq` Prelude.rnf variation+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/GetExperiment.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.Evidently.GetExperiment+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the details about one experiment. You must already know the+-- experiment name. To retrieve a list of experiments in your account, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_ListExperiments.html ListExperiments>.+module Amazonka.Evidently.GetExperiment+  ( -- * Creating a Request+    GetExperiment (..),+    newGetExperiment,++    -- * Request Lenses+    getExperiment_experiment,+    getExperiment_project,++    -- * Destructuring the Response+    GetExperimentResponse (..),+    newGetExperimentResponse,++    -- * Response Lenses+    getExperimentResponse_experiment,+    getExperimentResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetExperiment' smart constructor.+data GetExperiment = GetExperiment'+  { -- | The name of the experiment that you want to see the details of.+    experiment :: Prelude.Text,+    -- | The name or ARN of the project that contains the experiment.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetExperiment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'experiment', 'getExperiment_experiment' - The name of the experiment that you want to see the details of.+--+-- 'project', 'getExperiment_project' - The name or ARN of the project that contains the experiment.+newGetExperiment ::+  -- | 'experiment'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  GetExperiment+newGetExperiment pExperiment_ pProject_ =+  GetExperiment'+    { experiment = pExperiment_,+      project = pProject_+    }++-- | The name of the experiment that you want to see the details of.+getExperiment_experiment :: Lens.Lens' GetExperiment Prelude.Text+getExperiment_experiment = Lens.lens (\GetExperiment' {experiment} -> experiment) (\s@GetExperiment' {} a -> s {experiment = a} :: GetExperiment)++-- | The name or ARN of the project that contains the experiment.+getExperiment_project :: Lens.Lens' GetExperiment Prelude.Text+getExperiment_project = Lens.lens (\GetExperiment' {project} -> project) (\s@GetExperiment' {} a -> s {project = a} :: GetExperiment)++instance Core.AWSRequest GetExperiment where+  type+    AWSResponse GetExperiment =+      GetExperimentResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetExperimentResponse'+            Prelude.<$> (x Data..?> "experiment")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetExperiment where+  hashWithSalt _salt GetExperiment' {..} =+    _salt+      `Prelude.hashWithSalt` experiment+      `Prelude.hashWithSalt` project++instance Prelude.NFData GetExperiment where+  rnf GetExperiment' {..} =+    Prelude.rnf experiment+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders GetExperiment where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetExperiment where+  toPath GetExperiment' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/experiments/",+        Data.toBS experiment+      ]++instance Data.ToQuery GetExperiment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetExperimentResponse' smart constructor.+data GetExperimentResponse = GetExperimentResponse'+  { -- | A structure containing the configuration details of the experiment.+    experiment :: Prelude.Maybe Experiment,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetExperimentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'experiment', 'getExperimentResponse_experiment' - A structure containing the configuration details of the experiment.+--+-- 'httpStatus', 'getExperimentResponse_httpStatus' - The response's http status code.+newGetExperimentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetExperimentResponse+newGetExperimentResponse pHttpStatus_ =+  GetExperimentResponse'+    { experiment =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A structure containing the configuration details of the experiment.+getExperimentResponse_experiment :: Lens.Lens' GetExperimentResponse (Prelude.Maybe Experiment)+getExperimentResponse_experiment = Lens.lens (\GetExperimentResponse' {experiment} -> experiment) (\s@GetExperimentResponse' {} a -> s {experiment = a} :: GetExperimentResponse)++-- | The response's http status code.+getExperimentResponse_httpStatus :: Lens.Lens' GetExperimentResponse Prelude.Int+getExperimentResponse_httpStatus = Lens.lens (\GetExperimentResponse' {httpStatus} -> httpStatus) (\s@GetExperimentResponse' {} a -> s {httpStatus = a} :: GetExperimentResponse)++instance Prelude.NFData GetExperimentResponse where+  rnf GetExperimentResponse' {..} =+    Prelude.rnf experiment+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/GetExperimentResults.hs view
@@ -0,0 +1,443 @@+{-# 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.Evidently.GetExperimentResults+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the results of a running or completed experiment. No results+-- are available until there have been 100 events for each variation and at+-- least 10 minutes have passed since the start of the experiment. To+-- increase the statistical power, Evidently performs an additional offline+-- p-value analysis at the end of the experiment. Offline p-value analysis+-- can detect statistical significance in some cases where the anytime+-- p-values used during the experiment do not find statistical+-- significance.+--+-- Experiment results are available up to 63 days after the start of the+-- experiment. They are not available after that because of CloudWatch data+-- retention policies.+module Amazonka.Evidently.GetExperimentResults+  ( -- * Creating a Request+    GetExperimentResults (..),+    newGetExperimentResults,++    -- * Request Lenses+    getExperimentResults_baseStat,+    getExperimentResults_endTime,+    getExperimentResults_period,+    getExperimentResults_reportNames,+    getExperimentResults_resultStats,+    getExperimentResults_startTime,+    getExperimentResults_experiment,+    getExperimentResults_metricNames,+    getExperimentResults_project,+    getExperimentResults_treatmentNames,++    -- * Destructuring the Response+    GetExperimentResultsResponse (..),+    newGetExperimentResultsResponse,++    -- * Response Lenses+    getExperimentResultsResponse_details,+    getExperimentResultsResponse_reports,+    getExperimentResultsResponse_resultsData,+    getExperimentResultsResponse_timestamps,+    getExperimentResultsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetExperimentResults' smart constructor.+data GetExperimentResults = GetExperimentResults'+  { -- | The statistic used to calculate experiment results. Currently the only+    -- valid value is @mean@, which uses the mean of the collected values as+    -- the statistic.+    baseStat :: Prelude.Maybe ExperimentBaseStat,+    -- | The date and time that the experiment ended, if it is completed. This+    -- must be no longer than 30 days after the experiment start time.+    endTime :: Prelude.Maybe Data.POSIX,+    -- | In seconds, the amount of time to aggregate results together.+    period :: Prelude.Maybe Prelude.Natural,+    -- | The names of the report types that you want to see. Currently,+    -- @BayesianInference@ is the only valid value.+    reportNames :: Prelude.Maybe [ExperimentReportName],+    -- | The statistics that you want to see in the returned results.+    --+    -- -   @PValue@ specifies to use p-values for the results. A p-value is+    --     used in hypothesis testing to measure how often you are willing to+    --     make a mistake in rejecting the null hypothesis. A general practice+    --     is to reject the null hypothesis and declare that the results are+    --     statistically significant when the p-value is less than 0.05.+    --+    -- -   @ConfidenceInterval@ specifies a confidence interval for the+    --     results. The confidence interval represents the range of values for+    --     the chosen metric that is likely to contain the true difference+    --     between the @baseStat@ of a variation and the baseline. Evidently+    --     returns the 95% confidence interval.+    --+    -- -   @TreatmentEffect@ is the difference in the statistic specified by+    --     the @baseStat@ parameter between each variation and the default+    --     variation.+    --+    -- -   @BaseStat@ returns the statistical values collected for the metric+    --     for each variation. The statistic uses the same statistic specified+    --     in the @baseStat@ parameter. Therefore, if @baseStat@ is @mean@,+    --     this returns the mean of the values collected for each variation.+    resultStats :: Prelude.Maybe [ExperimentResultRequestType],+    -- | The date and time that the experiment started.+    startTime :: Prelude.Maybe Data.POSIX,+    -- | The name of the experiment to retrieve the results of.+    experiment :: Prelude.Text,+    -- | The names of the experiment metrics that you want to see the results of.+    metricNames :: Prelude.NonEmpty Prelude.Text,+    -- | The name or ARN of the project that contains the experiment that you+    -- want to see the results of.+    project :: Prelude.Text,+    -- | The names of the experiment treatments that you want to see the results+    -- for.+    treatmentNames :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetExperimentResults' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'baseStat', 'getExperimentResults_baseStat' - The statistic used to calculate experiment results. Currently the only+-- valid value is @mean@, which uses the mean of the collected values as+-- the statistic.+--+-- 'endTime', 'getExperimentResults_endTime' - The date and time that the experiment ended, if it is completed. This+-- must be no longer than 30 days after the experiment start time.+--+-- 'period', 'getExperimentResults_period' - In seconds, the amount of time to aggregate results together.+--+-- 'reportNames', 'getExperimentResults_reportNames' - The names of the report types that you want to see. Currently,+-- @BayesianInference@ is the only valid value.+--+-- 'resultStats', 'getExperimentResults_resultStats' - The statistics that you want to see in the returned results.+--+-- -   @PValue@ specifies to use p-values for the results. A p-value is+--     used in hypothesis testing to measure how often you are willing to+--     make a mistake in rejecting the null hypothesis. A general practice+--     is to reject the null hypothesis and declare that the results are+--     statistically significant when the p-value is less than 0.05.+--+-- -   @ConfidenceInterval@ specifies a confidence interval for the+--     results. The confidence interval represents the range of values for+--     the chosen metric that is likely to contain the true difference+--     between the @baseStat@ of a variation and the baseline. Evidently+--     returns the 95% confidence interval.+--+-- -   @TreatmentEffect@ is the difference in the statistic specified by+--     the @baseStat@ parameter between each variation and the default+--     variation.+--+-- -   @BaseStat@ returns the statistical values collected for the metric+--     for each variation. The statistic uses the same statistic specified+--     in the @baseStat@ parameter. Therefore, if @baseStat@ is @mean@,+--     this returns the mean of the values collected for each variation.+--+-- 'startTime', 'getExperimentResults_startTime' - The date and time that the experiment started.+--+-- 'experiment', 'getExperimentResults_experiment' - The name of the experiment to retrieve the results of.+--+-- 'metricNames', 'getExperimentResults_metricNames' - The names of the experiment metrics that you want to see the results of.+--+-- 'project', 'getExperimentResults_project' - The name or ARN of the project that contains the experiment that you+-- want to see the results of.+--+-- 'treatmentNames', 'getExperimentResults_treatmentNames' - The names of the experiment treatments that you want to see the results+-- for.+newGetExperimentResults ::+  -- | 'experiment'+  Prelude.Text ->+  -- | 'metricNames'+  Prelude.NonEmpty Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  -- | 'treatmentNames'+  Prelude.NonEmpty Prelude.Text ->+  GetExperimentResults+newGetExperimentResults+  pExperiment_+  pMetricNames_+  pProject_+  pTreatmentNames_ =+    GetExperimentResults'+      { baseStat = Prelude.Nothing,+        endTime = Prelude.Nothing,+        period = Prelude.Nothing,+        reportNames = Prelude.Nothing,+        resultStats = Prelude.Nothing,+        startTime = Prelude.Nothing,+        experiment = pExperiment_,+        metricNames = Lens.coerced Lens.# pMetricNames_,+        project = pProject_,+        treatmentNames =+          Lens.coerced Lens.# pTreatmentNames_+      }++-- | The statistic used to calculate experiment results. Currently the only+-- valid value is @mean@, which uses the mean of the collected values as+-- the statistic.+getExperimentResults_baseStat :: Lens.Lens' GetExperimentResults (Prelude.Maybe ExperimentBaseStat)+getExperimentResults_baseStat = Lens.lens (\GetExperimentResults' {baseStat} -> baseStat) (\s@GetExperimentResults' {} a -> s {baseStat = a} :: GetExperimentResults)++-- | The date and time that the experiment ended, if it is completed. This+-- must be no longer than 30 days after the experiment start time.+getExperimentResults_endTime :: Lens.Lens' GetExperimentResults (Prelude.Maybe Prelude.UTCTime)+getExperimentResults_endTime = Lens.lens (\GetExperimentResults' {endTime} -> endTime) (\s@GetExperimentResults' {} a -> s {endTime = a} :: GetExperimentResults) Prelude.. Lens.mapping Data._Time++-- | In seconds, the amount of time to aggregate results together.+getExperimentResults_period :: Lens.Lens' GetExperimentResults (Prelude.Maybe Prelude.Natural)+getExperimentResults_period = Lens.lens (\GetExperimentResults' {period} -> period) (\s@GetExperimentResults' {} a -> s {period = a} :: GetExperimentResults)++-- | The names of the report types that you want to see. Currently,+-- @BayesianInference@ is the only valid value.+getExperimentResults_reportNames :: Lens.Lens' GetExperimentResults (Prelude.Maybe [ExperimentReportName])+getExperimentResults_reportNames = Lens.lens (\GetExperimentResults' {reportNames} -> reportNames) (\s@GetExperimentResults' {} a -> s {reportNames = a} :: GetExperimentResults) Prelude.. Lens.mapping Lens.coerced++-- | The statistics that you want to see in the returned results.+--+-- -   @PValue@ specifies to use p-values for the results. A p-value is+--     used in hypothesis testing to measure how often you are willing to+--     make a mistake in rejecting the null hypothesis. A general practice+--     is to reject the null hypothesis and declare that the results are+--     statistically significant when the p-value is less than 0.05.+--+-- -   @ConfidenceInterval@ specifies a confidence interval for the+--     results. The confidence interval represents the range of values for+--     the chosen metric that is likely to contain the true difference+--     between the @baseStat@ of a variation and the baseline. Evidently+--     returns the 95% confidence interval.+--+-- -   @TreatmentEffect@ is the difference in the statistic specified by+--     the @baseStat@ parameter between each variation and the default+--     variation.+--+-- -   @BaseStat@ returns the statistical values collected for the metric+--     for each variation. The statistic uses the same statistic specified+--     in the @baseStat@ parameter. Therefore, if @baseStat@ is @mean@,+--     this returns the mean of the values collected for each variation.+getExperimentResults_resultStats :: Lens.Lens' GetExperimentResults (Prelude.Maybe [ExperimentResultRequestType])+getExperimentResults_resultStats = Lens.lens (\GetExperimentResults' {resultStats} -> resultStats) (\s@GetExperimentResults' {} a -> s {resultStats = a} :: GetExperimentResults) Prelude.. Lens.mapping Lens.coerced++-- | The date and time that the experiment started.+getExperimentResults_startTime :: Lens.Lens' GetExperimentResults (Prelude.Maybe Prelude.UTCTime)+getExperimentResults_startTime = Lens.lens (\GetExperimentResults' {startTime} -> startTime) (\s@GetExperimentResults' {} a -> s {startTime = a} :: GetExperimentResults) Prelude.. Lens.mapping Data._Time++-- | The name of the experiment to retrieve the results of.+getExperimentResults_experiment :: Lens.Lens' GetExperimentResults Prelude.Text+getExperimentResults_experiment = Lens.lens (\GetExperimentResults' {experiment} -> experiment) (\s@GetExperimentResults' {} a -> s {experiment = a} :: GetExperimentResults)++-- | The names of the experiment metrics that you want to see the results of.+getExperimentResults_metricNames :: Lens.Lens' GetExperimentResults (Prelude.NonEmpty Prelude.Text)+getExperimentResults_metricNames = Lens.lens (\GetExperimentResults' {metricNames} -> metricNames) (\s@GetExperimentResults' {} a -> s {metricNames = a} :: GetExperimentResults) Prelude.. Lens.coerced++-- | The name or ARN of the project that contains the experiment that you+-- want to see the results of.+getExperimentResults_project :: Lens.Lens' GetExperimentResults Prelude.Text+getExperimentResults_project = Lens.lens (\GetExperimentResults' {project} -> project) (\s@GetExperimentResults' {} a -> s {project = a} :: GetExperimentResults)++-- | The names of the experiment treatments that you want to see the results+-- for.+getExperimentResults_treatmentNames :: Lens.Lens' GetExperimentResults (Prelude.NonEmpty Prelude.Text)+getExperimentResults_treatmentNames = Lens.lens (\GetExperimentResults' {treatmentNames} -> treatmentNames) (\s@GetExperimentResults' {} a -> s {treatmentNames = a} :: GetExperimentResults) Prelude.. Lens.coerced++instance Core.AWSRequest GetExperimentResults where+  type+    AWSResponse GetExperimentResults =+      GetExperimentResultsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetExperimentResultsResponse'+            Prelude.<$> (x Data..?> "details")+            Prelude.<*> (x Data..?> "reports" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "resultsData" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "timestamps" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetExperimentResults where+  hashWithSalt _salt GetExperimentResults' {..} =+    _salt+      `Prelude.hashWithSalt` baseStat+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` period+      `Prelude.hashWithSalt` reportNames+      `Prelude.hashWithSalt` resultStats+      `Prelude.hashWithSalt` startTime+      `Prelude.hashWithSalt` experiment+      `Prelude.hashWithSalt` metricNames+      `Prelude.hashWithSalt` project+      `Prelude.hashWithSalt` treatmentNames++instance Prelude.NFData GetExperimentResults where+  rnf GetExperimentResults' {..} =+    Prelude.rnf baseStat+      `Prelude.seq` Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf period+      `Prelude.seq` Prelude.rnf reportNames+      `Prelude.seq` Prelude.rnf resultStats+      `Prelude.seq` Prelude.rnf startTime+      `Prelude.seq` Prelude.rnf experiment+      `Prelude.seq` Prelude.rnf metricNames+      `Prelude.seq` Prelude.rnf project+      `Prelude.seq` Prelude.rnf treatmentNames++instance Data.ToHeaders GetExperimentResults where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetExperimentResults where+  toJSON GetExperimentResults' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("baseStat" Data..=) Prelude.<$> baseStat,+            ("endTime" Data..=) Prelude.<$> endTime,+            ("period" Data..=) Prelude.<$> period,+            ("reportNames" Data..=) Prelude.<$> reportNames,+            ("resultStats" Data..=) Prelude.<$> resultStats,+            ("startTime" Data..=) Prelude.<$> startTime,+            Prelude.Just ("metricNames" Data..= metricNames),+            Prelude.Just+              ("treatmentNames" Data..= treatmentNames)+          ]+      )++instance Data.ToPath GetExperimentResults where+  toPath GetExperimentResults' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/experiments/",+        Data.toBS experiment,+        "/results"+      ]++instance Data.ToQuery GetExperimentResults where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetExperimentResultsResponse' smart constructor.+data GetExperimentResultsResponse = GetExperimentResultsResponse'+  { -- | If the experiment doesn\'t yet have enough events to provide valid+    -- results, this field is returned with the message+    -- @Not enough events to generate results@. If there are enough events to+    -- provide valid results, this field is not returned.+    details :: Prelude.Maybe Prelude.Text,+    -- | An array of structures that include the reports that you requested.+    reports :: Prelude.Maybe [ExperimentReport],+    -- | An array of structures that include experiment results including metric+    -- names and values.+    resultsData :: Prelude.Maybe [ExperimentResultsData],+    -- | The timestamps of each result returned.+    timestamps :: Prelude.Maybe [Data.POSIX],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetExperimentResultsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'details', 'getExperimentResultsResponse_details' - If the experiment doesn\'t yet have enough events to provide valid+-- results, this field is returned with the message+-- @Not enough events to generate results@. If there are enough events to+-- provide valid results, this field is not returned.+--+-- 'reports', 'getExperimentResultsResponse_reports' - An array of structures that include the reports that you requested.+--+-- 'resultsData', 'getExperimentResultsResponse_resultsData' - An array of structures that include experiment results including metric+-- names and values.+--+-- 'timestamps', 'getExperimentResultsResponse_timestamps' - The timestamps of each result returned.+--+-- 'httpStatus', 'getExperimentResultsResponse_httpStatus' - The response's http status code.+newGetExperimentResultsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetExperimentResultsResponse+newGetExperimentResultsResponse pHttpStatus_ =+  GetExperimentResultsResponse'+    { details =+        Prelude.Nothing,+      reports = Prelude.Nothing,+      resultsData = Prelude.Nothing,+      timestamps = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | If the experiment doesn\'t yet have enough events to provide valid+-- results, this field is returned with the message+-- @Not enough events to generate results@. If there are enough events to+-- provide valid results, this field is not returned.+getExperimentResultsResponse_details :: Lens.Lens' GetExperimentResultsResponse (Prelude.Maybe Prelude.Text)+getExperimentResultsResponse_details = Lens.lens (\GetExperimentResultsResponse' {details} -> details) (\s@GetExperimentResultsResponse' {} a -> s {details = a} :: GetExperimentResultsResponse)++-- | An array of structures that include the reports that you requested.+getExperimentResultsResponse_reports :: Lens.Lens' GetExperimentResultsResponse (Prelude.Maybe [ExperimentReport])+getExperimentResultsResponse_reports = Lens.lens (\GetExperimentResultsResponse' {reports} -> reports) (\s@GetExperimentResultsResponse' {} a -> s {reports = a} :: GetExperimentResultsResponse) Prelude.. Lens.mapping Lens.coerced++-- | An array of structures that include experiment results including metric+-- names and values.+getExperimentResultsResponse_resultsData :: Lens.Lens' GetExperimentResultsResponse (Prelude.Maybe [ExperimentResultsData])+getExperimentResultsResponse_resultsData = Lens.lens (\GetExperimentResultsResponse' {resultsData} -> resultsData) (\s@GetExperimentResultsResponse' {} a -> s {resultsData = a} :: GetExperimentResultsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The timestamps of each result returned.+getExperimentResultsResponse_timestamps :: Lens.Lens' GetExperimentResultsResponse (Prelude.Maybe [Prelude.UTCTime])+getExperimentResultsResponse_timestamps = Lens.lens (\GetExperimentResultsResponse' {timestamps} -> timestamps) (\s@GetExperimentResultsResponse' {} a -> s {timestamps = a} :: GetExperimentResultsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getExperimentResultsResponse_httpStatus :: Lens.Lens' GetExperimentResultsResponse Prelude.Int+getExperimentResultsResponse_httpStatus = Lens.lens (\GetExperimentResultsResponse' {httpStatus} -> httpStatus) (\s@GetExperimentResultsResponse' {} a -> s {httpStatus = a} :: GetExperimentResultsResponse)++instance Prelude.NFData GetExperimentResultsResponse where+  rnf GetExperimentResultsResponse' {..} =+    Prelude.rnf details+      `Prelude.seq` Prelude.rnf reports+      `Prelude.seq` Prelude.rnf resultsData+      `Prelude.seq` Prelude.rnf timestamps+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/GetFeature.hs view
@@ -0,0 +1,182 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.GetFeature+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the details about one feature. You must already know the feature+-- name. To retrieve a list of features in your account, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_ListFeatures.html ListFeatures>.+module Amazonka.Evidently.GetFeature+  ( -- * Creating a Request+    GetFeature (..),+    newGetFeature,++    -- * Request Lenses+    getFeature_feature,+    getFeature_project,++    -- * Destructuring the Response+    GetFeatureResponse (..),+    newGetFeatureResponse,++    -- * Response Lenses+    getFeatureResponse_httpStatus,+    getFeatureResponse_feature,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetFeature' smart constructor.+data GetFeature = GetFeature'+  { -- | The name of the feature that you want to retrieve information for.+    feature :: Prelude.Text,+    -- | The name or ARN of the project that contains the feature.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetFeature' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'feature', 'getFeature_feature' - The name of the feature that you want to retrieve information for.+--+-- 'project', 'getFeature_project' - The name or ARN of the project that contains the feature.+newGetFeature ::+  -- | 'feature'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  GetFeature+newGetFeature pFeature_ pProject_ =+  GetFeature'+    { feature = pFeature_,+      project = pProject_+    }++-- | The name of the feature that you want to retrieve information for.+getFeature_feature :: Lens.Lens' GetFeature Prelude.Text+getFeature_feature = Lens.lens (\GetFeature' {feature} -> feature) (\s@GetFeature' {} a -> s {feature = a} :: GetFeature)++-- | The name or ARN of the project that contains the feature.+getFeature_project :: Lens.Lens' GetFeature Prelude.Text+getFeature_project = Lens.lens (\GetFeature' {project} -> project) (\s@GetFeature' {} a -> s {project = a} :: GetFeature)++instance Core.AWSRequest GetFeature where+  type AWSResponse GetFeature = GetFeatureResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetFeatureResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "feature")+      )++instance Prelude.Hashable GetFeature where+  hashWithSalt _salt GetFeature' {..} =+    _salt+      `Prelude.hashWithSalt` feature+      `Prelude.hashWithSalt` project++instance Prelude.NFData GetFeature where+  rnf GetFeature' {..} =+    Prelude.rnf feature+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders GetFeature where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetFeature where+  toPath GetFeature' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/features/",+        Data.toBS feature+      ]++instance Data.ToQuery GetFeature where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetFeatureResponse' smart constructor.+data GetFeatureResponse = GetFeatureResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A structure containing the configuration details of the feature.+    feature :: Feature+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetFeatureResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getFeatureResponse_httpStatus' - The response's http status code.+--+-- 'feature', 'getFeatureResponse_feature' - A structure containing the configuration details of the feature.+newGetFeatureResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'feature'+  Feature ->+  GetFeatureResponse+newGetFeatureResponse pHttpStatus_ pFeature_ =+  GetFeatureResponse'+    { httpStatus = pHttpStatus_,+      feature = pFeature_+    }++-- | The response's http status code.+getFeatureResponse_httpStatus :: Lens.Lens' GetFeatureResponse Prelude.Int+getFeatureResponse_httpStatus = Lens.lens (\GetFeatureResponse' {httpStatus} -> httpStatus) (\s@GetFeatureResponse' {} a -> s {httpStatus = a} :: GetFeatureResponse)++-- | A structure containing the configuration details of the feature.+getFeatureResponse_feature :: Lens.Lens' GetFeatureResponse Feature+getFeatureResponse_feature = Lens.lens (\GetFeatureResponse' {feature} -> feature) (\s@GetFeatureResponse' {} a -> s {feature = a} :: GetFeatureResponse)++instance Prelude.NFData GetFeatureResponse where+  rnf GetFeatureResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf feature
+ gen/Amazonka/Evidently/GetLaunch.hs view
@@ -0,0 +1,177 @@+{-# 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.Evidently.GetLaunch+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the details about one launch. You must already know the launch+-- name. To retrieve a list of launches in your account, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_ListLaunches.html ListLaunches>.+module Amazonka.Evidently.GetLaunch+  ( -- * Creating a Request+    GetLaunch (..),+    newGetLaunch,++    -- * Request Lenses+    getLaunch_launch,+    getLaunch_project,++    -- * Destructuring the Response+    GetLaunchResponse (..),+    newGetLaunchResponse,++    -- * Response Lenses+    getLaunchResponse_launch,+    getLaunchResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetLaunch' smart constructor.+data GetLaunch = GetLaunch'+  { -- | The name of the launch that you want to see the details of.+    launch :: Prelude.Text,+    -- | The name or ARN of the project that contains the launch.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetLaunch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'launch', 'getLaunch_launch' - The name of the launch that you want to see the details of.+--+-- 'project', 'getLaunch_project' - The name or ARN of the project that contains the launch.+newGetLaunch ::+  -- | 'launch'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  GetLaunch+newGetLaunch pLaunch_ pProject_ =+  GetLaunch' {launch = pLaunch_, project = pProject_}++-- | The name of the launch that you want to see the details of.+getLaunch_launch :: Lens.Lens' GetLaunch Prelude.Text+getLaunch_launch = Lens.lens (\GetLaunch' {launch} -> launch) (\s@GetLaunch' {} a -> s {launch = a} :: GetLaunch)++-- | The name or ARN of the project that contains the launch.+getLaunch_project :: Lens.Lens' GetLaunch Prelude.Text+getLaunch_project = Lens.lens (\GetLaunch' {project} -> project) (\s@GetLaunch' {} a -> s {project = a} :: GetLaunch)++instance Core.AWSRequest GetLaunch where+  type AWSResponse GetLaunch = GetLaunchResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetLaunchResponse'+            Prelude.<$> (x Data..?> "launch")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetLaunch where+  hashWithSalt _salt GetLaunch' {..} =+    _salt+      `Prelude.hashWithSalt` launch+      `Prelude.hashWithSalt` project++instance Prelude.NFData GetLaunch where+  rnf GetLaunch' {..} =+    Prelude.rnf launch+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders GetLaunch where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetLaunch where+  toPath GetLaunch' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/launches/",+        Data.toBS launch+      ]++instance Data.ToQuery GetLaunch where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetLaunchResponse' smart constructor.+data GetLaunchResponse = GetLaunchResponse'+  { -- | A structure containing the configuration details of the launch.+    launch :: Prelude.Maybe Launch,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetLaunchResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'launch', 'getLaunchResponse_launch' - A structure containing the configuration details of the launch.+--+-- 'httpStatus', 'getLaunchResponse_httpStatus' - The response's http status code.+newGetLaunchResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetLaunchResponse+newGetLaunchResponse pHttpStatus_ =+  GetLaunchResponse'+    { launch = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A structure containing the configuration details of the launch.+getLaunchResponse_launch :: Lens.Lens' GetLaunchResponse (Prelude.Maybe Launch)+getLaunchResponse_launch = Lens.lens (\GetLaunchResponse' {launch} -> launch) (\s@GetLaunchResponse' {} a -> s {launch = a} :: GetLaunchResponse)++-- | The response's http status code.+getLaunchResponse_httpStatus :: Lens.Lens' GetLaunchResponse Prelude.Int+getLaunchResponse_httpStatus = Lens.lens (\GetLaunchResponse' {httpStatus} -> httpStatus) (\s@GetLaunchResponse' {} a -> s {httpStatus = a} :: GetLaunchResponse)++instance Prelude.NFData GetLaunchResponse where+  rnf GetLaunchResponse' {..} =+    Prelude.rnf launch+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/GetProject.hs view
@@ -0,0 +1,159 @@+{-# 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.Evidently.GetProject+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the details about one launch. You must already know the project+-- name. To retrieve a list of projects in your account, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_ListProjects.html ListProjects>.+module Amazonka.Evidently.GetProject+  ( -- * Creating a Request+    GetProject (..),+    newGetProject,++    -- * Request Lenses+    getProject_project,++    -- * Destructuring the Response+    GetProjectResponse (..),+    newGetProjectResponse,++    -- * Response Lenses+    getProjectResponse_httpStatus,+    getProjectResponse_project,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetProject' smart constructor.+data GetProject = GetProject'+  { -- | The name or ARN of the project that you want to see the details of.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetProject' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'project', 'getProject_project' - The name or ARN of the project that you want to see the details of.+newGetProject ::+  -- | 'project'+  Prelude.Text ->+  GetProject+newGetProject pProject_ =+  GetProject' {project = pProject_}++-- | The name or ARN of the project that you want to see the details of.+getProject_project :: Lens.Lens' GetProject Prelude.Text+getProject_project = Lens.lens (\GetProject' {project} -> project) (\s@GetProject' {} a -> s {project = a} :: GetProject)++instance Core.AWSRequest GetProject where+  type AWSResponse GetProject = GetProjectResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetProjectResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "project")+      )++instance Prelude.Hashable GetProject where+  hashWithSalt _salt GetProject' {..} =+    _salt `Prelude.hashWithSalt` project++instance Prelude.NFData GetProject where+  rnf GetProject' {..} = Prelude.rnf project++instance Data.ToHeaders GetProject where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetProject where+  toPath GetProject' {..} =+    Prelude.mconcat ["/projects/", Data.toBS project]++instance Data.ToQuery GetProject where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetProjectResponse' smart constructor.+data GetProjectResponse = GetProjectResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A structure containing the configuration details of the project.+    project :: Project+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetProjectResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getProjectResponse_httpStatus' - The response's http status code.+--+-- 'project', 'getProjectResponse_project' - A structure containing the configuration details of the project.+newGetProjectResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'project'+  Project ->+  GetProjectResponse+newGetProjectResponse pHttpStatus_ pProject_ =+  GetProjectResponse'+    { httpStatus = pHttpStatus_,+      project = pProject_+    }++-- | The response's http status code.+getProjectResponse_httpStatus :: Lens.Lens' GetProjectResponse Prelude.Int+getProjectResponse_httpStatus = Lens.lens (\GetProjectResponse' {httpStatus} -> httpStatus) (\s@GetProjectResponse' {} a -> s {httpStatus = a} :: GetProjectResponse)++-- | A structure containing the configuration details of the project.+getProjectResponse_project :: Lens.Lens' GetProjectResponse Project+getProjectResponse_project = Lens.lens (\GetProjectResponse' {project} -> project) (\s@GetProjectResponse' {} a -> s {project = a} :: GetProjectResponse)++instance Prelude.NFData GetProjectResponse where+  rnf GetProjectResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf project
+ gen/Amazonka/Evidently/GetSegment.hs view
@@ -0,0 +1,158 @@+{-# 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.Evidently.GetSegment+-- 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 information about the specified segment. Specify the segment you+-- want to view by specifying its ARN.+module Amazonka.Evidently.GetSegment+  ( -- * Creating a Request+    GetSegment (..),+    newGetSegment,++    -- * Request Lenses+    getSegment_segment,++    -- * Destructuring the Response+    GetSegmentResponse (..),+    newGetSegmentResponse,++    -- * Response Lenses+    getSegmentResponse_httpStatus,+    getSegmentResponse_segment,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetSegment' smart constructor.+data GetSegment = GetSegment'+  { -- | The ARN of the segment to return information for.+    segment :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetSegment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'segment', 'getSegment_segment' - The ARN of the segment to return information for.+newGetSegment ::+  -- | 'segment'+  Prelude.Text ->+  GetSegment+newGetSegment pSegment_ =+  GetSegment' {segment = pSegment_}++-- | The ARN of the segment to return information for.+getSegment_segment :: Lens.Lens' GetSegment Prelude.Text+getSegment_segment = Lens.lens (\GetSegment' {segment} -> segment) (\s@GetSegment' {} a -> s {segment = a} :: GetSegment)++instance Core.AWSRequest GetSegment where+  type AWSResponse GetSegment = GetSegmentResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetSegmentResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "segment")+      )++instance Prelude.Hashable GetSegment where+  hashWithSalt _salt GetSegment' {..} =+    _salt `Prelude.hashWithSalt` segment++instance Prelude.NFData GetSegment where+  rnf GetSegment' {..} = Prelude.rnf segment++instance Data.ToHeaders GetSegment where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetSegment where+  toPath GetSegment' {..} =+    Prelude.mconcat ["/segments/", Data.toBS segment]++instance Data.ToQuery GetSegment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetSegmentResponse' smart constructor.+data GetSegmentResponse = GetSegmentResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A structure that contains the complete information about the segment.+    segment :: Segment+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetSegmentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getSegmentResponse_httpStatus' - The response's http status code.+--+-- 'segment', 'getSegmentResponse_segment' - A structure that contains the complete information about the segment.+newGetSegmentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'segment'+  Segment ->+  GetSegmentResponse+newGetSegmentResponse pHttpStatus_ pSegment_ =+  GetSegmentResponse'+    { httpStatus = pHttpStatus_,+      segment = pSegment_+    }++-- | The response's http status code.+getSegmentResponse_httpStatus :: Lens.Lens' GetSegmentResponse Prelude.Int+getSegmentResponse_httpStatus = Lens.lens (\GetSegmentResponse' {httpStatus} -> httpStatus) (\s@GetSegmentResponse' {} a -> s {httpStatus = a} :: GetSegmentResponse)++-- | A structure that contains the complete information about the segment.+getSegmentResponse_segment :: Lens.Lens' GetSegmentResponse Segment+getSegmentResponse_segment = Lens.lens (\GetSegmentResponse' {segment} -> segment) (\s@GetSegmentResponse' {} a -> s {segment = a} :: GetSegmentResponse)++instance Prelude.NFData GetSegmentResponse where+  rnf GetSegmentResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf segment
+ gen/Amazonka/Evidently/Lens.hs view
@@ -0,0 +1,691 @@+{-# 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.Evidently.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.Evidently.Lens+  ( -- * Operations++    -- ** BatchEvaluateFeature+    batchEvaluateFeature_project,+    batchEvaluateFeature_requests,+    batchEvaluateFeatureResponse_results,+    batchEvaluateFeatureResponse_httpStatus,++    -- ** CreateExperiment+    createExperiment_description,+    createExperiment_onlineAbConfig,+    createExperiment_randomizationSalt,+    createExperiment_samplingRate,+    createExperiment_segment,+    createExperiment_tags,+    createExperiment_metricGoals,+    createExperiment_name,+    createExperiment_project,+    createExperiment_treatments,+    createExperimentResponse_httpStatus,+    createExperimentResponse_experiment,++    -- ** CreateFeature+    createFeature_defaultVariation,+    createFeature_description,+    createFeature_entityOverrides,+    createFeature_evaluationStrategy,+    createFeature_tags,+    createFeature_name,+    createFeature_project,+    createFeature_variations,+    createFeatureResponse_feature,+    createFeatureResponse_httpStatus,++    -- ** CreateLaunch+    createLaunch_description,+    createLaunch_metricMonitors,+    createLaunch_randomizationSalt,+    createLaunch_scheduledSplitsConfig,+    createLaunch_tags,+    createLaunch_groups,+    createLaunch_name,+    createLaunch_project,+    createLaunchResponse_httpStatus,+    createLaunchResponse_launch,++    -- ** CreateProject+    createProject_appConfigResource,+    createProject_dataDelivery,+    createProject_description,+    createProject_tags,+    createProject_name,+    createProjectResponse_httpStatus,+    createProjectResponse_project,++    -- ** CreateSegment+    createSegment_description,+    createSegment_tags,+    createSegment_name,+    createSegment_pattern,+    createSegmentResponse_httpStatus,+    createSegmentResponse_segment,++    -- ** DeleteExperiment+    deleteExperiment_experiment,+    deleteExperiment_project,+    deleteExperimentResponse_httpStatus,++    -- ** DeleteFeature+    deleteFeature_feature,+    deleteFeature_project,+    deleteFeatureResponse_httpStatus,++    -- ** DeleteLaunch+    deleteLaunch_launch,+    deleteLaunch_project,+    deleteLaunchResponse_httpStatus,++    -- ** DeleteProject+    deleteProject_project,+    deleteProjectResponse_httpStatus,++    -- ** DeleteSegment+    deleteSegment_segment,+    deleteSegmentResponse_httpStatus,++    -- ** EvaluateFeature+    evaluateFeature_evaluationContext,+    evaluateFeature_entityId,+    evaluateFeature_feature,+    evaluateFeature_project,+    evaluateFeatureResponse_details,+    evaluateFeatureResponse_reason,+    evaluateFeatureResponse_value,+    evaluateFeatureResponse_variation,+    evaluateFeatureResponse_httpStatus,++    -- ** GetExperiment+    getExperiment_experiment,+    getExperiment_project,+    getExperimentResponse_experiment,+    getExperimentResponse_httpStatus,++    -- ** GetExperimentResults+    getExperimentResults_baseStat,+    getExperimentResults_endTime,+    getExperimentResults_period,+    getExperimentResults_reportNames,+    getExperimentResults_resultStats,+    getExperimentResults_startTime,+    getExperimentResults_experiment,+    getExperimentResults_metricNames,+    getExperimentResults_project,+    getExperimentResults_treatmentNames,+    getExperimentResultsResponse_details,+    getExperimentResultsResponse_reports,+    getExperimentResultsResponse_resultsData,+    getExperimentResultsResponse_timestamps,+    getExperimentResultsResponse_httpStatus,++    -- ** GetFeature+    getFeature_feature,+    getFeature_project,+    getFeatureResponse_httpStatus,+    getFeatureResponse_feature,++    -- ** GetLaunch+    getLaunch_launch,+    getLaunch_project,+    getLaunchResponse_launch,+    getLaunchResponse_httpStatus,++    -- ** GetProject+    getProject_project,+    getProjectResponse_httpStatus,+    getProjectResponse_project,++    -- ** GetSegment+    getSegment_segment,+    getSegmentResponse_httpStatus,+    getSegmentResponse_segment,++    -- ** ListExperiments+    listExperiments_maxResults,+    listExperiments_nextToken,+    listExperiments_status,+    listExperiments_project,+    listExperimentsResponse_experiments,+    listExperimentsResponse_nextToken,+    listExperimentsResponse_httpStatus,++    -- ** ListFeatures+    listFeatures_maxResults,+    listFeatures_nextToken,+    listFeatures_project,+    listFeaturesResponse_features,+    listFeaturesResponse_nextToken,+    listFeaturesResponse_httpStatus,++    -- ** ListLaunches+    listLaunches_maxResults,+    listLaunches_nextToken,+    listLaunches_status,+    listLaunches_project,+    listLaunchesResponse_launches,+    listLaunchesResponse_nextToken,+    listLaunchesResponse_httpStatus,++    -- ** ListProjects+    listProjects_maxResults,+    listProjects_nextToken,+    listProjectsResponse_nextToken,+    listProjectsResponse_projects,+    listProjectsResponse_httpStatus,++    -- ** ListSegmentReferences+    listSegmentReferences_maxResults,+    listSegmentReferences_nextToken,+    listSegmentReferences_segment,+    listSegmentReferences_type,+    listSegmentReferencesResponse_nextToken,+    listSegmentReferencesResponse_referencedBy,+    listSegmentReferencesResponse_httpStatus,++    -- ** ListSegments+    listSegments_maxResults,+    listSegments_nextToken,+    listSegmentsResponse_nextToken,+    listSegmentsResponse_segments,+    listSegmentsResponse_httpStatus,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,++    -- ** PutProjectEvents+    putProjectEvents_events,+    putProjectEvents_project,+    putProjectEventsResponse_eventResults,+    putProjectEventsResponse_failedEventCount,+    putProjectEventsResponse_httpStatus,++    -- ** StartExperiment+    startExperiment_analysisCompleteTime,+    startExperiment_experiment,+    startExperiment_project,+    startExperimentResponse_startedTime,+    startExperimentResponse_httpStatus,++    -- ** StartLaunch+    startLaunch_launch,+    startLaunch_project,+    startLaunchResponse_httpStatus,+    startLaunchResponse_launch,++    -- ** StopExperiment+    stopExperiment_desiredState,+    stopExperiment_reason,+    stopExperiment_experiment,+    stopExperiment_project,+    stopExperimentResponse_endedTime,+    stopExperimentResponse_httpStatus,++    -- ** StopLaunch+    stopLaunch_desiredState,+    stopLaunch_reason,+    stopLaunch_launch,+    stopLaunch_project,+    stopLaunchResponse_endedTime,+    stopLaunchResponse_httpStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** TestSegmentPattern+    testSegmentPattern_pattern,+    testSegmentPattern_payload,+    testSegmentPatternResponse_httpStatus,+    testSegmentPatternResponse_match,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UpdateExperiment+    updateExperiment_description,+    updateExperiment_metricGoals,+    updateExperiment_onlineAbConfig,+    updateExperiment_randomizationSalt,+    updateExperiment_removeSegment,+    updateExperiment_samplingRate,+    updateExperiment_segment,+    updateExperiment_treatments,+    updateExperiment_experiment,+    updateExperiment_project,+    updateExperimentResponse_httpStatus,+    updateExperimentResponse_experiment,++    -- ** UpdateFeature+    updateFeature_addOrUpdateVariations,+    updateFeature_defaultVariation,+    updateFeature_description,+    updateFeature_entityOverrides,+    updateFeature_evaluationStrategy,+    updateFeature_removeVariations,+    updateFeature_feature,+    updateFeature_project,+    updateFeatureResponse_httpStatus,+    updateFeatureResponse_feature,++    -- ** UpdateLaunch+    updateLaunch_description,+    updateLaunch_groups,+    updateLaunch_metricMonitors,+    updateLaunch_randomizationSalt,+    updateLaunch_scheduledSplitsConfig,+    updateLaunch_launch,+    updateLaunch_project,+    updateLaunchResponse_httpStatus,+    updateLaunchResponse_launch,++    -- ** UpdateProject+    updateProject_appConfigResource,+    updateProject_description,+    updateProject_project,+    updateProjectResponse_httpStatus,+    updateProjectResponse_project,++    -- ** UpdateProjectDataDelivery+    updateProjectDataDelivery_cloudWatchLogs,+    updateProjectDataDelivery_s3Destination,+    updateProjectDataDelivery_project,+    updateProjectDataDeliveryResponse_httpStatus,+    updateProjectDataDeliveryResponse_project,++    -- * Types++    -- ** CloudWatchLogsDestination+    cloudWatchLogsDestination_logGroup,++    -- ** CloudWatchLogsDestinationConfig+    cloudWatchLogsDestinationConfig_logGroup,++    -- ** EvaluationRequest+    evaluationRequest_evaluationContext,+    evaluationRequest_entityId,+    evaluationRequest_feature,++    -- ** EvaluationResult+    evaluationResult_details,+    evaluationResult_project,+    evaluationResult_reason,+    evaluationResult_value,+    evaluationResult_variation,+    evaluationResult_entityId,+    evaluationResult_feature,++    -- ** EvaluationRule+    evaluationRule_name,+    evaluationRule_type,++    -- ** Event+    event_data,+    event_timestamp,+    event_type,++    -- ** Experiment+    experiment_description,+    experiment_execution,+    experiment_metricGoals,+    experiment_onlineAbDefinition,+    experiment_project,+    experiment_randomizationSalt,+    experiment_samplingRate,+    experiment_schedule,+    experiment_segment,+    experiment_statusReason,+    experiment_tags,+    experiment_treatments,+    experiment_arn,+    experiment_createdTime,+    experiment_lastUpdatedTime,+    experiment_name,+    experiment_status,+    experiment_type,++    -- ** ExperimentExecution+    experimentExecution_endedTime,+    experimentExecution_startedTime,++    -- ** ExperimentReport+    experimentReport_content,+    experimentReport_metricName,+    experimentReport_reportName,+    experimentReport_treatmentName,++    -- ** ExperimentResultsData+    experimentResultsData_metricName,+    experimentResultsData_resultStat,+    experimentResultsData_treatmentName,+    experimentResultsData_values,++    -- ** ExperimentSchedule+    experimentSchedule_analysisCompleteTime,++    -- ** Feature+    feature_defaultVariation,+    feature_description,+    feature_entityOverrides,+    feature_evaluationRules,+    feature_project,+    feature_tags,+    feature_arn,+    feature_createdTime,+    feature_evaluationStrategy,+    feature_lastUpdatedTime,+    feature_name,+    feature_status,+    feature_valueType,+    feature_variations,++    -- ** FeatureSummary+    featureSummary_defaultVariation,+    featureSummary_evaluationRules,+    featureSummary_project,+    featureSummary_tags,+    featureSummary_arn,+    featureSummary_createdTime,+    featureSummary_evaluationStrategy,+    featureSummary_lastUpdatedTime,+    featureSummary_name,+    featureSummary_status,++    -- ** Launch+    launch_description,+    launch_execution,+    launch_groups,+    launch_metricMonitors,+    launch_project,+    launch_randomizationSalt,+    launch_scheduledSplitsDefinition,+    launch_statusReason,+    launch_tags,+    launch_arn,+    launch_createdTime,+    launch_lastUpdatedTime,+    launch_name,+    launch_status,+    launch_type,++    -- ** LaunchExecution+    launchExecution_endedTime,+    launchExecution_startedTime,++    -- ** LaunchGroup+    launchGroup_description,+    launchGroup_featureVariations,+    launchGroup_name,++    -- ** LaunchGroupConfig+    launchGroupConfig_description,+    launchGroupConfig_feature,+    launchGroupConfig_name,+    launchGroupConfig_variation,++    -- ** MetricDefinition+    metricDefinition_entityIdKey,+    metricDefinition_eventPattern,+    metricDefinition_name,+    metricDefinition_unitLabel,+    metricDefinition_valueKey,++    -- ** MetricDefinitionConfig+    metricDefinitionConfig_eventPattern,+    metricDefinitionConfig_unitLabel,+    metricDefinitionConfig_entityIdKey,+    metricDefinitionConfig_name,+    metricDefinitionConfig_valueKey,++    -- ** MetricGoal+    metricGoal_desiredChange,+    metricGoal_metricDefinition,++    -- ** MetricGoalConfig+    metricGoalConfig_desiredChange,+    metricGoalConfig_metricDefinition,++    -- ** MetricMonitor+    metricMonitor_metricDefinition,++    -- ** MetricMonitorConfig+    metricMonitorConfig_metricDefinition,++    -- ** OnlineAbConfig+    onlineAbConfig_controlTreatmentName,+    onlineAbConfig_treatmentWeights,++    -- ** OnlineAbDefinition+    onlineAbDefinition_controlTreatmentName,+    onlineAbDefinition_treatmentWeights,++    -- ** Project+    project_activeExperimentCount,+    project_activeLaunchCount,+    project_appConfigResource,+    project_dataDelivery,+    project_description,+    project_experimentCount,+    project_featureCount,+    project_launchCount,+    project_tags,+    project_arn,+    project_createdTime,+    project_lastUpdatedTime,+    project_name,+    project_status,++    -- ** ProjectAppConfigResource+    projectAppConfigResource_applicationId,+    projectAppConfigResource_configurationProfileId,+    projectAppConfigResource_environmentId,++    -- ** ProjectAppConfigResourceConfig+    projectAppConfigResourceConfig_applicationId,+    projectAppConfigResourceConfig_environmentId,++    -- ** ProjectDataDelivery+    projectDataDelivery_cloudWatchLogs,+    projectDataDelivery_s3Destination,++    -- ** ProjectDataDeliveryConfig+    projectDataDeliveryConfig_cloudWatchLogs,+    projectDataDeliveryConfig_s3Destination,++    -- ** ProjectSummary+    projectSummary_activeExperimentCount,+    projectSummary_activeLaunchCount,+    projectSummary_description,+    projectSummary_experimentCount,+    projectSummary_featureCount,+    projectSummary_launchCount,+    projectSummary_tags,+    projectSummary_arn,+    projectSummary_createdTime,+    projectSummary_lastUpdatedTime,+    projectSummary_name,+    projectSummary_status,++    -- ** PutProjectEventsResultEntry+    putProjectEventsResultEntry_errorCode,+    putProjectEventsResultEntry_errorMessage,+    putProjectEventsResultEntry_eventId,++    -- ** RefResource+    refResource_arn,+    refResource_endTime,+    refResource_lastUpdatedOn,+    refResource_startTime,+    refResource_status,+    refResource_name,+    refResource_type,++    -- ** S3Destination+    s3Destination_bucket,+    s3Destination_prefix,++    -- ** S3DestinationConfig+    s3DestinationConfig_bucket,+    s3DestinationConfig_prefix,++    -- ** ScheduledSplit+    scheduledSplit_groupWeights,+    scheduledSplit_segmentOverrides,+    scheduledSplit_startTime,++    -- ** ScheduledSplitConfig+    scheduledSplitConfig_segmentOverrides,+    scheduledSplitConfig_groupWeights,+    scheduledSplitConfig_startTime,++    -- ** ScheduledSplitsLaunchConfig+    scheduledSplitsLaunchConfig_steps,++    -- ** ScheduledSplitsLaunchDefinition+    scheduledSplitsLaunchDefinition_steps,++    -- ** Segment+    segment_description,+    segment_experimentCount,+    segment_launchCount,+    segment_tags,+    segment_arn,+    segment_createdTime,+    segment_lastUpdatedTime,+    segment_name,+    segment_pattern,++    -- ** SegmentOverride+    segmentOverride_evaluationOrder,+    segmentOverride_segment,+    segmentOverride_weights,++    -- ** Treatment+    treatment_description,+    treatment_featureVariations,+    treatment_name,++    -- ** TreatmentConfig+    treatmentConfig_description,+    treatmentConfig_feature,+    treatmentConfig_name,+    treatmentConfig_variation,++    -- ** VariableValue+    variableValue_boolValue,+    variableValue_doubleValue,+    variableValue_longValue,+    variableValue_stringValue,++    -- ** Variation+    variation_name,+    variation_value,++    -- ** VariationConfig+    variationConfig_name,+    variationConfig_value,+  )+where++import Amazonka.Evidently.BatchEvaluateFeature+import Amazonka.Evidently.CreateExperiment+import Amazonka.Evidently.CreateFeature+import Amazonka.Evidently.CreateLaunch+import Amazonka.Evidently.CreateProject+import Amazonka.Evidently.CreateSegment+import Amazonka.Evidently.DeleteExperiment+import Amazonka.Evidently.DeleteFeature+import Amazonka.Evidently.DeleteLaunch+import Amazonka.Evidently.DeleteProject+import Amazonka.Evidently.DeleteSegment+import Amazonka.Evidently.EvaluateFeature+import Amazonka.Evidently.GetExperiment+import Amazonka.Evidently.GetExperimentResults+import Amazonka.Evidently.GetFeature+import Amazonka.Evidently.GetLaunch+import Amazonka.Evidently.GetProject+import Amazonka.Evidently.GetSegment+import Amazonka.Evidently.ListExperiments+import Amazonka.Evidently.ListFeatures+import Amazonka.Evidently.ListLaunches+import Amazonka.Evidently.ListProjects+import Amazonka.Evidently.ListSegmentReferences+import Amazonka.Evidently.ListSegments+import Amazonka.Evidently.ListTagsForResource+import Amazonka.Evidently.PutProjectEvents+import Amazonka.Evidently.StartExperiment+import Amazonka.Evidently.StartLaunch+import Amazonka.Evidently.StopExperiment+import Amazonka.Evidently.StopLaunch+import Amazonka.Evidently.TagResource+import Amazonka.Evidently.TestSegmentPattern+import Amazonka.Evidently.Types.CloudWatchLogsDestination+import Amazonka.Evidently.Types.CloudWatchLogsDestinationConfig+import Amazonka.Evidently.Types.EvaluationRequest+import Amazonka.Evidently.Types.EvaluationResult+import Amazonka.Evidently.Types.EvaluationRule+import Amazonka.Evidently.Types.Event+import Amazonka.Evidently.Types.Experiment+import Amazonka.Evidently.Types.ExperimentExecution+import Amazonka.Evidently.Types.ExperimentReport+import Amazonka.Evidently.Types.ExperimentResultsData+import Amazonka.Evidently.Types.ExperimentSchedule+import Amazonka.Evidently.Types.Feature+import Amazonka.Evidently.Types.FeatureSummary+import Amazonka.Evidently.Types.Launch+import Amazonka.Evidently.Types.LaunchExecution+import Amazonka.Evidently.Types.LaunchGroup+import Amazonka.Evidently.Types.LaunchGroupConfig+import Amazonka.Evidently.Types.MetricDefinition+import Amazonka.Evidently.Types.MetricDefinitionConfig+import Amazonka.Evidently.Types.MetricGoal+import Amazonka.Evidently.Types.MetricGoalConfig+import Amazonka.Evidently.Types.MetricMonitor+import Amazonka.Evidently.Types.MetricMonitorConfig+import Amazonka.Evidently.Types.OnlineAbConfig+import Amazonka.Evidently.Types.OnlineAbDefinition+import Amazonka.Evidently.Types.Project+import Amazonka.Evidently.Types.ProjectAppConfigResource+import Amazonka.Evidently.Types.ProjectAppConfigResourceConfig+import Amazonka.Evidently.Types.ProjectDataDelivery+import Amazonka.Evidently.Types.ProjectDataDeliveryConfig+import Amazonka.Evidently.Types.ProjectSummary+import Amazonka.Evidently.Types.PutProjectEventsResultEntry+import Amazonka.Evidently.Types.RefResource+import Amazonka.Evidently.Types.S3Destination+import Amazonka.Evidently.Types.S3DestinationConfig+import Amazonka.Evidently.Types.ScheduledSplit+import Amazonka.Evidently.Types.ScheduledSplitConfig+import Amazonka.Evidently.Types.ScheduledSplitsLaunchConfig+import Amazonka.Evidently.Types.ScheduledSplitsLaunchDefinition+import Amazonka.Evidently.Types.Segment+import Amazonka.Evidently.Types.SegmentOverride+import Amazonka.Evidently.Types.Treatment+import Amazonka.Evidently.Types.TreatmentConfig+import Amazonka.Evidently.Types.VariableValue+import Amazonka.Evidently.Types.Variation+import Amazonka.Evidently.Types.VariationConfig+import Amazonka.Evidently.UntagResource+import Amazonka.Evidently.UpdateExperiment+import Amazonka.Evidently.UpdateFeature+import Amazonka.Evidently.UpdateLaunch+import Amazonka.Evidently.UpdateProject+import Amazonka.Evidently.UpdateProjectDataDelivery
+ gen/Amazonka/Evidently/ListExperiments.hs view
@@ -0,0 +1,253 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.ListExperiments+-- 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 configuration details about all the experiments in the specified+-- project.+--+-- This operation returns paginated results.+module Amazonka.Evidently.ListExperiments+  ( -- * Creating a Request+    ListExperiments (..),+    newListExperiments,++    -- * Request Lenses+    listExperiments_maxResults,+    listExperiments_nextToken,+    listExperiments_status,+    listExperiments_project,++    -- * Destructuring the Response+    ListExperimentsResponse (..),+    newListExperimentsResponse,++    -- * Response Lenses+    listExperimentsResponse_experiments,+    listExperimentsResponse_nextToken,+    listExperimentsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListExperiments' smart constructor.+data ListExperiments = ListExperiments'+  { -- | The maximum number of results to include in the response.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to use when requesting the next set of results. You received+    -- this token from a previous @ListExperiments@ operation.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Use this optional parameter to limit the returned results to only the+    -- experiments with the status that you specify here.+    status :: Prelude.Maybe ExperimentStatus,+    -- | The name or ARN of the project to return the experiment list from.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListExperiments' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listExperiments_maxResults' - The maximum number of results to include in the response.+--+-- 'nextToken', 'listExperiments_nextToken' - The token to use when requesting the next set of results. You received+-- this token from a previous @ListExperiments@ operation.+--+-- 'status', 'listExperiments_status' - Use this optional parameter to limit the returned results to only the+-- experiments with the status that you specify here.+--+-- 'project', 'listExperiments_project' - The name or ARN of the project to return the experiment list from.+newListExperiments ::+  -- | 'project'+  Prelude.Text ->+  ListExperiments+newListExperiments pProject_ =+  ListExperiments'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      status = Prelude.Nothing,+      project = pProject_+    }++-- | The maximum number of results to include in the response.+listExperiments_maxResults :: Lens.Lens' ListExperiments (Prelude.Maybe Prelude.Natural)+listExperiments_maxResults = Lens.lens (\ListExperiments' {maxResults} -> maxResults) (\s@ListExperiments' {} a -> s {maxResults = a} :: ListExperiments)++-- | The token to use when requesting the next set of results. You received+-- this token from a previous @ListExperiments@ operation.+listExperiments_nextToken :: Lens.Lens' ListExperiments (Prelude.Maybe Prelude.Text)+listExperiments_nextToken = Lens.lens (\ListExperiments' {nextToken} -> nextToken) (\s@ListExperiments' {} a -> s {nextToken = a} :: ListExperiments)++-- | Use this optional parameter to limit the returned results to only the+-- experiments with the status that you specify here.+listExperiments_status :: Lens.Lens' ListExperiments (Prelude.Maybe ExperimentStatus)+listExperiments_status = Lens.lens (\ListExperiments' {status} -> status) (\s@ListExperiments' {} a -> s {status = a} :: ListExperiments)++-- | The name or ARN of the project to return the experiment list from.+listExperiments_project :: Lens.Lens' ListExperiments Prelude.Text+listExperiments_project = Lens.lens (\ListExperiments' {project} -> project) (\s@ListExperiments' {} a -> s {project = a} :: ListExperiments)++instance Core.AWSPager ListExperiments where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listExperimentsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listExperimentsResponse_experiments+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listExperiments_nextToken+          Lens..~ rs+          Lens.^? listExperimentsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListExperiments where+  type+    AWSResponse ListExperiments =+      ListExperimentsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListExperimentsResponse'+            Prelude.<$> (x Data..?> "experiments" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListExperiments where+  hashWithSalt _salt ListExperiments' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` project++instance Prelude.NFData ListExperiments where+  rnf ListExperiments' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders ListExperiments where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListExperiments where+  toPath ListExperiments' {..} =+    Prelude.mconcat+      ["/projects/", Data.toBS project, "/experiments"]++instance Data.ToQuery ListExperiments where+  toQuery ListExperiments' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "status" Data.=: status+      ]++-- | /See:/ 'newListExperimentsResponse' smart constructor.+data ListExperimentsResponse = ListExperimentsResponse'+  { -- | An array of structures that contain the configuration details of the+    -- experiments in the specified project.+    experiments :: Prelude.Maybe [Experiment],+    -- | The token to use in a subsequent @ListExperiments@ operation to return+    -- the next set of results.+    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 'ListExperimentsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'experiments', 'listExperimentsResponse_experiments' - An array of structures that contain the configuration details of the+-- experiments in the specified project.+--+-- 'nextToken', 'listExperimentsResponse_nextToken' - The token to use in a subsequent @ListExperiments@ operation to return+-- the next set of results.+--+-- 'httpStatus', 'listExperimentsResponse_httpStatus' - The response's http status code.+newListExperimentsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListExperimentsResponse+newListExperimentsResponse pHttpStatus_ =+  ListExperimentsResponse'+    { experiments =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An array of structures that contain the configuration details of the+-- experiments in the specified project.+listExperimentsResponse_experiments :: Lens.Lens' ListExperimentsResponse (Prelude.Maybe [Experiment])+listExperimentsResponse_experiments = Lens.lens (\ListExperimentsResponse' {experiments} -> experiments) (\s@ListExperimentsResponse' {} a -> s {experiments = a} :: ListExperimentsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token to use in a subsequent @ListExperiments@ operation to return+-- the next set of results.+listExperimentsResponse_nextToken :: Lens.Lens' ListExperimentsResponse (Prelude.Maybe Prelude.Text)+listExperimentsResponse_nextToken = Lens.lens (\ListExperimentsResponse' {nextToken} -> nextToken) (\s@ListExperimentsResponse' {} a -> s {nextToken = a} :: ListExperimentsResponse)++-- | The response's http status code.+listExperimentsResponse_httpStatus :: Lens.Lens' ListExperimentsResponse Prelude.Int+listExperimentsResponse_httpStatus = Lens.lens (\ListExperimentsResponse' {httpStatus} -> httpStatus) (\s@ListExperimentsResponse' {} a -> s {httpStatus = a} :: ListExperimentsResponse)++instance Prelude.NFData ListExperimentsResponse where+  rnf ListExperimentsResponse' {..} =+    Prelude.rnf experiments+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/ListFeatures.hs view
@@ -0,0 +1,234 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.ListFeatures+-- 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 configuration details about all the features in the specified+-- project.+--+-- This operation returns paginated results.+module Amazonka.Evidently.ListFeatures+  ( -- * Creating a Request+    ListFeatures (..),+    newListFeatures,++    -- * Request Lenses+    listFeatures_maxResults,+    listFeatures_nextToken,+    listFeatures_project,++    -- * Destructuring the Response+    ListFeaturesResponse (..),+    newListFeaturesResponse,++    -- * Response Lenses+    listFeaturesResponse_features,+    listFeaturesResponse_nextToken,+    listFeaturesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListFeatures' smart constructor.+data ListFeatures = ListFeatures'+  { -- | The maximum number of results to include in the response.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to use when requesting the next set of results. You received+    -- this token from a previous @ListFeatures@ operation.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name or ARN of the project to return the feature list from.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListFeatures' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listFeatures_maxResults' - The maximum number of results to include in the response.+--+-- 'nextToken', 'listFeatures_nextToken' - The token to use when requesting the next set of results. You received+-- this token from a previous @ListFeatures@ operation.+--+-- 'project', 'listFeatures_project' - The name or ARN of the project to return the feature list from.+newListFeatures ::+  -- | 'project'+  Prelude.Text ->+  ListFeatures+newListFeatures pProject_ =+  ListFeatures'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      project = pProject_+    }++-- | The maximum number of results to include in the response.+listFeatures_maxResults :: Lens.Lens' ListFeatures (Prelude.Maybe Prelude.Natural)+listFeatures_maxResults = Lens.lens (\ListFeatures' {maxResults} -> maxResults) (\s@ListFeatures' {} a -> s {maxResults = a} :: ListFeatures)++-- | The token to use when requesting the next set of results. You received+-- this token from a previous @ListFeatures@ operation.+listFeatures_nextToken :: Lens.Lens' ListFeatures (Prelude.Maybe Prelude.Text)+listFeatures_nextToken = Lens.lens (\ListFeatures' {nextToken} -> nextToken) (\s@ListFeatures' {} a -> s {nextToken = a} :: ListFeatures)++-- | The name or ARN of the project to return the feature list from.+listFeatures_project :: Lens.Lens' ListFeatures Prelude.Text+listFeatures_project = Lens.lens (\ListFeatures' {project} -> project) (\s@ListFeatures' {} a -> s {project = a} :: ListFeatures)++instance Core.AWSPager ListFeatures where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listFeaturesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listFeaturesResponse_features+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listFeatures_nextToken+          Lens..~ rs+          Lens.^? listFeaturesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListFeatures where+  type AWSResponse ListFeatures = ListFeaturesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListFeaturesResponse'+            Prelude.<$> (x Data..?> "features" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListFeatures where+  hashWithSalt _salt ListFeatures' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` project++instance Prelude.NFData ListFeatures where+  rnf ListFeatures' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders ListFeatures where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListFeatures where+  toPath ListFeatures' {..} =+    Prelude.mconcat+      ["/projects/", Data.toBS project, "/features"]++instance Data.ToQuery ListFeatures where+  toQuery ListFeatures' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListFeaturesResponse' smart constructor.+data ListFeaturesResponse = ListFeaturesResponse'+  { -- | An array of structures that contain the configuration details of the+    -- features in the specified project.+    features :: Prelude.Maybe [FeatureSummary],+    -- | The token to use in a subsequent @ListFeatures@ operation to return the+    -- next set of results.+    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 'ListFeaturesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'features', 'listFeaturesResponse_features' - An array of structures that contain the configuration details of the+-- features in the specified project.+--+-- 'nextToken', 'listFeaturesResponse_nextToken' - The token to use in a subsequent @ListFeatures@ operation to return the+-- next set of results.+--+-- 'httpStatus', 'listFeaturesResponse_httpStatus' - The response's http status code.+newListFeaturesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListFeaturesResponse+newListFeaturesResponse pHttpStatus_ =+  ListFeaturesResponse'+    { features = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An array of structures that contain the configuration details of the+-- features in the specified project.+listFeaturesResponse_features :: Lens.Lens' ListFeaturesResponse (Prelude.Maybe [FeatureSummary])+listFeaturesResponse_features = Lens.lens (\ListFeaturesResponse' {features} -> features) (\s@ListFeaturesResponse' {} a -> s {features = a} :: ListFeaturesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token to use in a subsequent @ListFeatures@ operation to return the+-- next set of results.+listFeaturesResponse_nextToken :: Lens.Lens' ListFeaturesResponse (Prelude.Maybe Prelude.Text)+listFeaturesResponse_nextToken = Lens.lens (\ListFeaturesResponse' {nextToken} -> nextToken) (\s@ListFeaturesResponse' {} a -> s {nextToken = a} :: ListFeaturesResponse)++-- | The response's http status code.+listFeaturesResponse_httpStatus :: Lens.Lens' ListFeaturesResponse Prelude.Int+listFeaturesResponse_httpStatus = Lens.lens (\ListFeaturesResponse' {httpStatus} -> httpStatus) (\s@ListFeaturesResponse' {} a -> s {httpStatus = a} :: ListFeaturesResponse)++instance Prelude.NFData ListFeaturesResponse where+  rnf ListFeaturesResponse' {..} =+    Prelude.rnf features+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/ListLaunches.hs view
@@ -0,0 +1,250 @@+{-# 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.Evidently.ListLaunches+-- 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 configuration details about all the launches in the specified+-- project.+--+-- This operation returns paginated results.+module Amazonka.Evidently.ListLaunches+  ( -- * Creating a Request+    ListLaunches (..),+    newListLaunches,++    -- * Request Lenses+    listLaunches_maxResults,+    listLaunches_nextToken,+    listLaunches_status,+    listLaunches_project,++    -- * Destructuring the Response+    ListLaunchesResponse (..),+    newListLaunchesResponse,++    -- * Response Lenses+    listLaunchesResponse_launches,+    listLaunchesResponse_nextToken,+    listLaunchesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListLaunches' smart constructor.+data ListLaunches = ListLaunches'+  { -- | The maximum number of results to include in the response.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to use when requesting the next set of results. You received+    -- this token from a previous @ListLaunches@ operation.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Use this optional parameter to limit the returned results to only the+    -- launches with the status that you specify here.+    status :: Prelude.Maybe LaunchStatus,+    -- | The name or ARN of the project to return the launch list from.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListLaunches' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listLaunches_maxResults' - The maximum number of results to include in the response.+--+-- 'nextToken', 'listLaunches_nextToken' - The token to use when requesting the next set of results. You received+-- this token from a previous @ListLaunches@ operation.+--+-- 'status', 'listLaunches_status' - Use this optional parameter to limit the returned results to only the+-- launches with the status that you specify here.+--+-- 'project', 'listLaunches_project' - The name or ARN of the project to return the launch list from.+newListLaunches ::+  -- | 'project'+  Prelude.Text ->+  ListLaunches+newListLaunches pProject_ =+  ListLaunches'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      status = Prelude.Nothing,+      project = pProject_+    }++-- | The maximum number of results to include in the response.+listLaunches_maxResults :: Lens.Lens' ListLaunches (Prelude.Maybe Prelude.Natural)+listLaunches_maxResults = Lens.lens (\ListLaunches' {maxResults} -> maxResults) (\s@ListLaunches' {} a -> s {maxResults = a} :: ListLaunches)++-- | The token to use when requesting the next set of results. You received+-- this token from a previous @ListLaunches@ operation.+listLaunches_nextToken :: Lens.Lens' ListLaunches (Prelude.Maybe Prelude.Text)+listLaunches_nextToken = Lens.lens (\ListLaunches' {nextToken} -> nextToken) (\s@ListLaunches' {} a -> s {nextToken = a} :: ListLaunches)++-- | Use this optional parameter to limit the returned results to only the+-- launches with the status that you specify here.+listLaunches_status :: Lens.Lens' ListLaunches (Prelude.Maybe LaunchStatus)+listLaunches_status = Lens.lens (\ListLaunches' {status} -> status) (\s@ListLaunches' {} a -> s {status = a} :: ListLaunches)++-- | The name or ARN of the project to return the launch list from.+listLaunches_project :: Lens.Lens' ListLaunches Prelude.Text+listLaunches_project = Lens.lens (\ListLaunches' {project} -> project) (\s@ListLaunches' {} a -> s {project = a} :: ListLaunches)++instance Core.AWSPager ListLaunches where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listLaunchesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listLaunchesResponse_launches+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listLaunches_nextToken+          Lens..~ rs+          Lens.^? listLaunchesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListLaunches where+  type AWSResponse ListLaunches = ListLaunchesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListLaunchesResponse'+            Prelude.<$> (x Data..?> "launches" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListLaunches where+  hashWithSalt _salt ListLaunches' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` project++instance Prelude.NFData ListLaunches where+  rnf ListLaunches' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders ListLaunches where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListLaunches where+  toPath ListLaunches' {..} =+    Prelude.mconcat+      ["/projects/", Data.toBS project, "/launches"]++instance Data.ToQuery ListLaunches where+  toQuery ListLaunches' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "status" Data.=: status+      ]++-- | /See:/ 'newListLaunchesResponse' smart constructor.+data ListLaunchesResponse = ListLaunchesResponse'+  { -- | An array of structures that contain the configuration details of the+    -- launches in the specified project.+    launches :: Prelude.Maybe [Launch],+    -- | The token to use in a subsequent @ListLaunches@ operation to return the+    -- next set of results.+    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 'ListLaunchesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'launches', 'listLaunchesResponse_launches' - An array of structures that contain the configuration details of the+-- launches in the specified project.+--+-- 'nextToken', 'listLaunchesResponse_nextToken' - The token to use in a subsequent @ListLaunches@ operation to return the+-- next set of results.+--+-- 'httpStatus', 'listLaunchesResponse_httpStatus' - The response's http status code.+newListLaunchesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListLaunchesResponse+newListLaunchesResponse pHttpStatus_ =+  ListLaunchesResponse'+    { launches = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An array of structures that contain the configuration details of the+-- launches in the specified project.+listLaunchesResponse_launches :: Lens.Lens' ListLaunchesResponse (Prelude.Maybe [Launch])+listLaunchesResponse_launches = Lens.lens (\ListLaunchesResponse' {launches} -> launches) (\s@ListLaunchesResponse' {} a -> s {launches = a} :: ListLaunchesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token to use in a subsequent @ListLaunches@ operation to return the+-- next set of results.+listLaunchesResponse_nextToken :: Lens.Lens' ListLaunchesResponse (Prelude.Maybe Prelude.Text)+listLaunchesResponse_nextToken = Lens.lens (\ListLaunchesResponse' {nextToken} -> nextToken) (\s@ListLaunchesResponse' {} a -> s {nextToken = a} :: ListLaunchesResponse)++-- | The response's http status code.+listLaunchesResponse_httpStatus :: Lens.Lens' ListLaunchesResponse Prelude.Int+listLaunchesResponse_httpStatus = Lens.lens (\ListLaunchesResponse' {httpStatus} -> httpStatus) (\s@ListLaunchesResponse' {} a -> s {httpStatus = a} :: ListLaunchesResponse)++instance Prelude.NFData ListLaunchesResponse where+  rnf ListLaunchesResponse' {..} =+    Prelude.rnf launches+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/ListProjects.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.Evidently.ListProjects+-- 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 configuration details about all the projects in the current+-- Region in your account.+--+-- This operation returns paginated results.+module Amazonka.Evidently.ListProjects+  ( -- * Creating a Request+    ListProjects (..),+    newListProjects,++    -- * Request Lenses+    listProjects_maxResults,+    listProjects_nextToken,++    -- * Destructuring the Response+    ListProjectsResponse (..),+    newListProjectsResponse,++    -- * Response Lenses+    listProjectsResponse_nextToken,+    listProjectsResponse_projects,+    listProjectsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListProjects' smart constructor.+data ListProjects = ListProjects'+  { -- | The maximum number of results to include in the response.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to use when requesting the next set of results. You received+    -- this token from a previous @ListProjects@ operation.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProjects' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listProjects_maxResults' - The maximum number of results to include in the response.+--+-- 'nextToken', 'listProjects_nextToken' - The token to use when requesting the next set of results. You received+-- this token from a previous @ListProjects@ operation.+newListProjects ::+  ListProjects+newListProjects =+  ListProjects'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of results to include in the response.+listProjects_maxResults :: Lens.Lens' ListProjects (Prelude.Maybe Prelude.Natural)+listProjects_maxResults = Lens.lens (\ListProjects' {maxResults} -> maxResults) (\s@ListProjects' {} a -> s {maxResults = a} :: ListProjects)++-- | The token to use when requesting the next set of results. You received+-- this token from a previous @ListProjects@ operation.+listProjects_nextToken :: Lens.Lens' ListProjects (Prelude.Maybe Prelude.Text)+listProjects_nextToken = Lens.lens (\ListProjects' {nextToken} -> nextToken) (\s@ListProjects' {} a -> s {nextToken = a} :: ListProjects)++instance Core.AWSPager ListProjects where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listProjectsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listProjectsResponse_projects+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listProjects_nextToken+          Lens..~ rs+          Lens.^? listProjectsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListProjects where+  type AWSResponse ListProjects = ListProjectsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListProjectsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "projects" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListProjects where+  hashWithSalt _salt ListProjects' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListProjects where+  rnf ListProjects' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListProjects where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListProjects where+  toPath = Prelude.const "/projects"++instance Data.ToQuery ListProjects where+  toQuery ListProjects' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListProjectsResponse' smart constructor.+data ListProjectsResponse = ListProjectsResponse'+  { -- | The token to use in a subsequent @ListProjects@ operation to return the+    -- next set of results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | An array of structures that contain the configuration details of the+    -- projects in the Region.+    projects :: Prelude.Maybe [ProjectSummary],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProjectsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listProjectsResponse_nextToken' - The token to use in a subsequent @ListProjects@ operation to return the+-- next set of results.+--+-- 'projects', 'listProjectsResponse_projects' - An array of structures that contain the configuration details of the+-- projects in the Region.+--+-- 'httpStatus', 'listProjectsResponse_httpStatus' - The response's http status code.+newListProjectsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListProjectsResponse+newListProjectsResponse pHttpStatus_ =+  ListProjectsResponse'+    { nextToken = Prelude.Nothing,+      projects = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The token to use in a subsequent @ListProjects@ operation to return the+-- next set of results.+listProjectsResponse_nextToken :: Lens.Lens' ListProjectsResponse (Prelude.Maybe Prelude.Text)+listProjectsResponse_nextToken = Lens.lens (\ListProjectsResponse' {nextToken} -> nextToken) (\s@ListProjectsResponse' {} a -> s {nextToken = a} :: ListProjectsResponse)++-- | An array of structures that contain the configuration details of the+-- projects in the Region.+listProjectsResponse_projects :: Lens.Lens' ListProjectsResponse (Prelude.Maybe [ProjectSummary])+listProjectsResponse_projects = Lens.lens (\ListProjectsResponse' {projects} -> projects) (\s@ListProjectsResponse' {} a -> s {projects = a} :: ListProjectsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listProjectsResponse_httpStatus :: Lens.Lens' ListProjectsResponse Prelude.Int+listProjectsResponse_httpStatus = Lens.lens (\ListProjectsResponse' {httpStatus} -> httpStatus) (\s@ListProjectsResponse' {} a -> s {httpStatus = a} :: ListProjectsResponse)++instance Prelude.NFData ListProjectsResponse where+  rnf ListProjectsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf projects+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/ListSegmentReferences.hs view
@@ -0,0 +1,259 @@+{-# 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.Evidently.ListSegmentReferences+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Use this operation to find which experiments or launches are using a+-- specified segment.+--+-- This operation returns paginated results.+module Amazonka.Evidently.ListSegmentReferences+  ( -- * Creating a Request+    ListSegmentReferences (..),+    newListSegmentReferences,++    -- * Request Lenses+    listSegmentReferences_maxResults,+    listSegmentReferences_nextToken,+    listSegmentReferences_segment,+    listSegmentReferences_type,++    -- * Destructuring the Response+    ListSegmentReferencesResponse (..),+    newListSegmentReferencesResponse,++    -- * Response Lenses+    listSegmentReferencesResponse_nextToken,+    listSegmentReferencesResponse_referencedBy,+    listSegmentReferencesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListSegmentReferences' smart constructor.+data ListSegmentReferences = ListSegmentReferences'+  { -- | The maximum number of results to include in the response. If you omit+    -- this, the default of 50 is used.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to use when requesting the next set of results. You received+    -- this token from a previous @ListSegmentReferences@ operation.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ARN of the segment that you want to view information for.+    segment :: Prelude.Text,+    -- | Specifies whether to return information about launches or experiments+    -- that use this segment.+    type' :: SegmentReferenceResourceType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListSegmentReferences' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listSegmentReferences_maxResults' - The maximum number of results to include in the response. If you omit+-- this, the default of 50 is used.+--+-- 'nextToken', 'listSegmentReferences_nextToken' - The token to use when requesting the next set of results. You received+-- this token from a previous @ListSegmentReferences@ operation.+--+-- 'segment', 'listSegmentReferences_segment' - The ARN of the segment that you want to view information for.+--+-- 'type'', 'listSegmentReferences_type' - Specifies whether to return information about launches or experiments+-- that use this segment.+newListSegmentReferences ::+  -- | 'segment'+  Prelude.Text ->+  -- | 'type''+  SegmentReferenceResourceType ->+  ListSegmentReferences+newListSegmentReferences pSegment_ pType_ =+  ListSegmentReferences'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      segment = pSegment_,+      type' = pType_+    }++-- | The maximum number of results to include in the response. If you omit+-- this, the default of 50 is used.+listSegmentReferences_maxResults :: Lens.Lens' ListSegmentReferences (Prelude.Maybe Prelude.Natural)+listSegmentReferences_maxResults = Lens.lens (\ListSegmentReferences' {maxResults} -> maxResults) (\s@ListSegmentReferences' {} a -> s {maxResults = a} :: ListSegmentReferences)++-- | The token to use when requesting the next set of results. You received+-- this token from a previous @ListSegmentReferences@ operation.+listSegmentReferences_nextToken :: Lens.Lens' ListSegmentReferences (Prelude.Maybe Prelude.Text)+listSegmentReferences_nextToken = Lens.lens (\ListSegmentReferences' {nextToken} -> nextToken) (\s@ListSegmentReferences' {} a -> s {nextToken = a} :: ListSegmentReferences)++-- | The ARN of the segment that you want to view information for.+listSegmentReferences_segment :: Lens.Lens' ListSegmentReferences Prelude.Text+listSegmentReferences_segment = Lens.lens (\ListSegmentReferences' {segment} -> segment) (\s@ListSegmentReferences' {} a -> s {segment = a} :: ListSegmentReferences)++-- | Specifies whether to return information about launches or experiments+-- that use this segment.+listSegmentReferences_type :: Lens.Lens' ListSegmentReferences SegmentReferenceResourceType+listSegmentReferences_type = Lens.lens (\ListSegmentReferences' {type'} -> type') (\s@ListSegmentReferences' {} a -> s {type' = a} :: ListSegmentReferences)++instance Core.AWSPager ListSegmentReferences where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listSegmentReferencesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listSegmentReferencesResponse_referencedBy+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listSegmentReferences_nextToken+          Lens..~ rs+          Lens.^? listSegmentReferencesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListSegmentReferences where+  type+    AWSResponse ListSegmentReferences =+      ListSegmentReferencesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListSegmentReferencesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "referencedBy" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListSegmentReferences where+  hashWithSalt _salt ListSegmentReferences' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` segment+      `Prelude.hashWithSalt` type'++instance Prelude.NFData ListSegmentReferences where+  rnf ListSegmentReferences' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf segment+      `Prelude.seq` Prelude.rnf type'++instance Data.ToHeaders ListSegmentReferences where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListSegmentReferences where+  toPath ListSegmentReferences' {..} =+    Prelude.mconcat+      ["/segments/", Data.toBS segment, "/references"]++instance Data.ToQuery ListSegmentReferences where+  toQuery ListSegmentReferences' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "type" Data.=: type'+      ]++-- | /See:/ 'newListSegmentReferencesResponse' smart constructor.+data ListSegmentReferencesResponse = ListSegmentReferencesResponse'+  { -- | The token to use in a subsequent @ListSegmentReferences@ operation to+    -- return the next set of results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | An array of structures, where each structure contains information about+    -- one experiment or launch that uses this segment.+    referencedBy :: Prelude.Maybe [RefResource],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListSegmentReferencesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listSegmentReferencesResponse_nextToken' - The token to use in a subsequent @ListSegmentReferences@ operation to+-- return the next set of results.+--+-- 'referencedBy', 'listSegmentReferencesResponse_referencedBy' - An array of structures, where each structure contains information about+-- one experiment or launch that uses this segment.+--+-- 'httpStatus', 'listSegmentReferencesResponse_httpStatus' - The response's http status code.+newListSegmentReferencesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListSegmentReferencesResponse+newListSegmentReferencesResponse pHttpStatus_ =+  ListSegmentReferencesResponse'+    { nextToken =+        Prelude.Nothing,+      referencedBy = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The token to use in a subsequent @ListSegmentReferences@ operation to+-- return the next set of results.+listSegmentReferencesResponse_nextToken :: Lens.Lens' ListSegmentReferencesResponse (Prelude.Maybe Prelude.Text)+listSegmentReferencesResponse_nextToken = Lens.lens (\ListSegmentReferencesResponse' {nextToken} -> nextToken) (\s@ListSegmentReferencesResponse' {} a -> s {nextToken = a} :: ListSegmentReferencesResponse)++-- | An array of structures, where each structure contains information about+-- one experiment or launch that uses this segment.+listSegmentReferencesResponse_referencedBy :: Lens.Lens' ListSegmentReferencesResponse (Prelude.Maybe [RefResource])+listSegmentReferencesResponse_referencedBy = Lens.lens (\ListSegmentReferencesResponse' {referencedBy} -> referencedBy) (\s@ListSegmentReferencesResponse' {} a -> s {referencedBy = a} :: ListSegmentReferencesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listSegmentReferencesResponse_httpStatus :: Lens.Lens' ListSegmentReferencesResponse Prelude.Int+listSegmentReferencesResponse_httpStatus = Lens.lens (\ListSegmentReferencesResponse' {httpStatus} -> httpStatus) (\s@ListSegmentReferencesResponse' {} a -> s {httpStatus = a} :: ListSegmentReferencesResponse)++instance Prelude.NFData ListSegmentReferencesResponse where+  rnf ListSegmentReferencesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf referencedBy+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/ListSegments.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.Evidently.ListSegments+-- 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 audience segments that you have created in your+-- account in this Region.+--+-- This operation returns paginated results.+module Amazonka.Evidently.ListSegments+  ( -- * Creating a Request+    ListSegments (..),+    newListSegments,++    -- * Request Lenses+    listSegments_maxResults,+    listSegments_nextToken,++    -- * Destructuring the Response+    ListSegmentsResponse (..),+    newListSegmentsResponse,++    -- * Response Lenses+    listSegmentsResponse_nextToken,+    listSegmentsResponse_segments,+    listSegmentsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListSegments' smart constructor.+data ListSegments = ListSegments'+  { -- | The maximum number of results to include in the response. If you omit+    -- this, the default of 50 is used.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to use when requesting the next set of results. You received+    -- this token from a previous @ListSegments@ operation.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListSegments' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listSegments_maxResults' - The maximum number of results to include in the response. If you omit+-- this, the default of 50 is used.+--+-- 'nextToken', 'listSegments_nextToken' - The token to use when requesting the next set of results. You received+-- this token from a previous @ListSegments@ operation.+newListSegments ::+  ListSegments+newListSegments =+  ListSegments'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of results to include in the response. If you omit+-- this, the default of 50 is used.+listSegments_maxResults :: Lens.Lens' ListSegments (Prelude.Maybe Prelude.Natural)+listSegments_maxResults = Lens.lens (\ListSegments' {maxResults} -> maxResults) (\s@ListSegments' {} a -> s {maxResults = a} :: ListSegments)++-- | The token to use when requesting the next set of results. You received+-- this token from a previous @ListSegments@ operation.+listSegments_nextToken :: Lens.Lens' ListSegments (Prelude.Maybe Prelude.Text)+listSegments_nextToken = Lens.lens (\ListSegments' {nextToken} -> nextToken) (\s@ListSegments' {} a -> s {nextToken = a} :: ListSegments)++instance Core.AWSPager ListSegments where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listSegmentsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listSegmentsResponse_segments+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listSegments_nextToken+          Lens..~ rs+          Lens.^? listSegmentsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListSegments where+  type AWSResponse ListSegments = ListSegmentsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListSegmentsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "segments" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListSegments where+  hashWithSalt _salt ListSegments' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListSegments where+  rnf ListSegments' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListSegments where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListSegments where+  toPath = Prelude.const "/segments"++instance Data.ToQuery ListSegments where+  toQuery ListSegments' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListSegmentsResponse' smart constructor.+data ListSegmentsResponse = ListSegmentsResponse'+  { -- | The token to use in a subsequent @ListSegments@ operation to return the+    -- next set of results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | An array of structures that contain information about the segments in+    -- this Region.+    segments :: Prelude.Maybe [Segment],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListSegmentsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listSegmentsResponse_nextToken' - The token to use in a subsequent @ListSegments@ operation to return the+-- next set of results.+--+-- 'segments', 'listSegmentsResponse_segments' - An array of structures that contain information about the segments in+-- this Region.+--+-- 'httpStatus', 'listSegmentsResponse_httpStatus' - The response's http status code.+newListSegmentsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListSegmentsResponse+newListSegmentsResponse pHttpStatus_ =+  ListSegmentsResponse'+    { nextToken = Prelude.Nothing,+      segments = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The token to use in a subsequent @ListSegments@ operation to return the+-- next set of results.+listSegmentsResponse_nextToken :: Lens.Lens' ListSegmentsResponse (Prelude.Maybe Prelude.Text)+listSegmentsResponse_nextToken = Lens.lens (\ListSegmentsResponse' {nextToken} -> nextToken) (\s@ListSegmentsResponse' {} a -> s {nextToken = a} :: ListSegmentsResponse)++-- | An array of structures that contain information about the segments in+-- this Region.+listSegmentsResponse_segments :: Lens.Lens' ListSegmentsResponse (Prelude.Maybe [Segment])+listSegmentsResponse_segments = Lens.lens (\ListSegmentsResponse' {segments} -> segments) (\s@ListSegmentsResponse' {} a -> s {segments = a} :: ListSegmentsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listSegmentsResponse_httpStatus :: Lens.Lens' ListSegmentsResponse Prelude.Int+listSegmentsResponse_httpStatus = Lens.lens (\ListSegmentsResponse' {httpStatus} -> httpStatus) (\s@ListSegmentsResponse' {} a -> s {httpStatus = a} :: ListSegmentsResponse)++instance Prelude.NFData ListSegmentsResponse where+  rnf ListSegmentsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf segments+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/ListTagsForResource.hs view
@@ -0,0 +1,162 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.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)+--+-- Displays the tags associated with an Evidently resource.+module Amazonka.Evidently.ListTagsForResource+  ( -- * Creating a Request+    ListTagsForResource (..),+    newListTagsForResource,++    -- * Request Lenses+    listTagsForResource_resourceArn,++    -- * Destructuring the Response+    ListTagsForResourceResponse (..),+    newListTagsForResourceResponse,++    -- * Response Lenses+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.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 ARN of the resource that you want to see the tags of.+    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 ARN of the resource that you want to see the tags of.+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource' {resourceArn = pResourceArn_}++-- | The ARN of the resource that you want to see the tags of.+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.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++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 ListTagsForResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery ListTagsForResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTagsForResourceResponse' smart constructor.+data ListTagsForResourceResponse = ListTagsForResourceResponse'+  { -- | The list of tag keys and values associated with the resource you+    -- specified.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of '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:+--+-- 'tags', 'listTagsForResourceResponse_tags' - The list of tag keys and values associated with the resource you+-- specified.+--+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { tags =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of tag keys and values associated with the resource you+-- specified.+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced++-- | 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)++instance Prelude.NFData ListTagsForResourceResponse where+  rnf ListTagsForResourceResponse' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/PutProjectEvents.hs view
@@ -0,0 +1,204 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.PutProjectEvents+-- 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 performance events to Evidently. These events can be used to+-- evaluate a launch or an experiment.+module Amazonka.Evidently.PutProjectEvents+  ( -- * Creating a Request+    PutProjectEvents (..),+    newPutProjectEvents,++    -- * Request Lenses+    putProjectEvents_events,+    putProjectEvents_project,++    -- * Destructuring the Response+    PutProjectEventsResponse (..),+    newPutProjectEventsResponse,++    -- * Response Lenses+    putProjectEventsResponse_eventResults,+    putProjectEventsResponse_failedEventCount,+    putProjectEventsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutProjectEvents' smart constructor.+data PutProjectEvents = PutProjectEvents'+  { -- | An array of event structures that contain the performance data that is+    -- being sent to Evidently.+    events :: [Event],+    -- | The name or ARN of the project to write the events to.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutProjectEvents' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'events', 'putProjectEvents_events' - An array of event structures that contain the performance data that is+-- being sent to Evidently.+--+-- 'project', 'putProjectEvents_project' - The name or ARN of the project to write the events to.+newPutProjectEvents ::+  -- | 'project'+  Prelude.Text ->+  PutProjectEvents+newPutProjectEvents pProject_ =+  PutProjectEvents'+    { events = Prelude.mempty,+      project = pProject_+    }++-- | An array of event structures that contain the performance data that is+-- being sent to Evidently.+putProjectEvents_events :: Lens.Lens' PutProjectEvents [Event]+putProjectEvents_events = Lens.lens (\PutProjectEvents' {events} -> events) (\s@PutProjectEvents' {} a -> s {events = a} :: PutProjectEvents) Prelude.. Lens.coerced++-- | The name or ARN of the project to write the events to.+putProjectEvents_project :: Lens.Lens' PutProjectEvents Prelude.Text+putProjectEvents_project = Lens.lens (\PutProjectEvents' {project} -> project) (\s@PutProjectEvents' {} a -> s {project = a} :: PutProjectEvents)++instance Core.AWSRequest PutProjectEvents where+  type+    AWSResponse PutProjectEvents =+      PutProjectEventsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutProjectEventsResponse'+            Prelude.<$> (x Data..?> "eventResults" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "failedEventCount")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutProjectEvents where+  hashWithSalt _salt PutProjectEvents' {..} =+    _salt+      `Prelude.hashWithSalt` events+      `Prelude.hashWithSalt` project++instance Prelude.NFData PutProjectEvents where+  rnf PutProjectEvents' {..} =+    Prelude.rnf events+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders PutProjectEvents where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutProjectEvents where+  toJSON PutProjectEvents' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("events" Data..= events)]+      )++instance Data.ToPath PutProjectEvents where+  toPath PutProjectEvents' {..} =+    Prelude.mconcat+      ["/events/projects/", Data.toBS project]++instance Data.ToQuery PutProjectEvents where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutProjectEventsResponse' smart constructor.+data PutProjectEventsResponse = PutProjectEventsResponse'+  { -- | A structure that contains Evidently\'s response to the sent events,+    -- including an event ID and error codes, if any.+    eventResults :: Prelude.Maybe [PutProjectEventsResultEntry],+    -- | The number of events in the operation that could not be used by+    -- Evidently.+    failedEventCount :: Prelude.Maybe Prelude.Int,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutProjectEventsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'eventResults', 'putProjectEventsResponse_eventResults' - A structure that contains Evidently\'s response to the sent events,+-- including an event ID and error codes, if any.+--+-- 'failedEventCount', 'putProjectEventsResponse_failedEventCount' - The number of events in the operation that could not be used by+-- Evidently.+--+-- 'httpStatus', 'putProjectEventsResponse_httpStatus' - The response's http status code.+newPutProjectEventsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutProjectEventsResponse+newPutProjectEventsResponse pHttpStatus_ =+  PutProjectEventsResponse'+    { eventResults =+        Prelude.Nothing,+      failedEventCount = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A structure that contains Evidently\'s response to the sent events,+-- including an event ID and error codes, if any.+putProjectEventsResponse_eventResults :: Lens.Lens' PutProjectEventsResponse (Prelude.Maybe [PutProjectEventsResultEntry])+putProjectEventsResponse_eventResults = Lens.lens (\PutProjectEventsResponse' {eventResults} -> eventResults) (\s@PutProjectEventsResponse' {} a -> s {eventResults = a} :: PutProjectEventsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The number of events in the operation that could not be used by+-- Evidently.+putProjectEventsResponse_failedEventCount :: Lens.Lens' PutProjectEventsResponse (Prelude.Maybe Prelude.Int)+putProjectEventsResponse_failedEventCount = Lens.lens (\PutProjectEventsResponse' {failedEventCount} -> failedEventCount) (\s@PutProjectEventsResponse' {} a -> s {failedEventCount = a} :: PutProjectEventsResponse)++-- | The response's http status code.+putProjectEventsResponse_httpStatus :: Lens.Lens' PutProjectEventsResponse Prelude.Int+putProjectEventsResponse_httpStatus = Lens.lens (\PutProjectEventsResponse' {httpStatus} -> httpStatus) (\s@PutProjectEventsResponse' {} a -> s {httpStatus = a} :: PutProjectEventsResponse)++instance Prelude.NFData PutProjectEventsResponse where+  rnf PutProjectEventsResponse' {..} =+    Prelude.rnf eventResults+      `Prelude.seq` Prelude.rnf failedEventCount+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/StartExperiment.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.Evidently.StartExperiment+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Starts an existing experiment. To create an experiment, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_CreateExperiment.html CreateExperiment>.+module Amazonka.Evidently.StartExperiment+  ( -- * Creating a Request+    StartExperiment (..),+    newStartExperiment,++    -- * Request Lenses+    startExperiment_analysisCompleteTime,+    startExperiment_experiment,+    startExperiment_project,++    -- * Destructuring the Response+    StartExperimentResponse (..),+    newStartExperimentResponse,++    -- * Response Lenses+    startExperimentResponse_startedTime,+    startExperimentResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newStartExperiment' smart constructor.+data StartExperiment = StartExperiment'+  { -- | The date and time to end the experiment. This must be no more than 30+    -- days after the experiment starts.+    analysisCompleteTime :: Data.POSIX,+    -- | The name of the experiment to start.+    experiment :: Prelude.Text,+    -- | The name or ARN of the project that contains the experiment to start.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartExperiment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'analysisCompleteTime', 'startExperiment_analysisCompleteTime' - The date and time to end the experiment. This must be no more than 30+-- days after the experiment starts.+--+-- 'experiment', 'startExperiment_experiment' - The name of the experiment to start.+--+-- 'project', 'startExperiment_project' - The name or ARN of the project that contains the experiment to start.+newStartExperiment ::+  -- | 'analysisCompleteTime'+  Prelude.UTCTime ->+  -- | 'experiment'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  StartExperiment+newStartExperiment+  pAnalysisCompleteTime_+  pExperiment_+  pProject_ =+    StartExperiment'+      { analysisCompleteTime =+          Data._Time Lens.# pAnalysisCompleteTime_,+        experiment = pExperiment_,+        project = pProject_+      }++-- | The date and time to end the experiment. This must be no more than 30+-- days after the experiment starts.+startExperiment_analysisCompleteTime :: Lens.Lens' StartExperiment Prelude.UTCTime+startExperiment_analysisCompleteTime = Lens.lens (\StartExperiment' {analysisCompleteTime} -> analysisCompleteTime) (\s@StartExperiment' {} a -> s {analysisCompleteTime = a} :: StartExperiment) Prelude.. Data._Time++-- | The name of the experiment to start.+startExperiment_experiment :: Lens.Lens' StartExperiment Prelude.Text+startExperiment_experiment = Lens.lens (\StartExperiment' {experiment} -> experiment) (\s@StartExperiment' {} a -> s {experiment = a} :: StartExperiment)++-- | The name or ARN of the project that contains the experiment to start.+startExperiment_project :: Lens.Lens' StartExperiment Prelude.Text+startExperiment_project = Lens.lens (\StartExperiment' {project} -> project) (\s@StartExperiment' {} a -> s {project = a} :: StartExperiment)++instance Core.AWSRequest StartExperiment where+  type+    AWSResponse StartExperiment =+      StartExperimentResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StartExperimentResponse'+            Prelude.<$> (x Data..?> "startedTime")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StartExperiment where+  hashWithSalt _salt StartExperiment' {..} =+    _salt+      `Prelude.hashWithSalt` analysisCompleteTime+      `Prelude.hashWithSalt` experiment+      `Prelude.hashWithSalt` project++instance Prelude.NFData StartExperiment where+  rnf StartExperiment' {..} =+    Prelude.rnf analysisCompleteTime+      `Prelude.seq` Prelude.rnf experiment+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders StartExperiment where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartExperiment where+  toJSON StartExperiment' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "analysisCompleteTime"+                  Data..= analysisCompleteTime+              )+          ]+      )++instance Data.ToPath StartExperiment where+  toPath StartExperiment' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/experiments/",+        Data.toBS experiment,+        "/start"+      ]++instance Data.ToQuery StartExperiment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartExperimentResponse' smart constructor.+data StartExperimentResponse = StartExperimentResponse'+  { -- | A timestamp that indicates when the experiment started.+    startedTime :: Prelude.Maybe Data.POSIX,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartExperimentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'startedTime', 'startExperimentResponse_startedTime' - A timestamp that indicates when the experiment started.+--+-- 'httpStatus', 'startExperimentResponse_httpStatus' - The response's http status code.+newStartExperimentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StartExperimentResponse+newStartExperimentResponse pHttpStatus_ =+  StartExperimentResponse'+    { startedTime =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A timestamp that indicates when the experiment started.+startExperimentResponse_startedTime :: Lens.Lens' StartExperimentResponse (Prelude.Maybe Prelude.UTCTime)+startExperimentResponse_startedTime = Lens.lens (\StartExperimentResponse' {startedTime} -> startedTime) (\s@StartExperimentResponse' {} a -> s {startedTime = a} :: StartExperimentResponse) Prelude.. Lens.mapping Data._Time++-- | The response's http status code.+startExperimentResponse_httpStatus :: Lens.Lens' StartExperimentResponse Prelude.Int+startExperimentResponse_httpStatus = Lens.lens (\StartExperimentResponse' {httpStatus} -> httpStatus) (\s@StartExperimentResponse' {} a -> s {httpStatus = a} :: StartExperimentResponse)++instance Prelude.NFData StartExperimentResponse where+  rnf StartExperimentResponse' {..} =+    Prelude.rnf startedTime+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/StartLaunch.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.Evidently.StartLaunch+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Starts an existing launch. To create a launch, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_CreateLaunch.html CreateLaunch>.+module Amazonka.Evidently.StartLaunch+  ( -- * Creating a Request+    StartLaunch (..),+    newStartLaunch,++    -- * Request Lenses+    startLaunch_launch,+    startLaunch_project,++    -- * Destructuring the Response+    StartLaunchResponse (..),+    newStartLaunchResponse,++    -- * Response Lenses+    startLaunchResponse_httpStatus,+    startLaunchResponse_launch,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newStartLaunch' smart constructor.+data StartLaunch = StartLaunch'+  { -- | The name of the launch to start.+    launch :: Prelude.Text,+    -- | The name or ARN of the project that contains the launch to start.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartLaunch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'launch', 'startLaunch_launch' - The name of the launch to start.+--+-- 'project', 'startLaunch_project' - The name or ARN of the project that contains the launch to start.+newStartLaunch ::+  -- | 'launch'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  StartLaunch+newStartLaunch pLaunch_ pProject_ =+  StartLaunch'+    { launch = pLaunch_,+      project = pProject_+    }++-- | The name of the launch to start.+startLaunch_launch :: Lens.Lens' StartLaunch Prelude.Text+startLaunch_launch = Lens.lens (\StartLaunch' {launch} -> launch) (\s@StartLaunch' {} a -> s {launch = a} :: StartLaunch)++-- | The name or ARN of the project that contains the launch to start.+startLaunch_project :: Lens.Lens' StartLaunch Prelude.Text+startLaunch_project = Lens.lens (\StartLaunch' {project} -> project) (\s@StartLaunch' {} a -> s {project = a} :: StartLaunch)++instance Core.AWSRequest StartLaunch where+  type AWSResponse StartLaunch = StartLaunchResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StartLaunchResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "launch")+      )++instance Prelude.Hashable StartLaunch where+  hashWithSalt _salt StartLaunch' {..} =+    _salt+      `Prelude.hashWithSalt` launch+      `Prelude.hashWithSalt` project++instance Prelude.NFData StartLaunch where+  rnf StartLaunch' {..} =+    Prelude.rnf launch+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders StartLaunch where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartLaunch where+  toJSON = Prelude.const (Data.Object Prelude.mempty)++instance Data.ToPath StartLaunch where+  toPath StartLaunch' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/launches/",+        Data.toBS launch,+        "/start"+      ]++instance Data.ToQuery StartLaunch where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartLaunchResponse' smart constructor.+data StartLaunchResponse = StartLaunchResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A structure that contains information about the launch that was started.+    launch :: Launch+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartLaunchResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'startLaunchResponse_httpStatus' - The response's http status code.+--+-- 'launch', 'startLaunchResponse_launch' - A structure that contains information about the launch that was started.+newStartLaunchResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'launch'+  Launch ->+  StartLaunchResponse+newStartLaunchResponse pHttpStatus_ pLaunch_ =+  StartLaunchResponse'+    { httpStatus = pHttpStatus_,+      launch = pLaunch_+    }++-- | The response's http status code.+startLaunchResponse_httpStatus :: Lens.Lens' StartLaunchResponse Prelude.Int+startLaunchResponse_httpStatus = Lens.lens (\StartLaunchResponse' {httpStatus} -> httpStatus) (\s@StartLaunchResponse' {} a -> s {httpStatus = a} :: StartLaunchResponse)++-- | A structure that contains information about the launch that was started.+startLaunchResponse_launch :: Lens.Lens' StartLaunchResponse Launch+startLaunchResponse_launch = Lens.lens (\StartLaunchResponse' {launch} -> launch) (\s@StartLaunchResponse' {} a -> s {launch = a} :: StartLaunchResponse)++instance Prelude.NFData StartLaunchResponse where+  rnf StartLaunchResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf launch
+ gen/Amazonka/Evidently/StopExperiment.hs view
@@ -0,0 +1,219 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.StopExperiment+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Stops an experiment that is currently running. If you stop an+-- experiment, you can\'t resume it or restart it.+module Amazonka.Evidently.StopExperiment+  ( -- * Creating a Request+    StopExperiment (..),+    newStopExperiment,++    -- * Request Lenses+    stopExperiment_desiredState,+    stopExperiment_reason,+    stopExperiment_experiment,+    stopExperiment_project,++    -- * Destructuring the Response+    StopExperimentResponse (..),+    newStopExperimentResponse,++    -- * Response Lenses+    stopExperimentResponse_endedTime,+    stopExperimentResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newStopExperiment' smart constructor.+data StopExperiment = StopExperiment'+  { -- | Specify whether the experiment is to be considered @COMPLETED@ or+    -- @CANCELLED@ after it stops.+    desiredState :: Prelude.Maybe ExperimentStopDesiredState,+    -- | A string that describes why you are stopping the experiment.+    reason :: Prelude.Maybe Prelude.Text,+    -- | The name of the experiment to stop.+    experiment :: Prelude.Text,+    -- | The name or ARN of the project that contains the experiment to stop.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StopExperiment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'desiredState', 'stopExperiment_desiredState' - Specify whether the experiment is to be considered @COMPLETED@ or+-- @CANCELLED@ after it stops.+--+-- 'reason', 'stopExperiment_reason' - A string that describes why you are stopping the experiment.+--+-- 'experiment', 'stopExperiment_experiment' - The name of the experiment to stop.+--+-- 'project', 'stopExperiment_project' - The name or ARN of the project that contains the experiment to stop.+newStopExperiment ::+  -- | 'experiment'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  StopExperiment+newStopExperiment pExperiment_ pProject_ =+  StopExperiment'+    { desiredState = Prelude.Nothing,+      reason = Prelude.Nothing,+      experiment = pExperiment_,+      project = pProject_+    }++-- | Specify whether the experiment is to be considered @COMPLETED@ or+-- @CANCELLED@ after it stops.+stopExperiment_desiredState :: Lens.Lens' StopExperiment (Prelude.Maybe ExperimentStopDesiredState)+stopExperiment_desiredState = Lens.lens (\StopExperiment' {desiredState} -> desiredState) (\s@StopExperiment' {} a -> s {desiredState = a} :: StopExperiment)++-- | A string that describes why you are stopping the experiment.+stopExperiment_reason :: Lens.Lens' StopExperiment (Prelude.Maybe Prelude.Text)+stopExperiment_reason = Lens.lens (\StopExperiment' {reason} -> reason) (\s@StopExperiment' {} a -> s {reason = a} :: StopExperiment)++-- | The name of the experiment to stop.+stopExperiment_experiment :: Lens.Lens' StopExperiment Prelude.Text+stopExperiment_experiment = Lens.lens (\StopExperiment' {experiment} -> experiment) (\s@StopExperiment' {} a -> s {experiment = a} :: StopExperiment)++-- | The name or ARN of the project that contains the experiment to stop.+stopExperiment_project :: Lens.Lens' StopExperiment Prelude.Text+stopExperiment_project = Lens.lens (\StopExperiment' {project} -> project) (\s@StopExperiment' {} a -> s {project = a} :: StopExperiment)++instance Core.AWSRequest StopExperiment where+  type+    AWSResponse StopExperiment =+      StopExperimentResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StopExperimentResponse'+            Prelude.<$> (x Data..?> "endedTime")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StopExperiment where+  hashWithSalt _salt StopExperiment' {..} =+    _salt+      `Prelude.hashWithSalt` desiredState+      `Prelude.hashWithSalt` reason+      `Prelude.hashWithSalt` experiment+      `Prelude.hashWithSalt` project++instance Prelude.NFData StopExperiment where+  rnf StopExperiment' {..} =+    Prelude.rnf desiredState+      `Prelude.seq` Prelude.rnf reason+      `Prelude.seq` Prelude.rnf experiment+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders StopExperiment where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StopExperiment where+  toJSON StopExperiment' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("desiredState" Data..=) Prelude.<$> desiredState,+            ("reason" Data..=) Prelude.<$> reason+          ]+      )++instance Data.ToPath StopExperiment where+  toPath StopExperiment' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/experiments/",+        Data.toBS experiment,+        "/cancel"+      ]++instance Data.ToQuery StopExperiment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStopExperimentResponse' smart constructor.+data StopExperimentResponse = StopExperimentResponse'+  { -- | The date and time that the experiment stopped.+    endedTime :: Prelude.Maybe Data.POSIX,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StopExperimentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endedTime', 'stopExperimentResponse_endedTime' - The date and time that the experiment stopped.+--+-- 'httpStatus', 'stopExperimentResponse_httpStatus' - The response's http status code.+newStopExperimentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StopExperimentResponse+newStopExperimentResponse pHttpStatus_ =+  StopExperimentResponse'+    { endedTime =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The date and time that the experiment stopped.+stopExperimentResponse_endedTime :: Lens.Lens' StopExperimentResponse (Prelude.Maybe Prelude.UTCTime)+stopExperimentResponse_endedTime = Lens.lens (\StopExperimentResponse' {endedTime} -> endedTime) (\s@StopExperimentResponse' {} a -> s {endedTime = a} :: StopExperimentResponse) Prelude.. Lens.mapping Data._Time++-- | The response's http status code.+stopExperimentResponse_httpStatus :: Lens.Lens' StopExperimentResponse Prelude.Int+stopExperimentResponse_httpStatus = Lens.lens (\StopExperimentResponse' {httpStatus} -> httpStatus) (\s@StopExperimentResponse' {} a -> s {httpStatus = a} :: StopExperimentResponse)++instance Prelude.NFData StopExperimentResponse where+  rnf StopExperimentResponse' {..} =+    Prelude.rnf endedTime+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/StopLaunch.hs view
@@ -0,0 +1,223 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.StopLaunch+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Stops a launch that is currently running. After you stop a launch, you+-- will not be able to resume it or restart it. Also, it will not be+-- evaluated as a rule for traffic allocation, and the traffic that was+-- allocated to the launch will instead be available to the feature\'s+-- experiment, if there is one. Otherwise, all traffic will be served the+-- default variation after the launch is stopped.+module Amazonka.Evidently.StopLaunch+  ( -- * Creating a Request+    StopLaunch (..),+    newStopLaunch,++    -- * Request Lenses+    stopLaunch_desiredState,+    stopLaunch_reason,+    stopLaunch_launch,+    stopLaunch_project,++    -- * Destructuring the Response+    StopLaunchResponse (..),+    newStopLaunchResponse,++    -- * Response Lenses+    stopLaunchResponse_endedTime,+    stopLaunchResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newStopLaunch' smart constructor.+data StopLaunch = StopLaunch'+  { -- | Specify whether to consider the launch as @COMPLETED@ or @CANCELLED@+    -- after it stops.+    desiredState :: Prelude.Maybe LaunchStopDesiredState,+    -- | A string that describes why you are stopping the launch.+    reason :: Prelude.Maybe Prelude.Text,+    -- | The name of the launch to stop.+    launch :: Prelude.Text,+    -- | The name or ARN of the project that contains the launch that you want to+    -- stop.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StopLaunch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'desiredState', 'stopLaunch_desiredState' - Specify whether to consider the launch as @COMPLETED@ or @CANCELLED@+-- after it stops.+--+-- 'reason', 'stopLaunch_reason' - A string that describes why you are stopping the launch.+--+-- 'launch', 'stopLaunch_launch' - The name of the launch to stop.+--+-- 'project', 'stopLaunch_project' - The name or ARN of the project that contains the launch that you want to+-- stop.+newStopLaunch ::+  -- | 'launch'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  StopLaunch+newStopLaunch pLaunch_ pProject_ =+  StopLaunch'+    { desiredState = Prelude.Nothing,+      reason = Prelude.Nothing,+      launch = pLaunch_,+      project = pProject_+    }++-- | Specify whether to consider the launch as @COMPLETED@ or @CANCELLED@+-- after it stops.+stopLaunch_desiredState :: Lens.Lens' StopLaunch (Prelude.Maybe LaunchStopDesiredState)+stopLaunch_desiredState = Lens.lens (\StopLaunch' {desiredState} -> desiredState) (\s@StopLaunch' {} a -> s {desiredState = a} :: StopLaunch)++-- | A string that describes why you are stopping the launch.+stopLaunch_reason :: Lens.Lens' StopLaunch (Prelude.Maybe Prelude.Text)+stopLaunch_reason = Lens.lens (\StopLaunch' {reason} -> reason) (\s@StopLaunch' {} a -> s {reason = a} :: StopLaunch)++-- | The name of the launch to stop.+stopLaunch_launch :: Lens.Lens' StopLaunch Prelude.Text+stopLaunch_launch = Lens.lens (\StopLaunch' {launch} -> launch) (\s@StopLaunch' {} a -> s {launch = a} :: StopLaunch)++-- | The name or ARN of the project that contains the launch that you want to+-- stop.+stopLaunch_project :: Lens.Lens' StopLaunch Prelude.Text+stopLaunch_project = Lens.lens (\StopLaunch' {project} -> project) (\s@StopLaunch' {} a -> s {project = a} :: StopLaunch)++instance Core.AWSRequest StopLaunch where+  type AWSResponse StopLaunch = StopLaunchResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StopLaunchResponse'+            Prelude.<$> (x Data..?> "endedTime")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StopLaunch where+  hashWithSalt _salt StopLaunch' {..} =+    _salt+      `Prelude.hashWithSalt` desiredState+      `Prelude.hashWithSalt` reason+      `Prelude.hashWithSalt` launch+      `Prelude.hashWithSalt` project++instance Prelude.NFData StopLaunch where+  rnf StopLaunch' {..} =+    Prelude.rnf desiredState+      `Prelude.seq` Prelude.rnf reason+      `Prelude.seq` Prelude.rnf launch+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders StopLaunch where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StopLaunch where+  toJSON StopLaunch' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("desiredState" Data..=) Prelude.<$> desiredState,+            ("reason" Data..=) Prelude.<$> reason+          ]+      )++instance Data.ToPath StopLaunch where+  toPath StopLaunch' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/launches/",+        Data.toBS launch,+        "/cancel"+      ]++instance Data.ToQuery StopLaunch where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStopLaunchResponse' smart constructor.+data StopLaunchResponse = StopLaunchResponse'+  { -- | The date and time that the launch stopped.+    endedTime :: Prelude.Maybe Data.POSIX,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StopLaunchResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endedTime', 'stopLaunchResponse_endedTime' - The date and time that the launch stopped.+--+-- 'httpStatus', 'stopLaunchResponse_httpStatus' - The response's http status code.+newStopLaunchResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StopLaunchResponse+newStopLaunchResponse pHttpStatus_ =+  StopLaunchResponse'+    { endedTime = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The date and time that the launch stopped.+stopLaunchResponse_endedTime :: Lens.Lens' StopLaunchResponse (Prelude.Maybe Prelude.UTCTime)+stopLaunchResponse_endedTime = Lens.lens (\StopLaunchResponse' {endedTime} -> endedTime) (\s@StopLaunchResponse' {} a -> s {endedTime = a} :: StopLaunchResponse) Prelude.. Lens.mapping Data._Time++-- | The response's http status code.+stopLaunchResponse_httpStatus :: Lens.Lens' StopLaunchResponse Prelude.Int+stopLaunchResponse_httpStatus = Lens.lens (\StopLaunchResponse' {httpStatus} -> httpStatus) (\s@StopLaunchResponse' {} a -> s {httpStatus = a} :: StopLaunchResponse)++instance Prelude.NFData StopLaunchResponse where+  rnf StopLaunchResponse' {..} =+    Prelude.rnf endedTime+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Evidently/TagResource.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.Evidently.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)+--+-- Assigns one or more tags (key-value pairs) to the specified CloudWatch+-- Evidently resource. Projects, features, launches, and experiments can be+-- tagged.+--+-- Tags can help you organize and categorize your resources. You can also+-- use them to scope user permissions by granting a user permission to+-- access or change only resources with certain tag values.+--+-- Tags don\'t have any semantic meaning to Amazon Web Services and are+-- interpreted strictly as strings of characters.+--+-- You can use the @TagResource@ action with a resource that already has+-- tags. If you specify a new tag key for the resource, this tag is+-- appended to the list of tags associated with the alarm. If you specify a+-- tag key that is already associated with the resource, the new tag value+-- that you specify replaces the previous value for that tag.+--+-- You can associate as many as 50 tags with a resource.+--+-- For more information, see+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services resources>.+module Amazonka.Evidently.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.Evidently.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 ARN of the CloudWatch Evidently resource that you\'re adding tags+    -- to.+    resourceArn :: Prelude.Text,+    -- | The list of key-value pairs to associate with the resource.+    tags :: Prelude.HashMap Prelude.Text Prelude.Text+  }+  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 ARN of the CloudWatch Evidently resource that you\'re adding tags+-- to.+--+-- 'tags', 'tagResource_tags' - The list of key-value pairs to associate with the resource.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | The ARN of the CloudWatch Evidently resource that you\'re adding tags+-- to.+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | The list of key-value pairs to associate with the resource.+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)+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 ("tags" Data..= tags)]+      )++instance Data.ToPath TagResource where+  toPath TagResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++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/Evidently/TestSegmentPattern.hs view
@@ -0,0 +1,191 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.TestSegmentPattern+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Use this operation to test a rules pattern that you plan to use to+-- create an audience segment. For more information about segments, see+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_CreateSegment.html CreateSegment>.+module Amazonka.Evidently.TestSegmentPattern+  ( -- * Creating a Request+    TestSegmentPattern (..),+    newTestSegmentPattern,++    -- * Request Lenses+    testSegmentPattern_pattern,+    testSegmentPattern_payload,++    -- * Destructuring the Response+    TestSegmentPatternResponse (..),+    newTestSegmentPatternResponse,++    -- * Response Lenses+    testSegmentPatternResponse_httpStatus,+    testSegmentPatternResponse_match,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newTestSegmentPattern' smart constructor.+data TestSegmentPattern = TestSegmentPattern'+  { -- | The pattern to test.+    pattern' :: Prelude.Text,+    -- | A sample @evaluationContext@ JSON block to test against the specified+    -- pattern.+    payload :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TestSegmentPattern' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'pattern'', 'testSegmentPattern_pattern' - The pattern to test.+--+-- 'payload', 'testSegmentPattern_payload' - A sample @evaluationContext@ JSON block to test against the specified+-- pattern.+newTestSegmentPattern ::+  -- | 'pattern''+  Prelude.Text ->+  -- | 'payload'+  Prelude.Text ->+  TestSegmentPattern+newTestSegmentPattern pPattern_ pPayload_ =+  TestSegmentPattern'+    { pattern' = pPattern_,+      payload = pPayload_+    }++-- | The pattern to test.+testSegmentPattern_pattern :: Lens.Lens' TestSegmentPattern Prelude.Text+testSegmentPattern_pattern = Lens.lens (\TestSegmentPattern' {pattern'} -> pattern') (\s@TestSegmentPattern' {} a -> s {pattern' = a} :: TestSegmentPattern)++-- | A sample @evaluationContext@ JSON block to test against the specified+-- pattern.+testSegmentPattern_payload :: Lens.Lens' TestSegmentPattern Prelude.Text+testSegmentPattern_payload = Lens.lens (\TestSegmentPattern' {payload} -> payload) (\s@TestSegmentPattern' {} a -> s {payload = a} :: TestSegmentPattern)++instance Core.AWSRequest TestSegmentPattern where+  type+    AWSResponse TestSegmentPattern =+      TestSegmentPatternResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          TestSegmentPatternResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "match")+      )++instance Prelude.Hashable TestSegmentPattern where+  hashWithSalt _salt TestSegmentPattern' {..} =+    _salt+      `Prelude.hashWithSalt` pattern'+      `Prelude.hashWithSalt` payload++instance Prelude.NFData TestSegmentPattern where+  rnf TestSegmentPattern' {..} =+    Prelude.rnf pattern'+      `Prelude.seq` Prelude.rnf payload++instance Data.ToHeaders TestSegmentPattern where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON TestSegmentPattern where+  toJSON TestSegmentPattern' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("pattern" Data..= pattern'),+            Prelude.Just ("payload" Data..= payload)+          ]+      )++instance Data.ToPath TestSegmentPattern where+  toPath = Prelude.const "/test-segment-pattern"++instance Data.ToQuery TestSegmentPattern where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newTestSegmentPatternResponse' smart constructor.+data TestSegmentPatternResponse = TestSegmentPatternResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Returns @true@ if the pattern matches the payload.+    match :: Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TestSegmentPatternResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'testSegmentPatternResponse_httpStatus' - The response's http status code.+--+-- 'match', 'testSegmentPatternResponse_match' - Returns @true@ if the pattern matches the payload.+newTestSegmentPatternResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'match'+  Prelude.Bool ->+  TestSegmentPatternResponse+newTestSegmentPatternResponse pHttpStatus_ pMatch_ =+  TestSegmentPatternResponse'+    { httpStatus =+        pHttpStatus_,+      match = pMatch_+    }++-- | The response's http status code.+testSegmentPatternResponse_httpStatus :: Lens.Lens' TestSegmentPatternResponse Prelude.Int+testSegmentPatternResponse_httpStatus = Lens.lens (\TestSegmentPatternResponse' {httpStatus} -> httpStatus) (\s@TestSegmentPatternResponse' {} a -> s {httpStatus = a} :: TestSegmentPatternResponse)++-- | Returns @true@ if the pattern matches the payload.+testSegmentPatternResponse_match :: Lens.Lens' TestSegmentPatternResponse Prelude.Bool+testSegmentPatternResponse_match = Lens.lens (\TestSegmentPatternResponse' {match} -> match) (\s@TestSegmentPatternResponse' {} a -> s {match = a} :: TestSegmentPatternResponse)++instance Prelude.NFData TestSegmentPatternResponse where+  rnf TestSegmentPatternResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf match
+ gen/Amazonka/Evidently/Types.hs view
@@ -0,0 +1,665 @@+{-# 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.Evidently.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.Evidently.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _AccessDeniedException,+    _ConflictException,+    _InternalServerException,+    _ResourceNotFoundException,+    _ServiceQuotaExceededException,+    _ServiceUnavailableException,+    _ThrottlingException,+    _ValidationException,++    -- * ChangeDirectionEnum+    ChangeDirectionEnum (..),++    -- * EventType+    EventType (..),++    -- * ExperimentBaseStat+    ExperimentBaseStat (..),++    -- * ExperimentReportName+    ExperimentReportName (..),++    -- * ExperimentResultRequestType+    ExperimentResultRequestType (..),++    -- * ExperimentResultResponseType+    ExperimentResultResponseType (..),++    -- * ExperimentStatus+    ExperimentStatus (..),++    -- * ExperimentStopDesiredState+    ExperimentStopDesiredState (..),++    -- * ExperimentType+    ExperimentType (..),++    -- * FeatureEvaluationStrategy+    FeatureEvaluationStrategy (..),++    -- * FeatureStatus+    FeatureStatus (..),++    -- * LaunchStatus+    LaunchStatus (..),++    -- * LaunchStopDesiredState+    LaunchStopDesiredState (..),++    -- * LaunchType+    LaunchType (..),++    -- * ProjectStatus+    ProjectStatus (..),++    -- * SegmentReferenceResourceType+    SegmentReferenceResourceType (..),++    -- * VariationValueType+    VariationValueType (..),++    -- * CloudWatchLogsDestination+    CloudWatchLogsDestination (..),+    newCloudWatchLogsDestination,+    cloudWatchLogsDestination_logGroup,++    -- * CloudWatchLogsDestinationConfig+    CloudWatchLogsDestinationConfig (..),+    newCloudWatchLogsDestinationConfig,+    cloudWatchLogsDestinationConfig_logGroup,++    -- * EvaluationRequest+    EvaluationRequest (..),+    newEvaluationRequest,+    evaluationRequest_evaluationContext,+    evaluationRequest_entityId,+    evaluationRequest_feature,++    -- * EvaluationResult+    EvaluationResult (..),+    newEvaluationResult,+    evaluationResult_details,+    evaluationResult_project,+    evaluationResult_reason,+    evaluationResult_value,+    evaluationResult_variation,+    evaluationResult_entityId,+    evaluationResult_feature,++    -- * EvaluationRule+    EvaluationRule (..),+    newEvaluationRule,+    evaluationRule_name,+    evaluationRule_type,++    -- * Event+    Event (..),+    newEvent,+    event_data,+    event_timestamp,+    event_type,++    -- * Experiment+    Experiment (..),+    newExperiment,+    experiment_description,+    experiment_execution,+    experiment_metricGoals,+    experiment_onlineAbDefinition,+    experiment_project,+    experiment_randomizationSalt,+    experiment_samplingRate,+    experiment_schedule,+    experiment_segment,+    experiment_statusReason,+    experiment_tags,+    experiment_treatments,+    experiment_arn,+    experiment_createdTime,+    experiment_lastUpdatedTime,+    experiment_name,+    experiment_status,+    experiment_type,++    -- * ExperimentExecution+    ExperimentExecution (..),+    newExperimentExecution,+    experimentExecution_endedTime,+    experimentExecution_startedTime,++    -- * ExperimentReport+    ExperimentReport (..),+    newExperimentReport,+    experimentReport_content,+    experimentReport_metricName,+    experimentReport_reportName,+    experimentReport_treatmentName,++    -- * ExperimentResultsData+    ExperimentResultsData (..),+    newExperimentResultsData,+    experimentResultsData_metricName,+    experimentResultsData_resultStat,+    experimentResultsData_treatmentName,+    experimentResultsData_values,++    -- * ExperimentSchedule+    ExperimentSchedule (..),+    newExperimentSchedule,+    experimentSchedule_analysisCompleteTime,++    -- * Feature+    Feature (..),+    newFeature,+    feature_defaultVariation,+    feature_description,+    feature_entityOverrides,+    feature_evaluationRules,+    feature_project,+    feature_tags,+    feature_arn,+    feature_createdTime,+    feature_evaluationStrategy,+    feature_lastUpdatedTime,+    feature_name,+    feature_status,+    feature_valueType,+    feature_variations,++    -- * FeatureSummary+    FeatureSummary (..),+    newFeatureSummary,+    featureSummary_defaultVariation,+    featureSummary_evaluationRules,+    featureSummary_project,+    featureSummary_tags,+    featureSummary_arn,+    featureSummary_createdTime,+    featureSummary_evaluationStrategy,+    featureSummary_lastUpdatedTime,+    featureSummary_name,+    featureSummary_status,++    -- * Launch+    Launch (..),+    newLaunch,+    launch_description,+    launch_execution,+    launch_groups,+    launch_metricMonitors,+    launch_project,+    launch_randomizationSalt,+    launch_scheduledSplitsDefinition,+    launch_statusReason,+    launch_tags,+    launch_arn,+    launch_createdTime,+    launch_lastUpdatedTime,+    launch_name,+    launch_status,+    launch_type,++    -- * LaunchExecution+    LaunchExecution (..),+    newLaunchExecution,+    launchExecution_endedTime,+    launchExecution_startedTime,++    -- * LaunchGroup+    LaunchGroup (..),+    newLaunchGroup,+    launchGroup_description,+    launchGroup_featureVariations,+    launchGroup_name,++    -- * LaunchGroupConfig+    LaunchGroupConfig (..),+    newLaunchGroupConfig,+    launchGroupConfig_description,+    launchGroupConfig_feature,+    launchGroupConfig_name,+    launchGroupConfig_variation,++    -- * MetricDefinition+    MetricDefinition (..),+    newMetricDefinition,+    metricDefinition_entityIdKey,+    metricDefinition_eventPattern,+    metricDefinition_name,+    metricDefinition_unitLabel,+    metricDefinition_valueKey,++    -- * MetricDefinitionConfig+    MetricDefinitionConfig (..),+    newMetricDefinitionConfig,+    metricDefinitionConfig_eventPattern,+    metricDefinitionConfig_unitLabel,+    metricDefinitionConfig_entityIdKey,+    metricDefinitionConfig_name,+    metricDefinitionConfig_valueKey,++    -- * MetricGoal+    MetricGoal (..),+    newMetricGoal,+    metricGoal_desiredChange,+    metricGoal_metricDefinition,++    -- * MetricGoalConfig+    MetricGoalConfig (..),+    newMetricGoalConfig,+    metricGoalConfig_desiredChange,+    metricGoalConfig_metricDefinition,++    -- * MetricMonitor+    MetricMonitor (..),+    newMetricMonitor,+    metricMonitor_metricDefinition,++    -- * MetricMonitorConfig+    MetricMonitorConfig (..),+    newMetricMonitorConfig,+    metricMonitorConfig_metricDefinition,++    -- * OnlineAbConfig+    OnlineAbConfig (..),+    newOnlineAbConfig,+    onlineAbConfig_controlTreatmentName,+    onlineAbConfig_treatmentWeights,++    -- * OnlineAbDefinition+    OnlineAbDefinition (..),+    newOnlineAbDefinition,+    onlineAbDefinition_controlTreatmentName,+    onlineAbDefinition_treatmentWeights,++    -- * Project+    Project (..),+    newProject,+    project_activeExperimentCount,+    project_activeLaunchCount,+    project_appConfigResource,+    project_dataDelivery,+    project_description,+    project_experimentCount,+    project_featureCount,+    project_launchCount,+    project_tags,+    project_arn,+    project_createdTime,+    project_lastUpdatedTime,+    project_name,+    project_status,++    -- * ProjectAppConfigResource+    ProjectAppConfigResource (..),+    newProjectAppConfigResource,+    projectAppConfigResource_applicationId,+    projectAppConfigResource_configurationProfileId,+    projectAppConfigResource_environmentId,++    -- * ProjectAppConfigResourceConfig+    ProjectAppConfigResourceConfig (..),+    newProjectAppConfigResourceConfig,+    projectAppConfigResourceConfig_applicationId,+    projectAppConfigResourceConfig_environmentId,++    -- * ProjectDataDelivery+    ProjectDataDelivery (..),+    newProjectDataDelivery,+    projectDataDelivery_cloudWatchLogs,+    projectDataDelivery_s3Destination,++    -- * ProjectDataDeliveryConfig+    ProjectDataDeliveryConfig (..),+    newProjectDataDeliveryConfig,+    projectDataDeliveryConfig_cloudWatchLogs,+    projectDataDeliveryConfig_s3Destination,++    -- * ProjectSummary+    ProjectSummary (..),+    newProjectSummary,+    projectSummary_activeExperimentCount,+    projectSummary_activeLaunchCount,+    projectSummary_description,+    projectSummary_experimentCount,+    projectSummary_featureCount,+    projectSummary_launchCount,+    projectSummary_tags,+    projectSummary_arn,+    projectSummary_createdTime,+    projectSummary_lastUpdatedTime,+    projectSummary_name,+    projectSummary_status,++    -- * PutProjectEventsResultEntry+    PutProjectEventsResultEntry (..),+    newPutProjectEventsResultEntry,+    putProjectEventsResultEntry_errorCode,+    putProjectEventsResultEntry_errorMessage,+    putProjectEventsResultEntry_eventId,++    -- * RefResource+    RefResource (..),+    newRefResource,+    refResource_arn,+    refResource_endTime,+    refResource_lastUpdatedOn,+    refResource_startTime,+    refResource_status,+    refResource_name,+    refResource_type,++    -- * S3Destination+    S3Destination (..),+    newS3Destination,+    s3Destination_bucket,+    s3Destination_prefix,++    -- * S3DestinationConfig+    S3DestinationConfig (..),+    newS3DestinationConfig,+    s3DestinationConfig_bucket,+    s3DestinationConfig_prefix,++    -- * ScheduledSplit+    ScheduledSplit (..),+    newScheduledSplit,+    scheduledSplit_groupWeights,+    scheduledSplit_segmentOverrides,+    scheduledSplit_startTime,++    -- * ScheduledSplitConfig+    ScheduledSplitConfig (..),+    newScheduledSplitConfig,+    scheduledSplitConfig_segmentOverrides,+    scheduledSplitConfig_groupWeights,+    scheduledSplitConfig_startTime,++    -- * ScheduledSplitsLaunchConfig+    ScheduledSplitsLaunchConfig (..),+    newScheduledSplitsLaunchConfig,+    scheduledSplitsLaunchConfig_steps,++    -- * ScheduledSplitsLaunchDefinition+    ScheduledSplitsLaunchDefinition (..),+    newScheduledSplitsLaunchDefinition,+    scheduledSplitsLaunchDefinition_steps,++    -- * Segment+    Segment (..),+    newSegment,+    segment_description,+    segment_experimentCount,+    segment_launchCount,+    segment_tags,+    segment_arn,+    segment_createdTime,+    segment_lastUpdatedTime,+    segment_name,+    segment_pattern,++    -- * SegmentOverride+    SegmentOverride (..),+    newSegmentOverride,+    segmentOverride_evaluationOrder,+    segmentOverride_segment,+    segmentOverride_weights,++    -- * Treatment+    Treatment (..),+    newTreatment,+    treatment_description,+    treatment_featureVariations,+    treatment_name,++    -- * TreatmentConfig+    TreatmentConfig (..),+    newTreatmentConfig,+    treatmentConfig_description,+    treatmentConfig_feature,+    treatmentConfig_name,+    treatmentConfig_variation,++    -- * VariableValue+    VariableValue (..),+    newVariableValue,+    variableValue_boolValue,+    variableValue_doubleValue,+    variableValue_longValue,+    variableValue_stringValue,++    -- * Variation+    Variation (..),+    newVariation,+    variation_name,+    variation_value,++    -- * VariationConfig+    VariationConfig (..),+    newVariationConfig,+    variationConfig_name,+    variationConfig_value,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.Evidently.Types.ChangeDirectionEnum+import Amazonka.Evidently.Types.CloudWatchLogsDestination+import Amazonka.Evidently.Types.CloudWatchLogsDestinationConfig+import Amazonka.Evidently.Types.EvaluationRequest+import Amazonka.Evidently.Types.EvaluationResult+import Amazonka.Evidently.Types.EvaluationRule+import Amazonka.Evidently.Types.Event+import Amazonka.Evidently.Types.EventType+import Amazonka.Evidently.Types.Experiment+import Amazonka.Evidently.Types.ExperimentBaseStat+import Amazonka.Evidently.Types.ExperimentExecution+import Amazonka.Evidently.Types.ExperimentReport+import Amazonka.Evidently.Types.ExperimentReportName+import Amazonka.Evidently.Types.ExperimentResultRequestType+import Amazonka.Evidently.Types.ExperimentResultResponseType+import Amazonka.Evidently.Types.ExperimentResultsData+import Amazonka.Evidently.Types.ExperimentSchedule+import Amazonka.Evidently.Types.ExperimentStatus+import Amazonka.Evidently.Types.ExperimentStopDesiredState+import Amazonka.Evidently.Types.ExperimentType+import Amazonka.Evidently.Types.Feature+import Amazonka.Evidently.Types.FeatureEvaluationStrategy+import Amazonka.Evidently.Types.FeatureStatus+import Amazonka.Evidently.Types.FeatureSummary+import Amazonka.Evidently.Types.Launch+import Amazonka.Evidently.Types.LaunchExecution+import Amazonka.Evidently.Types.LaunchGroup+import Amazonka.Evidently.Types.LaunchGroupConfig+import Amazonka.Evidently.Types.LaunchStatus+import Amazonka.Evidently.Types.LaunchStopDesiredState+import Amazonka.Evidently.Types.LaunchType+import Amazonka.Evidently.Types.MetricDefinition+import Amazonka.Evidently.Types.MetricDefinitionConfig+import Amazonka.Evidently.Types.MetricGoal+import Amazonka.Evidently.Types.MetricGoalConfig+import Amazonka.Evidently.Types.MetricMonitor+import Amazonka.Evidently.Types.MetricMonitorConfig+import Amazonka.Evidently.Types.OnlineAbConfig+import Amazonka.Evidently.Types.OnlineAbDefinition+import Amazonka.Evidently.Types.Project+import Amazonka.Evidently.Types.ProjectAppConfigResource+import Amazonka.Evidently.Types.ProjectAppConfigResourceConfig+import Amazonka.Evidently.Types.ProjectDataDelivery+import Amazonka.Evidently.Types.ProjectDataDeliveryConfig+import Amazonka.Evidently.Types.ProjectStatus+import Amazonka.Evidently.Types.ProjectSummary+import Amazonka.Evidently.Types.PutProjectEventsResultEntry+import Amazonka.Evidently.Types.RefResource+import Amazonka.Evidently.Types.S3Destination+import Amazonka.Evidently.Types.S3DestinationConfig+import Amazonka.Evidently.Types.ScheduledSplit+import Amazonka.Evidently.Types.ScheduledSplitConfig+import Amazonka.Evidently.Types.ScheduledSplitsLaunchConfig+import Amazonka.Evidently.Types.ScheduledSplitsLaunchDefinition+import Amazonka.Evidently.Types.Segment+import Amazonka.Evidently.Types.SegmentOverride+import Amazonka.Evidently.Types.SegmentReferenceResourceType+import Amazonka.Evidently.Types.Treatment+import Amazonka.Evidently.Types.TreatmentConfig+import Amazonka.Evidently.Types.VariableValue+import Amazonka.Evidently.Types.Variation+import Amazonka.Evidently.Types.VariationConfig+import Amazonka.Evidently.Types.VariationValueType+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2021-02-01@ of the Amazon CloudWatch Evidently SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "Evidently",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "evidently",+      Core.signingName = "evidently",+      Core.version = "2021-02-01",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "Evidently",+      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++-- | You do not have sufficient permissions to perform this action.+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AccessDeniedException =+  Core._MatchServiceError+    defaultService+    "AccessDeniedException"+    Prelude.. Core.hasStatus 403++-- | A resource was in an inconsistent state during an update or a deletion.+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConflictException =+  Core._MatchServiceError+    defaultService+    "ConflictException"+    Prelude.. Core.hasStatus 409++-- | Unexpected error while processing the request. Retry the request.+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalServerException =+  Core._MatchServiceError+    defaultService+    "InternalServerException"+    Prelude.. Core.hasStatus 500++-- | The request references a resource that does not exist.+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceNotFoundException =+  Core._MatchServiceError+    defaultService+    "ResourceNotFoundException"+    Prelude.. Core.hasStatus 404++-- | The request would cause a service quota to be exceeded.+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceQuotaExceededException =+  Core._MatchServiceError+    defaultService+    "ServiceQuotaExceededException"+    Prelude.. Core.hasStatus 402++-- | The service was unavailable. Retry the request.+_ServiceUnavailableException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceUnavailableException =+  Core._MatchServiceError+    defaultService+    "ServiceUnavailableException"+    Prelude.. Core.hasStatus 503++-- | The request was denied because of request throttling. Retry the request.+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ThrottlingException =+  Core._MatchServiceError+    defaultService+    "ThrottlingException"+    Prelude.. Core.hasStatus 429++-- | The value of a parameter in the request caused an error.+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ValidationException =+  Core._MatchServiceError+    defaultService+    "ValidationException"+    Prelude.. Core.hasStatus 400
+ gen/Amazonka/Evidently/Types/ChangeDirectionEnum.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.ChangeDirectionEnum+-- 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.Evidently.Types.ChangeDirectionEnum+  ( ChangeDirectionEnum+      ( ..,+        ChangeDirectionEnum_DECREASE,+        ChangeDirectionEnum_INCREASE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ChangeDirectionEnum = ChangeDirectionEnum'+  { fromChangeDirectionEnum ::+      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 ChangeDirectionEnum_DECREASE :: ChangeDirectionEnum+pattern ChangeDirectionEnum_DECREASE = ChangeDirectionEnum' "DECREASE"++pattern ChangeDirectionEnum_INCREASE :: ChangeDirectionEnum+pattern ChangeDirectionEnum_INCREASE = ChangeDirectionEnum' "INCREASE"++{-# COMPLETE+  ChangeDirectionEnum_DECREASE,+  ChangeDirectionEnum_INCREASE,+  ChangeDirectionEnum'+  #-}
+ gen/Amazonka/Evidently/Types/CloudWatchLogsDestination.hs view
@@ -0,0 +1,73 @@+{-# 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.Evidently.Types.CloudWatchLogsDestination+-- 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.Evidently.Types.CloudWatchLogsDestination where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A structure containing the CloudWatch Logs log group where the project+-- stores evaluation events.+--+-- /See:/ 'newCloudWatchLogsDestination' smart constructor.+data CloudWatchLogsDestination = CloudWatchLogsDestination'+  { -- | The name of the log group where the project stores evaluation events.+    logGroup :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CloudWatchLogsDestination' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'logGroup', 'cloudWatchLogsDestination_logGroup' - The name of the log group where the project stores evaluation events.+newCloudWatchLogsDestination ::+  CloudWatchLogsDestination+newCloudWatchLogsDestination =+  CloudWatchLogsDestination'+    { logGroup =+        Prelude.Nothing+    }++-- | The name of the log group where the project stores evaluation events.+cloudWatchLogsDestination_logGroup :: Lens.Lens' CloudWatchLogsDestination (Prelude.Maybe Prelude.Text)+cloudWatchLogsDestination_logGroup = Lens.lens (\CloudWatchLogsDestination' {logGroup} -> logGroup) (\s@CloudWatchLogsDestination' {} a -> s {logGroup = a} :: CloudWatchLogsDestination)++instance Data.FromJSON CloudWatchLogsDestination where+  parseJSON =+    Data.withObject+      "CloudWatchLogsDestination"+      ( \x ->+          CloudWatchLogsDestination'+            Prelude.<$> (x Data..:? "logGroup")+      )++instance Prelude.Hashable CloudWatchLogsDestination where+  hashWithSalt _salt CloudWatchLogsDestination' {..} =+    _salt `Prelude.hashWithSalt` logGroup++instance Prelude.NFData CloudWatchLogsDestination where+  rnf CloudWatchLogsDestination' {..} =+    Prelude.rnf logGroup
+ gen/Amazonka/Evidently/Types/CloudWatchLogsDestinationConfig.hs view
@@ -0,0 +1,79 @@+{-# 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.Evidently.Types.CloudWatchLogsDestinationConfig+-- 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.Evidently.Types.CloudWatchLogsDestinationConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A structure containing the CloudWatch Logs log group where the project+-- stores evaluation events.+--+-- /See:/ 'newCloudWatchLogsDestinationConfig' smart constructor.+data CloudWatchLogsDestinationConfig = CloudWatchLogsDestinationConfig'+  { -- | The name of the log group where the project stores evaluation events.+    logGroup :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CloudWatchLogsDestinationConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'logGroup', 'cloudWatchLogsDestinationConfig_logGroup' - The name of the log group where the project stores evaluation events.+newCloudWatchLogsDestinationConfig ::+  CloudWatchLogsDestinationConfig+newCloudWatchLogsDestinationConfig =+  CloudWatchLogsDestinationConfig'+    { logGroup =+        Prelude.Nothing+    }++-- | The name of the log group where the project stores evaluation events.+cloudWatchLogsDestinationConfig_logGroup :: Lens.Lens' CloudWatchLogsDestinationConfig (Prelude.Maybe Prelude.Text)+cloudWatchLogsDestinationConfig_logGroup = Lens.lens (\CloudWatchLogsDestinationConfig' {logGroup} -> logGroup) (\s@CloudWatchLogsDestinationConfig' {} a -> s {logGroup = a} :: CloudWatchLogsDestinationConfig)++instance+  Prelude.Hashable+    CloudWatchLogsDestinationConfig+  where+  hashWithSalt+    _salt+    CloudWatchLogsDestinationConfig' {..} =+      _salt `Prelude.hashWithSalt` logGroup++instance+  Prelude.NFData+    CloudWatchLogsDestinationConfig+  where+  rnf CloudWatchLogsDestinationConfig' {..} =+    Prelude.rnf logGroup++instance Data.ToJSON CloudWatchLogsDestinationConfig where+  toJSON CloudWatchLogsDestinationConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [("logGroup" Data..=) Prelude.<$> logGroup]+      )
+ gen/Amazonka/Evidently/Types/EvaluationRequest.hs view
@@ -0,0 +1,113 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.EvaluationRequest+-- 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.Evidently.Types.EvaluationRequest where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | This structure assigns a feature variation to one user session.+--+-- /See:/ 'newEvaluationRequest' smart constructor.+data EvaluationRequest = EvaluationRequest'+  { -- | A JSON block of attributes that you can optionally pass in. This JSON+    -- block is included in the evaluation events sent to Evidently from the+    -- user session.+    evaluationContext :: Prelude.Maybe Prelude.Text,+    -- | An internal ID that represents a unique user session of the application.+    -- This @entityID@ is checked against any override rules assigned for this+    -- feature.+    entityId :: Prelude.Text,+    -- | The name of the feature being evaluated.+    feature :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EvaluationRequest' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'evaluationContext', 'evaluationRequest_evaluationContext' - A JSON block of attributes that you can optionally pass in. This JSON+-- block is included in the evaluation events sent to Evidently from the+-- user session.+--+-- 'entityId', 'evaluationRequest_entityId' - An internal ID that represents a unique user session of the application.+-- This @entityID@ is checked against any override rules assigned for this+-- feature.+--+-- 'feature', 'evaluationRequest_feature' - The name of the feature being evaluated.+newEvaluationRequest ::+  -- | 'entityId'+  Prelude.Text ->+  -- | 'feature'+  Prelude.Text ->+  EvaluationRequest+newEvaluationRequest pEntityId_ pFeature_ =+  EvaluationRequest'+    { evaluationContext =+        Prelude.Nothing,+      entityId = pEntityId_,+      feature = pFeature_+    }++-- | A JSON block of attributes that you can optionally pass in. This JSON+-- block is included in the evaluation events sent to Evidently from the+-- user session.+evaluationRequest_evaluationContext :: Lens.Lens' EvaluationRequest (Prelude.Maybe Prelude.Text)+evaluationRequest_evaluationContext = Lens.lens (\EvaluationRequest' {evaluationContext} -> evaluationContext) (\s@EvaluationRequest' {} a -> s {evaluationContext = a} :: EvaluationRequest)++-- | An internal ID that represents a unique user session of the application.+-- This @entityID@ is checked against any override rules assigned for this+-- feature.+evaluationRequest_entityId :: Lens.Lens' EvaluationRequest Prelude.Text+evaluationRequest_entityId = Lens.lens (\EvaluationRequest' {entityId} -> entityId) (\s@EvaluationRequest' {} a -> s {entityId = a} :: EvaluationRequest)++-- | The name of the feature being evaluated.+evaluationRequest_feature :: Lens.Lens' EvaluationRequest Prelude.Text+evaluationRequest_feature = Lens.lens (\EvaluationRequest' {feature} -> feature) (\s@EvaluationRequest' {} a -> s {feature = a} :: EvaluationRequest)++instance Prelude.Hashable EvaluationRequest where+  hashWithSalt _salt EvaluationRequest' {..} =+    _salt+      `Prelude.hashWithSalt` evaluationContext+      `Prelude.hashWithSalt` entityId+      `Prelude.hashWithSalt` feature++instance Prelude.NFData EvaluationRequest where+  rnf EvaluationRequest' {..} =+    Prelude.rnf evaluationContext+      `Prelude.seq` Prelude.rnf entityId+      `Prelude.seq` Prelude.rnf feature++instance Data.ToJSON EvaluationRequest where+  toJSON EvaluationRequest' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("evaluationContext" Data..=)+              Prelude.<$> evaluationContext,+            Prelude.Just ("entityId" Data..= entityId),+            Prelude.Just ("feature" Data..= feature)+          ]+      )
+ gen/Amazonka/Evidently/Types/EvaluationResult.hs view
@@ -0,0 +1,171 @@+{-# 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.Evidently.Types.EvaluationResult+-- 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.Evidently.Types.EvaluationResult where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.VariableValue+import qualified Amazonka.Prelude as Prelude++-- | This structure displays the results of one feature evaluation assignment+-- to one user session.+--+-- /See:/ 'newEvaluationResult' smart constructor.+data EvaluationResult = EvaluationResult'+  { -- | If this user was assigned to a launch or experiment, this field lists+    -- the launch or experiment name.+    details :: Prelude.Maybe Prelude.Text,+    -- | The name or ARN of the project that contains the feature being+    -- evaluated.+    project :: Prelude.Maybe Prelude.Text,+    -- | Specifies the reason that the user session was assigned this variation.+    -- Possible values include @DEFAULT@, meaning the user was served the+    -- default variation; @LAUNCH_RULE_MATCH@, if the user session was enrolled+    -- in a launch; or @EXPERIMENT_RULE_MATCH@, if the user session was+    -- enrolled in an experiment.+    reason :: Prelude.Maybe Prelude.Text,+    -- | The value assigned to this variation to differentiate it from the other+    -- variations of this feature.+    value :: Prelude.Maybe VariableValue,+    -- | The name of the variation that was served to the user session.+    variation :: Prelude.Maybe Prelude.Text,+    -- | An internal ID that represents a unique user session of the application.+    entityId :: Prelude.Text,+    -- | The name of the feature being evaluated.+    feature :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EvaluationResult' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'details', 'evaluationResult_details' - If this user was assigned to a launch or experiment, this field lists+-- the launch or experiment name.+--+-- 'project', 'evaluationResult_project' - The name or ARN of the project that contains the feature being+-- evaluated.+--+-- 'reason', 'evaluationResult_reason' - Specifies the reason that the user session was assigned this variation.+-- Possible values include @DEFAULT@, meaning the user was served the+-- default variation; @LAUNCH_RULE_MATCH@, if the user session was enrolled+-- in a launch; or @EXPERIMENT_RULE_MATCH@, if the user session was+-- enrolled in an experiment.+--+-- 'value', 'evaluationResult_value' - The value assigned to this variation to differentiate it from the other+-- variations of this feature.+--+-- 'variation', 'evaluationResult_variation' - The name of the variation that was served to the user session.+--+-- 'entityId', 'evaluationResult_entityId' - An internal ID that represents a unique user session of the application.+--+-- 'feature', 'evaluationResult_feature' - The name of the feature being evaluated.+newEvaluationResult ::+  -- | 'entityId'+  Prelude.Text ->+  -- | 'feature'+  Prelude.Text ->+  EvaluationResult+newEvaluationResult pEntityId_ pFeature_ =+  EvaluationResult'+    { details = Prelude.Nothing,+      project = Prelude.Nothing,+      reason = Prelude.Nothing,+      value = Prelude.Nothing,+      variation = Prelude.Nothing,+      entityId = pEntityId_,+      feature = pFeature_+    }++-- | If this user was assigned to a launch or experiment, this field lists+-- the launch or experiment name.+evaluationResult_details :: Lens.Lens' EvaluationResult (Prelude.Maybe Prelude.Text)+evaluationResult_details = Lens.lens (\EvaluationResult' {details} -> details) (\s@EvaluationResult' {} a -> s {details = a} :: EvaluationResult)++-- | The name or ARN of the project that contains the feature being+-- evaluated.+evaluationResult_project :: Lens.Lens' EvaluationResult (Prelude.Maybe Prelude.Text)+evaluationResult_project = Lens.lens (\EvaluationResult' {project} -> project) (\s@EvaluationResult' {} a -> s {project = a} :: EvaluationResult)++-- | Specifies the reason that the user session was assigned this variation.+-- Possible values include @DEFAULT@, meaning the user was served the+-- default variation; @LAUNCH_RULE_MATCH@, if the user session was enrolled+-- in a launch; or @EXPERIMENT_RULE_MATCH@, if the user session was+-- enrolled in an experiment.+evaluationResult_reason :: Lens.Lens' EvaluationResult (Prelude.Maybe Prelude.Text)+evaluationResult_reason = Lens.lens (\EvaluationResult' {reason} -> reason) (\s@EvaluationResult' {} a -> s {reason = a} :: EvaluationResult)++-- | The value assigned to this variation to differentiate it from the other+-- variations of this feature.+evaluationResult_value :: Lens.Lens' EvaluationResult (Prelude.Maybe VariableValue)+evaluationResult_value = Lens.lens (\EvaluationResult' {value} -> value) (\s@EvaluationResult' {} a -> s {value = a} :: EvaluationResult)++-- | The name of the variation that was served to the user session.+evaluationResult_variation :: Lens.Lens' EvaluationResult (Prelude.Maybe Prelude.Text)+evaluationResult_variation = Lens.lens (\EvaluationResult' {variation} -> variation) (\s@EvaluationResult' {} a -> s {variation = a} :: EvaluationResult)++-- | An internal ID that represents a unique user session of the application.+evaluationResult_entityId :: Lens.Lens' EvaluationResult Prelude.Text+evaluationResult_entityId = Lens.lens (\EvaluationResult' {entityId} -> entityId) (\s@EvaluationResult' {} a -> s {entityId = a} :: EvaluationResult)++-- | The name of the feature being evaluated.+evaluationResult_feature :: Lens.Lens' EvaluationResult Prelude.Text+evaluationResult_feature = Lens.lens (\EvaluationResult' {feature} -> feature) (\s@EvaluationResult' {} a -> s {feature = a} :: EvaluationResult)++instance Data.FromJSON EvaluationResult where+  parseJSON =+    Data.withObject+      "EvaluationResult"+      ( \x ->+          EvaluationResult'+            Prelude.<$> (x Data..:? "details")+            Prelude.<*> (x Data..:? "project")+            Prelude.<*> (x Data..:? "reason")+            Prelude.<*> (x Data..:? "value")+            Prelude.<*> (x Data..:? "variation")+            Prelude.<*> (x Data..: "entityId")+            Prelude.<*> (x Data..: "feature")+      )++instance Prelude.Hashable EvaluationResult where+  hashWithSalt _salt EvaluationResult' {..} =+    _salt+      `Prelude.hashWithSalt` details+      `Prelude.hashWithSalt` project+      `Prelude.hashWithSalt` reason+      `Prelude.hashWithSalt` value+      `Prelude.hashWithSalt` variation+      `Prelude.hashWithSalt` entityId+      `Prelude.hashWithSalt` feature++instance Prelude.NFData EvaluationResult where+  rnf EvaluationResult' {..} =+    Prelude.rnf details+      `Prelude.seq` Prelude.rnf project+      `Prelude.seq` Prelude.rnf reason+      `Prelude.seq` Prelude.rnf value+      `Prelude.seq` Prelude.rnf variation+      `Prelude.seq` Prelude.rnf entityId+      `Prelude.seq` Prelude.rnf feature
+ gen/Amazonka/Evidently/Types/EvaluationRule.hs view
@@ -0,0 +1,92 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.EvaluationRule+-- 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.Evidently.Types.EvaluationRule where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A structure that contains the information about an evaluation rule for+-- this feature, if it is used in a launch or experiment.+--+-- /See:/ 'newEvaluationRule' smart constructor.+data EvaluationRule = EvaluationRule'+  { -- | The name of the experiment or launch.+    name :: Prelude.Maybe Prelude.Text,+    -- | This value is @aws.evidently.splits@ if this is an evaluation rule for a+    -- launch, and it is @aws.evidently.onlineab@ if this is an evaluation rule+    -- for an experiment.+    type' :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EvaluationRule' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'evaluationRule_name' - The name of the experiment or launch.+--+-- 'type'', 'evaluationRule_type' - This value is @aws.evidently.splits@ if this is an evaluation rule for a+-- launch, and it is @aws.evidently.onlineab@ if this is an evaluation rule+-- for an experiment.+newEvaluationRule ::+  -- | 'type''+  Prelude.Text ->+  EvaluationRule+newEvaluationRule pType_ =+  EvaluationRule'+    { name = Prelude.Nothing,+      type' = pType_+    }++-- | The name of the experiment or launch.+evaluationRule_name :: Lens.Lens' EvaluationRule (Prelude.Maybe Prelude.Text)+evaluationRule_name = Lens.lens (\EvaluationRule' {name} -> name) (\s@EvaluationRule' {} a -> s {name = a} :: EvaluationRule)++-- | This value is @aws.evidently.splits@ if this is an evaluation rule for a+-- launch, and it is @aws.evidently.onlineab@ if this is an evaluation rule+-- for an experiment.+evaluationRule_type :: Lens.Lens' EvaluationRule Prelude.Text+evaluationRule_type = Lens.lens (\EvaluationRule' {type'} -> type') (\s@EvaluationRule' {} a -> s {type' = a} :: EvaluationRule)++instance Data.FromJSON EvaluationRule where+  parseJSON =+    Data.withObject+      "EvaluationRule"+      ( \x ->+          EvaluationRule'+            Prelude.<$> (x Data..:? "name")+            Prelude.<*> (x Data..: "type")+      )++instance Prelude.Hashable EvaluationRule where+  hashWithSalt _salt EvaluationRule' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` type'++instance Prelude.NFData EvaluationRule where+  rnf EvaluationRule' {..} =+    Prelude.rnf name `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/Evidently/Types/Event.hs view
@@ -0,0 +1,114 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.Event+-- 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.Evidently.Types.Event where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.EventType+import qualified Amazonka.Prelude as Prelude++-- | A structure that contains the information about one evaluation event or+-- custom event sent to Evidently. This is a JSON payload. If this event+-- specifies a pre-defined event type, the payload must follow the defined+-- event schema.+--+-- /See:/ 'newEvent' smart constructor.+data Event = Event'+  { -- | The event data.+    data' :: Prelude.Text,+    -- | The timestamp of the event.+    timestamp :: Data.POSIX,+    -- | @aws.evidently.evaluation@ specifies an evaluation event, which+    -- determines which feature variation that a user sees.+    -- @aws.evidently.custom@ specifies a custom event, which generates metrics+    -- from user actions such as clicks and checkouts.+    type' :: EventType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Event' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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'', 'event_data' - The event data.+--+-- 'timestamp', 'event_timestamp' - The timestamp of the event.+--+-- 'type'', 'event_type' - @aws.evidently.evaluation@ specifies an evaluation event, which+-- determines which feature variation that a user sees.+-- @aws.evidently.custom@ specifies a custom event, which generates metrics+-- from user actions such as clicks and checkouts.+newEvent ::+  -- | 'data''+  Prelude.Text ->+  -- | 'timestamp'+  Prelude.UTCTime ->+  -- | 'type''+  EventType ->+  Event+newEvent pData_ pTimestamp_ pType_ =+  Event'+    { data' = pData_,+      timestamp = Data._Time Lens.# pTimestamp_,+      type' = pType_+    }++-- | The event data.+event_data :: Lens.Lens' Event Prelude.Text+event_data = Lens.lens (\Event' {data'} -> data') (\s@Event' {} a -> s {data' = a} :: Event)++-- | The timestamp of the event.+event_timestamp :: Lens.Lens' Event Prelude.UTCTime+event_timestamp = Lens.lens (\Event' {timestamp} -> timestamp) (\s@Event' {} a -> s {timestamp = a} :: Event) Prelude.. Data._Time++-- | @aws.evidently.evaluation@ specifies an evaluation event, which+-- determines which feature variation that a user sees.+-- @aws.evidently.custom@ specifies a custom event, which generates metrics+-- from user actions such as clicks and checkouts.+event_type :: Lens.Lens' Event EventType+event_type = Lens.lens (\Event' {type'} -> type') (\s@Event' {} a -> s {type' = a} :: Event)++instance Prelude.Hashable Event where+  hashWithSalt _salt Event' {..} =+    _salt+      `Prelude.hashWithSalt` data'+      `Prelude.hashWithSalt` timestamp+      `Prelude.hashWithSalt` type'++instance Prelude.NFData Event where+  rnf Event' {..} =+    Prelude.rnf data'+      `Prelude.seq` Prelude.rnf timestamp+      `Prelude.seq` Prelude.rnf type'++instance Data.ToJSON Event where+  toJSON Event' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("data" Data..= data'),+            Prelude.Just ("timestamp" Data..= timestamp),+            Prelude.Just ("type" Data..= type')+          ]+      )
+ gen/Amazonka/Evidently/Types/EventType.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.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.Evidently.Types.EventType+  ( EventType+      ( ..,+        EventType_Aws_evidently_custom,+        EventType_Aws_evidently_evaluation+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype EventType = EventType'+  { fromEventType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern EventType_Aws_evidently_custom :: EventType+pattern EventType_Aws_evidently_custom = EventType' "aws.evidently.custom"++pattern EventType_Aws_evidently_evaluation :: EventType+pattern EventType_Aws_evidently_evaluation = EventType' "aws.evidently.evaluation"++{-# COMPLETE+  EventType_Aws_evidently_custom,+  EventType_Aws_evidently_evaluation,+  EventType'+  #-}
+ gen/Amazonka/Evidently/Types/Experiment.hs view
@@ -0,0 +1,359 @@+{-# 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.Evidently.Types.Experiment+-- 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.Evidently.Types.Experiment where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.ExperimentExecution+import Amazonka.Evidently.Types.ExperimentSchedule+import Amazonka.Evidently.Types.ExperimentStatus+import Amazonka.Evidently.Types.ExperimentType+import Amazonka.Evidently.Types.MetricGoal+import Amazonka.Evidently.Types.OnlineAbDefinition+import Amazonka.Evidently.Types.Treatment+import qualified Amazonka.Prelude as Prelude++-- | A structure containing the configuration details of an experiment.+--+-- /See:/ 'newExperiment' smart constructor.+data Experiment = Experiment'+  { -- | A description of the experiment.+    description :: Prelude.Maybe Prelude.Text,+    -- | A structure that contains the date and time that the experiment started+    -- and ended.+    execution :: Prelude.Maybe ExperimentExecution,+    -- | An array of structures that defines the metrics used for the experiment,+    -- and whether a higher or lower value for each metric is the goal.+    metricGoals :: Prelude.Maybe (Prelude.NonEmpty MetricGoal),+    -- | A structure that contains the configuration of which variation to use as+    -- the \"control\" version. The \"control\" version is used for comparison+    -- with other variations. This structure also specifies how much experiment+    -- traffic is allocated to each variation.+    onlineAbDefinition :: Prelude.Maybe OnlineAbDefinition,+    -- | The name or ARN of the project that contains this experiment.+    project :: Prelude.Maybe Prelude.Text,+    -- | This value is used when Evidently assigns a particular user session to+    -- the experiment. It helps create a randomization ID to determine which+    -- variation the user session is served. This randomization ID is a+    -- combination of the entity ID and @randomizationSalt@.+    randomizationSalt :: Prelude.Maybe Prelude.Text,+    -- | In thousandths of a percent, the amount of the available audience that+    -- is allocated to this experiment. The available audience is the total+    -- audience minus the audience that you have allocated to overrides or+    -- current launches of this feature.+    --+    -- This is represented in thousandths of a percent, so a value of 10,000 is+    -- 10% of the available audience.+    samplingRate :: Prelude.Maybe Prelude.Natural,+    -- | A structure that contains the time and date that Evidently completed the+    -- analysis of the experiment.+    schedule :: Prelude.Maybe ExperimentSchedule,+    -- | The audience segment being used for the experiment, if a segment is+    -- being used.+    segment :: Prelude.Maybe Prelude.Text,+    -- | If the experiment was stopped, this is the string that was entered by+    -- the person who stopped the experiment, to explain why it was stopped.+    statusReason :: Prelude.Maybe Prelude.Text,+    -- | The list of tag keys and values associated with this experiment.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | An array of structures that describe the configuration of each feature+    -- variation used in the experiment.+    treatments :: Prelude.Maybe (Prelude.NonEmpty Treatment),+    -- | The ARN of the experiment.+    arn :: Prelude.Text,+    -- | The date and time that the experiment is first created.+    createdTime :: Data.POSIX,+    -- | The date and time that the experiment was most recently updated.+    lastUpdatedTime :: Data.POSIX,+    -- | The name of the experiment.+    name :: Prelude.Text,+    -- | The current state of the experiment.+    status :: ExperimentStatus,+    -- | The type of this experiment. Currently, this value must be+    -- @aws.experiment.onlineab@.+    type' :: ExperimentType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Experiment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'experiment_description' - A description of the experiment.+--+-- 'execution', 'experiment_execution' - A structure that contains the date and time that the experiment started+-- and ended.+--+-- 'metricGoals', 'experiment_metricGoals' - An array of structures that defines the metrics used for the experiment,+-- and whether a higher or lower value for each metric is the goal.+--+-- 'onlineAbDefinition', 'experiment_onlineAbDefinition' - A structure that contains the configuration of which variation to use as+-- the \"control\" version. The \"control\" version is used for comparison+-- with other variations. This structure also specifies how much experiment+-- traffic is allocated to each variation.+--+-- 'project', 'experiment_project' - The name or ARN of the project that contains this experiment.+--+-- 'randomizationSalt', 'experiment_randomizationSalt' - This value is used when Evidently assigns a particular user session to+-- the experiment. It helps create a randomization ID to determine which+-- variation the user session is served. This randomization ID is a+-- combination of the entity ID and @randomizationSalt@.+--+-- 'samplingRate', 'experiment_samplingRate' - In thousandths of a percent, the amount of the available audience that+-- is allocated to this experiment. The available audience is the total+-- audience minus the audience that you have allocated to overrides or+-- current launches of this feature.+--+-- This is represented in thousandths of a percent, so a value of 10,000 is+-- 10% of the available audience.+--+-- 'schedule', 'experiment_schedule' - A structure that contains the time and date that Evidently completed the+-- analysis of the experiment.+--+-- 'segment', 'experiment_segment' - The audience segment being used for the experiment, if a segment is+-- being used.+--+-- 'statusReason', 'experiment_statusReason' - If the experiment was stopped, this is the string that was entered by+-- the person who stopped the experiment, to explain why it was stopped.+--+-- 'tags', 'experiment_tags' - The list of tag keys and values associated with this experiment.+--+-- 'treatments', 'experiment_treatments' - An array of structures that describe the configuration of each feature+-- variation used in the experiment.+--+-- 'arn', 'experiment_arn' - The ARN of the experiment.+--+-- 'createdTime', 'experiment_createdTime' - The date and time that the experiment is first created.+--+-- 'lastUpdatedTime', 'experiment_lastUpdatedTime' - The date and time that the experiment was most recently updated.+--+-- 'name', 'experiment_name' - The name of the experiment.+--+-- 'status', 'experiment_status' - The current state of the experiment.+--+-- 'type'', 'experiment_type' - The type of this experiment. Currently, this value must be+-- @aws.experiment.onlineab@.+newExperiment ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdTime'+  Prelude.UTCTime ->+  -- | 'lastUpdatedTime'+  Prelude.UTCTime ->+  -- | 'name'+  Prelude.Text ->+  -- | 'status'+  ExperimentStatus ->+  -- | 'type''+  ExperimentType ->+  Experiment+newExperiment+  pArn_+  pCreatedTime_+  pLastUpdatedTime_+  pName_+  pStatus_+  pType_ =+    Experiment'+      { description = Prelude.Nothing,+        execution = Prelude.Nothing,+        metricGoals = Prelude.Nothing,+        onlineAbDefinition = Prelude.Nothing,+        project = Prelude.Nothing,+        randomizationSalt = Prelude.Nothing,+        samplingRate = Prelude.Nothing,+        schedule = Prelude.Nothing,+        segment = Prelude.Nothing,+        statusReason = Prelude.Nothing,+        tags = Prelude.Nothing,+        treatments = Prelude.Nothing,+        arn = pArn_,+        createdTime = Data._Time Lens.# pCreatedTime_,+        lastUpdatedTime =+          Data._Time Lens.# pLastUpdatedTime_,+        name = pName_,+        status = pStatus_,+        type' = pType_+      }++-- | A description of the experiment.+experiment_description :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)+experiment_description = Lens.lens (\Experiment' {description} -> description) (\s@Experiment' {} a -> s {description = a} :: Experiment)++-- | A structure that contains the date and time that the experiment started+-- and ended.+experiment_execution :: Lens.Lens' Experiment (Prelude.Maybe ExperimentExecution)+experiment_execution = Lens.lens (\Experiment' {execution} -> execution) (\s@Experiment' {} a -> s {execution = a} :: Experiment)++-- | An array of structures that defines the metrics used for the experiment,+-- and whether a higher or lower value for each metric is the goal.+experiment_metricGoals :: Lens.Lens' Experiment (Prelude.Maybe (Prelude.NonEmpty MetricGoal))+experiment_metricGoals = Lens.lens (\Experiment' {metricGoals} -> metricGoals) (\s@Experiment' {} a -> s {metricGoals = a} :: Experiment) Prelude.. Lens.mapping Lens.coerced++-- | A structure that contains the configuration of which variation to use as+-- the \"control\" version. The \"control\" version is used for comparison+-- with other variations. This structure also specifies how much experiment+-- traffic is allocated to each variation.+experiment_onlineAbDefinition :: Lens.Lens' Experiment (Prelude.Maybe OnlineAbDefinition)+experiment_onlineAbDefinition = Lens.lens (\Experiment' {onlineAbDefinition} -> onlineAbDefinition) (\s@Experiment' {} a -> s {onlineAbDefinition = a} :: Experiment)++-- | The name or ARN of the project that contains this experiment.+experiment_project :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)+experiment_project = Lens.lens (\Experiment' {project} -> project) (\s@Experiment' {} a -> s {project = a} :: Experiment)++-- | This value is used when Evidently assigns a particular user session to+-- the experiment. It helps create a randomization ID to determine which+-- variation the user session is served. This randomization ID is a+-- combination of the entity ID and @randomizationSalt@.+experiment_randomizationSalt :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)+experiment_randomizationSalt = Lens.lens (\Experiment' {randomizationSalt} -> randomizationSalt) (\s@Experiment' {} a -> s {randomizationSalt = a} :: Experiment)++-- | In thousandths of a percent, the amount of the available audience that+-- is allocated to this experiment. The available audience is the total+-- audience minus the audience that you have allocated to overrides or+-- current launches of this feature.+--+-- This is represented in thousandths of a percent, so a value of 10,000 is+-- 10% of the available audience.+experiment_samplingRate :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Natural)+experiment_samplingRate = Lens.lens (\Experiment' {samplingRate} -> samplingRate) (\s@Experiment' {} a -> s {samplingRate = a} :: Experiment)++-- | A structure that contains the time and date that Evidently completed the+-- analysis of the experiment.+experiment_schedule :: Lens.Lens' Experiment (Prelude.Maybe ExperimentSchedule)+experiment_schedule = Lens.lens (\Experiment' {schedule} -> schedule) (\s@Experiment' {} a -> s {schedule = a} :: Experiment)++-- | The audience segment being used for the experiment, if a segment is+-- being used.+experiment_segment :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)+experiment_segment = Lens.lens (\Experiment' {segment} -> segment) (\s@Experiment' {} a -> s {segment = a} :: Experiment)++-- | If the experiment was stopped, this is the string that was entered by+-- the person who stopped the experiment, to explain why it was stopped.+experiment_statusReason :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)+experiment_statusReason = Lens.lens (\Experiment' {statusReason} -> statusReason) (\s@Experiment' {} a -> s {statusReason = a} :: Experiment)++-- | The list of tag keys and values associated with this experiment.+experiment_tags :: Lens.Lens' Experiment (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+experiment_tags = Lens.lens (\Experiment' {tags} -> tags) (\s@Experiment' {} a -> s {tags = a} :: Experiment) Prelude.. Lens.mapping Lens.coerced++-- | An array of structures that describe the configuration of each feature+-- variation used in the experiment.+experiment_treatments :: Lens.Lens' Experiment (Prelude.Maybe (Prelude.NonEmpty Treatment))+experiment_treatments = Lens.lens (\Experiment' {treatments} -> treatments) (\s@Experiment' {} a -> s {treatments = a} :: Experiment) Prelude.. Lens.mapping Lens.coerced++-- | The ARN of the experiment.+experiment_arn :: Lens.Lens' Experiment Prelude.Text+experiment_arn = Lens.lens (\Experiment' {arn} -> arn) (\s@Experiment' {} a -> s {arn = a} :: Experiment)++-- | The date and time that the experiment is first created.+experiment_createdTime :: Lens.Lens' Experiment Prelude.UTCTime+experiment_createdTime = Lens.lens (\Experiment' {createdTime} -> createdTime) (\s@Experiment' {} a -> s {createdTime = a} :: Experiment) Prelude.. Data._Time++-- | The date and time that the experiment was most recently updated.+experiment_lastUpdatedTime :: Lens.Lens' Experiment Prelude.UTCTime+experiment_lastUpdatedTime = Lens.lens (\Experiment' {lastUpdatedTime} -> lastUpdatedTime) (\s@Experiment' {} a -> s {lastUpdatedTime = a} :: Experiment) Prelude.. Data._Time++-- | The name of the experiment.+experiment_name :: Lens.Lens' Experiment Prelude.Text+experiment_name = Lens.lens (\Experiment' {name} -> name) (\s@Experiment' {} a -> s {name = a} :: Experiment)++-- | The current state of the experiment.+experiment_status :: Lens.Lens' Experiment ExperimentStatus+experiment_status = Lens.lens (\Experiment' {status} -> status) (\s@Experiment' {} a -> s {status = a} :: Experiment)++-- | The type of this experiment. Currently, this value must be+-- @aws.experiment.onlineab@.+experiment_type :: Lens.Lens' Experiment ExperimentType+experiment_type = Lens.lens (\Experiment' {type'} -> type') (\s@Experiment' {} a -> s {type' = a} :: Experiment)++instance Data.FromJSON Experiment where+  parseJSON =+    Data.withObject+      "Experiment"+      ( \x ->+          Experiment'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> (x Data..:? "execution")+            Prelude.<*> (x Data..:? "metricGoals")+            Prelude.<*> (x Data..:? "onlineAbDefinition")+            Prelude.<*> (x Data..:? "project")+            Prelude.<*> (x Data..:? "randomizationSalt")+            Prelude.<*> (x Data..:? "samplingRate")+            Prelude.<*> (x Data..:? "schedule")+            Prelude.<*> (x Data..:? "segment")+            Prelude.<*> (x Data..:? "statusReason")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "treatments")+            Prelude.<*> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdTime")+            Prelude.<*> (x Data..: "lastUpdatedTime")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "status")+            Prelude.<*> (x Data..: "type")+      )++instance Prelude.Hashable Experiment where+  hashWithSalt _salt Experiment' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` execution+      `Prelude.hashWithSalt` metricGoals+      `Prelude.hashWithSalt` onlineAbDefinition+      `Prelude.hashWithSalt` project+      `Prelude.hashWithSalt` randomizationSalt+      `Prelude.hashWithSalt` samplingRate+      `Prelude.hashWithSalt` schedule+      `Prelude.hashWithSalt` segment+      `Prelude.hashWithSalt` statusReason+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` treatments+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdTime+      `Prelude.hashWithSalt` lastUpdatedTime+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` type'++instance Prelude.NFData Experiment where+  rnf Experiment' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf execution+      `Prelude.seq` Prelude.rnf metricGoals+      `Prelude.seq` Prelude.rnf onlineAbDefinition+      `Prelude.seq` Prelude.rnf project+      `Prelude.seq` Prelude.rnf randomizationSalt+      `Prelude.seq` Prelude.rnf samplingRate+      `Prelude.seq` Prelude.rnf schedule+      `Prelude.seq` Prelude.rnf segment+      `Prelude.seq` Prelude.rnf statusReason+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf treatments+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdTime+      `Prelude.seq` Prelude.rnf lastUpdatedTime+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/Evidently/Types/ExperimentBaseStat.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.ExperimentBaseStat+-- 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.Evidently.Types.ExperimentBaseStat+  ( ExperimentBaseStat+      ( ..,+        ExperimentBaseStat_Mean+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ExperimentBaseStat = ExperimentBaseStat'+  { fromExperimentBaseStat ::+      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 ExperimentBaseStat_Mean :: ExperimentBaseStat+pattern ExperimentBaseStat_Mean = ExperimentBaseStat' "Mean"++{-# COMPLETE+  ExperimentBaseStat_Mean,+  ExperimentBaseStat'+  #-}
+ gen/Amazonka/Evidently/Types/ExperimentExecution.hs view
@@ -0,0 +1,85 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.ExperimentExecution+-- 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.Evidently.Types.ExperimentExecution where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | This structure contains the date and time that the experiment started+-- and ended.+--+-- /See:/ 'newExperimentExecution' smart constructor.+data ExperimentExecution = ExperimentExecution'+  { -- | The date and time that the experiment ended.+    endedTime :: Prelude.Maybe Data.POSIX,+    -- | The date and time that the experiment started.+    startedTime :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentExecution' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endedTime', 'experimentExecution_endedTime' - The date and time that the experiment ended.+--+-- 'startedTime', 'experimentExecution_startedTime' - The date and time that the experiment started.+newExperimentExecution ::+  ExperimentExecution+newExperimentExecution =+  ExperimentExecution'+    { endedTime = Prelude.Nothing,+      startedTime = Prelude.Nothing+    }++-- | The date and time that the experiment ended.+experimentExecution_endedTime :: Lens.Lens' ExperimentExecution (Prelude.Maybe Prelude.UTCTime)+experimentExecution_endedTime = Lens.lens (\ExperimentExecution' {endedTime} -> endedTime) (\s@ExperimentExecution' {} a -> s {endedTime = a} :: ExperimentExecution) Prelude.. Lens.mapping Data._Time++-- | The date and time that the experiment started.+experimentExecution_startedTime :: Lens.Lens' ExperimentExecution (Prelude.Maybe Prelude.UTCTime)+experimentExecution_startedTime = Lens.lens (\ExperimentExecution' {startedTime} -> startedTime) (\s@ExperimentExecution' {} a -> s {startedTime = a} :: ExperimentExecution) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON ExperimentExecution where+  parseJSON =+    Data.withObject+      "ExperimentExecution"+      ( \x ->+          ExperimentExecution'+            Prelude.<$> (x Data..:? "endedTime")+            Prelude.<*> (x Data..:? "startedTime")+      )++instance Prelude.Hashable ExperimentExecution where+  hashWithSalt _salt ExperimentExecution' {..} =+    _salt+      `Prelude.hashWithSalt` endedTime+      `Prelude.hashWithSalt` startedTime++instance Prelude.NFData ExperimentExecution where+  rnf ExperimentExecution' {..} =+    Prelude.rnf endedTime+      `Prelude.seq` Prelude.rnf startedTime
+ gen/Amazonka/Evidently/Types/ExperimentReport.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.Evidently.Types.ExperimentReport+-- 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.Evidently.Types.ExperimentReport where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.ExperimentReportName+import qualified Amazonka.Prelude as Prelude++-- | A structure that contains results of an experiment.+--+-- /See:/ 'newExperimentReport' smart constructor.+data ExperimentReport = ExperimentReport'+  { -- | The content of the report.+    content :: Prelude.Maybe Prelude.Text,+    -- | The name of the metric that is analyzed in this experiment report.+    metricName :: Prelude.Maybe Prelude.Text,+    -- | The type of analysis used for this report.+    reportName :: Prelude.Maybe ExperimentReportName,+    -- | The name of the variation that this report pertains to.+    treatmentName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentReport' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'content', 'experimentReport_content' - The content of the report.+--+-- 'metricName', 'experimentReport_metricName' - The name of the metric that is analyzed in this experiment report.+--+-- 'reportName', 'experimentReport_reportName' - The type of analysis used for this report.+--+-- 'treatmentName', 'experimentReport_treatmentName' - The name of the variation that this report pertains to.+newExperimentReport ::+  ExperimentReport+newExperimentReport =+  ExperimentReport'+    { content = Prelude.Nothing,+      metricName = Prelude.Nothing,+      reportName = Prelude.Nothing,+      treatmentName = Prelude.Nothing+    }++-- | The content of the report.+experimentReport_content :: Lens.Lens' ExperimentReport (Prelude.Maybe Prelude.Text)+experimentReport_content = Lens.lens (\ExperimentReport' {content} -> content) (\s@ExperimentReport' {} a -> s {content = a} :: ExperimentReport)++-- | The name of the metric that is analyzed in this experiment report.+experimentReport_metricName :: Lens.Lens' ExperimentReport (Prelude.Maybe Prelude.Text)+experimentReport_metricName = Lens.lens (\ExperimentReport' {metricName} -> metricName) (\s@ExperimentReport' {} a -> s {metricName = a} :: ExperimentReport)++-- | The type of analysis used for this report.+experimentReport_reportName :: Lens.Lens' ExperimentReport (Prelude.Maybe ExperimentReportName)+experimentReport_reportName = Lens.lens (\ExperimentReport' {reportName} -> reportName) (\s@ExperimentReport' {} a -> s {reportName = a} :: ExperimentReport)++-- | The name of the variation that this report pertains to.+experimentReport_treatmentName :: Lens.Lens' ExperimentReport (Prelude.Maybe Prelude.Text)+experimentReport_treatmentName = Lens.lens (\ExperimentReport' {treatmentName} -> treatmentName) (\s@ExperimentReport' {} a -> s {treatmentName = a} :: ExperimentReport)++instance Data.FromJSON ExperimentReport where+  parseJSON =+    Data.withObject+      "ExperimentReport"+      ( \x ->+          ExperimentReport'+            Prelude.<$> (x Data..:? "content")+            Prelude.<*> (x Data..:? "metricName")+            Prelude.<*> (x Data..:? "reportName")+            Prelude.<*> (x Data..:? "treatmentName")+      )++instance Prelude.Hashable ExperimentReport where+  hashWithSalt _salt ExperimentReport' {..} =+    _salt+      `Prelude.hashWithSalt` content+      `Prelude.hashWithSalt` metricName+      `Prelude.hashWithSalt` reportName+      `Prelude.hashWithSalt` treatmentName++instance Prelude.NFData ExperimentReport where+  rnf ExperimentReport' {..} =+    Prelude.rnf content+      `Prelude.seq` Prelude.rnf metricName+      `Prelude.seq` Prelude.rnf reportName+      `Prelude.seq` Prelude.rnf treatmentName
+ gen/Amazonka/Evidently/Types/ExperimentReportName.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.ExperimentReportName+-- 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.Evidently.Types.ExperimentReportName+  ( ExperimentReportName+      ( ..,+        ExperimentReportName_BayesianInference+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ExperimentReportName = ExperimentReportName'+  { fromExperimentReportName ::+      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 ExperimentReportName_BayesianInference :: ExperimentReportName+pattern ExperimentReportName_BayesianInference = ExperimentReportName' "BayesianInference"++{-# COMPLETE+  ExperimentReportName_BayesianInference,+  ExperimentReportName'+  #-}
+ gen/Amazonka/Evidently/Types/ExperimentResultRequestType.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.Evidently.Types.ExperimentResultRequestType+-- 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.Evidently.Types.ExperimentResultRequestType+  ( ExperimentResultRequestType+      ( ..,+        ExperimentResultRequestType_BaseStat,+        ExperimentResultRequestType_ConfidenceInterval,+        ExperimentResultRequestType_PValue,+        ExperimentResultRequestType_TreatmentEffect+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ExperimentResultRequestType = ExperimentResultRequestType'+  { fromExperimentResultRequestType ::+      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 ExperimentResultRequestType_BaseStat :: ExperimentResultRequestType+pattern ExperimentResultRequestType_BaseStat = ExperimentResultRequestType' "BaseStat"++pattern ExperimentResultRequestType_ConfidenceInterval :: ExperimentResultRequestType+pattern ExperimentResultRequestType_ConfidenceInterval = ExperimentResultRequestType' "ConfidenceInterval"++pattern ExperimentResultRequestType_PValue :: ExperimentResultRequestType+pattern ExperimentResultRequestType_PValue = ExperimentResultRequestType' "PValue"++pattern ExperimentResultRequestType_TreatmentEffect :: ExperimentResultRequestType+pattern ExperimentResultRequestType_TreatmentEffect = ExperimentResultRequestType' "TreatmentEffect"++{-# COMPLETE+  ExperimentResultRequestType_BaseStat,+  ExperimentResultRequestType_ConfidenceInterval,+  ExperimentResultRequestType_PValue,+  ExperimentResultRequestType_TreatmentEffect,+  ExperimentResultRequestType'+  #-}
+ gen/Amazonka/Evidently/Types/ExperimentResultResponseType.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.ExperimentResultResponseType+-- 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.Evidently.Types.ExperimentResultResponseType+  ( ExperimentResultResponseType+      ( ..,+        ExperimentResultResponseType_ConfidenceIntervalLowerBound,+        ExperimentResultResponseType_ConfidenceIntervalUpperBound,+        ExperimentResultResponseType_Mean,+        ExperimentResultResponseType_PValue,+        ExperimentResultResponseType_TreatmentEffect+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ExperimentResultResponseType = ExperimentResultResponseType'+  { fromExperimentResultResponseType ::+      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 ExperimentResultResponseType_ConfidenceIntervalLowerBound :: ExperimentResultResponseType+pattern ExperimentResultResponseType_ConfidenceIntervalLowerBound = ExperimentResultResponseType' "ConfidenceIntervalLowerBound"++pattern ExperimentResultResponseType_ConfidenceIntervalUpperBound :: ExperimentResultResponseType+pattern ExperimentResultResponseType_ConfidenceIntervalUpperBound = ExperimentResultResponseType' "ConfidenceIntervalUpperBound"++pattern ExperimentResultResponseType_Mean :: ExperimentResultResponseType+pattern ExperimentResultResponseType_Mean = ExperimentResultResponseType' "Mean"++pattern ExperimentResultResponseType_PValue :: ExperimentResultResponseType+pattern ExperimentResultResponseType_PValue = ExperimentResultResponseType' "PValue"++pattern ExperimentResultResponseType_TreatmentEffect :: ExperimentResultResponseType+pattern ExperimentResultResponseType_TreatmentEffect = ExperimentResultResponseType' "TreatmentEffect"++{-# COMPLETE+  ExperimentResultResponseType_ConfidenceIntervalLowerBound,+  ExperimentResultResponseType_ConfidenceIntervalUpperBound,+  ExperimentResultResponseType_Mean,+  ExperimentResultResponseType_PValue,+  ExperimentResultResponseType_TreatmentEffect,+  ExperimentResultResponseType'+  #-}
+ gen/Amazonka/Evidently/Types/ExperimentResultsData.hs view
@@ -0,0 +1,114 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.ExperimentResultsData+-- 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.Evidently.Types.ExperimentResultsData where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.ExperimentResultResponseType+import qualified Amazonka.Prelude as Prelude++-- | A structure that contains experiment results for one metric that is+-- monitored in the experiment.+--+-- /See:/ 'newExperimentResultsData' smart constructor.+data ExperimentResultsData = ExperimentResultsData'+  { -- | The name of the metric.+    metricName :: Prelude.Maybe Prelude.Text,+    -- | The experiment statistic that these results pertain to.+    resultStat :: Prelude.Maybe ExperimentResultResponseType,+    -- | The treatment, or variation, that returned the @values@ in this+    -- structure.+    treatmentName :: Prelude.Maybe Prelude.Text,+    -- | The values for the @metricName@ that were recorded in the experiment.+    values :: Prelude.Maybe [Prelude.Double]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentResultsData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'metricName', 'experimentResultsData_metricName' - The name of the metric.+--+-- 'resultStat', 'experimentResultsData_resultStat' - The experiment statistic that these results pertain to.+--+-- 'treatmentName', 'experimentResultsData_treatmentName' - The treatment, or variation, that returned the @values@ in this+-- structure.+--+-- 'values', 'experimentResultsData_values' - The values for the @metricName@ that were recorded in the experiment.+newExperimentResultsData ::+  ExperimentResultsData+newExperimentResultsData =+  ExperimentResultsData'+    { metricName =+        Prelude.Nothing,+      resultStat = Prelude.Nothing,+      treatmentName = Prelude.Nothing,+      values = Prelude.Nothing+    }++-- | The name of the metric.+experimentResultsData_metricName :: Lens.Lens' ExperimentResultsData (Prelude.Maybe Prelude.Text)+experimentResultsData_metricName = Lens.lens (\ExperimentResultsData' {metricName} -> metricName) (\s@ExperimentResultsData' {} a -> s {metricName = a} :: ExperimentResultsData)++-- | The experiment statistic that these results pertain to.+experimentResultsData_resultStat :: Lens.Lens' ExperimentResultsData (Prelude.Maybe ExperimentResultResponseType)+experimentResultsData_resultStat = Lens.lens (\ExperimentResultsData' {resultStat} -> resultStat) (\s@ExperimentResultsData' {} a -> s {resultStat = a} :: ExperimentResultsData)++-- | The treatment, or variation, that returned the @values@ in this+-- structure.+experimentResultsData_treatmentName :: Lens.Lens' ExperimentResultsData (Prelude.Maybe Prelude.Text)+experimentResultsData_treatmentName = Lens.lens (\ExperimentResultsData' {treatmentName} -> treatmentName) (\s@ExperimentResultsData' {} a -> s {treatmentName = a} :: ExperimentResultsData)++-- | The values for the @metricName@ that were recorded in the experiment.+experimentResultsData_values :: Lens.Lens' ExperimentResultsData (Prelude.Maybe [Prelude.Double])+experimentResultsData_values = Lens.lens (\ExperimentResultsData' {values} -> values) (\s@ExperimentResultsData' {} a -> s {values = a} :: ExperimentResultsData) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ExperimentResultsData where+  parseJSON =+    Data.withObject+      "ExperimentResultsData"+      ( \x ->+          ExperimentResultsData'+            Prelude.<$> (x Data..:? "metricName")+            Prelude.<*> (x Data..:? "resultStat")+            Prelude.<*> (x Data..:? "treatmentName")+            Prelude.<*> (x Data..:? "values" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ExperimentResultsData where+  hashWithSalt _salt ExperimentResultsData' {..} =+    _salt+      `Prelude.hashWithSalt` metricName+      `Prelude.hashWithSalt` resultStat+      `Prelude.hashWithSalt` treatmentName+      `Prelude.hashWithSalt` values++instance Prelude.NFData ExperimentResultsData where+  rnf ExperimentResultsData' {..} =+    Prelude.rnf metricName+      `Prelude.seq` Prelude.rnf resultStat+      `Prelude.seq` Prelude.rnf treatmentName+      `Prelude.seq` Prelude.rnf values
+ gen/Amazonka/Evidently/Types/ExperimentSchedule.hs view
@@ -0,0 +1,76 @@+{-# 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.Evidently.Types.ExperimentSchedule+-- 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.Evidently.Types.ExperimentSchedule where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | This structure contains the time and date that Evidently completed the+-- analysis of the experiment.+--+-- /See:/ 'newExperimentSchedule' smart constructor.+data ExperimentSchedule = ExperimentSchedule'+  { -- | The time and date that Evidently completed the analysis of the+    -- experiment.+    analysisCompleteTime :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentSchedule' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'analysisCompleteTime', 'experimentSchedule_analysisCompleteTime' - The time and date that Evidently completed the analysis of the+-- experiment.+newExperimentSchedule ::+  ExperimentSchedule+newExperimentSchedule =+  ExperimentSchedule'+    { analysisCompleteTime =+        Prelude.Nothing+    }++-- | The time and date that Evidently completed the analysis of the+-- experiment.+experimentSchedule_analysisCompleteTime :: Lens.Lens' ExperimentSchedule (Prelude.Maybe Prelude.UTCTime)+experimentSchedule_analysisCompleteTime = Lens.lens (\ExperimentSchedule' {analysisCompleteTime} -> analysisCompleteTime) (\s@ExperimentSchedule' {} a -> s {analysisCompleteTime = a} :: ExperimentSchedule) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON ExperimentSchedule where+  parseJSON =+    Data.withObject+      "ExperimentSchedule"+      ( \x ->+          ExperimentSchedule'+            Prelude.<$> (x Data..:? "analysisCompleteTime")+      )++instance Prelude.Hashable ExperimentSchedule where+  hashWithSalt _salt ExperimentSchedule' {..} =+    _salt `Prelude.hashWithSalt` analysisCompleteTime++instance Prelude.NFData ExperimentSchedule where+  rnf ExperimentSchedule' {..} =+    Prelude.rnf analysisCompleteTime
+ gen/Amazonka/Evidently/Types/ExperimentStatus.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.ExperimentStatus+-- 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.Evidently.Types.ExperimentStatus+  ( ExperimentStatus+      ( ..,+        ExperimentStatus_CANCELLED,+        ExperimentStatus_COMPLETED,+        ExperimentStatus_CREATED,+        ExperimentStatus_RUNNING,+        ExperimentStatus_UPDATING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ExperimentStatus = ExperimentStatus'+  { fromExperimentStatus ::+      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 ExperimentStatus_CANCELLED :: ExperimentStatus+pattern ExperimentStatus_CANCELLED = ExperimentStatus' "CANCELLED"++pattern ExperimentStatus_COMPLETED :: ExperimentStatus+pattern ExperimentStatus_COMPLETED = ExperimentStatus' "COMPLETED"++pattern ExperimentStatus_CREATED :: ExperimentStatus+pattern ExperimentStatus_CREATED = ExperimentStatus' "CREATED"++pattern ExperimentStatus_RUNNING :: ExperimentStatus+pattern ExperimentStatus_RUNNING = ExperimentStatus' "RUNNING"++pattern ExperimentStatus_UPDATING :: ExperimentStatus+pattern ExperimentStatus_UPDATING = ExperimentStatus' "UPDATING"++{-# COMPLETE+  ExperimentStatus_CANCELLED,+  ExperimentStatus_COMPLETED,+  ExperimentStatus_CREATED,+  ExperimentStatus_RUNNING,+  ExperimentStatus_UPDATING,+  ExperimentStatus'+  #-}
+ gen/Amazonka/Evidently/Types/ExperimentStopDesiredState.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.ExperimentStopDesiredState+-- 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.Evidently.Types.ExperimentStopDesiredState+  ( ExperimentStopDesiredState+      ( ..,+        ExperimentStopDesiredState_CANCELLED,+        ExperimentStopDesiredState_COMPLETED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ExperimentStopDesiredState = ExperimentStopDesiredState'+  { fromExperimentStopDesiredState ::+      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 ExperimentStopDesiredState_CANCELLED :: ExperimentStopDesiredState+pattern ExperimentStopDesiredState_CANCELLED = ExperimentStopDesiredState' "CANCELLED"++pattern ExperimentStopDesiredState_COMPLETED :: ExperimentStopDesiredState+pattern ExperimentStopDesiredState_COMPLETED = ExperimentStopDesiredState' "COMPLETED"++{-# COMPLETE+  ExperimentStopDesiredState_CANCELLED,+  ExperimentStopDesiredState_COMPLETED,+  ExperimentStopDesiredState'+  #-}
+ gen/Amazonka/Evidently/Types/ExperimentType.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.ExperimentType+-- 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.Evidently.Types.ExperimentType+  ( ExperimentType+      ( ..,+        ExperimentType_Aws_evidently_onlineab+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ExperimentType = ExperimentType'+  { fromExperimentType ::+      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 ExperimentType_Aws_evidently_onlineab :: ExperimentType+pattern ExperimentType_Aws_evidently_onlineab = ExperimentType' "aws.evidently.onlineab"++{-# COMPLETE+  ExperimentType_Aws_evidently_onlineab,+  ExperimentType'+  #-}
+ gen/Amazonka/Evidently/Types/Feature.hs view
@@ -0,0 +1,322 @@+{-# 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.Evidently.Types.Feature+-- 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.Evidently.Types.Feature where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.EvaluationRule+import Amazonka.Evidently.Types.FeatureEvaluationStrategy+import Amazonka.Evidently.Types.FeatureStatus+import Amazonka.Evidently.Types.Variation+import Amazonka.Evidently.Types.VariationValueType+import qualified Amazonka.Prelude as Prelude++-- | This structure contains information about one Evidently feature in your+-- account.+--+-- /See:/ 'newFeature' smart constructor.+data Feature = Feature'+  { -- | The name of the variation that is used as the default variation. The+    -- default variation is served to users who are not allocated to any+    -- ongoing launches or experiments of this feature.+    --+    -- This variation must also be listed in the @variations@ structure.+    --+    -- If you omit @defaultVariation@, the first variation listed in the+    -- @variations@ structure is used as the default variation.+    defaultVariation :: Prelude.Maybe Prelude.Text,+    -- | The description of the feature.+    description :: Prelude.Maybe Prelude.Text,+    -- | A set of key-value pairs that specify users who should always be served+    -- a specific variation of a feature. Each key specifies a user using their+    -- user ID, account ID, or some other identifier. The value specifies the+    -- name of the variation that the user is to be served.+    --+    -- For the override to be successful, the value of the key must match the+    -- @entityId@ used in the+    -- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_EvaluateFeature.html EvaluateFeature>+    -- operation.+    entityOverrides :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | An array of structures that define the evaluation rules for the feature.+    evaluationRules :: Prelude.Maybe [EvaluationRule],+    -- | The name or ARN of the project that contains the feature.+    project :: Prelude.Maybe Prelude.Text,+    -- | The list of tag keys and values associated with this feature.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The ARN of the feature.+    arn :: Prelude.Text,+    -- | The date and time that the feature is created.+    createdTime :: Data.POSIX,+    -- | If this value is @ALL_RULES@, the traffic allocation specified by any+    -- ongoing launches or experiments is being used. If this is+    -- @DEFAULT_VARIATION@, the default variation is being served to all users.+    evaluationStrategy :: FeatureEvaluationStrategy,+    -- | The date and time that the feature was most recently updated.+    lastUpdatedTime :: Data.POSIX,+    -- | The name of the feature.+    name :: Prelude.Text,+    -- | The current state of the feature.+    status :: FeatureStatus,+    -- | Defines the type of value used to define the different feature+    -- variations. For more information, see+    -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-variationtypes.html Variation types>+    valueType :: VariationValueType,+    -- | An array of structures that contain the configuration of the feature\'s+    -- different variations.+    variations :: [Variation]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Feature' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'defaultVariation', 'feature_defaultVariation' - The name of the variation that is used as the default variation. The+-- default variation is served to users who are not allocated to any+-- ongoing launches or experiments of this feature.+--+-- This variation must also be listed in the @variations@ structure.+--+-- If you omit @defaultVariation@, the first variation listed in the+-- @variations@ structure is used as the default variation.+--+-- 'description', 'feature_description' - The description of the feature.+--+-- 'entityOverrides', 'feature_entityOverrides' - A set of key-value pairs that specify users who should always be served+-- a specific variation of a feature. Each key specifies a user using their+-- user ID, account ID, or some other identifier. The value specifies the+-- name of the variation that the user is to be served.+--+-- For the override to be successful, the value of the key must match the+-- @entityId@ used in the+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_EvaluateFeature.html EvaluateFeature>+-- operation.+--+-- 'evaluationRules', 'feature_evaluationRules' - An array of structures that define the evaluation rules for the feature.+--+-- 'project', 'feature_project' - The name or ARN of the project that contains the feature.+--+-- 'tags', 'feature_tags' - The list of tag keys and values associated with this feature.+--+-- 'arn', 'feature_arn' - The ARN of the feature.+--+-- 'createdTime', 'feature_createdTime' - The date and time that the feature is created.+--+-- 'evaluationStrategy', 'feature_evaluationStrategy' - If this value is @ALL_RULES@, the traffic allocation specified by any+-- ongoing launches or experiments is being used. If this is+-- @DEFAULT_VARIATION@, the default variation is being served to all users.+--+-- 'lastUpdatedTime', 'feature_lastUpdatedTime' - The date and time that the feature was most recently updated.+--+-- 'name', 'feature_name' - The name of the feature.+--+-- 'status', 'feature_status' - The current state of the feature.+--+-- 'valueType', 'feature_valueType' - Defines the type of value used to define the different feature+-- variations. For more information, see+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-variationtypes.html Variation types>+--+-- 'variations', 'feature_variations' - An array of structures that contain the configuration of the feature\'s+-- different variations.+newFeature ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdTime'+  Prelude.UTCTime ->+  -- | 'evaluationStrategy'+  FeatureEvaluationStrategy ->+  -- | 'lastUpdatedTime'+  Prelude.UTCTime ->+  -- | 'name'+  Prelude.Text ->+  -- | 'status'+  FeatureStatus ->+  -- | 'valueType'+  VariationValueType ->+  Feature+newFeature+  pArn_+  pCreatedTime_+  pEvaluationStrategy_+  pLastUpdatedTime_+  pName_+  pStatus_+  pValueType_ =+    Feature'+      { defaultVariation = Prelude.Nothing,+        description = Prelude.Nothing,+        entityOverrides = Prelude.Nothing,+        evaluationRules = Prelude.Nothing,+        project = Prelude.Nothing,+        tags = Prelude.Nothing,+        arn = pArn_,+        createdTime = Data._Time Lens.# pCreatedTime_,+        evaluationStrategy = pEvaluationStrategy_,+        lastUpdatedTime =+          Data._Time Lens.# pLastUpdatedTime_,+        name = pName_,+        status = pStatus_,+        valueType = pValueType_,+        variations = Prelude.mempty+      }++-- | The name of the variation that is used as the default variation. The+-- default variation is served to users who are not allocated to any+-- ongoing launches or experiments of this feature.+--+-- This variation must also be listed in the @variations@ structure.+--+-- If you omit @defaultVariation@, the first variation listed in the+-- @variations@ structure is used as the default variation.+feature_defaultVariation :: Lens.Lens' Feature (Prelude.Maybe Prelude.Text)+feature_defaultVariation = Lens.lens (\Feature' {defaultVariation} -> defaultVariation) (\s@Feature' {} a -> s {defaultVariation = a} :: Feature)++-- | The description of the feature.+feature_description :: Lens.Lens' Feature (Prelude.Maybe Prelude.Text)+feature_description = Lens.lens (\Feature' {description} -> description) (\s@Feature' {} a -> s {description = a} :: Feature)++-- | A set of key-value pairs that specify users who should always be served+-- a specific variation of a feature. Each key specifies a user using their+-- user ID, account ID, or some other identifier. The value specifies the+-- name of the variation that the user is to be served.+--+-- For the override to be successful, the value of the key must match the+-- @entityId@ used in the+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_EvaluateFeature.html EvaluateFeature>+-- operation.+feature_entityOverrides :: Lens.Lens' Feature (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+feature_entityOverrides = Lens.lens (\Feature' {entityOverrides} -> entityOverrides) (\s@Feature' {} a -> s {entityOverrides = a} :: Feature) Prelude.. Lens.mapping Lens.coerced++-- | An array of structures that define the evaluation rules for the feature.+feature_evaluationRules :: Lens.Lens' Feature (Prelude.Maybe [EvaluationRule])+feature_evaluationRules = Lens.lens (\Feature' {evaluationRules} -> evaluationRules) (\s@Feature' {} a -> s {evaluationRules = a} :: Feature) Prelude.. Lens.mapping Lens.coerced++-- | The name or ARN of the project that contains the feature.+feature_project :: Lens.Lens' Feature (Prelude.Maybe Prelude.Text)+feature_project = Lens.lens (\Feature' {project} -> project) (\s@Feature' {} a -> s {project = a} :: Feature)++-- | The list of tag keys and values associated with this feature.+feature_tags :: Lens.Lens' Feature (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+feature_tags = Lens.lens (\Feature' {tags} -> tags) (\s@Feature' {} a -> s {tags = a} :: Feature) Prelude.. Lens.mapping Lens.coerced++-- | The ARN of the feature.+feature_arn :: Lens.Lens' Feature Prelude.Text+feature_arn = Lens.lens (\Feature' {arn} -> arn) (\s@Feature' {} a -> s {arn = a} :: Feature)++-- | The date and time that the feature is created.+feature_createdTime :: Lens.Lens' Feature Prelude.UTCTime+feature_createdTime = Lens.lens (\Feature' {createdTime} -> createdTime) (\s@Feature' {} a -> s {createdTime = a} :: Feature) Prelude.. Data._Time++-- | If this value is @ALL_RULES@, the traffic allocation specified by any+-- ongoing launches or experiments is being used. If this is+-- @DEFAULT_VARIATION@, the default variation is being served to all users.+feature_evaluationStrategy :: Lens.Lens' Feature FeatureEvaluationStrategy+feature_evaluationStrategy = Lens.lens (\Feature' {evaluationStrategy} -> evaluationStrategy) (\s@Feature' {} a -> s {evaluationStrategy = a} :: Feature)++-- | The date and time that the feature was most recently updated.+feature_lastUpdatedTime :: Lens.Lens' Feature Prelude.UTCTime+feature_lastUpdatedTime = Lens.lens (\Feature' {lastUpdatedTime} -> lastUpdatedTime) (\s@Feature' {} a -> s {lastUpdatedTime = a} :: Feature) Prelude.. Data._Time++-- | The name of the feature.+feature_name :: Lens.Lens' Feature Prelude.Text+feature_name = Lens.lens (\Feature' {name} -> name) (\s@Feature' {} a -> s {name = a} :: Feature)++-- | The current state of the feature.+feature_status :: Lens.Lens' Feature FeatureStatus+feature_status = Lens.lens (\Feature' {status} -> status) (\s@Feature' {} a -> s {status = a} :: Feature)++-- | Defines the type of value used to define the different feature+-- variations. For more information, see+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-variationtypes.html Variation types>+feature_valueType :: Lens.Lens' Feature VariationValueType+feature_valueType = Lens.lens (\Feature' {valueType} -> valueType) (\s@Feature' {} a -> s {valueType = a} :: Feature)++-- | An array of structures that contain the configuration of the feature\'s+-- different variations.+feature_variations :: Lens.Lens' Feature [Variation]+feature_variations = Lens.lens (\Feature' {variations} -> variations) (\s@Feature' {} a -> s {variations = a} :: Feature) Prelude.. Lens.coerced++instance Data.FromJSON Feature where+  parseJSON =+    Data.withObject+      "Feature"+      ( \x ->+          Feature'+            Prelude.<$> (x Data..:? "defaultVariation")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> ( x+                            Data..:? "entityOverrides"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..:? "evaluationRules"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "project")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdTime")+            Prelude.<*> (x Data..: "evaluationStrategy")+            Prelude.<*> (x Data..: "lastUpdatedTime")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "status")+            Prelude.<*> (x Data..: "valueType")+            Prelude.<*> (x Data..:? "variations" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable Feature where+  hashWithSalt _salt Feature' {..} =+    _salt+      `Prelude.hashWithSalt` defaultVariation+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` entityOverrides+      `Prelude.hashWithSalt` evaluationRules+      `Prelude.hashWithSalt` project+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdTime+      `Prelude.hashWithSalt` evaluationStrategy+      `Prelude.hashWithSalt` lastUpdatedTime+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` valueType+      `Prelude.hashWithSalt` variations++instance Prelude.NFData Feature where+  rnf Feature' {..} =+    Prelude.rnf defaultVariation+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf entityOverrides+      `Prelude.seq` Prelude.rnf evaluationRules+      `Prelude.seq` Prelude.rnf project+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdTime+      `Prelude.seq` Prelude.rnf evaluationStrategy+      `Prelude.seq` Prelude.rnf lastUpdatedTime+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf valueType+      `Prelude.seq` Prelude.rnf variations
+ gen/Amazonka/Evidently/Types/FeatureEvaluationStrategy.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.FeatureEvaluationStrategy+-- 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.Evidently.Types.FeatureEvaluationStrategy+  ( FeatureEvaluationStrategy+      ( ..,+        FeatureEvaluationStrategy_ALL_RULES,+        FeatureEvaluationStrategy_DEFAULT_VARIATION+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FeatureEvaluationStrategy = FeatureEvaluationStrategy'+  { fromFeatureEvaluationStrategy ::+      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 FeatureEvaluationStrategy_ALL_RULES :: FeatureEvaluationStrategy+pattern FeatureEvaluationStrategy_ALL_RULES = FeatureEvaluationStrategy' "ALL_RULES"++pattern FeatureEvaluationStrategy_DEFAULT_VARIATION :: FeatureEvaluationStrategy+pattern FeatureEvaluationStrategy_DEFAULT_VARIATION = FeatureEvaluationStrategy' "DEFAULT_VARIATION"++{-# COMPLETE+  FeatureEvaluationStrategy_ALL_RULES,+  FeatureEvaluationStrategy_DEFAULT_VARIATION,+  FeatureEvaluationStrategy'+  #-}
+ gen/Amazonka/Evidently/Types/FeatureStatus.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.FeatureStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Evidently.Types.FeatureStatus+  ( FeatureStatus+      ( ..,+        FeatureStatus_AVAILABLE,+        FeatureStatus_UPDATING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FeatureStatus = FeatureStatus'+  { fromFeatureStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern FeatureStatus_AVAILABLE :: FeatureStatus+pattern FeatureStatus_AVAILABLE = FeatureStatus' "AVAILABLE"++pattern FeatureStatus_UPDATING :: FeatureStatus+pattern FeatureStatus_UPDATING = FeatureStatus' "UPDATING"++{-# COMPLETE+  FeatureStatus_AVAILABLE,+  FeatureStatus_UPDATING,+  FeatureStatus'+  #-}
+ gen/Amazonka/Evidently/Types/FeatureSummary.hs view
@@ -0,0 +1,218 @@+{-# 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.Evidently.Types.FeatureSummary+-- 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.Evidently.Types.FeatureSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.EvaluationRule+import Amazonka.Evidently.Types.FeatureEvaluationStrategy+import Amazonka.Evidently.Types.FeatureStatus+import qualified Amazonka.Prelude as Prelude++-- | This structure contains information about one Evidently feature in your+-- account.+--+-- /See:/ 'newFeatureSummary' smart constructor.+data FeatureSummary = FeatureSummary'+  { -- | The name of the variation that is used as the default variation. The+    -- default variation is served to users who are not allocated to any+    -- ongoing launches or experiments of this feature.+    defaultVariation :: Prelude.Maybe Prelude.Text,+    -- | An array of structures that define+    evaluationRules :: Prelude.Maybe [EvaluationRule],+    -- | The name or ARN of the project that contains the feature.+    project :: Prelude.Maybe Prelude.Text,+    -- | The list of tag keys and values associated with this feature.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The ARN of the feature.+    arn :: Prelude.Text,+    -- | The date and time that the feature is created.+    createdTime :: Data.POSIX,+    -- | If this value is @ALL_RULES@, the traffic allocation specified by any+    -- ongoing launches or experiments is being used. If this is+    -- @DEFAULT_VARIATION@, the default variation is being served to all users.+    evaluationStrategy :: FeatureEvaluationStrategy,+    -- | The date and time that the feature was most recently updated.+    lastUpdatedTime :: Data.POSIX,+    -- | The name of the feature.+    name :: Prelude.Text,+    -- | The current state of the feature.+    status :: FeatureStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FeatureSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'defaultVariation', 'featureSummary_defaultVariation' - The name of the variation that is used as the default variation. The+-- default variation is served to users who are not allocated to any+-- ongoing launches or experiments of this feature.+--+-- 'evaluationRules', 'featureSummary_evaluationRules' - An array of structures that define+--+-- 'project', 'featureSummary_project' - The name or ARN of the project that contains the feature.+--+-- 'tags', 'featureSummary_tags' - The list of tag keys and values associated with this feature.+--+-- 'arn', 'featureSummary_arn' - The ARN of the feature.+--+-- 'createdTime', 'featureSummary_createdTime' - The date and time that the feature is created.+--+-- 'evaluationStrategy', 'featureSummary_evaluationStrategy' - If this value is @ALL_RULES@, the traffic allocation specified by any+-- ongoing launches or experiments is being used. If this is+-- @DEFAULT_VARIATION@, the default variation is being served to all users.+--+-- 'lastUpdatedTime', 'featureSummary_lastUpdatedTime' - The date and time that the feature was most recently updated.+--+-- 'name', 'featureSummary_name' - The name of the feature.+--+-- 'status', 'featureSummary_status' - The current state of the feature.+newFeatureSummary ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdTime'+  Prelude.UTCTime ->+  -- | 'evaluationStrategy'+  FeatureEvaluationStrategy ->+  -- | 'lastUpdatedTime'+  Prelude.UTCTime ->+  -- | 'name'+  Prelude.Text ->+  -- | 'status'+  FeatureStatus ->+  FeatureSummary+newFeatureSummary+  pArn_+  pCreatedTime_+  pEvaluationStrategy_+  pLastUpdatedTime_+  pName_+  pStatus_ =+    FeatureSummary'+      { defaultVariation = Prelude.Nothing,+        evaluationRules = Prelude.Nothing,+        project = Prelude.Nothing,+        tags = Prelude.Nothing,+        arn = pArn_,+        createdTime = Data._Time Lens.# pCreatedTime_,+        evaluationStrategy = pEvaluationStrategy_,+        lastUpdatedTime =+          Data._Time Lens.# pLastUpdatedTime_,+        name = pName_,+        status = pStatus_+      }++-- | The name of the variation that is used as the default variation. The+-- default variation is served to users who are not allocated to any+-- ongoing launches or experiments of this feature.+featureSummary_defaultVariation :: Lens.Lens' FeatureSummary (Prelude.Maybe Prelude.Text)+featureSummary_defaultVariation = Lens.lens (\FeatureSummary' {defaultVariation} -> defaultVariation) (\s@FeatureSummary' {} a -> s {defaultVariation = a} :: FeatureSummary)++-- | An array of structures that define+featureSummary_evaluationRules :: Lens.Lens' FeatureSummary (Prelude.Maybe [EvaluationRule])+featureSummary_evaluationRules = Lens.lens (\FeatureSummary' {evaluationRules} -> evaluationRules) (\s@FeatureSummary' {} a -> s {evaluationRules = a} :: FeatureSummary) Prelude.. Lens.mapping Lens.coerced++-- | The name or ARN of the project that contains the feature.+featureSummary_project :: Lens.Lens' FeatureSummary (Prelude.Maybe Prelude.Text)+featureSummary_project = Lens.lens (\FeatureSummary' {project} -> project) (\s@FeatureSummary' {} a -> s {project = a} :: FeatureSummary)++-- | The list of tag keys and values associated with this feature.+featureSummary_tags :: Lens.Lens' FeatureSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+featureSummary_tags = Lens.lens (\FeatureSummary' {tags} -> tags) (\s@FeatureSummary' {} a -> s {tags = a} :: FeatureSummary) Prelude.. Lens.mapping Lens.coerced++-- | The ARN of the feature.+featureSummary_arn :: Lens.Lens' FeatureSummary Prelude.Text+featureSummary_arn = Lens.lens (\FeatureSummary' {arn} -> arn) (\s@FeatureSummary' {} a -> s {arn = a} :: FeatureSummary)++-- | The date and time that the feature is created.+featureSummary_createdTime :: Lens.Lens' FeatureSummary Prelude.UTCTime+featureSummary_createdTime = Lens.lens (\FeatureSummary' {createdTime} -> createdTime) (\s@FeatureSummary' {} a -> s {createdTime = a} :: FeatureSummary) Prelude.. Data._Time++-- | If this value is @ALL_RULES@, the traffic allocation specified by any+-- ongoing launches or experiments is being used. If this is+-- @DEFAULT_VARIATION@, the default variation is being served to all users.+featureSummary_evaluationStrategy :: Lens.Lens' FeatureSummary FeatureEvaluationStrategy+featureSummary_evaluationStrategy = Lens.lens (\FeatureSummary' {evaluationStrategy} -> evaluationStrategy) (\s@FeatureSummary' {} a -> s {evaluationStrategy = a} :: FeatureSummary)++-- | The date and time that the feature was most recently updated.+featureSummary_lastUpdatedTime :: Lens.Lens' FeatureSummary Prelude.UTCTime+featureSummary_lastUpdatedTime = Lens.lens (\FeatureSummary' {lastUpdatedTime} -> lastUpdatedTime) (\s@FeatureSummary' {} a -> s {lastUpdatedTime = a} :: FeatureSummary) Prelude.. Data._Time++-- | The name of the feature.+featureSummary_name :: Lens.Lens' FeatureSummary Prelude.Text+featureSummary_name = Lens.lens (\FeatureSummary' {name} -> name) (\s@FeatureSummary' {} a -> s {name = a} :: FeatureSummary)++-- | The current state of the feature.+featureSummary_status :: Lens.Lens' FeatureSummary FeatureStatus+featureSummary_status = Lens.lens (\FeatureSummary' {status} -> status) (\s@FeatureSummary' {} a -> s {status = a} :: FeatureSummary)++instance Data.FromJSON FeatureSummary where+  parseJSON =+    Data.withObject+      "FeatureSummary"+      ( \x ->+          FeatureSummary'+            Prelude.<$> (x Data..:? "defaultVariation")+            Prelude.<*> ( x+                            Data..:? "evaluationRules"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "project")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdTime")+            Prelude.<*> (x Data..: "evaluationStrategy")+            Prelude.<*> (x Data..: "lastUpdatedTime")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "status")+      )++instance Prelude.Hashable FeatureSummary where+  hashWithSalt _salt FeatureSummary' {..} =+    _salt+      `Prelude.hashWithSalt` defaultVariation+      `Prelude.hashWithSalt` evaluationRules+      `Prelude.hashWithSalt` project+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdTime+      `Prelude.hashWithSalt` evaluationStrategy+      `Prelude.hashWithSalt` lastUpdatedTime+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` status++instance Prelude.NFData FeatureSummary where+  rnf FeatureSummary' {..} =+    Prelude.rnf defaultVariation+      `Prelude.seq` Prelude.rnf evaluationRules+      `Prelude.seq` Prelude.rnf project+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdTime+      `Prelude.seq` Prelude.rnf evaluationStrategy+      `Prelude.seq` Prelude.rnf lastUpdatedTime+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/Evidently/Types/Launch.hs view
@@ -0,0 +1,290 @@+{-# 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.Evidently.Types.Launch+-- 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.Evidently.Types.Launch where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.LaunchExecution+import Amazonka.Evidently.Types.LaunchGroup+import Amazonka.Evidently.Types.LaunchStatus+import Amazonka.Evidently.Types.LaunchType+import Amazonka.Evidently.Types.MetricMonitor+import Amazonka.Evidently.Types.ScheduledSplitsLaunchDefinition+import qualified Amazonka.Prelude as Prelude++-- | This structure contains the configuration details of one Evidently+-- launch.+--+-- /See:/ 'newLaunch' smart constructor.+data Launch = Launch'+  { -- | The description of the launch.+    description :: Prelude.Maybe Prelude.Text,+    -- | A structure that contains information about the start and end times of+    -- the launch.+    execution :: Prelude.Maybe LaunchExecution,+    -- | An array of structures that define the feature variations that are being+    -- used in the launch.+    groups :: Prelude.Maybe [LaunchGroup],+    -- | An array of structures that define the metrics that are being used to+    -- monitor the launch performance.+    metricMonitors :: Prelude.Maybe [MetricMonitor],+    -- | The name or ARN of the project that contains the launch.+    project :: Prelude.Maybe Prelude.Text,+    -- | This value is used when Evidently assigns a particular user session to+    -- the launch, to help create a randomization ID to determine which+    -- variation the user session is served. This randomization ID is a+    -- combination of the entity ID and @randomizationSalt@.+    randomizationSalt :: Prelude.Maybe Prelude.Text,+    -- | An array of structures that define the traffic allocation percentages+    -- among the feature variations during each step of the launch.+    scheduledSplitsDefinition :: Prelude.Maybe ScheduledSplitsLaunchDefinition,+    -- | If the launch was stopped, this is the string that was entered by the+    -- person who stopped the launch, to explain why it was stopped.+    statusReason :: Prelude.Maybe Prelude.Text,+    -- | The list of tag keys and values associated with this launch.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The ARN of the launch.+    arn :: Prelude.Text,+    -- | The date and time that the launch is created.+    createdTime :: Data.POSIX,+    -- | The date and time that the launch was most recently updated.+    lastUpdatedTime :: Data.POSIX,+    -- | The name of the launch.+    name :: Prelude.Text,+    -- | The current state of the launch.+    status :: LaunchStatus,+    -- | The type of launch.+    type' :: LaunchType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Launch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'launch_description' - The description of the launch.+--+-- 'execution', 'launch_execution' - A structure that contains information about the start and end times of+-- the launch.+--+-- 'groups', 'launch_groups' - An array of structures that define the feature variations that are being+-- used in the launch.+--+-- 'metricMonitors', 'launch_metricMonitors' - An array of structures that define the metrics that are being used to+-- monitor the launch performance.+--+-- 'project', 'launch_project' - The name or ARN of the project that contains the launch.+--+-- 'randomizationSalt', 'launch_randomizationSalt' - This value is used when Evidently assigns a particular user session to+-- the launch, to help create a randomization ID to determine which+-- variation the user session is served. This randomization ID is a+-- combination of the entity ID and @randomizationSalt@.+--+-- 'scheduledSplitsDefinition', 'launch_scheduledSplitsDefinition' - An array of structures that define the traffic allocation percentages+-- among the feature variations during each step of the launch.+--+-- 'statusReason', 'launch_statusReason' - If the launch was stopped, this is the string that was entered by the+-- person who stopped the launch, to explain why it was stopped.+--+-- 'tags', 'launch_tags' - The list of tag keys and values associated with this launch.+--+-- 'arn', 'launch_arn' - The ARN of the launch.+--+-- 'createdTime', 'launch_createdTime' - The date and time that the launch is created.+--+-- 'lastUpdatedTime', 'launch_lastUpdatedTime' - The date and time that the launch was most recently updated.+--+-- 'name', 'launch_name' - The name of the launch.+--+-- 'status', 'launch_status' - The current state of the launch.+--+-- 'type'', 'launch_type' - The type of launch.+newLaunch ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdTime'+  Prelude.UTCTime ->+  -- | 'lastUpdatedTime'+  Prelude.UTCTime ->+  -- | 'name'+  Prelude.Text ->+  -- | 'status'+  LaunchStatus ->+  -- | 'type''+  LaunchType ->+  Launch+newLaunch+  pArn_+  pCreatedTime_+  pLastUpdatedTime_+  pName_+  pStatus_+  pType_ =+    Launch'+      { description = Prelude.Nothing,+        execution = Prelude.Nothing,+        groups = Prelude.Nothing,+        metricMonitors = Prelude.Nothing,+        project = Prelude.Nothing,+        randomizationSalt = Prelude.Nothing,+        scheduledSplitsDefinition = Prelude.Nothing,+        statusReason = Prelude.Nothing,+        tags = Prelude.Nothing,+        arn = pArn_,+        createdTime = Data._Time Lens.# pCreatedTime_,+        lastUpdatedTime =+          Data._Time Lens.# pLastUpdatedTime_,+        name = pName_,+        status = pStatus_,+        type' = pType_+      }++-- | The description of the launch.+launch_description :: Lens.Lens' Launch (Prelude.Maybe Prelude.Text)+launch_description = Lens.lens (\Launch' {description} -> description) (\s@Launch' {} a -> s {description = a} :: Launch)++-- | A structure that contains information about the start and end times of+-- the launch.+launch_execution :: Lens.Lens' Launch (Prelude.Maybe LaunchExecution)+launch_execution = Lens.lens (\Launch' {execution} -> execution) (\s@Launch' {} a -> s {execution = a} :: Launch)++-- | An array of structures that define the feature variations that are being+-- used in the launch.+launch_groups :: Lens.Lens' Launch (Prelude.Maybe [LaunchGroup])+launch_groups = Lens.lens (\Launch' {groups} -> groups) (\s@Launch' {} a -> s {groups = a} :: Launch) Prelude.. Lens.mapping Lens.coerced++-- | An array of structures that define the metrics that are being used to+-- monitor the launch performance.+launch_metricMonitors :: Lens.Lens' Launch (Prelude.Maybe [MetricMonitor])+launch_metricMonitors = Lens.lens (\Launch' {metricMonitors} -> metricMonitors) (\s@Launch' {} a -> s {metricMonitors = a} :: Launch) Prelude.. Lens.mapping Lens.coerced++-- | The name or ARN of the project that contains the launch.+launch_project :: Lens.Lens' Launch (Prelude.Maybe Prelude.Text)+launch_project = Lens.lens (\Launch' {project} -> project) (\s@Launch' {} a -> s {project = a} :: Launch)++-- | This value is used when Evidently assigns a particular user session to+-- the launch, to help create a randomization ID to determine which+-- variation the user session is served. This randomization ID is a+-- combination of the entity ID and @randomizationSalt@.+launch_randomizationSalt :: Lens.Lens' Launch (Prelude.Maybe Prelude.Text)+launch_randomizationSalt = Lens.lens (\Launch' {randomizationSalt} -> randomizationSalt) (\s@Launch' {} a -> s {randomizationSalt = a} :: Launch)++-- | An array of structures that define the traffic allocation percentages+-- among the feature variations during each step of the launch.+launch_scheduledSplitsDefinition :: Lens.Lens' Launch (Prelude.Maybe ScheduledSplitsLaunchDefinition)+launch_scheduledSplitsDefinition = Lens.lens (\Launch' {scheduledSplitsDefinition} -> scheduledSplitsDefinition) (\s@Launch' {} a -> s {scheduledSplitsDefinition = a} :: Launch)++-- | If the launch was stopped, this is the string that was entered by the+-- person who stopped the launch, to explain why it was stopped.+launch_statusReason :: Lens.Lens' Launch (Prelude.Maybe Prelude.Text)+launch_statusReason = Lens.lens (\Launch' {statusReason} -> statusReason) (\s@Launch' {} a -> s {statusReason = a} :: Launch)++-- | The list of tag keys and values associated with this launch.+launch_tags :: Lens.Lens' Launch (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+launch_tags = Lens.lens (\Launch' {tags} -> tags) (\s@Launch' {} a -> s {tags = a} :: Launch) Prelude.. Lens.mapping Lens.coerced++-- | The ARN of the launch.+launch_arn :: Lens.Lens' Launch Prelude.Text+launch_arn = Lens.lens (\Launch' {arn} -> arn) (\s@Launch' {} a -> s {arn = a} :: Launch)++-- | The date and time that the launch is created.+launch_createdTime :: Lens.Lens' Launch Prelude.UTCTime+launch_createdTime = Lens.lens (\Launch' {createdTime} -> createdTime) (\s@Launch' {} a -> s {createdTime = a} :: Launch) Prelude.. Data._Time++-- | The date and time that the launch was most recently updated.+launch_lastUpdatedTime :: Lens.Lens' Launch Prelude.UTCTime+launch_lastUpdatedTime = Lens.lens (\Launch' {lastUpdatedTime} -> lastUpdatedTime) (\s@Launch' {} a -> s {lastUpdatedTime = a} :: Launch) Prelude.. Data._Time++-- | The name of the launch.+launch_name :: Lens.Lens' Launch Prelude.Text+launch_name = Lens.lens (\Launch' {name} -> name) (\s@Launch' {} a -> s {name = a} :: Launch)++-- | The current state of the launch.+launch_status :: Lens.Lens' Launch LaunchStatus+launch_status = Lens.lens (\Launch' {status} -> status) (\s@Launch' {} a -> s {status = a} :: Launch)++-- | The type of launch.+launch_type :: Lens.Lens' Launch LaunchType+launch_type = Lens.lens (\Launch' {type'} -> type') (\s@Launch' {} a -> s {type' = a} :: Launch)++instance Data.FromJSON Launch where+  parseJSON =+    Data.withObject+      "Launch"+      ( \x ->+          Launch'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> (x Data..:? "execution")+            Prelude.<*> (x Data..:? "groups" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "metricMonitors" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "project")+            Prelude.<*> (x Data..:? "randomizationSalt")+            Prelude.<*> (x Data..:? "scheduledSplitsDefinition")+            Prelude.<*> (x Data..:? "statusReason")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdTime")+            Prelude.<*> (x Data..: "lastUpdatedTime")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "status")+            Prelude.<*> (x Data..: "type")+      )++instance Prelude.Hashable Launch where+  hashWithSalt _salt Launch' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` execution+      `Prelude.hashWithSalt` groups+      `Prelude.hashWithSalt` metricMonitors+      `Prelude.hashWithSalt` project+      `Prelude.hashWithSalt` randomizationSalt+      `Prelude.hashWithSalt` scheduledSplitsDefinition+      `Prelude.hashWithSalt` statusReason+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdTime+      `Prelude.hashWithSalt` lastUpdatedTime+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` type'++instance Prelude.NFData Launch where+  rnf Launch' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf execution+      `Prelude.seq` Prelude.rnf groups+      `Prelude.seq` Prelude.rnf metricMonitors+      `Prelude.seq` Prelude.rnf project+      `Prelude.seq` Prelude.rnf randomizationSalt+      `Prelude.seq` Prelude.rnf scheduledSplitsDefinition+      `Prelude.seq` Prelude.rnf statusReason+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdTime+      `Prelude.seq` Prelude.rnf lastUpdatedTime+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/Evidently/Types/LaunchExecution.hs view
@@ -0,0 +1,85 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.LaunchExecution+-- 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.Evidently.Types.LaunchExecution where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | This structure contains information about the start and end times of the+-- launch.+--+-- /See:/ 'newLaunchExecution' smart constructor.+data LaunchExecution = LaunchExecution'+  { -- | The date and time that the launch ended.+    endedTime :: Prelude.Maybe Data.POSIX,+    -- | The date and time that the launch started.+    startedTime :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LaunchExecution' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endedTime', 'launchExecution_endedTime' - The date and time that the launch ended.+--+-- 'startedTime', 'launchExecution_startedTime' - The date and time that the launch started.+newLaunchExecution ::+  LaunchExecution+newLaunchExecution =+  LaunchExecution'+    { endedTime = Prelude.Nothing,+      startedTime = Prelude.Nothing+    }++-- | The date and time that the launch ended.+launchExecution_endedTime :: Lens.Lens' LaunchExecution (Prelude.Maybe Prelude.UTCTime)+launchExecution_endedTime = Lens.lens (\LaunchExecution' {endedTime} -> endedTime) (\s@LaunchExecution' {} a -> s {endedTime = a} :: LaunchExecution) Prelude.. Lens.mapping Data._Time++-- | The date and time that the launch started.+launchExecution_startedTime :: Lens.Lens' LaunchExecution (Prelude.Maybe Prelude.UTCTime)+launchExecution_startedTime = Lens.lens (\LaunchExecution' {startedTime} -> startedTime) (\s@LaunchExecution' {} a -> s {startedTime = a} :: LaunchExecution) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON LaunchExecution where+  parseJSON =+    Data.withObject+      "LaunchExecution"+      ( \x ->+          LaunchExecution'+            Prelude.<$> (x Data..:? "endedTime")+            Prelude.<*> (x Data..:? "startedTime")+      )++instance Prelude.Hashable LaunchExecution where+  hashWithSalt _salt LaunchExecution' {..} =+    _salt+      `Prelude.hashWithSalt` endedTime+      `Prelude.hashWithSalt` startedTime++instance Prelude.NFData LaunchExecution where+  rnf LaunchExecution' {..} =+    Prelude.rnf endedTime+      `Prelude.seq` Prelude.rnf startedTime
+ gen/Amazonka/Evidently/Types/LaunchGroup.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.LaunchGroup+-- 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.Evidently.Types.LaunchGroup where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A structure that defines one launch group in a launch. A launch group is+-- a variation of the feature that you are including in the launch.+--+-- /See:/ 'newLaunchGroup' smart constructor.+data LaunchGroup = LaunchGroup'+  { -- | A description of the launch group.+    description :: Prelude.Maybe Prelude.Text,+    -- | The feature variation for this launch group. This is a key-value pair.+    featureVariations :: Prelude.HashMap Prelude.Text Prelude.Text,+    -- | The name of the launch group.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LaunchGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'launchGroup_description' - A description of the launch group.+--+-- 'featureVariations', 'launchGroup_featureVariations' - The feature variation for this launch group. This is a key-value pair.+--+-- 'name', 'launchGroup_name' - The name of the launch group.+newLaunchGroup ::+  -- | 'name'+  Prelude.Text ->+  LaunchGroup+newLaunchGroup pName_ =+  LaunchGroup'+    { description = Prelude.Nothing,+      featureVariations = Prelude.mempty,+      name = pName_+    }++-- | A description of the launch group.+launchGroup_description :: Lens.Lens' LaunchGroup (Prelude.Maybe Prelude.Text)+launchGroup_description = Lens.lens (\LaunchGroup' {description} -> description) (\s@LaunchGroup' {} a -> s {description = a} :: LaunchGroup)++-- | The feature variation for this launch group. This is a key-value pair.+launchGroup_featureVariations :: Lens.Lens' LaunchGroup (Prelude.HashMap Prelude.Text Prelude.Text)+launchGroup_featureVariations = Lens.lens (\LaunchGroup' {featureVariations} -> featureVariations) (\s@LaunchGroup' {} a -> s {featureVariations = a} :: LaunchGroup) Prelude.. Lens.coerced++-- | The name of the launch group.+launchGroup_name :: Lens.Lens' LaunchGroup Prelude.Text+launchGroup_name = Lens.lens (\LaunchGroup' {name} -> name) (\s@LaunchGroup' {} a -> s {name = a} :: LaunchGroup)++instance Data.FromJSON LaunchGroup where+  parseJSON =+    Data.withObject+      "LaunchGroup"+      ( \x ->+          LaunchGroup'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> ( x+                            Data..:? "featureVariations"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..: "name")+      )++instance Prelude.Hashable LaunchGroup where+  hashWithSalt _salt LaunchGroup' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` featureVariations+      `Prelude.hashWithSalt` name++instance Prelude.NFData LaunchGroup where+  rnf LaunchGroup' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf featureVariations+      `Prelude.seq` Prelude.rnf name
+ gen/Amazonka/Evidently/Types/LaunchGroupConfig.hs view
@@ -0,0 +1,114 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.LaunchGroupConfig+-- 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.Evidently.Types.LaunchGroupConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A structure that defines one launch group in a launch. A launch group is+-- a variation of the feature that you are including in the launch.+--+-- /See:/ 'newLaunchGroupConfig' smart constructor.+data LaunchGroupConfig = LaunchGroupConfig'+  { -- | A description of the launch group.+    description :: Prelude.Maybe Prelude.Text,+    -- | The feature that this launch is using.+    feature :: Prelude.Text,+    -- | A name for this launch group.+    name :: Prelude.Text,+    -- | The feature variation to use for this launch group.+    variation :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LaunchGroupConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'launchGroupConfig_description' - A description of the launch group.+--+-- 'feature', 'launchGroupConfig_feature' - The feature that this launch is using.+--+-- 'name', 'launchGroupConfig_name' - A name for this launch group.+--+-- 'variation', 'launchGroupConfig_variation' - The feature variation to use for this launch group.+newLaunchGroupConfig ::+  -- | 'feature'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  -- | 'variation'+  Prelude.Text ->+  LaunchGroupConfig+newLaunchGroupConfig pFeature_ pName_ pVariation_ =+  LaunchGroupConfig'+    { description = Prelude.Nothing,+      feature = pFeature_,+      name = pName_,+      variation = pVariation_+    }++-- | A description of the launch group.+launchGroupConfig_description :: Lens.Lens' LaunchGroupConfig (Prelude.Maybe Prelude.Text)+launchGroupConfig_description = Lens.lens (\LaunchGroupConfig' {description} -> description) (\s@LaunchGroupConfig' {} a -> s {description = a} :: LaunchGroupConfig)++-- | The feature that this launch is using.+launchGroupConfig_feature :: Lens.Lens' LaunchGroupConfig Prelude.Text+launchGroupConfig_feature = Lens.lens (\LaunchGroupConfig' {feature} -> feature) (\s@LaunchGroupConfig' {} a -> s {feature = a} :: LaunchGroupConfig)++-- | A name for this launch group.+launchGroupConfig_name :: Lens.Lens' LaunchGroupConfig Prelude.Text+launchGroupConfig_name = Lens.lens (\LaunchGroupConfig' {name} -> name) (\s@LaunchGroupConfig' {} a -> s {name = a} :: LaunchGroupConfig)++-- | The feature variation to use for this launch group.+launchGroupConfig_variation :: Lens.Lens' LaunchGroupConfig Prelude.Text+launchGroupConfig_variation = Lens.lens (\LaunchGroupConfig' {variation} -> variation) (\s@LaunchGroupConfig' {} a -> s {variation = a} :: LaunchGroupConfig)++instance Prelude.Hashable LaunchGroupConfig where+  hashWithSalt _salt LaunchGroupConfig' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` feature+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` variation++instance Prelude.NFData LaunchGroupConfig where+  rnf LaunchGroupConfig' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf feature+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf variation++instance Data.ToJSON LaunchGroupConfig where+  toJSON LaunchGroupConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            Prelude.Just ("feature" Data..= feature),+            Prelude.Just ("name" Data..= name),+            Prelude.Just ("variation" Data..= variation)+          ]+      )
+ gen/Amazonka/Evidently/Types/LaunchStatus.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.LaunchStatus+-- 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.Evidently.Types.LaunchStatus+  ( LaunchStatus+      ( ..,+        LaunchStatus_CANCELLED,+        LaunchStatus_COMPLETED,+        LaunchStatus_CREATED,+        LaunchStatus_RUNNING,+        LaunchStatus_UPDATING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LaunchStatus = LaunchStatus'+  { fromLaunchStatus ::+      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 LaunchStatus_CANCELLED :: LaunchStatus+pattern LaunchStatus_CANCELLED = LaunchStatus' "CANCELLED"++pattern LaunchStatus_COMPLETED :: LaunchStatus+pattern LaunchStatus_COMPLETED = LaunchStatus' "COMPLETED"++pattern LaunchStatus_CREATED :: LaunchStatus+pattern LaunchStatus_CREATED = LaunchStatus' "CREATED"++pattern LaunchStatus_RUNNING :: LaunchStatus+pattern LaunchStatus_RUNNING = LaunchStatus' "RUNNING"++pattern LaunchStatus_UPDATING :: LaunchStatus+pattern LaunchStatus_UPDATING = LaunchStatus' "UPDATING"++{-# COMPLETE+  LaunchStatus_CANCELLED,+  LaunchStatus_COMPLETED,+  LaunchStatus_CREATED,+  LaunchStatus_RUNNING,+  LaunchStatus_UPDATING,+  LaunchStatus'+  #-}
+ gen/Amazonka/Evidently/Types/LaunchStopDesiredState.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.LaunchStopDesiredState+-- 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.Evidently.Types.LaunchStopDesiredState+  ( LaunchStopDesiredState+      ( ..,+        LaunchStopDesiredState_CANCELLED,+        LaunchStopDesiredState_COMPLETED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LaunchStopDesiredState = LaunchStopDesiredState'+  { fromLaunchStopDesiredState ::+      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 LaunchStopDesiredState_CANCELLED :: LaunchStopDesiredState+pattern LaunchStopDesiredState_CANCELLED = LaunchStopDesiredState' "CANCELLED"++pattern LaunchStopDesiredState_COMPLETED :: LaunchStopDesiredState+pattern LaunchStopDesiredState_COMPLETED = LaunchStopDesiredState' "COMPLETED"++{-# COMPLETE+  LaunchStopDesiredState_CANCELLED,+  LaunchStopDesiredState_COMPLETED,+  LaunchStopDesiredState'+  #-}
+ gen/Amazonka/Evidently/Types/LaunchType.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.LaunchType+-- 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.Evidently.Types.LaunchType+  ( LaunchType+      ( ..,+        LaunchType_Aws_evidently_splits+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LaunchType = LaunchType'+  { fromLaunchType ::+      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 LaunchType_Aws_evidently_splits :: LaunchType+pattern LaunchType_Aws_evidently_splits = LaunchType' "aws.evidently.splits"++{-# COMPLETE+  LaunchType_Aws_evidently_splits,+  LaunchType'+  #-}
+ gen/Amazonka/Evidently/Types/MetricDefinition.hs view
@@ -0,0 +1,133 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.MetricDefinition+-- 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.Evidently.Types.MetricDefinition where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | This structure defines a metric that is being used to evaluate the+-- variations during a launch or experiment.+--+-- /See:/ 'newMetricDefinition' smart constructor.+data MetricDefinition = MetricDefinition'+  { -- | The entity, such as a user or session, that does an action that causes a+    -- metric value to be recorded.+    entityIdKey :: Prelude.Maybe Prelude.Text,+    -- | The EventBridge event pattern that defines how the metric is recorded.+    --+    -- For more information about EventBridge event patterns, see+    -- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html Amazon EventBridge event patterns>.+    eventPattern :: Prelude.Maybe Prelude.Text,+    -- | The name of the metric.+    name :: Prelude.Maybe Prelude.Text,+    -- | The label for the units that the metric is measuring.+    unitLabel :: Prelude.Maybe Prelude.Text,+    -- | The value that is tracked to produce the metric.+    valueKey :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MetricDefinition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'entityIdKey', 'metricDefinition_entityIdKey' - The entity, such as a user or session, that does an action that causes a+-- metric value to be recorded.+--+-- 'eventPattern', 'metricDefinition_eventPattern' - The EventBridge event pattern that defines how the metric is recorded.+--+-- For more information about EventBridge event patterns, see+-- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html Amazon EventBridge event patterns>.+--+-- 'name', 'metricDefinition_name' - The name of the metric.+--+-- 'unitLabel', 'metricDefinition_unitLabel' - The label for the units that the metric is measuring.+--+-- 'valueKey', 'metricDefinition_valueKey' - The value that is tracked to produce the metric.+newMetricDefinition ::+  MetricDefinition+newMetricDefinition =+  MetricDefinition'+    { entityIdKey = Prelude.Nothing,+      eventPattern = Prelude.Nothing,+      name = Prelude.Nothing,+      unitLabel = Prelude.Nothing,+      valueKey = Prelude.Nothing+    }++-- | The entity, such as a user or session, that does an action that causes a+-- metric value to be recorded.+metricDefinition_entityIdKey :: Lens.Lens' MetricDefinition (Prelude.Maybe Prelude.Text)+metricDefinition_entityIdKey = Lens.lens (\MetricDefinition' {entityIdKey} -> entityIdKey) (\s@MetricDefinition' {} a -> s {entityIdKey = a} :: MetricDefinition)++-- | The EventBridge event pattern that defines how the metric is recorded.+--+-- For more information about EventBridge event patterns, see+-- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html Amazon EventBridge event patterns>.+metricDefinition_eventPattern :: Lens.Lens' MetricDefinition (Prelude.Maybe Prelude.Text)+metricDefinition_eventPattern = Lens.lens (\MetricDefinition' {eventPattern} -> eventPattern) (\s@MetricDefinition' {} a -> s {eventPattern = a} :: MetricDefinition)++-- | The name of the metric.+metricDefinition_name :: Lens.Lens' MetricDefinition (Prelude.Maybe Prelude.Text)+metricDefinition_name = Lens.lens (\MetricDefinition' {name} -> name) (\s@MetricDefinition' {} a -> s {name = a} :: MetricDefinition)++-- | The label for the units that the metric is measuring.+metricDefinition_unitLabel :: Lens.Lens' MetricDefinition (Prelude.Maybe Prelude.Text)+metricDefinition_unitLabel = Lens.lens (\MetricDefinition' {unitLabel} -> unitLabel) (\s@MetricDefinition' {} a -> s {unitLabel = a} :: MetricDefinition)++-- | The value that is tracked to produce the metric.+metricDefinition_valueKey :: Lens.Lens' MetricDefinition (Prelude.Maybe Prelude.Text)+metricDefinition_valueKey = Lens.lens (\MetricDefinition' {valueKey} -> valueKey) (\s@MetricDefinition' {} a -> s {valueKey = a} :: MetricDefinition)++instance Data.FromJSON MetricDefinition where+  parseJSON =+    Data.withObject+      "MetricDefinition"+      ( \x ->+          MetricDefinition'+            Prelude.<$> (x Data..:? "entityIdKey")+            Prelude.<*> (x Data..:? "eventPattern")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "unitLabel")+            Prelude.<*> (x Data..:? "valueKey")+      )++instance Prelude.Hashable MetricDefinition where+  hashWithSalt _salt MetricDefinition' {..} =+    _salt+      `Prelude.hashWithSalt` entityIdKey+      `Prelude.hashWithSalt` eventPattern+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` unitLabel+      `Prelude.hashWithSalt` valueKey++instance Prelude.NFData MetricDefinition where+  rnf MetricDefinition' {..} =+    Prelude.rnf entityIdKey+      `Prelude.seq` Prelude.rnf eventPattern+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf unitLabel+      `Prelude.seq` Prelude.rnf valueKey
+ gen/Amazonka/Evidently/Types/MetricDefinitionConfig.hs view
@@ -0,0 +1,142 @@+{-# 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.Evidently.Types.MetricDefinitionConfig+-- 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.Evidently.Types.MetricDefinitionConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | This structure defines a metric that you want to use to evaluate the+-- variations during a launch or experiment.+--+-- /See:/ 'newMetricDefinitionConfig' smart constructor.+data MetricDefinitionConfig = MetricDefinitionConfig'+  { -- | The EventBridge event pattern that defines how the metric is recorded.+    --+    -- For more information about EventBridge event patterns, see+    -- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html Amazon EventBridge event patterns>.+    eventPattern :: Prelude.Maybe Prelude.Text,+    -- | A label for the units that the metric is measuring.+    unitLabel :: Prelude.Maybe Prelude.Text,+    -- | The entity, such as a user or session, that does an action that causes a+    -- metric value to be recorded. An example is @userDetails.userID@.+    entityIdKey :: Prelude.Text,+    -- | A name for the metric.+    name :: Prelude.Text,+    -- | The value that is tracked to produce the metric.+    valueKey :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MetricDefinitionConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'eventPattern', 'metricDefinitionConfig_eventPattern' - The EventBridge event pattern that defines how the metric is recorded.+--+-- For more information about EventBridge event patterns, see+-- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html Amazon EventBridge event patterns>.+--+-- 'unitLabel', 'metricDefinitionConfig_unitLabel' - A label for the units that the metric is measuring.+--+-- 'entityIdKey', 'metricDefinitionConfig_entityIdKey' - The entity, such as a user or session, that does an action that causes a+-- metric value to be recorded. An example is @userDetails.userID@.+--+-- 'name', 'metricDefinitionConfig_name' - A name for the metric.+--+-- 'valueKey', 'metricDefinitionConfig_valueKey' - The value that is tracked to produce the metric.+newMetricDefinitionConfig ::+  -- | 'entityIdKey'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  -- | 'valueKey'+  Prelude.Text ->+  MetricDefinitionConfig+newMetricDefinitionConfig+  pEntityIdKey_+  pName_+  pValueKey_ =+    MetricDefinitionConfig'+      { eventPattern =+          Prelude.Nothing,+        unitLabel = Prelude.Nothing,+        entityIdKey = pEntityIdKey_,+        name = pName_,+        valueKey = pValueKey_+      }++-- | The EventBridge event pattern that defines how the metric is recorded.+--+-- For more information about EventBridge event patterns, see+-- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html Amazon EventBridge event patterns>.+metricDefinitionConfig_eventPattern :: Lens.Lens' MetricDefinitionConfig (Prelude.Maybe Prelude.Text)+metricDefinitionConfig_eventPattern = Lens.lens (\MetricDefinitionConfig' {eventPattern} -> eventPattern) (\s@MetricDefinitionConfig' {} a -> s {eventPattern = a} :: MetricDefinitionConfig)++-- | A label for the units that the metric is measuring.+metricDefinitionConfig_unitLabel :: Lens.Lens' MetricDefinitionConfig (Prelude.Maybe Prelude.Text)+metricDefinitionConfig_unitLabel = Lens.lens (\MetricDefinitionConfig' {unitLabel} -> unitLabel) (\s@MetricDefinitionConfig' {} a -> s {unitLabel = a} :: MetricDefinitionConfig)++-- | The entity, such as a user or session, that does an action that causes a+-- metric value to be recorded. An example is @userDetails.userID@.+metricDefinitionConfig_entityIdKey :: Lens.Lens' MetricDefinitionConfig Prelude.Text+metricDefinitionConfig_entityIdKey = Lens.lens (\MetricDefinitionConfig' {entityIdKey} -> entityIdKey) (\s@MetricDefinitionConfig' {} a -> s {entityIdKey = a} :: MetricDefinitionConfig)++-- | A name for the metric.+metricDefinitionConfig_name :: Lens.Lens' MetricDefinitionConfig Prelude.Text+metricDefinitionConfig_name = Lens.lens (\MetricDefinitionConfig' {name} -> name) (\s@MetricDefinitionConfig' {} a -> s {name = a} :: MetricDefinitionConfig)++-- | The value that is tracked to produce the metric.+metricDefinitionConfig_valueKey :: Lens.Lens' MetricDefinitionConfig Prelude.Text+metricDefinitionConfig_valueKey = Lens.lens (\MetricDefinitionConfig' {valueKey} -> valueKey) (\s@MetricDefinitionConfig' {} a -> s {valueKey = a} :: MetricDefinitionConfig)++instance Prelude.Hashable MetricDefinitionConfig where+  hashWithSalt _salt MetricDefinitionConfig' {..} =+    _salt+      `Prelude.hashWithSalt` eventPattern+      `Prelude.hashWithSalt` unitLabel+      `Prelude.hashWithSalt` entityIdKey+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` valueKey++instance Prelude.NFData MetricDefinitionConfig where+  rnf MetricDefinitionConfig' {..} =+    Prelude.rnf eventPattern+      `Prelude.seq` Prelude.rnf unitLabel+      `Prelude.seq` Prelude.rnf entityIdKey+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf valueKey++instance Data.ToJSON MetricDefinitionConfig where+  toJSON MetricDefinitionConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("eventPattern" Data..=) Prelude.<$> eventPattern,+            ("unitLabel" Data..=) Prelude.<$> unitLabel,+            Prelude.Just ("entityIdKey" Data..= entityIdKey),+            Prelude.Just ("name" Data..= name),+            Prelude.Just ("valueKey" Data..= valueKey)+          ]+      )
+ gen/Amazonka/Evidently/Types/MetricGoal.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.MetricGoal+-- 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.Evidently.Types.MetricGoal where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.ChangeDirectionEnum+import Amazonka.Evidently.Types.MetricDefinition+import qualified Amazonka.Prelude as Prelude++-- | A structure that tells Evidently whether higher or lower values are+-- desired for a metric that is used in an experiment.+--+-- /See:/ 'newMetricGoal' smart constructor.+data MetricGoal = MetricGoal'+  { -- | @INCREASE@ means that a variation with a higher number for this metric+    -- is performing better.+    --+    -- @DECREASE@ means that a variation with a lower number for this metric is+    -- performing better.+    desiredChange :: Prelude.Maybe ChangeDirectionEnum,+    -- | A structure that contains details about the metric.+    metricDefinition :: MetricDefinition+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MetricGoal' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'desiredChange', 'metricGoal_desiredChange' - @INCREASE@ means that a variation with a higher number for this metric+-- is performing better.+--+-- @DECREASE@ means that a variation with a lower number for this metric is+-- performing better.+--+-- 'metricDefinition', 'metricGoal_metricDefinition' - A structure that contains details about the metric.+newMetricGoal ::+  -- | 'metricDefinition'+  MetricDefinition ->+  MetricGoal+newMetricGoal pMetricDefinition_ =+  MetricGoal'+    { desiredChange = Prelude.Nothing,+      metricDefinition = pMetricDefinition_+    }++-- | @INCREASE@ means that a variation with a higher number for this metric+-- is performing better.+--+-- @DECREASE@ means that a variation with a lower number for this metric is+-- performing better.+metricGoal_desiredChange :: Lens.Lens' MetricGoal (Prelude.Maybe ChangeDirectionEnum)+metricGoal_desiredChange = Lens.lens (\MetricGoal' {desiredChange} -> desiredChange) (\s@MetricGoal' {} a -> s {desiredChange = a} :: MetricGoal)++-- | A structure that contains details about the metric.+metricGoal_metricDefinition :: Lens.Lens' MetricGoal MetricDefinition+metricGoal_metricDefinition = Lens.lens (\MetricGoal' {metricDefinition} -> metricDefinition) (\s@MetricGoal' {} a -> s {metricDefinition = a} :: MetricGoal)++instance Data.FromJSON MetricGoal where+  parseJSON =+    Data.withObject+      "MetricGoal"+      ( \x ->+          MetricGoal'+            Prelude.<$> (x Data..:? "desiredChange")+            Prelude.<*> (x Data..: "metricDefinition")+      )++instance Prelude.Hashable MetricGoal where+  hashWithSalt _salt MetricGoal' {..} =+    _salt+      `Prelude.hashWithSalt` desiredChange+      `Prelude.hashWithSalt` metricDefinition++instance Prelude.NFData MetricGoal where+  rnf MetricGoal' {..} =+    Prelude.rnf desiredChange+      `Prelude.seq` Prelude.rnf metricDefinition
+ gen/Amazonka/Evidently/Types/MetricGoalConfig.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.MetricGoalConfig+-- 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.Evidently.Types.MetricGoalConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.ChangeDirectionEnum+import Amazonka.Evidently.Types.MetricDefinitionConfig+import qualified Amazonka.Prelude as Prelude++-- | Use this structure to tell Evidently whether higher or lower values are+-- desired for a metric that is used in an experiment.+--+-- /See:/ 'newMetricGoalConfig' smart constructor.+data MetricGoalConfig = MetricGoalConfig'+  { -- | @INCREASE@ means that a variation with a higher number for this metric+    -- is performing better.+    --+    -- @DECREASE@ means that a variation with a lower number for this metric is+    -- performing better.+    desiredChange :: Prelude.Maybe ChangeDirectionEnum,+    -- | A structure that contains details about the metric.+    metricDefinition :: MetricDefinitionConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MetricGoalConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'desiredChange', 'metricGoalConfig_desiredChange' - @INCREASE@ means that a variation with a higher number for this metric+-- is performing better.+--+-- @DECREASE@ means that a variation with a lower number for this metric is+-- performing better.+--+-- 'metricDefinition', 'metricGoalConfig_metricDefinition' - A structure that contains details about the metric.+newMetricGoalConfig ::+  -- | 'metricDefinition'+  MetricDefinitionConfig ->+  MetricGoalConfig+newMetricGoalConfig pMetricDefinition_ =+  MetricGoalConfig'+    { desiredChange = Prelude.Nothing,+      metricDefinition = pMetricDefinition_+    }++-- | @INCREASE@ means that a variation with a higher number for this metric+-- is performing better.+--+-- @DECREASE@ means that a variation with a lower number for this metric is+-- performing better.+metricGoalConfig_desiredChange :: Lens.Lens' MetricGoalConfig (Prelude.Maybe ChangeDirectionEnum)+metricGoalConfig_desiredChange = Lens.lens (\MetricGoalConfig' {desiredChange} -> desiredChange) (\s@MetricGoalConfig' {} a -> s {desiredChange = a} :: MetricGoalConfig)++-- | A structure that contains details about the metric.+metricGoalConfig_metricDefinition :: Lens.Lens' MetricGoalConfig MetricDefinitionConfig+metricGoalConfig_metricDefinition = Lens.lens (\MetricGoalConfig' {metricDefinition} -> metricDefinition) (\s@MetricGoalConfig' {} a -> s {metricDefinition = a} :: MetricGoalConfig)++instance Prelude.Hashable MetricGoalConfig where+  hashWithSalt _salt MetricGoalConfig' {..} =+    _salt+      `Prelude.hashWithSalt` desiredChange+      `Prelude.hashWithSalt` metricDefinition++instance Prelude.NFData MetricGoalConfig where+  rnf MetricGoalConfig' {..} =+    Prelude.rnf desiredChange+      `Prelude.seq` Prelude.rnf metricDefinition++instance Data.ToJSON MetricGoalConfig where+  toJSON MetricGoalConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("desiredChange" Data..=) Prelude.<$> desiredChange,+            Prelude.Just+              ("metricDefinition" Data..= metricDefinition)+          ]+      )
+ gen/Amazonka/Evidently/Types/MetricMonitor.hs view
@@ -0,0 +1,75 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.MetricMonitor+-- 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.Evidently.Types.MetricMonitor where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.MetricDefinition+import qualified Amazonka.Prelude as Prelude++-- | A structure that defines a metric to be used to monitor performance of+-- the variations during a launch.+--+-- /See:/ 'newMetricMonitor' smart constructor.+data MetricMonitor = MetricMonitor'+  { -- | A structure that defines the metric.+    metricDefinition :: MetricDefinition+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MetricMonitor' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'metricDefinition', 'metricMonitor_metricDefinition' - A structure that defines the metric.+newMetricMonitor ::+  -- | 'metricDefinition'+  MetricDefinition ->+  MetricMonitor+newMetricMonitor pMetricDefinition_ =+  MetricMonitor'+    { metricDefinition =+        pMetricDefinition_+    }++-- | A structure that defines the metric.+metricMonitor_metricDefinition :: Lens.Lens' MetricMonitor MetricDefinition+metricMonitor_metricDefinition = Lens.lens (\MetricMonitor' {metricDefinition} -> metricDefinition) (\s@MetricMonitor' {} a -> s {metricDefinition = a} :: MetricMonitor)++instance Data.FromJSON MetricMonitor where+  parseJSON =+    Data.withObject+      "MetricMonitor"+      ( \x ->+          MetricMonitor'+            Prelude.<$> (x Data..: "metricDefinition")+      )++instance Prelude.Hashable MetricMonitor where+  hashWithSalt _salt MetricMonitor' {..} =+    _salt `Prelude.hashWithSalt` metricDefinition++instance Prelude.NFData MetricMonitor where+  rnf MetricMonitor' {..} = Prelude.rnf metricDefinition
+ gen/Amazonka/Evidently/Types/MetricMonitorConfig.hs view
@@ -0,0 +1,76 @@+{-# 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.Evidently.Types.MetricMonitorConfig+-- 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.Evidently.Types.MetricMonitorConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.MetricDefinitionConfig+import qualified Amazonka.Prelude as Prelude++-- | A structure that defines a metric to be used to monitor performance of+-- the variations during a launch.+--+-- /See:/ 'newMetricMonitorConfig' smart constructor.+data MetricMonitorConfig = MetricMonitorConfig'+  { -- | A structure that defines the metric.+    metricDefinition :: MetricDefinitionConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MetricMonitorConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'metricDefinition', 'metricMonitorConfig_metricDefinition' - A structure that defines the metric.+newMetricMonitorConfig ::+  -- | 'metricDefinition'+  MetricDefinitionConfig ->+  MetricMonitorConfig+newMetricMonitorConfig pMetricDefinition_ =+  MetricMonitorConfig'+    { metricDefinition =+        pMetricDefinition_+    }++-- | A structure that defines the metric.+metricMonitorConfig_metricDefinition :: Lens.Lens' MetricMonitorConfig MetricDefinitionConfig+metricMonitorConfig_metricDefinition = Lens.lens (\MetricMonitorConfig' {metricDefinition} -> metricDefinition) (\s@MetricMonitorConfig' {} a -> s {metricDefinition = a} :: MetricMonitorConfig)++instance Prelude.Hashable MetricMonitorConfig where+  hashWithSalt _salt MetricMonitorConfig' {..} =+    _salt `Prelude.hashWithSalt` metricDefinition++instance Prelude.NFData MetricMonitorConfig where+  rnf MetricMonitorConfig' {..} =+    Prelude.rnf metricDefinition++instance Data.ToJSON MetricMonitorConfig where+  toJSON MetricMonitorConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("metricDefinition" Data..= metricDefinition)+          ]+      )
+ gen/Amazonka/Evidently/Types/OnlineAbConfig.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.Evidently.Types.OnlineAbConfig+-- 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.Evidently.Types.OnlineAbConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A structure that contains the configuration of which variation to use as+-- the \"control\" version. The \"control\" version is used for comparison+-- with other variations. This structure also specifies how much experiment+-- traffic is allocated to each variation.+--+-- /See:/ 'newOnlineAbConfig' smart constructor.+data OnlineAbConfig = OnlineAbConfig'+  { -- | The name of the variation that is to be the default variation that the+    -- other variations are compared to.+    controlTreatmentName :: Prelude.Maybe Prelude.Text,+    -- | A set of key-value pairs. The keys are variation names, and the values+    -- are the portion of experiment traffic to be assigned to that variation.+    -- Specify the traffic portion in thousandths of a percent, so 20,000 for a+    -- variation would allocate 20% of the experiment traffic to that+    -- variation.+    treatmentWeights :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Natural)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OnlineAbConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'controlTreatmentName', 'onlineAbConfig_controlTreatmentName' - The name of the variation that is to be the default variation that the+-- other variations are compared to.+--+-- 'treatmentWeights', 'onlineAbConfig_treatmentWeights' - A set of key-value pairs. The keys are variation names, and the values+-- are the portion of experiment traffic to be assigned to that variation.+-- Specify the traffic portion in thousandths of a percent, so 20,000 for a+-- variation would allocate 20% of the experiment traffic to that+-- variation.+newOnlineAbConfig ::+  OnlineAbConfig+newOnlineAbConfig =+  OnlineAbConfig'+    { controlTreatmentName =+        Prelude.Nothing,+      treatmentWeights = Prelude.Nothing+    }++-- | The name of the variation that is to be the default variation that the+-- other variations are compared to.+onlineAbConfig_controlTreatmentName :: Lens.Lens' OnlineAbConfig (Prelude.Maybe Prelude.Text)+onlineAbConfig_controlTreatmentName = Lens.lens (\OnlineAbConfig' {controlTreatmentName} -> controlTreatmentName) (\s@OnlineAbConfig' {} a -> s {controlTreatmentName = a} :: OnlineAbConfig)++-- | A set of key-value pairs. The keys are variation names, and the values+-- are the portion of experiment traffic to be assigned to that variation.+-- Specify the traffic portion in thousandths of a percent, so 20,000 for a+-- variation would allocate 20% of the experiment traffic to that+-- variation.+onlineAbConfig_treatmentWeights :: Lens.Lens' OnlineAbConfig (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Natural))+onlineAbConfig_treatmentWeights = Lens.lens (\OnlineAbConfig' {treatmentWeights} -> treatmentWeights) (\s@OnlineAbConfig' {} a -> s {treatmentWeights = a} :: OnlineAbConfig) Prelude.. Lens.mapping Lens.coerced++instance Prelude.Hashable OnlineAbConfig where+  hashWithSalt _salt OnlineAbConfig' {..} =+    _salt+      `Prelude.hashWithSalt` controlTreatmentName+      `Prelude.hashWithSalt` treatmentWeights++instance Prelude.NFData OnlineAbConfig where+  rnf OnlineAbConfig' {..} =+    Prelude.rnf controlTreatmentName+      `Prelude.seq` Prelude.rnf treatmentWeights++instance Data.ToJSON OnlineAbConfig where+  toJSON OnlineAbConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("controlTreatmentName" Data..=)+              Prelude.<$> controlTreatmentName,+            ("treatmentWeights" Data..=)+              Prelude.<$> treatmentWeights+          ]+      )
+ gen/Amazonka/Evidently/Types/OnlineAbDefinition.hs view
@@ -0,0 +1,106 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.OnlineAbDefinition+-- 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.Evidently.Types.OnlineAbDefinition where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A structure that contains the configuration of which variation to use as+-- the \"control\" version. The \"control\" version is used for comparison+-- with other variations. This structure also specifies how much experiment+-- traffic is allocated to each variation.+--+-- /See:/ 'newOnlineAbDefinition' smart constructor.+data OnlineAbDefinition = OnlineAbDefinition'+  { -- | The name of the variation that is the default variation that the other+    -- variations are compared to.+    controlTreatmentName :: Prelude.Maybe Prelude.Text,+    -- | A set of key-value pairs. The keys are variation names, and the values+    -- are the portion of experiment traffic to be assigned to that variation.+    -- The traffic portion is specified in thousandths of a percent, so 20,000+    -- for a variation would allocate 20% of the experiment traffic to that+    -- variation.+    treatmentWeights :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Natural)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OnlineAbDefinition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'controlTreatmentName', 'onlineAbDefinition_controlTreatmentName' - The name of the variation that is the default variation that the other+-- variations are compared to.+--+-- 'treatmentWeights', 'onlineAbDefinition_treatmentWeights' - A set of key-value pairs. The keys are variation names, and the values+-- are the portion of experiment traffic to be assigned to that variation.+-- The traffic portion is specified in thousandths of a percent, so 20,000+-- for a variation would allocate 20% of the experiment traffic to that+-- variation.+newOnlineAbDefinition ::+  OnlineAbDefinition+newOnlineAbDefinition =+  OnlineAbDefinition'+    { controlTreatmentName =+        Prelude.Nothing,+      treatmentWeights = Prelude.Nothing+    }++-- | The name of the variation that is the default variation that the other+-- variations are compared to.+onlineAbDefinition_controlTreatmentName :: Lens.Lens' OnlineAbDefinition (Prelude.Maybe Prelude.Text)+onlineAbDefinition_controlTreatmentName = Lens.lens (\OnlineAbDefinition' {controlTreatmentName} -> controlTreatmentName) (\s@OnlineAbDefinition' {} a -> s {controlTreatmentName = a} :: OnlineAbDefinition)++-- | A set of key-value pairs. The keys are variation names, and the values+-- are the portion of experiment traffic to be assigned to that variation.+-- The traffic portion is specified in thousandths of a percent, so 20,000+-- for a variation would allocate 20% of the experiment traffic to that+-- variation.+onlineAbDefinition_treatmentWeights :: Lens.Lens' OnlineAbDefinition (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Natural))+onlineAbDefinition_treatmentWeights = Lens.lens (\OnlineAbDefinition' {treatmentWeights} -> treatmentWeights) (\s@OnlineAbDefinition' {} a -> s {treatmentWeights = a} :: OnlineAbDefinition) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON OnlineAbDefinition where+  parseJSON =+    Data.withObject+      "OnlineAbDefinition"+      ( \x ->+          OnlineAbDefinition'+            Prelude.<$> (x Data..:? "controlTreatmentName")+            Prelude.<*> ( x+                            Data..:? "treatmentWeights"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable OnlineAbDefinition where+  hashWithSalt _salt OnlineAbDefinition' {..} =+    _salt+      `Prelude.hashWithSalt` controlTreatmentName+      `Prelude.hashWithSalt` treatmentWeights++instance Prelude.NFData OnlineAbDefinition where+  rnf OnlineAbDefinition' {..} =+    Prelude.rnf controlTreatmentName+      `Prelude.seq` Prelude.rnf treatmentWeights
+ gen/Amazonka/Evidently/Types/Project.hs view
@@ -0,0 +1,267 @@+{-# 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.Evidently.Types.Project+-- 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.Evidently.Types.Project where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.ProjectAppConfigResource+import Amazonka.Evidently.Types.ProjectDataDelivery+import Amazonka.Evidently.Types.ProjectStatus+import qualified Amazonka.Prelude as Prelude++-- | This structure defines a project, which is the logical object in+-- Evidently that can contain features, launches, and experiments. Use+-- projects to group similar features together.+--+-- /See:/ 'newProject' smart constructor.+data Project = Project'+  { -- | The number of ongoing experiments currently in the project.+    activeExperimentCount :: Prelude.Maybe Prelude.Integer,+    -- | The number of ongoing launches currently in the project.+    activeLaunchCount :: Prelude.Maybe Prelude.Integer,+    -- | This structure defines the configuration of how your application+    -- integrates with AppConfig to run client-side evaluation.+    appConfigResource :: Prelude.Maybe ProjectAppConfigResource,+    -- | A structure that contains information about where Evidently is to store+    -- evaluation events for longer term storage.+    dataDelivery :: Prelude.Maybe ProjectDataDelivery,+    -- | The user-entered description of the project.+    description :: Prelude.Maybe Prelude.Text,+    -- | The number of experiments currently in the project. This includes all+    -- experiments that have been created and not deleted, whether they are+    -- ongoing or not.+    experimentCount :: Prelude.Maybe Prelude.Integer,+    -- | The number of features currently in the project.+    featureCount :: Prelude.Maybe Prelude.Integer,+    -- | The number of launches currently in the project. This includes all+    -- launches that have been created and not deleted, whether they are+    -- ongoing or not.+    launchCount :: Prelude.Maybe Prelude.Integer,+    -- | The list of tag keys and values associated with this project.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name or ARN of the project.+    arn :: Prelude.Text,+    -- | The date and time that the project is created.+    createdTime :: Data.POSIX,+    -- | The date and time that the project was most recently updated.+    lastUpdatedTime :: Data.POSIX,+    -- | The name of the project.+    name :: Prelude.Text,+    -- | The current state of the project.+    status :: ProjectStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Project' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'activeExperimentCount', 'project_activeExperimentCount' - The number of ongoing experiments currently in the project.+--+-- 'activeLaunchCount', 'project_activeLaunchCount' - The number of ongoing launches currently in the project.+--+-- 'appConfigResource', 'project_appConfigResource' - This structure defines the configuration of how your application+-- integrates with AppConfig to run client-side evaluation.+--+-- 'dataDelivery', 'project_dataDelivery' - A structure that contains information about where Evidently is to store+-- evaluation events for longer term storage.+--+-- 'description', 'project_description' - The user-entered description of the project.+--+-- 'experimentCount', 'project_experimentCount' - The number of experiments currently in the project. This includes all+-- experiments that have been created and not deleted, whether they are+-- ongoing or not.+--+-- 'featureCount', 'project_featureCount' - The number of features currently in the project.+--+-- 'launchCount', 'project_launchCount' - The number of launches currently in the project. This includes all+-- launches that have been created and not deleted, whether they are+-- ongoing or not.+--+-- 'tags', 'project_tags' - The list of tag keys and values associated with this project.+--+-- 'arn', 'project_arn' - The name or ARN of the project.+--+-- 'createdTime', 'project_createdTime' - The date and time that the project is created.+--+-- 'lastUpdatedTime', 'project_lastUpdatedTime' - The date and time that the project was most recently updated.+--+-- 'name', 'project_name' - The name of the project.+--+-- 'status', 'project_status' - The current state of the project.+newProject ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdTime'+  Prelude.UTCTime ->+  -- | 'lastUpdatedTime'+  Prelude.UTCTime ->+  -- | 'name'+  Prelude.Text ->+  -- | 'status'+  ProjectStatus ->+  Project+newProject+  pArn_+  pCreatedTime_+  pLastUpdatedTime_+  pName_+  pStatus_ =+    Project'+      { activeExperimentCount = Prelude.Nothing,+        activeLaunchCount = Prelude.Nothing,+        appConfigResource = Prelude.Nothing,+        dataDelivery = Prelude.Nothing,+        description = Prelude.Nothing,+        experimentCount = Prelude.Nothing,+        featureCount = Prelude.Nothing,+        launchCount = Prelude.Nothing,+        tags = Prelude.Nothing,+        arn = pArn_,+        createdTime = Data._Time Lens.# pCreatedTime_,+        lastUpdatedTime =+          Data._Time Lens.# pLastUpdatedTime_,+        name = pName_,+        status = pStatus_+      }++-- | The number of ongoing experiments currently in the project.+project_activeExperimentCount :: Lens.Lens' Project (Prelude.Maybe Prelude.Integer)+project_activeExperimentCount = Lens.lens (\Project' {activeExperimentCount} -> activeExperimentCount) (\s@Project' {} a -> s {activeExperimentCount = a} :: Project)++-- | The number of ongoing launches currently in the project.+project_activeLaunchCount :: Lens.Lens' Project (Prelude.Maybe Prelude.Integer)+project_activeLaunchCount = Lens.lens (\Project' {activeLaunchCount} -> activeLaunchCount) (\s@Project' {} a -> s {activeLaunchCount = a} :: Project)++-- | This structure defines the configuration of how your application+-- integrates with AppConfig to run client-side evaluation.+project_appConfigResource :: Lens.Lens' Project (Prelude.Maybe ProjectAppConfigResource)+project_appConfigResource = Lens.lens (\Project' {appConfigResource} -> appConfigResource) (\s@Project' {} a -> s {appConfigResource = a} :: Project)++-- | A structure that contains information about where Evidently is to store+-- evaluation events for longer term storage.+project_dataDelivery :: Lens.Lens' Project (Prelude.Maybe ProjectDataDelivery)+project_dataDelivery = Lens.lens (\Project' {dataDelivery} -> dataDelivery) (\s@Project' {} a -> s {dataDelivery = a} :: Project)++-- | The user-entered description of the project.+project_description :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)+project_description = Lens.lens (\Project' {description} -> description) (\s@Project' {} a -> s {description = a} :: Project)++-- | The number of experiments currently in the project. This includes all+-- experiments that have been created and not deleted, whether they are+-- ongoing or not.+project_experimentCount :: Lens.Lens' Project (Prelude.Maybe Prelude.Integer)+project_experimentCount = Lens.lens (\Project' {experimentCount} -> experimentCount) (\s@Project' {} a -> s {experimentCount = a} :: Project)++-- | The number of features currently in the project.+project_featureCount :: Lens.Lens' Project (Prelude.Maybe Prelude.Integer)+project_featureCount = Lens.lens (\Project' {featureCount} -> featureCount) (\s@Project' {} a -> s {featureCount = a} :: Project)++-- | The number of launches currently in the project. This includes all+-- launches that have been created and not deleted, whether they are+-- ongoing or not.+project_launchCount :: Lens.Lens' Project (Prelude.Maybe Prelude.Integer)+project_launchCount = Lens.lens (\Project' {launchCount} -> launchCount) (\s@Project' {} a -> s {launchCount = a} :: Project)++-- | The list of tag keys and values associated with this project.+project_tags :: Lens.Lens' Project (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+project_tags = Lens.lens (\Project' {tags} -> tags) (\s@Project' {} a -> s {tags = a} :: Project) Prelude.. Lens.mapping Lens.coerced++-- | The name or ARN of the project.+project_arn :: Lens.Lens' Project Prelude.Text+project_arn = Lens.lens (\Project' {arn} -> arn) (\s@Project' {} a -> s {arn = a} :: Project)++-- | The date and time that the project is created.+project_createdTime :: Lens.Lens' Project Prelude.UTCTime+project_createdTime = Lens.lens (\Project' {createdTime} -> createdTime) (\s@Project' {} a -> s {createdTime = a} :: Project) Prelude.. Data._Time++-- | The date and time that the project was most recently updated.+project_lastUpdatedTime :: Lens.Lens' Project Prelude.UTCTime+project_lastUpdatedTime = Lens.lens (\Project' {lastUpdatedTime} -> lastUpdatedTime) (\s@Project' {} a -> s {lastUpdatedTime = a} :: Project) Prelude.. Data._Time++-- | The name of the project.+project_name :: Lens.Lens' Project Prelude.Text+project_name = Lens.lens (\Project' {name} -> name) (\s@Project' {} a -> s {name = a} :: Project)++-- | The current state of the project.+project_status :: Lens.Lens' Project ProjectStatus+project_status = Lens.lens (\Project' {status} -> status) (\s@Project' {} a -> s {status = a} :: Project)++instance Data.FromJSON Project where+  parseJSON =+    Data.withObject+      "Project"+      ( \x ->+          Project'+            Prelude.<$> (x Data..:? "activeExperimentCount")+            Prelude.<*> (x Data..:? "activeLaunchCount")+            Prelude.<*> (x Data..:? "appConfigResource")+            Prelude.<*> (x Data..:? "dataDelivery")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "experimentCount")+            Prelude.<*> (x Data..:? "featureCount")+            Prelude.<*> (x Data..:? "launchCount")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdTime")+            Prelude.<*> (x Data..: "lastUpdatedTime")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "status")+      )++instance Prelude.Hashable Project where+  hashWithSalt _salt Project' {..} =+    _salt+      `Prelude.hashWithSalt` activeExperimentCount+      `Prelude.hashWithSalt` activeLaunchCount+      `Prelude.hashWithSalt` appConfigResource+      `Prelude.hashWithSalt` dataDelivery+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` experimentCount+      `Prelude.hashWithSalt` featureCount+      `Prelude.hashWithSalt` launchCount+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdTime+      `Prelude.hashWithSalt` lastUpdatedTime+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` status++instance Prelude.NFData Project where+  rnf Project' {..} =+    Prelude.rnf activeExperimentCount+      `Prelude.seq` Prelude.rnf activeLaunchCount+      `Prelude.seq` Prelude.rnf appConfigResource+      `Prelude.seq` Prelude.rnf dataDelivery+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf experimentCount+      `Prelude.seq` Prelude.rnf featureCount+      `Prelude.seq` Prelude.rnf launchCount+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdTime+      `Prelude.seq` Prelude.rnf lastUpdatedTime+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/Evidently/Types/ProjectAppConfigResource.hs view
@@ -0,0 +1,113 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.ProjectAppConfigResource+-- 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.Evidently.Types.ProjectAppConfigResource where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | This is a structure that defines the configuration of how your+-- application integrates with AppConfig to run client-side evaluation.+--+-- /See:/ 'newProjectAppConfigResource' smart constructor.+data ProjectAppConfigResource = ProjectAppConfigResource'+  { -- | The ID of the AppConfig application to use for client-side evaluation.+    applicationId :: Prelude.Text,+    -- | The ID of the AppConfig profile to use for client-side evaluation.+    configurationProfileId :: Prelude.Text,+    -- | The ID of the AppConfig environment to use for client-side evaluation.+    -- This must be an environment that is within the application that you+    -- specify for @applicationId@.+    environmentId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProjectAppConfigResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'applicationId', 'projectAppConfigResource_applicationId' - The ID of the AppConfig application to use for client-side evaluation.+--+-- 'configurationProfileId', 'projectAppConfigResource_configurationProfileId' - The ID of the AppConfig profile to use for client-side evaluation.+--+-- 'environmentId', 'projectAppConfigResource_environmentId' - The ID of the AppConfig environment to use for client-side evaluation.+-- This must be an environment that is within the application that you+-- specify for @applicationId@.+newProjectAppConfigResource ::+  -- | 'applicationId'+  Prelude.Text ->+  -- | 'configurationProfileId'+  Prelude.Text ->+  -- | 'environmentId'+  Prelude.Text ->+  ProjectAppConfigResource+newProjectAppConfigResource+  pApplicationId_+  pConfigurationProfileId_+  pEnvironmentId_ =+    ProjectAppConfigResource'+      { applicationId =+          pApplicationId_,+        configurationProfileId = pConfigurationProfileId_,+        environmentId = pEnvironmentId_+      }++-- | The ID of the AppConfig application to use for client-side evaluation.+projectAppConfigResource_applicationId :: Lens.Lens' ProjectAppConfigResource Prelude.Text+projectAppConfigResource_applicationId = Lens.lens (\ProjectAppConfigResource' {applicationId} -> applicationId) (\s@ProjectAppConfigResource' {} a -> s {applicationId = a} :: ProjectAppConfigResource)++-- | The ID of the AppConfig profile to use for client-side evaluation.+projectAppConfigResource_configurationProfileId :: Lens.Lens' ProjectAppConfigResource Prelude.Text+projectAppConfigResource_configurationProfileId = Lens.lens (\ProjectAppConfigResource' {configurationProfileId} -> configurationProfileId) (\s@ProjectAppConfigResource' {} a -> s {configurationProfileId = a} :: ProjectAppConfigResource)++-- | The ID of the AppConfig environment to use for client-side evaluation.+-- This must be an environment that is within the application that you+-- specify for @applicationId@.+projectAppConfigResource_environmentId :: Lens.Lens' ProjectAppConfigResource Prelude.Text+projectAppConfigResource_environmentId = Lens.lens (\ProjectAppConfigResource' {environmentId} -> environmentId) (\s@ProjectAppConfigResource' {} a -> s {environmentId = a} :: ProjectAppConfigResource)++instance Data.FromJSON ProjectAppConfigResource where+  parseJSON =+    Data.withObject+      "ProjectAppConfigResource"+      ( \x ->+          ProjectAppConfigResource'+            Prelude.<$> (x Data..: "applicationId")+            Prelude.<*> (x Data..: "configurationProfileId")+            Prelude.<*> (x Data..: "environmentId")+      )++instance Prelude.Hashable ProjectAppConfigResource where+  hashWithSalt _salt ProjectAppConfigResource' {..} =+    _salt+      `Prelude.hashWithSalt` applicationId+      `Prelude.hashWithSalt` configurationProfileId+      `Prelude.hashWithSalt` environmentId++instance Prelude.NFData ProjectAppConfigResource where+  rnf ProjectAppConfigResource' {..} =+    Prelude.rnf applicationId+      `Prelude.seq` Prelude.rnf configurationProfileId+      `Prelude.seq` Prelude.rnf environmentId
+ gen/Amazonka/Evidently/Types/ProjectAppConfigResourceConfig.hs view
@@ -0,0 +1,107 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.ProjectAppConfigResourceConfig+-- 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.Evidently.Types.ProjectAppConfigResourceConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Use this parameter to configure client-side evaluation for your project.+-- Client-side evaluation allows your application to assign variations to+-- user sessions locally instead of by calling the+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_EvaluateFeature.html EvaluateFeature>+-- operation to assign the variations. This mitigates the latency and+-- availability risks that come with an API call.+--+-- @ProjectAppConfigResource@ is a structure that defines the configuration+-- of how your application integrates with AppConfig to run client-side+-- evaluation.+--+-- /See:/ 'newProjectAppConfigResourceConfig' smart constructor.+data ProjectAppConfigResourceConfig = ProjectAppConfigResourceConfig'+  { -- | The ID of the AppConfig application to use for client-side evaluation.+    applicationId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the AppConfig environment to use for client-side evaluation.+    -- This must be an environment that is within the application that you+    -- specify for @applicationId@.+    environmentId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProjectAppConfigResourceConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'applicationId', 'projectAppConfigResourceConfig_applicationId' - The ID of the AppConfig application to use for client-side evaluation.+--+-- 'environmentId', 'projectAppConfigResourceConfig_environmentId' - The ID of the AppConfig environment to use for client-side evaluation.+-- This must be an environment that is within the application that you+-- specify for @applicationId@.+newProjectAppConfigResourceConfig ::+  ProjectAppConfigResourceConfig+newProjectAppConfigResourceConfig =+  ProjectAppConfigResourceConfig'+    { applicationId =+        Prelude.Nothing,+      environmentId = Prelude.Nothing+    }++-- | The ID of the AppConfig application to use for client-side evaluation.+projectAppConfigResourceConfig_applicationId :: Lens.Lens' ProjectAppConfigResourceConfig (Prelude.Maybe Prelude.Text)+projectAppConfigResourceConfig_applicationId = Lens.lens (\ProjectAppConfigResourceConfig' {applicationId} -> applicationId) (\s@ProjectAppConfigResourceConfig' {} a -> s {applicationId = a} :: ProjectAppConfigResourceConfig)++-- | The ID of the AppConfig environment to use for client-side evaluation.+-- This must be an environment that is within the application that you+-- specify for @applicationId@.+projectAppConfigResourceConfig_environmentId :: Lens.Lens' ProjectAppConfigResourceConfig (Prelude.Maybe Prelude.Text)+projectAppConfigResourceConfig_environmentId = Lens.lens (\ProjectAppConfigResourceConfig' {environmentId} -> environmentId) (\s@ProjectAppConfigResourceConfig' {} a -> s {environmentId = a} :: ProjectAppConfigResourceConfig)++instance+  Prelude.Hashable+    ProjectAppConfigResourceConfig+  where+  hashWithSalt+    _salt+    ProjectAppConfigResourceConfig' {..} =+      _salt+        `Prelude.hashWithSalt` applicationId+        `Prelude.hashWithSalt` environmentId++instance+  Prelude.NFData+    ProjectAppConfigResourceConfig+  where+  rnf ProjectAppConfigResourceConfig' {..} =+    Prelude.rnf applicationId+      `Prelude.seq` Prelude.rnf environmentId++instance Data.ToJSON ProjectAppConfigResourceConfig where+  toJSON ProjectAppConfigResourceConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("applicationId" Data..=) Prelude.<$> applicationId,+            ("environmentId" Data..=) Prelude.<$> environmentId+          ]+      )
+ gen/Amazonka/Evidently/Types/ProjectDataDelivery.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.Evidently.Types.ProjectDataDelivery+-- 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.Evidently.Types.ProjectDataDelivery where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.CloudWatchLogsDestination+import Amazonka.Evidently.Types.S3Destination+import qualified Amazonka.Prelude as Prelude++-- | A structure that contains information about where Evidently is to store+-- evaluation events for longer term storage.+--+-- /See:/ 'newProjectDataDelivery' smart constructor.+data ProjectDataDelivery = ProjectDataDelivery'+  { -- | If the project stores evaluation events in CloudWatch Logs, this+    -- structure stores the log group name.+    cloudWatchLogs :: Prelude.Maybe CloudWatchLogsDestination,+    -- | If the project stores evaluation events in an Amazon S3 bucket, this+    -- structure stores the bucket name and bucket prefix.+    s3Destination :: Prelude.Maybe S3Destination+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProjectDataDelivery' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cloudWatchLogs', 'projectDataDelivery_cloudWatchLogs' - If the project stores evaluation events in CloudWatch Logs, this+-- structure stores the log group name.+--+-- 's3Destination', 'projectDataDelivery_s3Destination' - If the project stores evaluation events in an Amazon S3 bucket, this+-- structure stores the bucket name and bucket prefix.+newProjectDataDelivery ::+  ProjectDataDelivery+newProjectDataDelivery =+  ProjectDataDelivery'+    { cloudWatchLogs =+        Prelude.Nothing,+      s3Destination = Prelude.Nothing+    }++-- | If the project stores evaluation events in CloudWatch Logs, this+-- structure stores the log group name.+projectDataDelivery_cloudWatchLogs :: Lens.Lens' ProjectDataDelivery (Prelude.Maybe CloudWatchLogsDestination)+projectDataDelivery_cloudWatchLogs = Lens.lens (\ProjectDataDelivery' {cloudWatchLogs} -> cloudWatchLogs) (\s@ProjectDataDelivery' {} a -> s {cloudWatchLogs = a} :: ProjectDataDelivery)++-- | If the project stores evaluation events in an Amazon S3 bucket, this+-- structure stores the bucket name and bucket prefix.+projectDataDelivery_s3Destination :: Lens.Lens' ProjectDataDelivery (Prelude.Maybe S3Destination)+projectDataDelivery_s3Destination = Lens.lens (\ProjectDataDelivery' {s3Destination} -> s3Destination) (\s@ProjectDataDelivery' {} a -> s {s3Destination = a} :: ProjectDataDelivery)++instance Data.FromJSON ProjectDataDelivery where+  parseJSON =+    Data.withObject+      "ProjectDataDelivery"+      ( \x ->+          ProjectDataDelivery'+            Prelude.<$> (x Data..:? "cloudWatchLogs")+            Prelude.<*> (x Data..:? "s3Destination")+      )++instance Prelude.Hashable ProjectDataDelivery where+  hashWithSalt _salt ProjectDataDelivery' {..} =+    _salt+      `Prelude.hashWithSalt` cloudWatchLogs+      `Prelude.hashWithSalt` s3Destination++instance Prelude.NFData ProjectDataDelivery where+  rnf ProjectDataDelivery' {..} =+    Prelude.rnf cloudWatchLogs+      `Prelude.seq` Prelude.rnf s3Destination
+ gen/Amazonka/Evidently/Types/ProjectDataDeliveryConfig.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.Evidently.Types.ProjectDataDeliveryConfig+-- 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.Evidently.Types.ProjectDataDeliveryConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.CloudWatchLogsDestinationConfig+import Amazonka.Evidently.Types.S3DestinationConfig+import qualified Amazonka.Prelude as Prelude++-- | A structure that contains information about where Evidently is to store+-- evaluation events for longer term storage.+--+-- /See:/ 'newProjectDataDeliveryConfig' smart constructor.+data ProjectDataDeliveryConfig = ProjectDataDeliveryConfig'+  { -- | If the project stores evaluation events in CloudWatch Logs, this+    -- structure stores the log group name.+    cloudWatchLogs :: Prelude.Maybe CloudWatchLogsDestinationConfig,+    -- | If the project stores evaluation events in an Amazon S3 bucket, this+    -- structure stores the bucket name and bucket prefix.+    s3Destination :: Prelude.Maybe S3DestinationConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProjectDataDeliveryConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cloudWatchLogs', 'projectDataDeliveryConfig_cloudWatchLogs' - If the project stores evaluation events in CloudWatch Logs, this+-- structure stores the log group name.+--+-- 's3Destination', 'projectDataDeliveryConfig_s3Destination' - If the project stores evaluation events in an Amazon S3 bucket, this+-- structure stores the bucket name and bucket prefix.+newProjectDataDeliveryConfig ::+  ProjectDataDeliveryConfig+newProjectDataDeliveryConfig =+  ProjectDataDeliveryConfig'+    { cloudWatchLogs =+        Prelude.Nothing,+      s3Destination = Prelude.Nothing+    }++-- | If the project stores evaluation events in CloudWatch Logs, this+-- structure stores the log group name.+projectDataDeliveryConfig_cloudWatchLogs :: Lens.Lens' ProjectDataDeliveryConfig (Prelude.Maybe CloudWatchLogsDestinationConfig)+projectDataDeliveryConfig_cloudWatchLogs = Lens.lens (\ProjectDataDeliveryConfig' {cloudWatchLogs} -> cloudWatchLogs) (\s@ProjectDataDeliveryConfig' {} a -> s {cloudWatchLogs = a} :: ProjectDataDeliveryConfig)++-- | If the project stores evaluation events in an Amazon S3 bucket, this+-- structure stores the bucket name and bucket prefix.+projectDataDeliveryConfig_s3Destination :: Lens.Lens' ProjectDataDeliveryConfig (Prelude.Maybe S3DestinationConfig)+projectDataDeliveryConfig_s3Destination = Lens.lens (\ProjectDataDeliveryConfig' {s3Destination} -> s3Destination) (\s@ProjectDataDeliveryConfig' {} a -> s {s3Destination = a} :: ProjectDataDeliveryConfig)++instance Prelude.Hashable ProjectDataDeliveryConfig where+  hashWithSalt _salt ProjectDataDeliveryConfig' {..} =+    _salt+      `Prelude.hashWithSalt` cloudWatchLogs+      `Prelude.hashWithSalt` s3Destination++instance Prelude.NFData ProjectDataDeliveryConfig where+  rnf ProjectDataDeliveryConfig' {..} =+    Prelude.rnf cloudWatchLogs+      `Prelude.seq` Prelude.rnf s3Destination++instance Data.ToJSON ProjectDataDeliveryConfig where+  toJSON ProjectDataDeliveryConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("cloudWatchLogs" Data..=)+              Prelude.<$> cloudWatchLogs,+            ("s3Destination" Data..=) Prelude.<$> s3Destination+          ]+      )
+ gen/Amazonka/Evidently/Types/ProjectStatus.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.ProjectStatus+-- 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.Evidently.Types.ProjectStatus+  ( ProjectStatus+      ( ..,+        ProjectStatus_AVAILABLE,+        ProjectStatus_UPDATING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ProjectStatus = ProjectStatus'+  { fromProjectStatus ::+      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 ProjectStatus_AVAILABLE :: ProjectStatus+pattern ProjectStatus_AVAILABLE = ProjectStatus' "AVAILABLE"++pattern ProjectStatus_UPDATING :: ProjectStatus+pattern ProjectStatus_UPDATING = ProjectStatus' "UPDATING"++{-# COMPLETE+  ProjectStatus_AVAILABLE,+  ProjectStatus_UPDATING,+  ProjectStatus'+  #-}
+ gen/Amazonka/Evidently/Types/ProjectSummary.hs view
@@ -0,0 +1,226 @@+{-# 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.Evidently.Types.ProjectSummary+-- 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.Evidently.Types.ProjectSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.ProjectStatus+import qualified Amazonka.Prelude as Prelude++-- | A structure that contains configuration information about an Evidently+-- project.+--+-- /See:/ 'newProjectSummary' smart constructor.+data ProjectSummary = ProjectSummary'+  { -- | The number of experiments currently in the project.+    activeExperimentCount :: Prelude.Maybe Prelude.Integer,+    -- | The number of ongoing launches currently in the project.+    activeLaunchCount :: Prelude.Maybe Prelude.Integer,+    -- | The description of the project.+    description :: Prelude.Maybe Prelude.Text,+    -- | The number of experiments currently in the project.+    experimentCount :: Prelude.Maybe Prelude.Integer,+    -- | The number of features currently in the project.+    featureCount :: Prelude.Maybe Prelude.Integer,+    -- | The number of launches currently in the project, including launches that+    -- are ongoing, completed, and not started yet.+    launchCount :: Prelude.Maybe Prelude.Integer,+    -- | The list of tag keys and values associated with this project.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name or ARN of the project.+    arn :: Prelude.Text,+    -- | The date and time that the project is created.+    createdTime :: Data.POSIX,+    -- | The date and time that the project was most recently updated.+    lastUpdatedTime :: Data.POSIX,+    -- | The name of the project.+    name :: Prelude.Text,+    -- | The current state of the project.+    status :: ProjectStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProjectSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'activeExperimentCount', 'projectSummary_activeExperimentCount' - The number of experiments currently in the project.+--+-- 'activeLaunchCount', 'projectSummary_activeLaunchCount' - The number of ongoing launches currently in the project.+--+-- 'description', 'projectSummary_description' - The description of the project.+--+-- 'experimentCount', 'projectSummary_experimentCount' - The number of experiments currently in the project.+--+-- 'featureCount', 'projectSummary_featureCount' - The number of features currently in the project.+--+-- 'launchCount', 'projectSummary_launchCount' - The number of launches currently in the project, including launches that+-- are ongoing, completed, and not started yet.+--+-- 'tags', 'projectSummary_tags' - The list of tag keys and values associated with this project.+--+-- 'arn', 'projectSummary_arn' - The name or ARN of the project.+--+-- 'createdTime', 'projectSummary_createdTime' - The date and time that the project is created.+--+-- 'lastUpdatedTime', 'projectSummary_lastUpdatedTime' - The date and time that the project was most recently updated.+--+-- 'name', 'projectSummary_name' - The name of the project.+--+-- 'status', 'projectSummary_status' - The current state of the project.+newProjectSummary ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdTime'+  Prelude.UTCTime ->+  -- | 'lastUpdatedTime'+  Prelude.UTCTime ->+  -- | 'name'+  Prelude.Text ->+  -- | 'status'+  ProjectStatus ->+  ProjectSummary+newProjectSummary+  pArn_+  pCreatedTime_+  pLastUpdatedTime_+  pName_+  pStatus_ =+    ProjectSummary'+      { activeExperimentCount =+          Prelude.Nothing,+        activeLaunchCount = Prelude.Nothing,+        description = Prelude.Nothing,+        experimentCount = Prelude.Nothing,+        featureCount = Prelude.Nothing,+        launchCount = Prelude.Nothing,+        tags = Prelude.Nothing,+        arn = pArn_,+        createdTime = Data._Time Lens.# pCreatedTime_,+        lastUpdatedTime =+          Data._Time Lens.# pLastUpdatedTime_,+        name = pName_,+        status = pStatus_+      }++-- | The number of experiments currently in the project.+projectSummary_activeExperimentCount :: Lens.Lens' ProjectSummary (Prelude.Maybe Prelude.Integer)+projectSummary_activeExperimentCount = Lens.lens (\ProjectSummary' {activeExperimentCount} -> activeExperimentCount) (\s@ProjectSummary' {} a -> s {activeExperimentCount = a} :: ProjectSummary)++-- | The number of ongoing launches currently in the project.+projectSummary_activeLaunchCount :: Lens.Lens' ProjectSummary (Prelude.Maybe Prelude.Integer)+projectSummary_activeLaunchCount = Lens.lens (\ProjectSummary' {activeLaunchCount} -> activeLaunchCount) (\s@ProjectSummary' {} a -> s {activeLaunchCount = a} :: ProjectSummary)++-- | The description of the project.+projectSummary_description :: Lens.Lens' ProjectSummary (Prelude.Maybe Prelude.Text)+projectSummary_description = Lens.lens (\ProjectSummary' {description} -> description) (\s@ProjectSummary' {} a -> s {description = a} :: ProjectSummary)++-- | The number of experiments currently in the project.+projectSummary_experimentCount :: Lens.Lens' ProjectSummary (Prelude.Maybe Prelude.Integer)+projectSummary_experimentCount = Lens.lens (\ProjectSummary' {experimentCount} -> experimentCount) (\s@ProjectSummary' {} a -> s {experimentCount = a} :: ProjectSummary)++-- | The number of features currently in the project.+projectSummary_featureCount :: Lens.Lens' ProjectSummary (Prelude.Maybe Prelude.Integer)+projectSummary_featureCount = Lens.lens (\ProjectSummary' {featureCount} -> featureCount) (\s@ProjectSummary' {} a -> s {featureCount = a} :: ProjectSummary)++-- | The number of launches currently in the project, including launches that+-- are ongoing, completed, and not started yet.+projectSummary_launchCount :: Lens.Lens' ProjectSummary (Prelude.Maybe Prelude.Integer)+projectSummary_launchCount = Lens.lens (\ProjectSummary' {launchCount} -> launchCount) (\s@ProjectSummary' {} a -> s {launchCount = a} :: ProjectSummary)++-- | The list of tag keys and values associated with this project.+projectSummary_tags :: Lens.Lens' ProjectSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+projectSummary_tags = Lens.lens (\ProjectSummary' {tags} -> tags) (\s@ProjectSummary' {} a -> s {tags = a} :: ProjectSummary) Prelude.. Lens.mapping Lens.coerced++-- | The name or ARN of the project.+projectSummary_arn :: Lens.Lens' ProjectSummary Prelude.Text+projectSummary_arn = Lens.lens (\ProjectSummary' {arn} -> arn) (\s@ProjectSummary' {} a -> s {arn = a} :: ProjectSummary)++-- | The date and time that the project is created.+projectSummary_createdTime :: Lens.Lens' ProjectSummary Prelude.UTCTime+projectSummary_createdTime = Lens.lens (\ProjectSummary' {createdTime} -> createdTime) (\s@ProjectSummary' {} a -> s {createdTime = a} :: ProjectSummary) Prelude.. Data._Time++-- | The date and time that the project was most recently updated.+projectSummary_lastUpdatedTime :: Lens.Lens' ProjectSummary Prelude.UTCTime+projectSummary_lastUpdatedTime = Lens.lens (\ProjectSummary' {lastUpdatedTime} -> lastUpdatedTime) (\s@ProjectSummary' {} a -> s {lastUpdatedTime = a} :: ProjectSummary) Prelude.. Data._Time++-- | The name of the project.+projectSummary_name :: Lens.Lens' ProjectSummary Prelude.Text+projectSummary_name = Lens.lens (\ProjectSummary' {name} -> name) (\s@ProjectSummary' {} a -> s {name = a} :: ProjectSummary)++-- | The current state of the project.+projectSummary_status :: Lens.Lens' ProjectSummary ProjectStatus+projectSummary_status = Lens.lens (\ProjectSummary' {status} -> status) (\s@ProjectSummary' {} a -> s {status = a} :: ProjectSummary)++instance Data.FromJSON ProjectSummary where+  parseJSON =+    Data.withObject+      "ProjectSummary"+      ( \x ->+          ProjectSummary'+            Prelude.<$> (x Data..:? "activeExperimentCount")+            Prelude.<*> (x Data..:? "activeLaunchCount")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "experimentCount")+            Prelude.<*> (x Data..:? "featureCount")+            Prelude.<*> (x Data..:? "launchCount")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdTime")+            Prelude.<*> (x Data..: "lastUpdatedTime")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "status")+      )++instance Prelude.Hashable ProjectSummary where+  hashWithSalt _salt ProjectSummary' {..} =+    _salt+      `Prelude.hashWithSalt` activeExperimentCount+      `Prelude.hashWithSalt` activeLaunchCount+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` experimentCount+      `Prelude.hashWithSalt` featureCount+      `Prelude.hashWithSalt` launchCount+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdTime+      `Prelude.hashWithSalt` lastUpdatedTime+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` status++instance Prelude.NFData ProjectSummary where+  rnf ProjectSummary' {..} =+    Prelude.rnf activeExperimentCount+      `Prelude.seq` Prelude.rnf activeLaunchCount+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf experimentCount+      `Prelude.seq` Prelude.rnf featureCount+      `Prelude.seq` Prelude.rnf launchCount+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdTime+      `Prelude.seq` Prelude.rnf lastUpdatedTime+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/Evidently/Types/PutProjectEventsResultEntry.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.Evidently.Types.PutProjectEventsResultEntry+-- 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.Evidently.Types.PutProjectEventsResultEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A structure that contains Evidently\'s response to the sent events,+-- including an event ID and error codes, if any.+--+-- /See:/ 'newPutProjectEventsResultEntry' smart constructor.+data PutProjectEventsResultEntry = PutProjectEventsResultEntry'+  { -- | If the @PutProjectEvents@ operation has an error, the error code is+    -- returned here.+    errorCode :: Prelude.Maybe Prelude.Text,+    -- | If the @PutProjectEvents@ operation has an error, the error message is+    -- returned here.+    errorMessage :: Prelude.Maybe Prelude.Text,+    -- | A unique ID assigned to this @PutProjectEvents@ operation.+    eventId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutProjectEventsResultEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorCode', 'putProjectEventsResultEntry_errorCode' - If the @PutProjectEvents@ operation has an error, the error code is+-- returned here.+--+-- 'errorMessage', 'putProjectEventsResultEntry_errorMessage' - If the @PutProjectEvents@ operation has an error, the error message is+-- returned here.+--+-- 'eventId', 'putProjectEventsResultEntry_eventId' - A unique ID assigned to this @PutProjectEvents@ operation.+newPutProjectEventsResultEntry ::+  PutProjectEventsResultEntry+newPutProjectEventsResultEntry =+  PutProjectEventsResultEntry'+    { errorCode =+        Prelude.Nothing,+      errorMessage = Prelude.Nothing,+      eventId = Prelude.Nothing+    }++-- | If the @PutProjectEvents@ operation has an error, the error code is+-- returned here.+putProjectEventsResultEntry_errorCode :: Lens.Lens' PutProjectEventsResultEntry (Prelude.Maybe Prelude.Text)+putProjectEventsResultEntry_errorCode = Lens.lens (\PutProjectEventsResultEntry' {errorCode} -> errorCode) (\s@PutProjectEventsResultEntry' {} a -> s {errorCode = a} :: PutProjectEventsResultEntry)++-- | If the @PutProjectEvents@ operation has an error, the error message is+-- returned here.+putProjectEventsResultEntry_errorMessage :: Lens.Lens' PutProjectEventsResultEntry (Prelude.Maybe Prelude.Text)+putProjectEventsResultEntry_errorMessage = Lens.lens (\PutProjectEventsResultEntry' {errorMessage} -> errorMessage) (\s@PutProjectEventsResultEntry' {} a -> s {errorMessage = a} :: PutProjectEventsResultEntry)++-- | A unique ID assigned to this @PutProjectEvents@ operation.+putProjectEventsResultEntry_eventId :: Lens.Lens' PutProjectEventsResultEntry (Prelude.Maybe Prelude.Text)+putProjectEventsResultEntry_eventId = Lens.lens (\PutProjectEventsResultEntry' {eventId} -> eventId) (\s@PutProjectEventsResultEntry' {} a -> s {eventId = a} :: PutProjectEventsResultEntry)++instance Data.FromJSON PutProjectEventsResultEntry where+  parseJSON =+    Data.withObject+      "PutProjectEventsResultEntry"+      ( \x ->+          PutProjectEventsResultEntry'+            Prelude.<$> (x Data..:? "errorCode")+            Prelude.<*> (x Data..:? "errorMessage")+            Prelude.<*> (x Data..:? "eventId")+      )++instance Prelude.Hashable PutProjectEventsResultEntry where+  hashWithSalt _salt PutProjectEventsResultEntry' {..} =+    _salt+      `Prelude.hashWithSalt` errorCode+      `Prelude.hashWithSalt` errorMessage+      `Prelude.hashWithSalt` eventId++instance Prelude.NFData PutProjectEventsResultEntry where+  rnf PutProjectEventsResultEntry' {..} =+    Prelude.rnf errorCode+      `Prelude.seq` Prelude.rnf errorMessage+      `Prelude.seq` Prelude.rnf eventId
+ gen/Amazonka/Evidently/Types/RefResource.hs view
@@ -0,0 +1,155 @@+{-# 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.Evidently.Types.RefResource+-- 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.Evidently.Types.RefResource where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A structure that contains information about one experiment or launch+-- that uses the specified segment.+--+-- /See:/ 'newRefResource' smart constructor.+data RefResource = RefResource'+  { -- | The ARN of the experiment or launch.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The day and time that this experiment or launch ended.+    endTime :: Prelude.Maybe Prelude.Text,+    -- | The day and time that this experiment or launch was most recently+    -- updated.+    lastUpdatedOn :: Prelude.Maybe Prelude.Text,+    -- | The day and time that this experiment or launch started.+    startTime :: Prelude.Maybe Prelude.Text,+    -- | The status of the experiment or launch.+    status :: Prelude.Maybe Prelude.Text,+    -- | The name of the experiment or launch.+    name :: Prelude.Text,+    -- | Specifies whether the resource that this structure contains information+    -- about is an experiment or a launch.+    type' :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RefResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'refResource_arn' - The ARN of the experiment or launch.+--+-- 'endTime', 'refResource_endTime' - The day and time that this experiment or launch ended.+--+-- 'lastUpdatedOn', 'refResource_lastUpdatedOn' - The day and time that this experiment or launch was most recently+-- updated.+--+-- 'startTime', 'refResource_startTime' - The day and time that this experiment or launch started.+--+-- 'status', 'refResource_status' - The status of the experiment or launch.+--+-- 'name', 'refResource_name' - The name of the experiment or launch.+--+-- 'type'', 'refResource_type' - Specifies whether the resource that this structure contains information+-- about is an experiment or a launch.+newRefResource ::+  -- | 'name'+  Prelude.Text ->+  -- | 'type''+  Prelude.Text ->+  RefResource+newRefResource pName_ pType_ =+  RefResource'+    { arn = Prelude.Nothing,+      endTime = Prelude.Nothing,+      lastUpdatedOn = Prelude.Nothing,+      startTime = Prelude.Nothing,+      status = Prelude.Nothing,+      name = pName_,+      type' = pType_+    }++-- | The ARN of the experiment or launch.+refResource_arn :: Lens.Lens' RefResource (Prelude.Maybe Prelude.Text)+refResource_arn = Lens.lens (\RefResource' {arn} -> arn) (\s@RefResource' {} a -> s {arn = a} :: RefResource)++-- | The day and time that this experiment or launch ended.+refResource_endTime :: Lens.Lens' RefResource (Prelude.Maybe Prelude.Text)+refResource_endTime = Lens.lens (\RefResource' {endTime} -> endTime) (\s@RefResource' {} a -> s {endTime = a} :: RefResource)++-- | The day and time that this experiment or launch was most recently+-- updated.+refResource_lastUpdatedOn :: Lens.Lens' RefResource (Prelude.Maybe Prelude.Text)+refResource_lastUpdatedOn = Lens.lens (\RefResource' {lastUpdatedOn} -> lastUpdatedOn) (\s@RefResource' {} a -> s {lastUpdatedOn = a} :: RefResource)++-- | The day and time that this experiment or launch started.+refResource_startTime :: Lens.Lens' RefResource (Prelude.Maybe Prelude.Text)+refResource_startTime = Lens.lens (\RefResource' {startTime} -> startTime) (\s@RefResource' {} a -> s {startTime = a} :: RefResource)++-- | The status of the experiment or launch.+refResource_status :: Lens.Lens' RefResource (Prelude.Maybe Prelude.Text)+refResource_status = Lens.lens (\RefResource' {status} -> status) (\s@RefResource' {} a -> s {status = a} :: RefResource)++-- | The name of the experiment or launch.+refResource_name :: Lens.Lens' RefResource Prelude.Text+refResource_name = Lens.lens (\RefResource' {name} -> name) (\s@RefResource' {} a -> s {name = a} :: RefResource)++-- | Specifies whether the resource that this structure contains information+-- about is an experiment or a launch.+refResource_type :: Lens.Lens' RefResource Prelude.Text+refResource_type = Lens.lens (\RefResource' {type'} -> type') (\s@RefResource' {} a -> s {type' = a} :: RefResource)++instance Data.FromJSON RefResource where+  parseJSON =+    Data.withObject+      "RefResource"+      ( \x ->+          RefResource'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "endTime")+            Prelude.<*> (x Data..:? "lastUpdatedOn")+            Prelude.<*> (x Data..:? "startTime")+            Prelude.<*> (x Data..:? "status")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "type")+      )++instance Prelude.Hashable RefResource where+  hashWithSalt _salt RefResource' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` lastUpdatedOn+      `Prelude.hashWithSalt` startTime+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` type'++instance Prelude.NFData RefResource where+  rnf RefResource' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf lastUpdatedOn+      `Prelude.seq` Prelude.rnf startTime+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/Evidently/Types/S3Destination.hs view
@@ -0,0 +1,84 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.S3Destination+-- 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.Evidently.Types.S3Destination where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | If the project stores evaluation events in an Amazon S3 bucket, this+-- structure stores the bucket name and bucket prefix.+--+-- /See:/ 'newS3Destination' smart constructor.+data S3Destination = S3Destination'+  { -- | The name of the bucket in which Evidently stores evaluation events.+    bucket :: Prelude.Maybe Prelude.Text,+    -- | The bucket prefix in which Evidently stores evaluation events.+    prefix :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'S3Destination' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'bucket', 's3Destination_bucket' - The name of the bucket in which Evidently stores evaluation events.+--+-- 'prefix', 's3Destination_prefix' - The bucket prefix in which Evidently stores evaluation events.+newS3Destination ::+  S3Destination+newS3Destination =+  S3Destination'+    { bucket = Prelude.Nothing,+      prefix = Prelude.Nothing+    }++-- | The name of the bucket in which Evidently stores evaluation events.+s3Destination_bucket :: Lens.Lens' S3Destination (Prelude.Maybe Prelude.Text)+s3Destination_bucket = Lens.lens (\S3Destination' {bucket} -> bucket) (\s@S3Destination' {} a -> s {bucket = a} :: S3Destination)++-- | The bucket prefix in which Evidently stores evaluation events.+s3Destination_prefix :: Lens.Lens' S3Destination (Prelude.Maybe Prelude.Text)+s3Destination_prefix = Lens.lens (\S3Destination' {prefix} -> prefix) (\s@S3Destination' {} a -> s {prefix = a} :: S3Destination)++instance Data.FromJSON S3Destination where+  parseJSON =+    Data.withObject+      "S3Destination"+      ( \x ->+          S3Destination'+            Prelude.<$> (x Data..:? "bucket")+            Prelude.<*> (x Data..:? "prefix")+      )++instance Prelude.Hashable S3Destination where+  hashWithSalt _salt S3Destination' {..} =+    _salt+      `Prelude.hashWithSalt` bucket+      `Prelude.hashWithSalt` prefix++instance Prelude.NFData S3Destination where+  rnf S3Destination' {..} =+    Prelude.rnf bucket `Prelude.seq` Prelude.rnf prefix
+ gen/Amazonka/Evidently/Types/S3DestinationConfig.hs view
@@ -0,0 +1,83 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.S3DestinationConfig+-- 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.Evidently.Types.S3DestinationConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | If the project stores evaluation events in an Amazon S3 bucket, this+-- structure stores the bucket name and bucket prefix.+--+-- /See:/ 'newS3DestinationConfig' smart constructor.+data S3DestinationConfig = S3DestinationConfig'+  { -- | The name of the bucket in which Evidently stores evaluation events.+    bucket :: Prelude.Maybe Prelude.Text,+    -- | The bucket prefix in which Evidently stores evaluation events.+    prefix :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'S3DestinationConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'bucket', 's3DestinationConfig_bucket' - The name of the bucket in which Evidently stores evaluation events.+--+-- 'prefix', 's3DestinationConfig_prefix' - The bucket prefix in which Evidently stores evaluation events.+newS3DestinationConfig ::+  S3DestinationConfig+newS3DestinationConfig =+  S3DestinationConfig'+    { bucket = Prelude.Nothing,+      prefix = Prelude.Nothing+    }++-- | The name of the bucket in which Evidently stores evaluation events.+s3DestinationConfig_bucket :: Lens.Lens' S3DestinationConfig (Prelude.Maybe Prelude.Text)+s3DestinationConfig_bucket = Lens.lens (\S3DestinationConfig' {bucket} -> bucket) (\s@S3DestinationConfig' {} a -> s {bucket = a} :: S3DestinationConfig)++-- | The bucket prefix in which Evidently stores evaluation events.+s3DestinationConfig_prefix :: Lens.Lens' S3DestinationConfig (Prelude.Maybe Prelude.Text)+s3DestinationConfig_prefix = Lens.lens (\S3DestinationConfig' {prefix} -> prefix) (\s@S3DestinationConfig' {} a -> s {prefix = a} :: S3DestinationConfig)++instance Prelude.Hashable S3DestinationConfig where+  hashWithSalt _salt S3DestinationConfig' {..} =+    _salt+      `Prelude.hashWithSalt` bucket+      `Prelude.hashWithSalt` prefix++instance Prelude.NFData S3DestinationConfig where+  rnf S3DestinationConfig' {..} =+    Prelude.rnf bucket `Prelude.seq` Prelude.rnf prefix++instance Data.ToJSON S3DestinationConfig where+  toJSON S3DestinationConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("bucket" Data..=) Prelude.<$> bucket,+            ("prefix" Data..=) Prelude.<$> prefix+          ]+      )
+ gen/Amazonka/Evidently/Types/ScheduledSplit.hs view
@@ -0,0 +1,161 @@+{-# 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.Evidently.Types.ScheduledSplit+-- 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.Evidently.Types.ScheduledSplit where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.SegmentOverride+import qualified Amazonka.Prelude as Prelude++-- | This structure defines the traffic allocation percentages among the+-- feature variations during one step of a launch, and the start time of+-- that step.+--+-- /See:/ 'newScheduledSplit' smart constructor.+data ScheduledSplit = ScheduledSplit'+  { -- | The traffic allocation percentages among the feature variations during+    -- one step of a launch. This is a set of key-value pairs. The keys are+    -- variation names. The values represent the percentage of traffic to+    -- allocate to that variation during this step.+    --+    -- The values is expressed in thousandths of a percent, so assigning a+    -- weight of 50000 assigns 50% of traffic to that variation.+    --+    -- If the sum of the weights for all the variations in a segment override+    -- does not add up to 100,000, then the remaining traffic that matches this+    -- segment is not assigned by this segment override, and instead moves on+    -- to the next segment override or the default traffic split.+    groupWeights :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Natural),+    -- | Use this parameter to specify different traffic splits for one or more+    -- audience /segments/. A segment is a portion of your audience that share+    -- one or more characteristics. Examples could be Chrome browser users,+    -- users in Europe, or Firefox browser users in Europe who also fit other+    -- criteria that your application collects, such as age.+    --+    -- This parameter is an array of up to six segment override objects. Each+    -- of these objects specifies a segment that you have already created, and+    -- defines the traffic split for that segment.+    segmentOverrides :: Prelude.Maybe [SegmentOverride],+    -- | The date and time that this step of the launch starts.+    startTime :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ScheduledSplit' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'groupWeights', 'scheduledSplit_groupWeights' - The traffic allocation percentages among the feature variations during+-- one step of a launch. This is a set of key-value pairs. The keys are+-- variation names. The values represent the percentage of traffic to+-- allocate to that variation during this step.+--+-- The values is expressed in thousandths of a percent, so assigning a+-- weight of 50000 assigns 50% of traffic to that variation.+--+-- If the sum of the weights for all the variations in a segment override+-- does not add up to 100,000, then the remaining traffic that matches this+-- segment is not assigned by this segment override, and instead moves on+-- to the next segment override or the default traffic split.+--+-- 'segmentOverrides', 'scheduledSplit_segmentOverrides' - Use this parameter to specify different traffic splits for one or more+-- audience /segments/. A segment is a portion of your audience that share+-- one or more characteristics. Examples could be Chrome browser users,+-- users in Europe, or Firefox browser users in Europe who also fit other+-- criteria that your application collects, such as age.+--+-- This parameter is an array of up to six segment override objects. Each+-- of these objects specifies a segment that you have already created, and+-- defines the traffic split for that segment.+--+-- 'startTime', 'scheduledSplit_startTime' - The date and time that this step of the launch starts.+newScheduledSplit ::+  -- | 'startTime'+  Prelude.UTCTime ->+  ScheduledSplit+newScheduledSplit pStartTime_ =+  ScheduledSplit'+    { groupWeights = Prelude.Nothing,+      segmentOverrides = Prelude.Nothing,+      startTime = Data._Time Lens.# pStartTime_+    }++-- | The traffic allocation percentages among the feature variations during+-- one step of a launch. This is a set of key-value pairs. The keys are+-- variation names. The values represent the percentage of traffic to+-- allocate to that variation during this step.+--+-- The values is expressed in thousandths of a percent, so assigning a+-- weight of 50000 assigns 50% of traffic to that variation.+--+-- If the sum of the weights for all the variations in a segment override+-- does not add up to 100,000, then the remaining traffic that matches this+-- segment is not assigned by this segment override, and instead moves on+-- to the next segment override or the default traffic split.+scheduledSplit_groupWeights :: Lens.Lens' ScheduledSplit (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Natural))+scheduledSplit_groupWeights = Lens.lens (\ScheduledSplit' {groupWeights} -> groupWeights) (\s@ScheduledSplit' {} a -> s {groupWeights = a} :: ScheduledSplit) Prelude.. Lens.mapping Lens.coerced++-- | Use this parameter to specify different traffic splits for one or more+-- audience /segments/. A segment is a portion of your audience that share+-- one or more characteristics. Examples could be Chrome browser users,+-- users in Europe, or Firefox browser users in Europe who also fit other+-- criteria that your application collects, such as age.+--+-- This parameter is an array of up to six segment override objects. Each+-- of these objects specifies a segment that you have already created, and+-- defines the traffic split for that segment.+scheduledSplit_segmentOverrides :: Lens.Lens' ScheduledSplit (Prelude.Maybe [SegmentOverride])+scheduledSplit_segmentOverrides = Lens.lens (\ScheduledSplit' {segmentOverrides} -> segmentOverrides) (\s@ScheduledSplit' {} a -> s {segmentOverrides = a} :: ScheduledSplit) Prelude.. Lens.mapping Lens.coerced++-- | The date and time that this step of the launch starts.+scheduledSplit_startTime :: Lens.Lens' ScheduledSplit Prelude.UTCTime+scheduledSplit_startTime = Lens.lens (\ScheduledSplit' {startTime} -> startTime) (\s@ScheduledSplit' {} a -> s {startTime = a} :: ScheduledSplit) Prelude.. Data._Time++instance Data.FromJSON ScheduledSplit where+  parseJSON =+    Data.withObject+      "ScheduledSplit"+      ( \x ->+          ScheduledSplit'+            Prelude.<$> (x Data..:? "groupWeights" Data..!= Prelude.mempty)+            Prelude.<*> ( x+                            Data..:? "segmentOverrides"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..: "startTime")+      )++instance Prelude.Hashable ScheduledSplit where+  hashWithSalt _salt ScheduledSplit' {..} =+    _salt+      `Prelude.hashWithSalt` groupWeights+      `Prelude.hashWithSalt` segmentOverrides+      `Prelude.hashWithSalt` startTime++instance Prelude.NFData ScheduledSplit where+  rnf ScheduledSplit' {..} =+    Prelude.rnf groupWeights+      `Prelude.seq` Prelude.rnf segmentOverrides+      `Prelude.seq` Prelude.rnf startTime
+ gen/Amazonka/Evidently/Types/ScheduledSplitConfig.hs view
@@ -0,0 +1,141 @@+{-# 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.Evidently.Types.ScheduledSplitConfig+-- 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.Evidently.Types.ScheduledSplitConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.SegmentOverride+import qualified Amazonka.Prelude as Prelude++-- | This structure defines the traffic allocation percentages among the+-- feature variations during one step of a launch, and the start time of+-- that step.+--+-- /See:/ 'newScheduledSplitConfig' smart constructor.+data ScheduledSplitConfig = ScheduledSplitConfig'+  { -- | Use this parameter to specify different traffic splits for one or more+    -- audience /segments/. A segment is a portion of your audience that share+    -- one or more characteristics. Examples could be Chrome browser users,+    -- users in Europe, or Firefox browser users in Europe who also fit other+    -- criteria that your application collects, such as age.+    --+    -- This parameter is an array of up to six segment override objects. Each+    -- of these objects specifies a segment that you have already created, and+    -- defines the traffic split for that segment.+    segmentOverrides :: Prelude.Maybe [SegmentOverride],+    -- | The traffic allocation percentages among the feature variations during+    -- one step of a launch. This is a set of key-value pairs. The keys are+    -- variation names. The values represent the percentage of traffic to+    -- allocate to that variation during this step.+    --+    -- >  <p>The values is expressed in thousandths of a percent, so assigning a weight of 50000 assigns 50% of traffic to that variation.</p> <p>If the sum of the weights for all the variations in a segment override does not add up to 100,000, then the remaining traffic that matches this segment is not assigned by this segment override, and instead moves on to the next segment override or the default traffic split.</p>+    groupWeights :: Prelude.HashMap Prelude.Text Prelude.Natural,+    -- | The date and time that this step of the launch starts.+    startTime :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ScheduledSplitConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'segmentOverrides', 'scheduledSplitConfig_segmentOverrides' - Use this parameter to specify different traffic splits for one or more+-- audience /segments/. A segment is a portion of your audience that share+-- one or more characteristics. Examples could be Chrome browser users,+-- users in Europe, or Firefox browser users in Europe who also fit other+-- criteria that your application collects, such as age.+--+-- This parameter is an array of up to six segment override objects. Each+-- of these objects specifies a segment that you have already created, and+-- defines the traffic split for that segment.+--+-- 'groupWeights', 'scheduledSplitConfig_groupWeights' - The traffic allocation percentages among the feature variations during+-- one step of a launch. This is a set of key-value pairs. The keys are+-- variation names. The values represent the percentage of traffic to+-- allocate to that variation during this step.+--+-- >  <p>The values is expressed in thousandths of a percent, so assigning a weight of 50000 assigns 50% of traffic to that variation.</p> <p>If the sum of the weights for all the variations in a segment override does not add up to 100,000, then the remaining traffic that matches this segment is not assigned by this segment override, and instead moves on to the next segment override or the default traffic split.</p>+--+-- 'startTime', 'scheduledSplitConfig_startTime' - The date and time that this step of the launch starts.+newScheduledSplitConfig ::+  -- | 'startTime'+  Prelude.UTCTime ->+  ScheduledSplitConfig+newScheduledSplitConfig pStartTime_ =+  ScheduledSplitConfig'+    { segmentOverrides =+        Prelude.Nothing,+      groupWeights = Prelude.mempty,+      startTime = Data._Time Lens.# pStartTime_+    }++-- | Use this parameter to specify different traffic splits for one or more+-- audience /segments/. A segment is a portion of your audience that share+-- one or more characteristics. Examples could be Chrome browser users,+-- users in Europe, or Firefox browser users in Europe who also fit other+-- criteria that your application collects, such as age.+--+-- This parameter is an array of up to six segment override objects. Each+-- of these objects specifies a segment that you have already created, and+-- defines the traffic split for that segment.+scheduledSplitConfig_segmentOverrides :: Lens.Lens' ScheduledSplitConfig (Prelude.Maybe [SegmentOverride])+scheduledSplitConfig_segmentOverrides = Lens.lens (\ScheduledSplitConfig' {segmentOverrides} -> segmentOverrides) (\s@ScheduledSplitConfig' {} a -> s {segmentOverrides = a} :: ScheduledSplitConfig) Prelude.. Lens.mapping Lens.coerced++-- | The traffic allocation percentages among the feature variations during+-- one step of a launch. This is a set of key-value pairs. The keys are+-- variation names. The values represent the percentage of traffic to+-- allocate to that variation during this step.+--+-- >  <p>The values is expressed in thousandths of a percent, so assigning a weight of 50000 assigns 50% of traffic to that variation.</p> <p>If the sum of the weights for all the variations in a segment override does not add up to 100,000, then the remaining traffic that matches this segment is not assigned by this segment override, and instead moves on to the next segment override or the default traffic split.</p>+scheduledSplitConfig_groupWeights :: Lens.Lens' ScheduledSplitConfig (Prelude.HashMap Prelude.Text Prelude.Natural)+scheduledSplitConfig_groupWeights = Lens.lens (\ScheduledSplitConfig' {groupWeights} -> groupWeights) (\s@ScheduledSplitConfig' {} a -> s {groupWeights = a} :: ScheduledSplitConfig) Prelude.. Lens.coerced++-- | The date and time that this step of the launch starts.+scheduledSplitConfig_startTime :: Lens.Lens' ScheduledSplitConfig Prelude.UTCTime+scheduledSplitConfig_startTime = Lens.lens (\ScheduledSplitConfig' {startTime} -> startTime) (\s@ScheduledSplitConfig' {} a -> s {startTime = a} :: ScheduledSplitConfig) Prelude.. Data._Time++instance Prelude.Hashable ScheduledSplitConfig where+  hashWithSalt _salt ScheduledSplitConfig' {..} =+    _salt+      `Prelude.hashWithSalt` segmentOverrides+      `Prelude.hashWithSalt` groupWeights+      `Prelude.hashWithSalt` startTime++instance Prelude.NFData ScheduledSplitConfig where+  rnf ScheduledSplitConfig' {..} =+    Prelude.rnf segmentOverrides+      `Prelude.seq` Prelude.rnf groupWeights+      `Prelude.seq` Prelude.rnf startTime++instance Data.ToJSON ScheduledSplitConfig where+  toJSON ScheduledSplitConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("segmentOverrides" Data..=)+              Prelude.<$> segmentOverrides,+            Prelude.Just ("groupWeights" Data..= groupWeights),+            Prelude.Just ("startTime" Data..= startTime)+          ]+      )
+ gen/Amazonka/Evidently/Types/ScheduledSplitsLaunchConfig.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.Evidently.Types.ScheduledSplitsLaunchConfig+-- 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.Evidently.Types.ScheduledSplitsLaunchConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.ScheduledSplitConfig+import qualified Amazonka.Prelude as Prelude++-- | An array of structures that define the traffic allocation percentages+-- among the feature variations during each step of a launch. This also+-- defines the start time of each step.+--+-- /See:/ 'newScheduledSplitsLaunchConfig' smart constructor.+data ScheduledSplitsLaunchConfig = ScheduledSplitsLaunchConfig'+  { -- | An array of structures that define the traffic allocation percentages+    -- among the feature variations during each step of the launch. This also+    -- defines the start time of each step.+    steps :: Prelude.NonEmpty ScheduledSplitConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ScheduledSplitsLaunchConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'steps', 'scheduledSplitsLaunchConfig_steps' - An array of structures that define the traffic allocation percentages+-- among the feature variations during each step of the launch. This also+-- defines the start time of each step.+newScheduledSplitsLaunchConfig ::+  -- | 'steps'+  Prelude.NonEmpty ScheduledSplitConfig ->+  ScheduledSplitsLaunchConfig+newScheduledSplitsLaunchConfig pSteps_ =+  ScheduledSplitsLaunchConfig'+    { steps =+        Lens.coerced Lens.# pSteps_+    }++-- | An array of structures that define the traffic allocation percentages+-- among the feature variations during each step of the launch. This also+-- defines the start time of each step.+scheduledSplitsLaunchConfig_steps :: Lens.Lens' ScheduledSplitsLaunchConfig (Prelude.NonEmpty ScheduledSplitConfig)+scheduledSplitsLaunchConfig_steps = Lens.lens (\ScheduledSplitsLaunchConfig' {steps} -> steps) (\s@ScheduledSplitsLaunchConfig' {} a -> s {steps = a} :: ScheduledSplitsLaunchConfig) Prelude.. Lens.coerced++instance Prelude.Hashable ScheduledSplitsLaunchConfig where+  hashWithSalt _salt ScheduledSplitsLaunchConfig' {..} =+    _salt `Prelude.hashWithSalt` steps++instance Prelude.NFData ScheduledSplitsLaunchConfig where+  rnf ScheduledSplitsLaunchConfig' {..} =+    Prelude.rnf steps++instance Data.ToJSON ScheduledSplitsLaunchConfig where+  toJSON ScheduledSplitsLaunchConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("steps" Data..= steps)]+      )
+ gen/Amazonka/Evidently/Types/ScheduledSplitsLaunchDefinition.hs view
@@ -0,0 +1,92 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.ScheduledSplitsLaunchDefinition+-- 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.Evidently.Types.ScheduledSplitsLaunchDefinition where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.ScheduledSplit+import qualified Amazonka.Prelude as Prelude++-- | An array of structures that define the traffic allocation percentages+-- among the feature variations during each step of a launch. This also+-- defines the start time of each step.+--+-- /See:/ 'newScheduledSplitsLaunchDefinition' smart constructor.+data ScheduledSplitsLaunchDefinition = ScheduledSplitsLaunchDefinition'+  { -- | An array of structures that define the traffic allocation percentages+    -- among the feature variations during each step of the launch. This also+    -- defines the start time of each step.+    steps :: Prelude.Maybe (Prelude.NonEmpty ScheduledSplit)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ScheduledSplitsLaunchDefinition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'steps', 'scheduledSplitsLaunchDefinition_steps' - An array of structures that define the traffic allocation percentages+-- among the feature variations during each step of the launch. This also+-- defines the start time of each step.+newScheduledSplitsLaunchDefinition ::+  ScheduledSplitsLaunchDefinition+newScheduledSplitsLaunchDefinition =+  ScheduledSplitsLaunchDefinition'+    { steps =+        Prelude.Nothing+    }++-- | An array of structures that define the traffic allocation percentages+-- among the feature variations during each step of the launch. This also+-- defines the start time of each step.+scheduledSplitsLaunchDefinition_steps :: Lens.Lens' ScheduledSplitsLaunchDefinition (Prelude.Maybe (Prelude.NonEmpty ScheduledSplit))+scheduledSplitsLaunchDefinition_steps = Lens.lens (\ScheduledSplitsLaunchDefinition' {steps} -> steps) (\s@ScheduledSplitsLaunchDefinition' {} a -> s {steps = a} :: ScheduledSplitsLaunchDefinition) Prelude.. Lens.mapping Lens.coerced++instance+  Data.FromJSON+    ScheduledSplitsLaunchDefinition+  where+  parseJSON =+    Data.withObject+      "ScheduledSplitsLaunchDefinition"+      ( \x ->+          ScheduledSplitsLaunchDefinition'+            Prelude.<$> (x Data..:? "steps")+      )++instance+  Prelude.Hashable+    ScheduledSplitsLaunchDefinition+  where+  hashWithSalt+    _salt+    ScheduledSplitsLaunchDefinition' {..} =+      _salt `Prelude.hashWithSalt` steps++instance+  Prelude.NFData+    ScheduledSplitsLaunchDefinition+  where+  rnf ScheduledSplitsLaunchDefinition' {..} =+    Prelude.rnf steps
+ gen/Amazonka/Evidently/Types/Segment.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.Evidently.Types.Segment+-- 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.Evidently.Types.Segment where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | This structure contains information about one audience /segment/. You+-- can use segments in your experiments and launches to narrow the user+-- sessions used for experiment or launch to only the user sessions that+-- match one or more criteria.+--+-- /See:/ 'newSegment' smart constructor.+data Segment = Segment'+  { -- | The customer-created description for this segment.+    description :: Prelude.Maybe Prelude.Text,+    -- | The number of experiments that this segment is used in. This count+    -- includes all current experiments, not just those that are currently+    -- running.+    experimentCount :: Prelude.Maybe Prelude.Integer,+    -- | The number of launches that this segment is used in. This count includes+    -- all current launches, not just those that are currently running.+    launchCount :: Prelude.Maybe Prelude.Integer,+    -- | The list of tag keys and values associated with this launch.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The ARN of the segment.+    arn :: Prelude.Text,+    -- | The date and time that this segment was created.+    createdTime :: Data.POSIX,+    -- | The date and time that this segment was most recently updated.+    lastUpdatedTime :: Data.POSIX,+    -- | The name of the segment.+    name :: Prelude.Text,+    -- | The pattern that defines the attributes to use to evalute whether a user+    -- session will be in the segment. For more information about the pattern+    -- syntax, see+    -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments.html Segment rule pattern syntax>.+    pattern' :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Segment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'segment_description' - The customer-created description for this segment.+--+-- 'experimentCount', 'segment_experimentCount' - The number of experiments that this segment is used in. This count+-- includes all current experiments, not just those that are currently+-- running.+--+-- 'launchCount', 'segment_launchCount' - The number of launches that this segment is used in. This count includes+-- all current launches, not just those that are currently running.+--+-- 'tags', 'segment_tags' - The list of tag keys and values associated with this launch.+--+-- 'arn', 'segment_arn' - The ARN of the segment.+--+-- 'createdTime', 'segment_createdTime' - The date and time that this segment was created.+--+-- 'lastUpdatedTime', 'segment_lastUpdatedTime' - The date and time that this segment was most recently updated.+--+-- 'name', 'segment_name' - The name of the segment.+--+-- 'pattern'', 'segment_pattern' - The pattern that defines the attributes to use to evalute whether a user+-- session will be in the segment. For more information about the pattern+-- syntax, see+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments.html Segment rule pattern syntax>.+newSegment ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdTime'+  Prelude.UTCTime ->+  -- | 'lastUpdatedTime'+  Prelude.UTCTime ->+  -- | 'name'+  Prelude.Text ->+  -- | 'pattern''+  Prelude.Text ->+  Segment+newSegment+  pArn_+  pCreatedTime_+  pLastUpdatedTime_+  pName_+  pPattern_ =+    Segment'+      { description = Prelude.Nothing,+        experimentCount = Prelude.Nothing,+        launchCount = Prelude.Nothing,+        tags = Prelude.Nothing,+        arn = pArn_,+        createdTime = Data._Time Lens.# pCreatedTime_,+        lastUpdatedTime =+          Data._Time Lens.# pLastUpdatedTime_,+        name = pName_,+        pattern' = pPattern_+      }++-- | The customer-created description for this segment.+segment_description :: Lens.Lens' Segment (Prelude.Maybe Prelude.Text)+segment_description = Lens.lens (\Segment' {description} -> description) (\s@Segment' {} a -> s {description = a} :: Segment)++-- | The number of experiments that this segment is used in. This count+-- includes all current experiments, not just those that are currently+-- running.+segment_experimentCount :: Lens.Lens' Segment (Prelude.Maybe Prelude.Integer)+segment_experimentCount = Lens.lens (\Segment' {experimentCount} -> experimentCount) (\s@Segment' {} a -> s {experimentCount = a} :: Segment)++-- | The number of launches that this segment is used in. This count includes+-- all current launches, not just those that are currently running.+segment_launchCount :: Lens.Lens' Segment (Prelude.Maybe Prelude.Integer)+segment_launchCount = Lens.lens (\Segment' {launchCount} -> launchCount) (\s@Segment' {} a -> s {launchCount = a} :: Segment)++-- | The list of tag keys and values associated with this launch.+segment_tags :: Lens.Lens' Segment (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+segment_tags = Lens.lens (\Segment' {tags} -> tags) (\s@Segment' {} a -> s {tags = a} :: Segment) Prelude.. Lens.mapping Lens.coerced++-- | The ARN of the segment.+segment_arn :: Lens.Lens' Segment Prelude.Text+segment_arn = Lens.lens (\Segment' {arn} -> arn) (\s@Segment' {} a -> s {arn = a} :: Segment)++-- | The date and time that this segment was created.+segment_createdTime :: Lens.Lens' Segment Prelude.UTCTime+segment_createdTime = Lens.lens (\Segment' {createdTime} -> createdTime) (\s@Segment' {} a -> s {createdTime = a} :: Segment) Prelude.. Data._Time++-- | The date and time that this segment was most recently updated.+segment_lastUpdatedTime :: Lens.Lens' Segment Prelude.UTCTime+segment_lastUpdatedTime = Lens.lens (\Segment' {lastUpdatedTime} -> lastUpdatedTime) (\s@Segment' {} a -> s {lastUpdatedTime = a} :: Segment) Prelude.. Data._Time++-- | The name of the segment.+segment_name :: Lens.Lens' Segment Prelude.Text+segment_name = Lens.lens (\Segment' {name} -> name) (\s@Segment' {} a -> s {name = a} :: Segment)++-- | The pattern that defines the attributes to use to evalute whether a user+-- session will be in the segment. For more information about the pattern+-- syntax, see+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments.html Segment rule pattern syntax>.+segment_pattern :: Lens.Lens' Segment Prelude.Text+segment_pattern = Lens.lens (\Segment' {pattern'} -> pattern') (\s@Segment' {} a -> s {pattern' = a} :: Segment)++instance Data.FromJSON Segment where+  parseJSON =+    Data.withObject+      "Segment"+      ( \x ->+          Segment'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> (x Data..:? "experimentCount")+            Prelude.<*> (x Data..:? "launchCount")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdTime")+            Prelude.<*> (x Data..: "lastUpdatedTime")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "pattern")+      )++instance Prelude.Hashable Segment where+  hashWithSalt _salt Segment' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` experimentCount+      `Prelude.hashWithSalt` launchCount+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdTime+      `Prelude.hashWithSalt` lastUpdatedTime+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` pattern'++instance Prelude.NFData Segment where+  rnf Segment' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf experimentCount+      `Prelude.seq` Prelude.rnf launchCount+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdTime+      `Prelude.seq` Prelude.rnf lastUpdatedTime+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf pattern'
+ gen/Amazonka/Evidently/Types/SegmentOverride.hs view
@@ -0,0 +1,131 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.SegmentOverride+-- 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.Evidently.Types.SegmentOverride where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | This structure specifies a segment that you have already created, and+-- defines the traffic split for that segment to be used in a launch.+--+-- /See:/ 'newSegmentOverride' smart constructor.+data SegmentOverride = SegmentOverride'+  { -- | A number indicating the order to use to evaluate segment overrides, if+    -- there are more than one. Segment overrides with lower numbers are+    -- evaluated first.+    evaluationOrder :: Prelude.Integer,+    -- | The ARN of the segment to use.+    segment :: Prelude.Text,+    -- | The traffic allocation percentages among the feature variations to+    -- assign to this segment. This is a set of key-value pairs. The keys are+    -- variation names. The values represent the amount of traffic to allocate+    -- to that variation for this segment. This is expressed in thousandths of+    -- a percent, so a weight of 50000 represents 50% of traffic.+    weights :: Prelude.HashMap Prelude.Text Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SegmentOverride' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'evaluationOrder', 'segmentOverride_evaluationOrder' - A number indicating the order to use to evaluate segment overrides, if+-- there are more than one. Segment overrides with lower numbers are+-- evaluated first.+--+-- 'segment', 'segmentOverride_segment' - The ARN of the segment to use.+--+-- 'weights', 'segmentOverride_weights' - The traffic allocation percentages among the feature variations to+-- assign to this segment. This is a set of key-value pairs. The keys are+-- variation names. The values represent the amount of traffic to allocate+-- to that variation for this segment. This is expressed in thousandths of+-- a percent, so a weight of 50000 represents 50% of traffic.+newSegmentOverride ::+  -- | 'evaluationOrder'+  Prelude.Integer ->+  -- | 'segment'+  Prelude.Text ->+  SegmentOverride+newSegmentOverride pEvaluationOrder_ pSegment_ =+  SegmentOverride'+    { evaluationOrder =+        pEvaluationOrder_,+      segment = pSegment_,+      weights = Prelude.mempty+    }++-- | A number indicating the order to use to evaluate segment overrides, if+-- there are more than one. Segment overrides with lower numbers are+-- evaluated first.+segmentOverride_evaluationOrder :: Lens.Lens' SegmentOverride Prelude.Integer+segmentOverride_evaluationOrder = Lens.lens (\SegmentOverride' {evaluationOrder} -> evaluationOrder) (\s@SegmentOverride' {} a -> s {evaluationOrder = a} :: SegmentOverride)++-- | The ARN of the segment to use.+segmentOverride_segment :: Lens.Lens' SegmentOverride Prelude.Text+segmentOverride_segment = Lens.lens (\SegmentOverride' {segment} -> segment) (\s@SegmentOverride' {} a -> s {segment = a} :: SegmentOverride)++-- | The traffic allocation percentages among the feature variations to+-- assign to this segment. This is a set of key-value pairs. The keys are+-- variation names. The values represent the amount of traffic to allocate+-- to that variation for this segment. This is expressed in thousandths of+-- a percent, so a weight of 50000 represents 50% of traffic.+segmentOverride_weights :: Lens.Lens' SegmentOverride (Prelude.HashMap Prelude.Text Prelude.Natural)+segmentOverride_weights = Lens.lens (\SegmentOverride' {weights} -> weights) (\s@SegmentOverride' {} a -> s {weights = a} :: SegmentOverride) Prelude.. Lens.coerced++instance Data.FromJSON SegmentOverride where+  parseJSON =+    Data.withObject+      "SegmentOverride"+      ( \x ->+          SegmentOverride'+            Prelude.<$> (x Data..: "evaluationOrder")+            Prelude.<*> (x Data..: "segment")+            Prelude.<*> (x Data..:? "weights" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable SegmentOverride where+  hashWithSalt _salt SegmentOverride' {..} =+    _salt+      `Prelude.hashWithSalt` evaluationOrder+      `Prelude.hashWithSalt` segment+      `Prelude.hashWithSalt` weights++instance Prelude.NFData SegmentOverride where+  rnf SegmentOverride' {..} =+    Prelude.rnf evaluationOrder+      `Prelude.seq` Prelude.rnf segment+      `Prelude.seq` Prelude.rnf weights++instance Data.ToJSON SegmentOverride where+  toJSON SegmentOverride' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("evaluationOrder" Data..= evaluationOrder),+            Prelude.Just ("segment" Data..= segment),+            Prelude.Just ("weights" Data..= weights)+          ]+      )
+ gen/Amazonka/Evidently/Types/SegmentReferenceResourceType.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.SegmentReferenceResourceType+-- 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.Evidently.Types.SegmentReferenceResourceType+  ( SegmentReferenceResourceType+      ( ..,+        SegmentReferenceResourceType_EXPERIMENT,+        SegmentReferenceResourceType_LAUNCH+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype SegmentReferenceResourceType = SegmentReferenceResourceType'+  { fromSegmentReferenceResourceType ::+      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 SegmentReferenceResourceType_EXPERIMENT :: SegmentReferenceResourceType+pattern SegmentReferenceResourceType_EXPERIMENT = SegmentReferenceResourceType' "EXPERIMENT"++pattern SegmentReferenceResourceType_LAUNCH :: SegmentReferenceResourceType+pattern SegmentReferenceResourceType_LAUNCH = SegmentReferenceResourceType' "LAUNCH"++{-# COMPLETE+  SegmentReferenceResourceType_EXPERIMENT,+  SegmentReferenceResourceType_LAUNCH,+  SegmentReferenceResourceType'+  #-}
+ gen/Amazonka/Evidently/Types/Treatment.hs view
@@ -0,0 +1,105 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.Treatment+-- 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.Evidently.Types.Treatment where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A structure that defines one treatment in an experiment. A treatment is+-- a variation of the feature that you are including in the experiment.+--+-- /See:/ 'newTreatment' smart constructor.+data Treatment = Treatment'+  { -- | The description of the treatment.+    description :: Prelude.Maybe Prelude.Text,+    -- | The feature variation used for this treatment. This is a key-value pair.+    -- The key is the feature name, and the value is the variation name.+    featureVariations :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name of this treatment.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Treatment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'treatment_description' - The description of the treatment.+--+-- 'featureVariations', 'treatment_featureVariations' - The feature variation used for this treatment. This is a key-value pair.+-- The key is the feature name, and the value is the variation name.+--+-- 'name', 'treatment_name' - The name of this treatment.+newTreatment ::+  -- | 'name'+  Prelude.Text ->+  Treatment+newTreatment pName_ =+  Treatment'+    { description = Prelude.Nothing,+      featureVariations = Prelude.Nothing,+      name = pName_+    }++-- | The description of the treatment.+treatment_description :: Lens.Lens' Treatment (Prelude.Maybe Prelude.Text)+treatment_description = Lens.lens (\Treatment' {description} -> description) (\s@Treatment' {} a -> s {description = a} :: Treatment)++-- | The feature variation used for this treatment. This is a key-value pair.+-- The key is the feature name, and the value is the variation name.+treatment_featureVariations :: Lens.Lens' Treatment (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+treatment_featureVariations = Lens.lens (\Treatment' {featureVariations} -> featureVariations) (\s@Treatment' {} a -> s {featureVariations = a} :: Treatment) Prelude.. Lens.mapping Lens.coerced++-- | The name of this treatment.+treatment_name :: Lens.Lens' Treatment Prelude.Text+treatment_name = Lens.lens (\Treatment' {name} -> name) (\s@Treatment' {} a -> s {name = a} :: Treatment)++instance Data.FromJSON Treatment where+  parseJSON =+    Data.withObject+      "Treatment"+      ( \x ->+          Treatment'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> ( x+                            Data..:? "featureVariations"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..: "name")+      )++instance Prelude.Hashable Treatment where+  hashWithSalt _salt Treatment' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` featureVariations+      `Prelude.hashWithSalt` name++instance Prelude.NFData Treatment where+  rnf Treatment' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf featureVariations+      `Prelude.seq` Prelude.rnf name
+ gen/Amazonka/Evidently/Types/TreatmentConfig.hs view
@@ -0,0 +1,114 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.TreatmentConfig+-- 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.Evidently.Types.TreatmentConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A structure that defines one treatment in an experiment. A treatment is+-- a variation of the feature that you are including in the experiment.+--+-- /See:/ 'newTreatmentConfig' smart constructor.+data TreatmentConfig = TreatmentConfig'+  { -- | A description for this treatment.+    description :: Prelude.Maybe Prelude.Text,+    -- | The feature that this experiment is testing.+    feature :: Prelude.Text,+    -- | A name for this treatment.+    name :: Prelude.Text,+    -- | The name of the variation to use as this treatment in the experiment.+    variation :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TreatmentConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'treatmentConfig_description' - A description for this treatment.+--+-- 'feature', 'treatmentConfig_feature' - The feature that this experiment is testing.+--+-- 'name', 'treatmentConfig_name' - A name for this treatment.+--+-- 'variation', 'treatmentConfig_variation' - The name of the variation to use as this treatment in the experiment.+newTreatmentConfig ::+  -- | 'feature'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  -- | 'variation'+  Prelude.Text ->+  TreatmentConfig+newTreatmentConfig pFeature_ pName_ pVariation_ =+  TreatmentConfig'+    { description = Prelude.Nothing,+      feature = pFeature_,+      name = pName_,+      variation = pVariation_+    }++-- | A description for this treatment.+treatmentConfig_description :: Lens.Lens' TreatmentConfig (Prelude.Maybe Prelude.Text)+treatmentConfig_description = Lens.lens (\TreatmentConfig' {description} -> description) (\s@TreatmentConfig' {} a -> s {description = a} :: TreatmentConfig)++-- | The feature that this experiment is testing.+treatmentConfig_feature :: Lens.Lens' TreatmentConfig Prelude.Text+treatmentConfig_feature = Lens.lens (\TreatmentConfig' {feature} -> feature) (\s@TreatmentConfig' {} a -> s {feature = a} :: TreatmentConfig)++-- | A name for this treatment.+treatmentConfig_name :: Lens.Lens' TreatmentConfig Prelude.Text+treatmentConfig_name = Lens.lens (\TreatmentConfig' {name} -> name) (\s@TreatmentConfig' {} a -> s {name = a} :: TreatmentConfig)++-- | The name of the variation to use as this treatment in the experiment.+treatmentConfig_variation :: Lens.Lens' TreatmentConfig Prelude.Text+treatmentConfig_variation = Lens.lens (\TreatmentConfig' {variation} -> variation) (\s@TreatmentConfig' {} a -> s {variation = a} :: TreatmentConfig)++instance Prelude.Hashable TreatmentConfig where+  hashWithSalt _salt TreatmentConfig' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` feature+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` variation++instance Prelude.NFData TreatmentConfig where+  rnf TreatmentConfig' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf feature+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf variation++instance Data.ToJSON TreatmentConfig where+  toJSON TreatmentConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            Prelude.Just ("feature" Data..= feature),+            Prelude.Just ("name" Data..= name),+            Prelude.Just ("variation" Data..= variation)+          ]+      )
+ gen/Amazonka/Evidently/Types/VariableValue.hs view
@@ -0,0 +1,133 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.VariableValue+-- 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.Evidently.Types.VariableValue where++import qualified 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 value assigned to a feature variation. This structure must contain+-- exactly one field. It can be @boolValue@, @doubleValue@, @longValue@, or+-- @stringValue@.+--+-- /See:/ 'newVariableValue' smart constructor.+data VariableValue = VariableValue'+  { -- | If this feature uses the Boolean variation type, this field contains the+    -- Boolean value of this variation.+    boolValue :: Prelude.Maybe Prelude.Bool,+    -- | If this feature uses the double integer variation type, this field+    -- contains the double integer value of this variation.+    doubleValue :: Prelude.Maybe Prelude.Double,+    -- | If this feature uses the long variation type, this field contains the+    -- long value of this variation.+    longValue :: Prelude.Maybe Prelude.Integer,+    -- | If this feature uses the string variation type, this field contains the+    -- string value of this variation.+    stringValue :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VariableValue' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'boolValue', 'variableValue_boolValue' - If this feature uses the Boolean variation type, this field contains the+-- Boolean value of this variation.+--+-- 'doubleValue', 'variableValue_doubleValue' - If this feature uses the double integer variation type, this field+-- contains the double integer value of this variation.+--+-- 'longValue', 'variableValue_longValue' - If this feature uses the long variation type, this field contains the+-- long value of this variation.+--+-- 'stringValue', 'variableValue_stringValue' - If this feature uses the string variation type, this field contains the+-- string value of this variation.+newVariableValue ::+  VariableValue+newVariableValue =+  VariableValue'+    { boolValue = Prelude.Nothing,+      doubleValue = Prelude.Nothing,+      longValue = Prelude.Nothing,+      stringValue = Prelude.Nothing+    }++-- | If this feature uses the Boolean variation type, this field contains the+-- Boolean value of this variation.+variableValue_boolValue :: Lens.Lens' VariableValue (Prelude.Maybe Prelude.Bool)+variableValue_boolValue = Lens.lens (\VariableValue' {boolValue} -> boolValue) (\s@VariableValue' {} a -> s {boolValue = a} :: VariableValue)++-- | If this feature uses the double integer variation type, this field+-- contains the double integer value of this variation.+variableValue_doubleValue :: Lens.Lens' VariableValue (Prelude.Maybe Prelude.Double)+variableValue_doubleValue = Lens.lens (\VariableValue' {doubleValue} -> doubleValue) (\s@VariableValue' {} a -> s {doubleValue = a} :: VariableValue)++-- | If this feature uses the long variation type, this field contains the+-- long value of this variation.+variableValue_longValue :: Lens.Lens' VariableValue (Prelude.Maybe Prelude.Integer)+variableValue_longValue = Lens.lens (\VariableValue' {longValue} -> longValue) (\s@VariableValue' {} a -> s {longValue = a} :: VariableValue)++-- | If this feature uses the string variation type, this field contains the+-- string value of this variation.+variableValue_stringValue :: Lens.Lens' VariableValue (Prelude.Maybe Prelude.Text)+variableValue_stringValue = Lens.lens (\VariableValue' {stringValue} -> stringValue) (\s@VariableValue' {} a -> s {stringValue = a} :: VariableValue)++instance Data.FromJSON VariableValue where+  parseJSON =+    Data.withObject+      "VariableValue"+      ( \x ->+          VariableValue'+            Prelude.<$> (x Data..:? "boolValue")+            Prelude.<*> (x Data..:? "doubleValue")+            Prelude.<*> (x Data..:? "longValue")+            Prelude.<*> (x Data..:? "stringValue")+      )++instance Prelude.Hashable VariableValue where+  hashWithSalt _salt VariableValue' {..} =+    _salt+      `Prelude.hashWithSalt` boolValue+      `Prelude.hashWithSalt` doubleValue+      `Prelude.hashWithSalt` longValue+      `Prelude.hashWithSalt` stringValue++instance Prelude.NFData VariableValue where+  rnf VariableValue' {..} =+    Prelude.rnf boolValue+      `Prelude.seq` Prelude.rnf doubleValue+      `Prelude.seq` Prelude.rnf longValue+      `Prelude.seq` Prelude.rnf stringValue++instance Data.ToJSON VariableValue where+  toJSON VariableValue' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("boolValue" Data..=) Prelude.<$> boolValue,+            ("doubleValue" Data..=) Prelude.<$> doubleValue,+            ("longValue" Data..=) Prelude.<$> longValue,+            ("stringValue" Data..=) Prelude.<$> stringValue+          ]+      )
+ gen/Amazonka/Evidently/Types/Variation.hs view
@@ -0,0 +1,85 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.Variation+-- 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.Evidently.Types.Variation where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.VariableValue+import qualified Amazonka.Prelude as Prelude++-- | This structure contains the name and variation value of one variation of+-- a feature.+--+-- /See:/ 'newVariation' smart constructor.+data Variation = Variation'+  { -- | The name of the variation.+    name :: Prelude.Maybe Prelude.Text,+    -- | The value assigned to this variation.+    value :: Prelude.Maybe VariableValue+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Variation' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'variation_name' - The name of the variation.+--+-- 'value', 'variation_value' - The value assigned to this variation.+newVariation ::+  Variation+newVariation =+  Variation'+    { name = Prelude.Nothing,+      value = Prelude.Nothing+    }++-- | The name of the variation.+variation_name :: Lens.Lens' Variation (Prelude.Maybe Prelude.Text)+variation_name = Lens.lens (\Variation' {name} -> name) (\s@Variation' {} a -> s {name = a} :: Variation)++-- | The value assigned to this variation.+variation_value :: Lens.Lens' Variation (Prelude.Maybe VariableValue)+variation_value = Lens.lens (\Variation' {value} -> value) (\s@Variation' {} a -> s {value = a} :: Variation)++instance Data.FromJSON Variation where+  parseJSON =+    Data.withObject+      "Variation"+      ( \x ->+          Variation'+            Prelude.<$> (x Data..:? "name")+            Prelude.<*> (x Data..:? "value")+      )++instance Prelude.Hashable Variation where+  hashWithSalt _salt Variation' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` value++instance Prelude.NFData Variation where+  rnf Variation' {..} =+    Prelude.rnf name `Prelude.seq` Prelude.rnf value
+ gen/Amazonka/Evidently/Types/VariationConfig.hs view
@@ -0,0 +1,85 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Evidently.Types.VariationConfig+-- 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.Evidently.Types.VariationConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types.VariableValue+import qualified Amazonka.Prelude as Prelude++-- | This structure contains the name and variation value of one variation of+-- a feature.+--+-- /See:/ 'newVariationConfig' smart constructor.+data VariationConfig = VariationConfig'+  { -- | The name of the variation.+    name :: Prelude.Text,+    -- | The value assigned to this variation.+    value :: VariableValue+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VariationConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'variationConfig_name' - The name of the variation.+--+-- 'value', 'variationConfig_value' - The value assigned to this variation.+newVariationConfig ::+  -- | 'name'+  Prelude.Text ->+  -- | 'value'+  VariableValue ->+  VariationConfig+newVariationConfig pName_ pValue_ =+  VariationConfig' {name = pName_, value = pValue_}++-- | The name of the variation.+variationConfig_name :: Lens.Lens' VariationConfig Prelude.Text+variationConfig_name = Lens.lens (\VariationConfig' {name} -> name) (\s@VariationConfig' {} a -> s {name = a} :: VariationConfig)++-- | The value assigned to this variation.+variationConfig_value :: Lens.Lens' VariationConfig VariableValue+variationConfig_value = Lens.lens (\VariationConfig' {value} -> value) (\s@VariationConfig' {} a -> s {value = a} :: VariationConfig)++instance Prelude.Hashable VariationConfig where+  hashWithSalt _salt VariationConfig' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` value++instance Prelude.NFData VariationConfig where+  rnf VariationConfig' {..} =+    Prelude.rnf name `Prelude.seq` Prelude.rnf value++instance Data.ToJSON VariationConfig where+  toJSON VariationConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("name" Data..= name),+            Prelude.Just ("value" Data..= value)+          ]+      )
+ gen/Amazonka/Evidently/Types/VariationValueType.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.Evidently.Types.VariationValueType+-- 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.Evidently.Types.VariationValueType+  ( VariationValueType+      ( ..,+        VariationValueType_BOOLEAN,+        VariationValueType_DOUBLE,+        VariationValueType_LONG,+        VariationValueType_STRING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype VariationValueType = VariationValueType'+  { fromVariationValueType ::+      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 VariationValueType_BOOLEAN :: VariationValueType+pattern VariationValueType_BOOLEAN = VariationValueType' "BOOLEAN"++pattern VariationValueType_DOUBLE :: VariationValueType+pattern VariationValueType_DOUBLE = VariationValueType' "DOUBLE"++pattern VariationValueType_LONG :: VariationValueType+pattern VariationValueType_LONG = VariationValueType' "LONG"++pattern VariationValueType_STRING :: VariationValueType+pattern VariationValueType_STRING = VariationValueType' "STRING"++{-# COMPLETE+  VariationValueType_BOOLEAN,+  VariationValueType_DOUBLE,+  VariationValueType_LONG,+  VariationValueType_STRING,+  VariationValueType'+  #-}
+ gen/Amazonka/Evidently/UntagResource.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.Evidently.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)+--+-- Removes one or more tags from the specified resource.+module Amazonka.Evidently.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.Evidently.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 ARN of the CloudWatch Evidently resource that you\'re removing tags+    -- from.+    resourceArn :: Prelude.Text,+    -- | The list of tag keys to remove from the resource.+    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 ARN of the CloudWatch Evidently resource that you\'re removing tags+-- from.+--+-- 'tagKeys', 'untagResource_tagKeys' - The list of tag keys to remove from the resource.+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Prelude.mempty+    }++-- | The ARN of the CloudWatch Evidently resource that you\'re removing tags+-- from.+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | The list of tag keys to remove from the resource.+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 UntagResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery UntagResource where+  toQuery UntagResource' {..} =+    Prelude.mconcat+      ["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/Evidently/UpdateExperiment.hs view
@@ -0,0 +1,362 @@+{-# 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.Evidently.UpdateExperiment+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates an Evidently experiment.+--+-- Don\'t use this operation to update an experiment\'s tag. Instead, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_TagResource.html TagResource>.+module Amazonka.Evidently.UpdateExperiment+  ( -- * Creating a Request+    UpdateExperiment (..),+    newUpdateExperiment,++    -- * Request Lenses+    updateExperiment_description,+    updateExperiment_metricGoals,+    updateExperiment_onlineAbConfig,+    updateExperiment_randomizationSalt,+    updateExperiment_removeSegment,+    updateExperiment_samplingRate,+    updateExperiment_segment,+    updateExperiment_treatments,+    updateExperiment_experiment,+    updateExperiment_project,++    -- * Destructuring the Response+    UpdateExperimentResponse (..),+    newUpdateExperimentResponse,++    -- * Response Lenses+    updateExperimentResponse_httpStatus,+    updateExperimentResponse_experiment,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateExperiment' smart constructor.+data UpdateExperiment = UpdateExperiment'+  { -- | An optional description of the experiment.+    description :: Prelude.Maybe Prelude.Text,+    -- | An array of structures that defines the metrics used for the experiment,+    -- and whether a higher or lower value for each metric is the goal.+    metricGoals :: Prelude.Maybe (Prelude.NonEmpty MetricGoalConfig),+    -- | A structure that contains the configuration of which variation o use as+    -- the \"control\" version. The \"control\" version is used for comparison+    -- with other variations. This structure also specifies how much experiment+    -- traffic is allocated to each variation.+    onlineAbConfig :: Prelude.Maybe OnlineAbConfig,+    -- | When Evidently assigns a particular user session to an experiment, it+    -- must use a randomization ID to determine which variation the user+    -- session is served. This randomization ID is a combination of the entity+    -- ID and @randomizationSalt@. If you omit @randomizationSalt@, Evidently+    -- uses the experiment name as the @randomizationSalt@.+    randomizationSalt :: Prelude.Maybe Prelude.Text,+    -- | Removes a segment from being used in an experiment. You can\'t use this+    -- parameter if the experiment is currently running.+    removeSegment :: Prelude.Maybe Prelude.Bool,+    -- | The portion of the available audience that you want to allocate to this+    -- experiment, in thousandths of a percent. The available audience is the+    -- total audience minus the audience that you have allocated to overrides+    -- or current launches of this feature.+    --+    -- This is represented in thousandths of a percent. For example, specify+    -- 20,000 to allocate 20% of the available audience.+    samplingRate :: Prelude.Maybe Prelude.Natural,+    -- | Adds an audience /segment/ to an experiment. When a segment is used in+    -- an experiment, only user sessions that match the segment pattern are+    -- used in the experiment. You can\'t use this parameter if the experiment+    -- is currently running.+    segment :: Prelude.Maybe Prelude.Text,+    -- | An array of structures that define the variations being tested in the+    -- experiment.+    treatments :: Prelude.Maybe [TreatmentConfig],+    -- | The name of the experiment to update.+    experiment :: Prelude.Text,+    -- | The name or ARN of the project that contains the experiment that you+    -- want to update.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateExperiment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateExperiment_description' - An optional description of the experiment.+--+-- 'metricGoals', 'updateExperiment_metricGoals' - An array of structures that defines the metrics used for the experiment,+-- and whether a higher or lower value for each metric is the goal.+--+-- 'onlineAbConfig', 'updateExperiment_onlineAbConfig' - A structure that contains the configuration of which variation o use as+-- the \"control\" version. The \"control\" version is used for comparison+-- with other variations. This structure also specifies how much experiment+-- traffic is allocated to each variation.+--+-- 'randomizationSalt', 'updateExperiment_randomizationSalt' - When Evidently assigns a particular user session to an experiment, it+-- must use a randomization ID to determine which variation the user+-- session is served. This randomization ID is a combination of the entity+-- ID and @randomizationSalt@. If you omit @randomizationSalt@, Evidently+-- uses the experiment name as the @randomizationSalt@.+--+-- 'removeSegment', 'updateExperiment_removeSegment' - Removes a segment from being used in an experiment. You can\'t use this+-- parameter if the experiment is currently running.+--+-- 'samplingRate', 'updateExperiment_samplingRate' - The portion of the available audience that you want to allocate to this+-- experiment, in thousandths of a percent. The available audience is the+-- total audience minus the audience that you have allocated to overrides+-- or current launches of this feature.+--+-- This is represented in thousandths of a percent. For example, specify+-- 20,000 to allocate 20% of the available audience.+--+-- 'segment', 'updateExperiment_segment' - Adds an audience /segment/ to an experiment. When a segment is used in+-- an experiment, only user sessions that match the segment pattern are+-- used in the experiment. You can\'t use this parameter if the experiment+-- is currently running.+--+-- 'treatments', 'updateExperiment_treatments' - An array of structures that define the variations being tested in the+-- experiment.+--+-- 'experiment', 'updateExperiment_experiment' - The name of the experiment to update.+--+-- 'project', 'updateExperiment_project' - The name or ARN of the project that contains the experiment that you+-- want to update.+newUpdateExperiment ::+  -- | 'experiment'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  UpdateExperiment+newUpdateExperiment pExperiment_ pProject_ =+  UpdateExperiment'+    { description = Prelude.Nothing,+      metricGoals = Prelude.Nothing,+      onlineAbConfig = Prelude.Nothing,+      randomizationSalt = Prelude.Nothing,+      removeSegment = Prelude.Nothing,+      samplingRate = Prelude.Nothing,+      segment = Prelude.Nothing,+      treatments = Prelude.Nothing,+      experiment = pExperiment_,+      project = pProject_+    }++-- | An optional description of the experiment.+updateExperiment_description :: Lens.Lens' UpdateExperiment (Prelude.Maybe Prelude.Text)+updateExperiment_description = Lens.lens (\UpdateExperiment' {description} -> description) (\s@UpdateExperiment' {} a -> s {description = a} :: UpdateExperiment)++-- | An array of structures that defines the metrics used for the experiment,+-- and whether a higher or lower value for each metric is the goal.+updateExperiment_metricGoals :: Lens.Lens' UpdateExperiment (Prelude.Maybe (Prelude.NonEmpty MetricGoalConfig))+updateExperiment_metricGoals = Lens.lens (\UpdateExperiment' {metricGoals} -> metricGoals) (\s@UpdateExperiment' {} a -> s {metricGoals = a} :: UpdateExperiment) Prelude.. Lens.mapping Lens.coerced++-- | A structure that contains the configuration of which variation o use as+-- the \"control\" version. The \"control\" version is used for comparison+-- with other variations. This structure also specifies how much experiment+-- traffic is allocated to each variation.+updateExperiment_onlineAbConfig :: Lens.Lens' UpdateExperiment (Prelude.Maybe OnlineAbConfig)+updateExperiment_onlineAbConfig = Lens.lens (\UpdateExperiment' {onlineAbConfig} -> onlineAbConfig) (\s@UpdateExperiment' {} a -> s {onlineAbConfig = a} :: UpdateExperiment)++-- | When Evidently assigns a particular user session to an experiment, it+-- must use a randomization ID to determine which variation the user+-- session is served. This randomization ID is a combination of the entity+-- ID and @randomizationSalt@. If you omit @randomizationSalt@, Evidently+-- uses the experiment name as the @randomizationSalt@.+updateExperiment_randomizationSalt :: Lens.Lens' UpdateExperiment (Prelude.Maybe Prelude.Text)+updateExperiment_randomizationSalt = Lens.lens (\UpdateExperiment' {randomizationSalt} -> randomizationSalt) (\s@UpdateExperiment' {} a -> s {randomizationSalt = a} :: UpdateExperiment)++-- | Removes a segment from being used in an experiment. You can\'t use this+-- parameter if the experiment is currently running.+updateExperiment_removeSegment :: Lens.Lens' UpdateExperiment (Prelude.Maybe Prelude.Bool)+updateExperiment_removeSegment = Lens.lens (\UpdateExperiment' {removeSegment} -> removeSegment) (\s@UpdateExperiment' {} a -> s {removeSegment = a} :: UpdateExperiment)++-- | The portion of the available audience that you want to allocate to this+-- experiment, in thousandths of a percent. The available audience is the+-- total audience minus the audience that you have allocated to overrides+-- or current launches of this feature.+--+-- This is represented in thousandths of a percent. For example, specify+-- 20,000 to allocate 20% of the available audience.+updateExperiment_samplingRate :: Lens.Lens' UpdateExperiment (Prelude.Maybe Prelude.Natural)+updateExperiment_samplingRate = Lens.lens (\UpdateExperiment' {samplingRate} -> samplingRate) (\s@UpdateExperiment' {} a -> s {samplingRate = a} :: UpdateExperiment)++-- | Adds an audience /segment/ to an experiment. When a segment is used in+-- an experiment, only user sessions that match the segment pattern are+-- used in the experiment. You can\'t use this parameter if the experiment+-- is currently running.+updateExperiment_segment :: Lens.Lens' UpdateExperiment (Prelude.Maybe Prelude.Text)+updateExperiment_segment = Lens.lens (\UpdateExperiment' {segment} -> segment) (\s@UpdateExperiment' {} a -> s {segment = a} :: UpdateExperiment)++-- | An array of structures that define the variations being tested in the+-- experiment.+updateExperiment_treatments :: Lens.Lens' UpdateExperiment (Prelude.Maybe [TreatmentConfig])+updateExperiment_treatments = Lens.lens (\UpdateExperiment' {treatments} -> treatments) (\s@UpdateExperiment' {} a -> s {treatments = a} :: UpdateExperiment) Prelude.. Lens.mapping Lens.coerced++-- | The name of the experiment to update.+updateExperiment_experiment :: Lens.Lens' UpdateExperiment Prelude.Text+updateExperiment_experiment = Lens.lens (\UpdateExperiment' {experiment} -> experiment) (\s@UpdateExperiment' {} a -> s {experiment = a} :: UpdateExperiment)++-- | The name or ARN of the project that contains the experiment that you+-- want to update.+updateExperiment_project :: Lens.Lens' UpdateExperiment Prelude.Text+updateExperiment_project = Lens.lens (\UpdateExperiment' {project} -> project) (\s@UpdateExperiment' {} a -> s {project = a} :: UpdateExperiment)++instance Core.AWSRequest UpdateExperiment where+  type+    AWSResponse UpdateExperiment =+      UpdateExperimentResponse+  request overrides =+    Request.patchJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateExperimentResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "experiment")+      )++instance Prelude.Hashable UpdateExperiment where+  hashWithSalt _salt UpdateExperiment' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` metricGoals+      `Prelude.hashWithSalt` onlineAbConfig+      `Prelude.hashWithSalt` randomizationSalt+      `Prelude.hashWithSalt` removeSegment+      `Prelude.hashWithSalt` samplingRate+      `Prelude.hashWithSalt` segment+      `Prelude.hashWithSalt` treatments+      `Prelude.hashWithSalt` experiment+      `Prelude.hashWithSalt` project++instance Prelude.NFData UpdateExperiment where+  rnf UpdateExperiment' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf metricGoals+      `Prelude.seq` Prelude.rnf onlineAbConfig+      `Prelude.seq` Prelude.rnf randomizationSalt+      `Prelude.seq` Prelude.rnf removeSegment+      `Prelude.seq` Prelude.rnf samplingRate+      `Prelude.seq` Prelude.rnf segment+      `Prelude.seq` Prelude.rnf treatments+      `Prelude.seq` Prelude.rnf experiment+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders UpdateExperiment where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateExperiment where+  toJSON UpdateExperiment' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            ("metricGoals" Data..=) Prelude.<$> metricGoals,+            ("onlineAbConfig" Data..=)+              Prelude.<$> onlineAbConfig,+            ("randomizationSalt" Data..=)+              Prelude.<$> randomizationSalt,+            ("removeSegment" Data..=) Prelude.<$> removeSegment,+            ("samplingRate" Data..=) Prelude.<$> samplingRate,+            ("segment" Data..=) Prelude.<$> segment,+            ("treatments" Data..=) Prelude.<$> treatments+          ]+      )++instance Data.ToPath UpdateExperiment where+  toPath UpdateExperiment' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/experiments/",+        Data.toBS experiment+      ]++instance Data.ToQuery UpdateExperiment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateExperimentResponse' smart constructor.+data UpdateExperimentResponse = UpdateExperimentResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A structure containing the configuration details of the experiment that+    -- was updated.+    experiment :: Experiment+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateExperimentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateExperimentResponse_httpStatus' - The response's http status code.+--+-- 'experiment', 'updateExperimentResponse_experiment' - A structure containing the configuration details of the experiment that+-- was updated.+newUpdateExperimentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'experiment'+  Experiment ->+  UpdateExperimentResponse+newUpdateExperimentResponse pHttpStatus_ pExperiment_ =+  UpdateExperimentResponse'+    { httpStatus =+        pHttpStatus_,+      experiment = pExperiment_+    }++-- | The response's http status code.+updateExperimentResponse_httpStatus :: Lens.Lens' UpdateExperimentResponse Prelude.Int+updateExperimentResponse_httpStatus = Lens.lens (\UpdateExperimentResponse' {httpStatus} -> httpStatus) (\s@UpdateExperimentResponse' {} a -> s {httpStatus = a} :: UpdateExperimentResponse)++-- | A structure containing the configuration details of the experiment that+-- was updated.+updateExperimentResponse_experiment :: Lens.Lens' UpdateExperimentResponse Experiment+updateExperimentResponse_experiment = Lens.lens (\UpdateExperimentResponse' {experiment} -> experiment) (\s@UpdateExperimentResponse' {} a -> s {experiment = a} :: UpdateExperimentResponse)++instance Prelude.NFData UpdateExperimentResponse where+  rnf UpdateExperimentResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf experiment
+ gen/Amazonka/Evidently/UpdateFeature.hs view
@@ -0,0 +1,325 @@+{-# 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.Evidently.UpdateFeature+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates an existing feature.+--+-- You can\'t use this operation to update the tags of an existing feature.+-- Instead, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_TagResource.html TagResource>.+module Amazonka.Evidently.UpdateFeature+  ( -- * Creating a Request+    UpdateFeature (..),+    newUpdateFeature,++    -- * Request Lenses+    updateFeature_addOrUpdateVariations,+    updateFeature_defaultVariation,+    updateFeature_description,+    updateFeature_entityOverrides,+    updateFeature_evaluationStrategy,+    updateFeature_removeVariations,+    updateFeature_feature,+    updateFeature_project,++    -- * Destructuring the Response+    UpdateFeatureResponse (..),+    newUpdateFeatureResponse,++    -- * Response Lenses+    updateFeatureResponse_httpStatus,+    updateFeatureResponse_feature,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateFeature' smart constructor.+data UpdateFeature = UpdateFeature'+  { -- | To update variation configurations for this feature, or add new ones,+    -- specify this structure. In this array, include any variations that you+    -- want to add or update. If the array includes a variation name that+    -- already exists for this feature, it is updated. If it includes a new+    -- variation name, it is added as a new variation.+    addOrUpdateVariations :: Prelude.Maybe (Prelude.NonEmpty VariationConfig),+    -- | The name of the variation to use as the default variation. The default+    -- variation is served to users who are not allocated to any ongoing+    -- launches or experiments of this feature.+    defaultVariation :: Prelude.Maybe Prelude.Text,+    -- | An optional description of the feature.+    description :: Prelude.Maybe Prelude.Text,+    -- | Specified users that should always be served a specific variation of a+    -- feature. Each user is specified by a key-value pair . For each key,+    -- specify a user by entering their user ID, account ID, or some other+    -- identifier. For the value, specify the name of the variation that they+    -- are to be served.+    entityOverrides :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Specify @ALL_RULES@ to activate the traffic allocation specified by any+    -- ongoing launches or experiments. Specify @DEFAULT_VARIATION@ to serve+    -- the default variation to all users instead.+    evaluationStrategy :: Prelude.Maybe FeatureEvaluationStrategy,+    -- | Removes a variation from the feature. If the variation you specify+    -- doesn\'t exist, then this makes no change and does not report an error.+    --+    -- This operation fails if you try to remove a variation that is part of an+    -- ongoing launch or experiment.+    removeVariations :: Prelude.Maybe [Prelude.Text],+    -- | The name of the feature to be updated.+    feature :: Prelude.Text,+    -- | The name or ARN of the project that contains the feature to be updated.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateFeature' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addOrUpdateVariations', 'updateFeature_addOrUpdateVariations' - To update variation configurations for this feature, or add new ones,+-- specify this structure. In this array, include any variations that you+-- want to add or update. If the array includes a variation name that+-- already exists for this feature, it is updated. If it includes a new+-- variation name, it is added as a new variation.+--+-- 'defaultVariation', 'updateFeature_defaultVariation' - The name of the variation to use as the default variation. The default+-- variation is served to users who are not allocated to any ongoing+-- launches or experiments of this feature.+--+-- 'description', 'updateFeature_description' - An optional description of the feature.+--+-- 'entityOverrides', 'updateFeature_entityOverrides' - Specified users that should always be served a specific variation of a+-- feature. Each user is specified by a key-value pair . For each key,+-- specify a user by entering their user ID, account ID, or some other+-- identifier. For the value, specify the name of the variation that they+-- are to be served.+--+-- 'evaluationStrategy', 'updateFeature_evaluationStrategy' - Specify @ALL_RULES@ to activate the traffic allocation specified by any+-- ongoing launches or experiments. Specify @DEFAULT_VARIATION@ to serve+-- the default variation to all users instead.+--+-- 'removeVariations', 'updateFeature_removeVariations' - Removes a variation from the feature. If the variation you specify+-- doesn\'t exist, then this makes no change and does not report an error.+--+-- This operation fails if you try to remove a variation that is part of an+-- ongoing launch or experiment.+--+-- 'feature', 'updateFeature_feature' - The name of the feature to be updated.+--+-- 'project', 'updateFeature_project' - The name or ARN of the project that contains the feature to be updated.+newUpdateFeature ::+  -- | 'feature'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  UpdateFeature+newUpdateFeature pFeature_ pProject_ =+  UpdateFeature'+    { addOrUpdateVariations =+        Prelude.Nothing,+      defaultVariation = Prelude.Nothing,+      description = Prelude.Nothing,+      entityOverrides = Prelude.Nothing,+      evaluationStrategy = Prelude.Nothing,+      removeVariations = Prelude.Nothing,+      feature = pFeature_,+      project = pProject_+    }++-- | To update variation configurations for this feature, or add new ones,+-- specify this structure. In this array, include any variations that you+-- want to add or update. If the array includes a variation name that+-- already exists for this feature, it is updated. If it includes a new+-- variation name, it is added as a new variation.+updateFeature_addOrUpdateVariations :: Lens.Lens' UpdateFeature (Prelude.Maybe (Prelude.NonEmpty VariationConfig))+updateFeature_addOrUpdateVariations = Lens.lens (\UpdateFeature' {addOrUpdateVariations} -> addOrUpdateVariations) (\s@UpdateFeature' {} a -> s {addOrUpdateVariations = a} :: UpdateFeature) Prelude.. Lens.mapping Lens.coerced++-- | The name of the variation to use as the default variation. The default+-- variation is served to users who are not allocated to any ongoing+-- launches or experiments of this feature.+updateFeature_defaultVariation :: Lens.Lens' UpdateFeature (Prelude.Maybe Prelude.Text)+updateFeature_defaultVariation = Lens.lens (\UpdateFeature' {defaultVariation} -> defaultVariation) (\s@UpdateFeature' {} a -> s {defaultVariation = a} :: UpdateFeature)++-- | An optional description of the feature.+updateFeature_description :: Lens.Lens' UpdateFeature (Prelude.Maybe Prelude.Text)+updateFeature_description = Lens.lens (\UpdateFeature' {description} -> description) (\s@UpdateFeature' {} a -> s {description = a} :: UpdateFeature)++-- | Specified users that should always be served a specific variation of a+-- feature. Each user is specified by a key-value pair . For each key,+-- specify a user by entering their user ID, account ID, or some other+-- identifier. For the value, specify the name of the variation that they+-- are to be served.+updateFeature_entityOverrides :: Lens.Lens' UpdateFeature (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+updateFeature_entityOverrides = Lens.lens (\UpdateFeature' {entityOverrides} -> entityOverrides) (\s@UpdateFeature' {} a -> s {entityOverrides = a} :: UpdateFeature) Prelude.. Lens.mapping Lens.coerced++-- | Specify @ALL_RULES@ to activate the traffic allocation specified by any+-- ongoing launches or experiments. Specify @DEFAULT_VARIATION@ to serve+-- the default variation to all users instead.+updateFeature_evaluationStrategy :: Lens.Lens' UpdateFeature (Prelude.Maybe FeatureEvaluationStrategy)+updateFeature_evaluationStrategy = Lens.lens (\UpdateFeature' {evaluationStrategy} -> evaluationStrategy) (\s@UpdateFeature' {} a -> s {evaluationStrategy = a} :: UpdateFeature)++-- | Removes a variation from the feature. If the variation you specify+-- doesn\'t exist, then this makes no change and does not report an error.+--+-- This operation fails if you try to remove a variation that is part of an+-- ongoing launch or experiment.+updateFeature_removeVariations :: Lens.Lens' UpdateFeature (Prelude.Maybe [Prelude.Text])+updateFeature_removeVariations = Lens.lens (\UpdateFeature' {removeVariations} -> removeVariations) (\s@UpdateFeature' {} a -> s {removeVariations = a} :: UpdateFeature) Prelude.. Lens.mapping Lens.coerced++-- | The name of the feature to be updated.+updateFeature_feature :: Lens.Lens' UpdateFeature Prelude.Text+updateFeature_feature = Lens.lens (\UpdateFeature' {feature} -> feature) (\s@UpdateFeature' {} a -> s {feature = a} :: UpdateFeature)++-- | The name or ARN of the project that contains the feature to be updated.+updateFeature_project :: Lens.Lens' UpdateFeature Prelude.Text+updateFeature_project = Lens.lens (\UpdateFeature' {project} -> project) (\s@UpdateFeature' {} a -> s {project = a} :: UpdateFeature)++instance Core.AWSRequest UpdateFeature where+  type+    AWSResponse UpdateFeature =+      UpdateFeatureResponse+  request overrides =+    Request.patchJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateFeatureResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "feature")+      )++instance Prelude.Hashable UpdateFeature where+  hashWithSalt _salt UpdateFeature' {..} =+    _salt+      `Prelude.hashWithSalt` addOrUpdateVariations+      `Prelude.hashWithSalt` defaultVariation+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` entityOverrides+      `Prelude.hashWithSalt` evaluationStrategy+      `Prelude.hashWithSalt` removeVariations+      `Prelude.hashWithSalt` feature+      `Prelude.hashWithSalt` project++instance Prelude.NFData UpdateFeature where+  rnf UpdateFeature' {..} =+    Prelude.rnf addOrUpdateVariations+      `Prelude.seq` Prelude.rnf defaultVariation+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf entityOverrides+      `Prelude.seq` Prelude.rnf evaluationStrategy+      `Prelude.seq` Prelude.rnf removeVariations+      `Prelude.seq` Prelude.rnf feature+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders UpdateFeature where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateFeature where+  toJSON UpdateFeature' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("addOrUpdateVariations" Data..=)+              Prelude.<$> addOrUpdateVariations,+            ("defaultVariation" Data..=)+              Prelude.<$> defaultVariation,+            ("description" Data..=) Prelude.<$> description,+            ("entityOverrides" Data..=)+              Prelude.<$> entityOverrides,+            ("evaluationStrategy" Data..=)+              Prelude.<$> evaluationStrategy,+            ("removeVariations" Data..=)+              Prelude.<$> removeVariations+          ]+      )++instance Data.ToPath UpdateFeature where+  toPath UpdateFeature' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/features/",+        Data.toBS feature+      ]++instance Data.ToQuery UpdateFeature where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateFeatureResponse' smart constructor.+data UpdateFeatureResponse = UpdateFeatureResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A structure that contains information about the updated feature.+    feature :: Feature+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateFeatureResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateFeatureResponse_httpStatus' - The response's http status code.+--+-- 'feature', 'updateFeatureResponse_feature' - A structure that contains information about the updated feature.+newUpdateFeatureResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'feature'+  Feature ->+  UpdateFeatureResponse+newUpdateFeatureResponse pHttpStatus_ pFeature_ =+  UpdateFeatureResponse'+    { httpStatus = pHttpStatus_,+      feature = pFeature_+    }++-- | The response's http status code.+updateFeatureResponse_httpStatus :: Lens.Lens' UpdateFeatureResponse Prelude.Int+updateFeatureResponse_httpStatus = Lens.lens (\UpdateFeatureResponse' {httpStatus} -> httpStatus) (\s@UpdateFeatureResponse' {} a -> s {httpStatus = a} :: UpdateFeatureResponse)++-- | A structure that contains information about the updated feature.+updateFeatureResponse_feature :: Lens.Lens' UpdateFeatureResponse Feature+updateFeatureResponse_feature = Lens.lens (\UpdateFeatureResponse' {feature} -> feature) (\s@UpdateFeatureResponse' {} a -> s {feature = a} :: UpdateFeatureResponse)++instance Prelude.NFData UpdateFeatureResponse where+  rnf UpdateFeatureResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf feature
+ gen/Amazonka/Evidently/UpdateLaunch.hs view
@@ -0,0 +1,286 @@+{-# 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.Evidently.UpdateLaunch+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates a launch of a given feature.+--+-- Don\'t use this operation to update the tags of an existing launch.+-- Instead, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_TagResource.html TagResource>.+module Amazonka.Evidently.UpdateLaunch+  ( -- * Creating a Request+    UpdateLaunch (..),+    newUpdateLaunch,++    -- * Request Lenses+    updateLaunch_description,+    updateLaunch_groups,+    updateLaunch_metricMonitors,+    updateLaunch_randomizationSalt,+    updateLaunch_scheduledSplitsConfig,+    updateLaunch_launch,+    updateLaunch_project,++    -- * Destructuring the Response+    UpdateLaunchResponse (..),+    newUpdateLaunchResponse,++    -- * Response Lenses+    updateLaunchResponse_httpStatus,+    updateLaunchResponse_launch,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateLaunch' smart constructor.+data UpdateLaunch = UpdateLaunch'+  { -- | An optional description for the launch.+    description :: Prelude.Maybe Prelude.Text,+    -- | An array of structures that contains the feature and variations that are+    -- to be used for the launch.+    groups :: Prelude.Maybe (Prelude.NonEmpty LaunchGroupConfig),+    -- | An array of structures that define the metrics that will be used to+    -- monitor the launch performance.+    metricMonitors :: Prelude.Maybe [MetricMonitorConfig],+    -- | When Evidently assigns a particular user session to a launch, it must+    -- use a randomization ID to determine which variation the user session is+    -- served. This randomization ID is a combination of the entity ID and+    -- @randomizationSalt@. If you omit @randomizationSalt@, Evidently uses the+    -- launch name as the @randomizationSalt@.+    randomizationSalt :: Prelude.Maybe Prelude.Text,+    -- | An array of structures that define the traffic allocation percentages+    -- among the feature variations during each step of the launch.+    scheduledSplitsConfig :: Prelude.Maybe ScheduledSplitsLaunchConfig,+    -- | The name of the launch that is to be updated.+    launch :: Prelude.Text,+    -- | The name or ARN of the project that contains the launch that you want to+    -- update.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateLaunch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateLaunch_description' - An optional description for the launch.+--+-- 'groups', 'updateLaunch_groups' - An array of structures that contains the feature and variations that are+-- to be used for the launch.+--+-- 'metricMonitors', 'updateLaunch_metricMonitors' - An array of structures that define the metrics that will be used to+-- monitor the launch performance.+--+-- 'randomizationSalt', 'updateLaunch_randomizationSalt' - When Evidently assigns a particular user session to a launch, it must+-- use a randomization ID to determine which variation the user session is+-- served. This randomization ID is a combination of the entity ID and+-- @randomizationSalt@. If you omit @randomizationSalt@, Evidently uses the+-- launch name as the @randomizationSalt@.+--+-- 'scheduledSplitsConfig', 'updateLaunch_scheduledSplitsConfig' - An array of structures that define the traffic allocation percentages+-- among the feature variations during each step of the launch.+--+-- 'launch', 'updateLaunch_launch' - The name of the launch that is to be updated.+--+-- 'project', 'updateLaunch_project' - The name or ARN of the project that contains the launch that you want to+-- update.+newUpdateLaunch ::+  -- | 'launch'+  Prelude.Text ->+  -- | 'project'+  Prelude.Text ->+  UpdateLaunch+newUpdateLaunch pLaunch_ pProject_ =+  UpdateLaunch'+    { description = Prelude.Nothing,+      groups = Prelude.Nothing,+      metricMonitors = Prelude.Nothing,+      randomizationSalt = Prelude.Nothing,+      scheduledSplitsConfig = Prelude.Nothing,+      launch = pLaunch_,+      project = pProject_+    }++-- | An optional description for the launch.+updateLaunch_description :: Lens.Lens' UpdateLaunch (Prelude.Maybe Prelude.Text)+updateLaunch_description = Lens.lens (\UpdateLaunch' {description} -> description) (\s@UpdateLaunch' {} a -> s {description = a} :: UpdateLaunch)++-- | An array of structures that contains the feature and variations that are+-- to be used for the launch.+updateLaunch_groups :: Lens.Lens' UpdateLaunch (Prelude.Maybe (Prelude.NonEmpty LaunchGroupConfig))+updateLaunch_groups = Lens.lens (\UpdateLaunch' {groups} -> groups) (\s@UpdateLaunch' {} a -> s {groups = a} :: UpdateLaunch) Prelude.. Lens.mapping Lens.coerced++-- | An array of structures that define the metrics that will be used to+-- monitor the launch performance.+updateLaunch_metricMonitors :: Lens.Lens' UpdateLaunch (Prelude.Maybe [MetricMonitorConfig])+updateLaunch_metricMonitors = Lens.lens (\UpdateLaunch' {metricMonitors} -> metricMonitors) (\s@UpdateLaunch' {} a -> s {metricMonitors = a} :: UpdateLaunch) Prelude.. Lens.mapping Lens.coerced++-- | When Evidently assigns a particular user session to a launch, it must+-- use a randomization ID to determine which variation the user session is+-- served. This randomization ID is a combination of the entity ID and+-- @randomizationSalt@. If you omit @randomizationSalt@, Evidently uses the+-- launch name as the @randomizationSalt@.+updateLaunch_randomizationSalt :: Lens.Lens' UpdateLaunch (Prelude.Maybe Prelude.Text)+updateLaunch_randomizationSalt = Lens.lens (\UpdateLaunch' {randomizationSalt} -> randomizationSalt) (\s@UpdateLaunch' {} a -> s {randomizationSalt = a} :: UpdateLaunch)++-- | An array of structures that define the traffic allocation percentages+-- among the feature variations during each step of the launch.+updateLaunch_scheduledSplitsConfig :: Lens.Lens' UpdateLaunch (Prelude.Maybe ScheduledSplitsLaunchConfig)+updateLaunch_scheduledSplitsConfig = Lens.lens (\UpdateLaunch' {scheduledSplitsConfig} -> scheduledSplitsConfig) (\s@UpdateLaunch' {} a -> s {scheduledSplitsConfig = a} :: UpdateLaunch)++-- | The name of the launch that is to be updated.+updateLaunch_launch :: Lens.Lens' UpdateLaunch Prelude.Text+updateLaunch_launch = Lens.lens (\UpdateLaunch' {launch} -> launch) (\s@UpdateLaunch' {} a -> s {launch = a} :: UpdateLaunch)++-- | The name or ARN of the project that contains the launch that you want to+-- update.+updateLaunch_project :: Lens.Lens' UpdateLaunch Prelude.Text+updateLaunch_project = Lens.lens (\UpdateLaunch' {project} -> project) (\s@UpdateLaunch' {} a -> s {project = a} :: UpdateLaunch)++instance Core.AWSRequest UpdateLaunch where+  type AWSResponse UpdateLaunch = UpdateLaunchResponse+  request overrides =+    Request.patchJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateLaunchResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "launch")+      )++instance Prelude.Hashable UpdateLaunch where+  hashWithSalt _salt UpdateLaunch' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` groups+      `Prelude.hashWithSalt` metricMonitors+      `Prelude.hashWithSalt` randomizationSalt+      `Prelude.hashWithSalt` scheduledSplitsConfig+      `Prelude.hashWithSalt` launch+      `Prelude.hashWithSalt` project++instance Prelude.NFData UpdateLaunch where+  rnf UpdateLaunch' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf groups+      `Prelude.seq` Prelude.rnf metricMonitors+      `Prelude.seq` Prelude.rnf randomizationSalt+      `Prelude.seq` Prelude.rnf scheduledSplitsConfig+      `Prelude.seq` Prelude.rnf launch+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders UpdateLaunch where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateLaunch where+  toJSON UpdateLaunch' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            ("groups" Data..=) Prelude.<$> groups,+            ("metricMonitors" Data..=)+              Prelude.<$> metricMonitors,+            ("randomizationSalt" Data..=)+              Prelude.<$> randomizationSalt,+            ("scheduledSplitsConfig" Data..=)+              Prelude.<$> scheduledSplitsConfig+          ]+      )++instance Data.ToPath UpdateLaunch where+  toPath UpdateLaunch' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS project,+        "/launches/",+        Data.toBS launch+      ]++instance Data.ToQuery UpdateLaunch where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateLaunchResponse' smart constructor.+data UpdateLaunchResponse = UpdateLaunchResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A structure that contains the new configuration of the launch that was+    -- updated.+    launch :: Launch+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateLaunchResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateLaunchResponse_httpStatus' - The response's http status code.+--+-- 'launch', 'updateLaunchResponse_launch' - A structure that contains the new configuration of the launch that was+-- updated.+newUpdateLaunchResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'launch'+  Launch ->+  UpdateLaunchResponse+newUpdateLaunchResponse pHttpStatus_ pLaunch_ =+  UpdateLaunchResponse'+    { httpStatus = pHttpStatus_,+      launch = pLaunch_+    }++-- | The response's http status code.+updateLaunchResponse_httpStatus :: Lens.Lens' UpdateLaunchResponse Prelude.Int+updateLaunchResponse_httpStatus = Lens.lens (\UpdateLaunchResponse' {httpStatus} -> httpStatus) (\s@UpdateLaunchResponse' {} a -> s {httpStatus = a} :: UpdateLaunchResponse)++-- | A structure that contains the new configuration of the launch that was+-- updated.+updateLaunchResponse_launch :: Lens.Lens' UpdateLaunchResponse Launch+updateLaunchResponse_launch = Lens.lens (\UpdateLaunchResponse' {launch} -> launch) (\s@UpdateLaunchResponse' {} a -> s {launch = a} :: UpdateLaunchResponse)++instance Prelude.NFData UpdateLaunchResponse where+  rnf UpdateLaunchResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf launch
+ gen/Amazonka/Evidently/UpdateProject.hs view
@@ -0,0 +1,231 @@+{-# 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.Evidently.UpdateProject+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the description of an existing project.+--+-- To create a new project, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_CreateProject.html CreateProject>.+--+-- Don\'t use this operation to update the data storage options of a+-- project. Instead, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_UpdateProjectDataDelivery.html UpdateProjectDataDelivery>.+--+-- Don\'t use this operation to update the tags of a project. Instead, use+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_TagResource.html TagResource>.+module Amazonka.Evidently.UpdateProject+  ( -- * Creating a Request+    UpdateProject (..),+    newUpdateProject,++    -- * Request Lenses+    updateProject_appConfigResource,+    updateProject_description,+    updateProject_project,++    -- * Destructuring the Response+    UpdateProjectResponse (..),+    newUpdateProjectResponse,++    -- * Response Lenses+    updateProjectResponse_httpStatus,+    updateProjectResponse_project,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateProject' smart constructor.+data UpdateProject = UpdateProject'+  { -- | Use this parameter if the project will use client-side evaluation+    -- powered by AppConfig. Client-side evaluation allows your application to+    -- assign variations to user sessions locally instead of by calling the+    -- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_EvaluateFeature.html EvaluateFeature>+    -- operation. This mitigates the latency and availability risks that come+    -- with an API call. allows you to+    --+    -- This parameter is a structure that contains information about the+    -- AppConfig application that will be used for client-side evaluation.+    appConfigResource :: Prelude.Maybe ProjectAppConfigResourceConfig,+    -- | An optional description of the project.+    description :: Prelude.Maybe Prelude.Text,+    -- | The name or ARN of the project to update.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateProject' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'appConfigResource', 'updateProject_appConfigResource' - Use this parameter if the project will use client-side evaluation+-- powered by AppConfig. Client-side evaluation allows your application to+-- assign variations to user sessions locally instead of by calling the+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_EvaluateFeature.html EvaluateFeature>+-- operation. This mitigates the latency and availability risks that come+-- with an API call. allows you to+--+-- This parameter is a structure that contains information about the+-- AppConfig application that will be used for client-side evaluation.+--+-- 'description', 'updateProject_description' - An optional description of the project.+--+-- 'project', 'updateProject_project' - The name or ARN of the project to update.+newUpdateProject ::+  -- | 'project'+  Prelude.Text ->+  UpdateProject+newUpdateProject pProject_ =+  UpdateProject'+    { appConfigResource = Prelude.Nothing,+      description = Prelude.Nothing,+      project = pProject_+    }++-- | Use this parameter if the project will use client-side evaluation+-- powered by AppConfig. Client-side evaluation allows your application to+-- assign variations to user sessions locally instead of by calling the+-- <https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_EvaluateFeature.html EvaluateFeature>+-- operation. This mitigates the latency and availability risks that come+-- with an API call. allows you to+--+-- This parameter is a structure that contains information about the+-- AppConfig application that will be used for client-side evaluation.+updateProject_appConfigResource :: Lens.Lens' UpdateProject (Prelude.Maybe ProjectAppConfigResourceConfig)+updateProject_appConfigResource = Lens.lens (\UpdateProject' {appConfigResource} -> appConfigResource) (\s@UpdateProject' {} a -> s {appConfigResource = a} :: UpdateProject)++-- | An optional description of the project.+updateProject_description :: Lens.Lens' UpdateProject (Prelude.Maybe Prelude.Text)+updateProject_description = Lens.lens (\UpdateProject' {description} -> description) (\s@UpdateProject' {} a -> s {description = a} :: UpdateProject)++-- | The name or ARN of the project to update.+updateProject_project :: Lens.Lens' UpdateProject Prelude.Text+updateProject_project = Lens.lens (\UpdateProject' {project} -> project) (\s@UpdateProject' {} a -> s {project = a} :: UpdateProject)++instance Core.AWSRequest UpdateProject where+  type+    AWSResponse UpdateProject =+      UpdateProjectResponse+  request overrides =+    Request.patchJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateProjectResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "project")+      )++instance Prelude.Hashable UpdateProject where+  hashWithSalt _salt UpdateProject' {..} =+    _salt+      `Prelude.hashWithSalt` appConfigResource+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` project++instance Prelude.NFData UpdateProject where+  rnf UpdateProject' {..} =+    Prelude.rnf appConfigResource+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders UpdateProject where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateProject where+  toJSON UpdateProject' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("appConfigResource" Data..=)+              Prelude.<$> appConfigResource,+            ("description" Data..=) Prelude.<$> description+          ]+      )++instance Data.ToPath UpdateProject where+  toPath UpdateProject' {..} =+    Prelude.mconcat ["/projects/", Data.toBS project]++instance Data.ToQuery UpdateProject where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateProjectResponse' smart constructor.+data UpdateProjectResponse = UpdateProjectResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A structure containing information about the updated project.+    project :: Project+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateProjectResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateProjectResponse_httpStatus' - The response's http status code.+--+-- 'project', 'updateProjectResponse_project' - A structure containing information about the updated project.+newUpdateProjectResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'project'+  Project ->+  UpdateProjectResponse+newUpdateProjectResponse pHttpStatus_ pProject_ =+  UpdateProjectResponse'+    { httpStatus = pHttpStatus_,+      project = pProject_+    }++-- | The response's http status code.+updateProjectResponse_httpStatus :: Lens.Lens' UpdateProjectResponse Prelude.Int+updateProjectResponse_httpStatus = Lens.lens (\UpdateProjectResponse' {httpStatus} -> httpStatus) (\s@UpdateProjectResponse' {} a -> s {httpStatus = a} :: UpdateProjectResponse)++-- | A structure containing information about the updated project.+updateProjectResponse_project :: Lens.Lens' UpdateProjectResponse Project+updateProjectResponse_project = Lens.lens (\UpdateProjectResponse' {project} -> project) (\s@UpdateProjectResponse' {} a -> s {project = a} :: UpdateProjectResponse)++instance Prelude.NFData UpdateProjectResponse where+  rnf UpdateProjectResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf project
+ gen/Amazonka/Evidently/UpdateProjectDataDelivery.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.Evidently.UpdateProjectDataDelivery+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the data storage options for this project. If you store+-- evaluation events, you an keep them and analyze them on your own. If you+-- choose not to store evaluation events, Evidently deletes them after+-- using them to produce metrics and other experiment results that you can+-- view.+--+-- You can\'t specify both @cloudWatchLogs@ and @s3Destination@ in the same+-- operation.+module Amazonka.Evidently.UpdateProjectDataDelivery+  ( -- * Creating a Request+    UpdateProjectDataDelivery (..),+    newUpdateProjectDataDelivery,++    -- * Request Lenses+    updateProjectDataDelivery_cloudWatchLogs,+    updateProjectDataDelivery_s3Destination,+    updateProjectDataDelivery_project,++    -- * Destructuring the Response+    UpdateProjectDataDeliveryResponse (..),+    newUpdateProjectDataDeliveryResponse,++    -- * Response Lenses+    updateProjectDataDeliveryResponse_httpStatus,+    updateProjectDataDeliveryResponse_project,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateProjectDataDelivery' smart constructor.+data UpdateProjectDataDelivery = UpdateProjectDataDelivery'+  { -- | A structure containing the CloudWatch Logs log group where you want to+    -- store evaluation events.+    cloudWatchLogs :: Prelude.Maybe CloudWatchLogsDestinationConfig,+    -- | A structure containing the S3 bucket name and bucket prefix where you+    -- want to store evaluation events.+    s3Destination :: Prelude.Maybe S3DestinationConfig,+    -- | The name or ARN of the project that you want to modify the data storage+    -- options for.+    project :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateProjectDataDelivery' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cloudWatchLogs', 'updateProjectDataDelivery_cloudWatchLogs' - A structure containing the CloudWatch Logs log group where you want to+-- store evaluation events.+--+-- 's3Destination', 'updateProjectDataDelivery_s3Destination' - A structure containing the S3 bucket name and bucket prefix where you+-- want to store evaluation events.+--+-- 'project', 'updateProjectDataDelivery_project' - The name or ARN of the project that you want to modify the data storage+-- options for.+newUpdateProjectDataDelivery ::+  -- | 'project'+  Prelude.Text ->+  UpdateProjectDataDelivery+newUpdateProjectDataDelivery pProject_ =+  UpdateProjectDataDelivery'+    { cloudWatchLogs =+        Prelude.Nothing,+      s3Destination = Prelude.Nothing,+      project = pProject_+    }++-- | A structure containing the CloudWatch Logs log group where you want to+-- store evaluation events.+updateProjectDataDelivery_cloudWatchLogs :: Lens.Lens' UpdateProjectDataDelivery (Prelude.Maybe CloudWatchLogsDestinationConfig)+updateProjectDataDelivery_cloudWatchLogs = Lens.lens (\UpdateProjectDataDelivery' {cloudWatchLogs} -> cloudWatchLogs) (\s@UpdateProjectDataDelivery' {} a -> s {cloudWatchLogs = a} :: UpdateProjectDataDelivery)++-- | A structure containing the S3 bucket name and bucket prefix where you+-- want to store evaluation events.+updateProjectDataDelivery_s3Destination :: Lens.Lens' UpdateProjectDataDelivery (Prelude.Maybe S3DestinationConfig)+updateProjectDataDelivery_s3Destination = Lens.lens (\UpdateProjectDataDelivery' {s3Destination} -> s3Destination) (\s@UpdateProjectDataDelivery' {} a -> s {s3Destination = a} :: UpdateProjectDataDelivery)++-- | The name or ARN of the project that you want to modify the data storage+-- options for.+updateProjectDataDelivery_project :: Lens.Lens' UpdateProjectDataDelivery Prelude.Text+updateProjectDataDelivery_project = Lens.lens (\UpdateProjectDataDelivery' {project} -> project) (\s@UpdateProjectDataDelivery' {} a -> s {project = a} :: UpdateProjectDataDelivery)++instance Core.AWSRequest UpdateProjectDataDelivery where+  type+    AWSResponse UpdateProjectDataDelivery =+      UpdateProjectDataDeliveryResponse+  request overrides =+    Request.patchJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateProjectDataDeliveryResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "project")+      )++instance Prelude.Hashable UpdateProjectDataDelivery where+  hashWithSalt _salt UpdateProjectDataDelivery' {..} =+    _salt+      `Prelude.hashWithSalt` cloudWatchLogs+      `Prelude.hashWithSalt` s3Destination+      `Prelude.hashWithSalt` project++instance Prelude.NFData UpdateProjectDataDelivery where+  rnf UpdateProjectDataDelivery' {..} =+    Prelude.rnf cloudWatchLogs+      `Prelude.seq` Prelude.rnf s3Destination+      `Prelude.seq` Prelude.rnf project++instance Data.ToHeaders UpdateProjectDataDelivery where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateProjectDataDelivery where+  toJSON UpdateProjectDataDelivery' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("cloudWatchLogs" Data..=)+              Prelude.<$> cloudWatchLogs,+            ("s3Destination" Data..=) Prelude.<$> s3Destination+          ]+      )++instance Data.ToPath UpdateProjectDataDelivery where+  toPath UpdateProjectDataDelivery' {..} =+    Prelude.mconcat+      ["/projects/", Data.toBS project, "/data-delivery"]++instance Data.ToQuery UpdateProjectDataDelivery where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateProjectDataDeliveryResponse' smart constructor.+data UpdateProjectDataDeliveryResponse = UpdateProjectDataDeliveryResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A structure containing details about the project that you updated.+    project :: Project+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateProjectDataDeliveryResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateProjectDataDeliveryResponse_httpStatus' - The response's http status code.+--+-- 'project', 'updateProjectDataDeliveryResponse_project' - A structure containing details about the project that you updated.+newUpdateProjectDataDeliveryResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'project'+  Project ->+  UpdateProjectDataDeliveryResponse+newUpdateProjectDataDeliveryResponse+  pHttpStatus_+  pProject_ =+    UpdateProjectDataDeliveryResponse'+      { httpStatus =+          pHttpStatus_,+        project = pProject_+      }++-- | The response's http status code.+updateProjectDataDeliveryResponse_httpStatus :: Lens.Lens' UpdateProjectDataDeliveryResponse Prelude.Int+updateProjectDataDeliveryResponse_httpStatus = Lens.lens (\UpdateProjectDataDeliveryResponse' {httpStatus} -> httpStatus) (\s@UpdateProjectDataDeliveryResponse' {} a -> s {httpStatus = a} :: UpdateProjectDataDeliveryResponse)++-- | A structure containing details about the project that you updated.+updateProjectDataDeliveryResponse_project :: Lens.Lens' UpdateProjectDataDeliveryResponse Project+updateProjectDataDeliveryResponse_project = Lens.lens (\UpdateProjectDataDeliveryResponse' {project} -> project) (\s@UpdateProjectDataDeliveryResponse' {} a -> s {project = a} :: UpdateProjectDataDeliveryResponse)++instance+  Prelude.NFData+    UpdateProjectDataDeliveryResponse+  where+  rnf UpdateProjectDataDeliveryResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf project
+ gen/Amazonka/Evidently/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.Evidently.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.Evidently.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Evidently.Lens+import Amazonka.Evidently.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.Evidently+import Test.Amazonka.Evidently.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "Evidently"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/Evidently.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.Evidently+-- 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.Evidently+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/Evidently/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.Evidently.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.Evidently.Internal where
+ test/Test/Amazonka/Gen/Evidently.hs view
@@ -0,0 +1,798 @@+{-# 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.Evidently+-- 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.Evidently where++import Amazonka.Evidently+import qualified Data.Proxy as Proxy+import Test.Amazonka.Evidently.Internal+import Test.Amazonka.Fixture+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"+--         [ requestBatchEvaluateFeature $+--             newBatchEvaluateFeature+--+--         , requestCreateExperiment $+--             newCreateExperiment+--+--         , requestCreateFeature $+--             newCreateFeature+--+--         , requestCreateLaunch $+--             newCreateLaunch+--+--         , requestCreateProject $+--             newCreateProject+--+--         , requestCreateSegment $+--             newCreateSegment+--+--         , requestDeleteExperiment $+--             newDeleteExperiment+--+--         , requestDeleteFeature $+--             newDeleteFeature+--+--         , requestDeleteLaunch $+--             newDeleteLaunch+--+--         , requestDeleteProject $+--             newDeleteProject+--+--         , requestDeleteSegment $+--             newDeleteSegment+--+--         , requestEvaluateFeature $+--             newEvaluateFeature+--+--         , requestGetExperiment $+--             newGetExperiment+--+--         , requestGetExperimentResults $+--             newGetExperimentResults+--+--         , requestGetFeature $+--             newGetFeature+--+--         , requestGetLaunch $+--             newGetLaunch+--+--         , requestGetProject $+--             newGetProject+--+--         , requestGetSegment $+--             newGetSegment+--+--         , requestListExperiments $+--             newListExperiments+--+--         , requestListFeatures $+--             newListFeatures+--+--         , requestListLaunches $+--             newListLaunches+--+--         , requestListProjects $+--             newListProjects+--+--         , requestListSegmentReferences $+--             newListSegmentReferences+--+--         , requestListSegments $+--             newListSegments+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestPutProjectEvents $+--             newPutProjectEvents+--+--         , requestStartExperiment $+--             newStartExperiment+--+--         , requestStartLaunch $+--             newStartLaunch+--+--         , requestStopExperiment $+--             newStopExperiment+--+--         , requestStopLaunch $+--             newStopLaunch+--+--         , requestTagResource $+--             newTagResource+--+--         , requestTestSegmentPattern $+--             newTestSegmentPattern+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateExperiment $+--             newUpdateExperiment+--+--         , requestUpdateFeature $+--             newUpdateFeature+--+--         , requestUpdateLaunch $+--             newUpdateLaunch+--+--         , requestUpdateProject $+--             newUpdateProject+--+--         , requestUpdateProjectDataDelivery $+--             newUpdateProjectDataDelivery+--+--           ]++--     , testGroup "response"+--         [ responseBatchEvaluateFeature $+--             newBatchEvaluateFeatureResponse+--+--         , responseCreateExperiment $+--             newCreateExperimentResponse+--+--         , responseCreateFeature $+--             newCreateFeatureResponse+--+--         , responseCreateLaunch $+--             newCreateLaunchResponse+--+--         , responseCreateProject $+--             newCreateProjectResponse+--+--         , responseCreateSegment $+--             newCreateSegmentResponse+--+--         , responseDeleteExperiment $+--             newDeleteExperimentResponse+--+--         , responseDeleteFeature $+--             newDeleteFeatureResponse+--+--         , responseDeleteLaunch $+--             newDeleteLaunchResponse+--+--         , responseDeleteProject $+--             newDeleteProjectResponse+--+--         , responseDeleteSegment $+--             newDeleteSegmentResponse+--+--         , responseEvaluateFeature $+--             newEvaluateFeatureResponse+--+--         , responseGetExperiment $+--             newGetExperimentResponse+--+--         , responseGetExperimentResults $+--             newGetExperimentResultsResponse+--+--         , responseGetFeature $+--             newGetFeatureResponse+--+--         , responseGetLaunch $+--             newGetLaunchResponse+--+--         , responseGetProject $+--             newGetProjectResponse+--+--         , responseGetSegment $+--             newGetSegmentResponse+--+--         , responseListExperiments $+--             newListExperimentsResponse+--+--         , responseListFeatures $+--             newListFeaturesResponse+--+--         , responseListLaunches $+--             newListLaunchesResponse+--+--         , responseListProjects $+--             newListProjectsResponse+--+--         , responseListSegmentReferences $+--             newListSegmentReferencesResponse+--+--         , responseListSegments $+--             newListSegmentsResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responsePutProjectEvents $+--             newPutProjectEventsResponse+--+--         , responseStartExperiment $+--             newStartExperimentResponse+--+--         , responseStartLaunch $+--             newStartLaunchResponse+--+--         , responseStopExperiment $+--             newStopExperimentResponse+--+--         , responseStopLaunch $+--             newStopLaunchResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseTestSegmentPattern $+--             newTestSegmentPatternResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateExperiment $+--             newUpdateExperimentResponse+--+--         , responseUpdateFeature $+--             newUpdateFeatureResponse+--+--         , responseUpdateLaunch $+--             newUpdateLaunchResponse+--+--         , responseUpdateProject $+--             newUpdateProjectResponse+--+--         , responseUpdateProjectDataDelivery $+--             newUpdateProjectDataDeliveryResponse+--+--           ]+--     ]++-- Requests++requestBatchEvaluateFeature :: BatchEvaluateFeature -> TestTree+requestBatchEvaluateFeature =+  req+    "BatchEvaluateFeature"+    "fixture/BatchEvaluateFeature.yaml"++requestCreateExperiment :: CreateExperiment -> TestTree+requestCreateExperiment =+  req+    "CreateExperiment"+    "fixture/CreateExperiment.yaml"++requestCreateFeature :: CreateFeature -> TestTree+requestCreateFeature =+  req+    "CreateFeature"+    "fixture/CreateFeature.yaml"++requestCreateLaunch :: CreateLaunch -> TestTree+requestCreateLaunch =+  req+    "CreateLaunch"+    "fixture/CreateLaunch.yaml"++requestCreateProject :: CreateProject -> TestTree+requestCreateProject =+  req+    "CreateProject"+    "fixture/CreateProject.yaml"++requestCreateSegment :: CreateSegment -> TestTree+requestCreateSegment =+  req+    "CreateSegment"+    "fixture/CreateSegment.yaml"++requestDeleteExperiment :: DeleteExperiment -> TestTree+requestDeleteExperiment =+  req+    "DeleteExperiment"+    "fixture/DeleteExperiment.yaml"++requestDeleteFeature :: DeleteFeature -> TestTree+requestDeleteFeature =+  req+    "DeleteFeature"+    "fixture/DeleteFeature.yaml"++requestDeleteLaunch :: DeleteLaunch -> TestTree+requestDeleteLaunch =+  req+    "DeleteLaunch"+    "fixture/DeleteLaunch.yaml"++requestDeleteProject :: DeleteProject -> TestTree+requestDeleteProject =+  req+    "DeleteProject"+    "fixture/DeleteProject.yaml"++requestDeleteSegment :: DeleteSegment -> TestTree+requestDeleteSegment =+  req+    "DeleteSegment"+    "fixture/DeleteSegment.yaml"++requestEvaluateFeature :: EvaluateFeature -> TestTree+requestEvaluateFeature =+  req+    "EvaluateFeature"+    "fixture/EvaluateFeature.yaml"++requestGetExperiment :: GetExperiment -> TestTree+requestGetExperiment =+  req+    "GetExperiment"+    "fixture/GetExperiment.yaml"++requestGetExperimentResults :: GetExperimentResults -> TestTree+requestGetExperimentResults =+  req+    "GetExperimentResults"+    "fixture/GetExperimentResults.yaml"++requestGetFeature :: GetFeature -> TestTree+requestGetFeature =+  req+    "GetFeature"+    "fixture/GetFeature.yaml"++requestGetLaunch :: GetLaunch -> TestTree+requestGetLaunch =+  req+    "GetLaunch"+    "fixture/GetLaunch.yaml"++requestGetProject :: GetProject -> TestTree+requestGetProject =+  req+    "GetProject"+    "fixture/GetProject.yaml"++requestGetSegment :: GetSegment -> TestTree+requestGetSegment =+  req+    "GetSegment"+    "fixture/GetSegment.yaml"++requestListExperiments :: ListExperiments -> TestTree+requestListExperiments =+  req+    "ListExperiments"+    "fixture/ListExperiments.yaml"++requestListFeatures :: ListFeatures -> TestTree+requestListFeatures =+  req+    "ListFeatures"+    "fixture/ListFeatures.yaml"++requestListLaunches :: ListLaunches -> TestTree+requestListLaunches =+  req+    "ListLaunches"+    "fixture/ListLaunches.yaml"++requestListProjects :: ListProjects -> TestTree+requestListProjects =+  req+    "ListProjects"+    "fixture/ListProjects.yaml"++requestListSegmentReferences :: ListSegmentReferences -> TestTree+requestListSegmentReferences =+  req+    "ListSegmentReferences"+    "fixture/ListSegmentReferences.yaml"++requestListSegments :: ListSegments -> TestTree+requestListSegments =+  req+    "ListSegments"+    "fixture/ListSegments.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestPutProjectEvents :: PutProjectEvents -> TestTree+requestPutProjectEvents =+  req+    "PutProjectEvents"+    "fixture/PutProjectEvents.yaml"++requestStartExperiment :: StartExperiment -> TestTree+requestStartExperiment =+  req+    "StartExperiment"+    "fixture/StartExperiment.yaml"++requestStartLaunch :: StartLaunch -> TestTree+requestStartLaunch =+  req+    "StartLaunch"+    "fixture/StartLaunch.yaml"++requestStopExperiment :: StopExperiment -> TestTree+requestStopExperiment =+  req+    "StopExperiment"+    "fixture/StopExperiment.yaml"++requestStopLaunch :: StopLaunch -> TestTree+requestStopLaunch =+  req+    "StopLaunch"+    "fixture/StopLaunch.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestTestSegmentPattern :: TestSegmentPattern -> TestTree+requestTestSegmentPattern =+  req+    "TestSegmentPattern"+    "fixture/TestSegmentPattern.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateExperiment :: UpdateExperiment -> TestTree+requestUpdateExperiment =+  req+    "UpdateExperiment"+    "fixture/UpdateExperiment.yaml"++requestUpdateFeature :: UpdateFeature -> TestTree+requestUpdateFeature =+  req+    "UpdateFeature"+    "fixture/UpdateFeature.yaml"++requestUpdateLaunch :: UpdateLaunch -> TestTree+requestUpdateLaunch =+  req+    "UpdateLaunch"+    "fixture/UpdateLaunch.yaml"++requestUpdateProject :: UpdateProject -> TestTree+requestUpdateProject =+  req+    "UpdateProject"+    "fixture/UpdateProject.yaml"++requestUpdateProjectDataDelivery :: UpdateProjectDataDelivery -> TestTree+requestUpdateProjectDataDelivery =+  req+    "UpdateProjectDataDelivery"+    "fixture/UpdateProjectDataDelivery.yaml"++-- Responses++responseBatchEvaluateFeature :: BatchEvaluateFeatureResponse -> TestTree+responseBatchEvaluateFeature =+  res+    "BatchEvaluateFeatureResponse"+    "fixture/BatchEvaluateFeatureResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchEvaluateFeature)++responseCreateExperiment :: CreateExperimentResponse -> TestTree+responseCreateExperiment =+  res+    "CreateExperimentResponse"+    "fixture/CreateExperimentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateExperiment)++responseCreateFeature :: CreateFeatureResponse -> TestTree+responseCreateFeature =+  res+    "CreateFeatureResponse"+    "fixture/CreateFeatureResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateFeature)++responseCreateLaunch :: CreateLaunchResponse -> TestTree+responseCreateLaunch =+  res+    "CreateLaunchResponse"+    "fixture/CreateLaunchResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateLaunch)++responseCreateProject :: CreateProjectResponse -> TestTree+responseCreateProject =+  res+    "CreateProjectResponse"+    "fixture/CreateProjectResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateProject)++responseCreateSegment :: CreateSegmentResponse -> TestTree+responseCreateSegment =+  res+    "CreateSegmentResponse"+    "fixture/CreateSegmentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateSegment)++responseDeleteExperiment :: DeleteExperimentResponse -> TestTree+responseDeleteExperiment =+  res+    "DeleteExperimentResponse"+    "fixture/DeleteExperimentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteExperiment)++responseDeleteFeature :: DeleteFeatureResponse -> TestTree+responseDeleteFeature =+  res+    "DeleteFeatureResponse"+    "fixture/DeleteFeatureResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteFeature)++responseDeleteLaunch :: DeleteLaunchResponse -> TestTree+responseDeleteLaunch =+  res+    "DeleteLaunchResponse"+    "fixture/DeleteLaunchResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteLaunch)++responseDeleteProject :: DeleteProjectResponse -> TestTree+responseDeleteProject =+  res+    "DeleteProjectResponse"+    "fixture/DeleteProjectResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteProject)++responseDeleteSegment :: DeleteSegmentResponse -> TestTree+responseDeleteSegment =+  res+    "DeleteSegmentResponse"+    "fixture/DeleteSegmentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteSegment)++responseEvaluateFeature :: EvaluateFeatureResponse -> TestTree+responseEvaluateFeature =+  res+    "EvaluateFeatureResponse"+    "fixture/EvaluateFeatureResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy EvaluateFeature)++responseGetExperiment :: GetExperimentResponse -> TestTree+responseGetExperiment =+  res+    "GetExperimentResponse"+    "fixture/GetExperimentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetExperiment)++responseGetExperimentResults :: GetExperimentResultsResponse -> TestTree+responseGetExperimentResults =+  res+    "GetExperimentResultsResponse"+    "fixture/GetExperimentResultsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetExperimentResults)++responseGetFeature :: GetFeatureResponse -> TestTree+responseGetFeature =+  res+    "GetFeatureResponse"+    "fixture/GetFeatureResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetFeature)++responseGetLaunch :: GetLaunchResponse -> TestTree+responseGetLaunch =+  res+    "GetLaunchResponse"+    "fixture/GetLaunchResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetLaunch)++responseGetProject :: GetProjectResponse -> TestTree+responseGetProject =+  res+    "GetProjectResponse"+    "fixture/GetProjectResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetProject)++responseGetSegment :: GetSegmentResponse -> TestTree+responseGetSegment =+  res+    "GetSegmentResponse"+    "fixture/GetSegmentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetSegment)++responseListExperiments :: ListExperimentsResponse -> TestTree+responseListExperiments =+  res+    "ListExperimentsResponse"+    "fixture/ListExperimentsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListExperiments)++responseListFeatures :: ListFeaturesResponse -> TestTree+responseListFeatures =+  res+    "ListFeaturesResponse"+    "fixture/ListFeaturesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListFeatures)++responseListLaunches :: ListLaunchesResponse -> TestTree+responseListLaunches =+  res+    "ListLaunchesResponse"+    "fixture/ListLaunchesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListLaunches)++responseListProjects :: ListProjectsResponse -> TestTree+responseListProjects =+  res+    "ListProjectsResponse"+    "fixture/ListProjectsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListProjects)++responseListSegmentReferences :: ListSegmentReferencesResponse -> TestTree+responseListSegmentReferences =+  res+    "ListSegmentReferencesResponse"+    "fixture/ListSegmentReferencesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListSegmentReferences)++responseListSegments :: ListSegmentsResponse -> TestTree+responseListSegments =+  res+    "ListSegmentsResponse"+    "fixture/ListSegmentsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListSegments)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responsePutProjectEvents :: PutProjectEventsResponse -> TestTree+responsePutProjectEvents =+  res+    "PutProjectEventsResponse"+    "fixture/PutProjectEventsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutProjectEvents)++responseStartExperiment :: StartExperimentResponse -> TestTree+responseStartExperiment =+  res+    "StartExperimentResponse"+    "fixture/StartExperimentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartExperiment)++responseStartLaunch :: StartLaunchResponse -> TestTree+responseStartLaunch =+  res+    "StartLaunchResponse"+    "fixture/StartLaunchResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartLaunch)++responseStopExperiment :: StopExperimentResponse -> TestTree+responseStopExperiment =+  res+    "StopExperimentResponse"+    "fixture/StopExperimentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StopExperiment)++responseStopLaunch :: StopLaunchResponse -> TestTree+responseStopLaunch =+  res+    "StopLaunchResponse"+    "fixture/StopLaunchResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StopLaunch)++responseTagResource :: TagResourceResponse -> TestTree+responseTagResource =+  res+    "TagResourceResponse"+    "fixture/TagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy TagResource)++responseTestSegmentPattern :: TestSegmentPatternResponse -> TestTree+responseTestSegmentPattern =+  res+    "TestSegmentPatternResponse"+    "fixture/TestSegmentPatternResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy TestSegmentPattern)++responseUntagResource :: UntagResourceResponse -> TestTree+responseUntagResource =+  res+    "UntagResourceResponse"+    "fixture/UntagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UntagResource)++responseUpdateExperiment :: UpdateExperimentResponse -> TestTree+responseUpdateExperiment =+  res+    "UpdateExperimentResponse"+    "fixture/UpdateExperimentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateExperiment)++responseUpdateFeature :: UpdateFeatureResponse -> TestTree+responseUpdateFeature =+  res+    "UpdateFeatureResponse"+    "fixture/UpdateFeatureResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateFeature)++responseUpdateLaunch :: UpdateLaunchResponse -> TestTree+responseUpdateLaunch =+  res+    "UpdateLaunchResponse"+    "fixture/UpdateLaunchResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateLaunch)++responseUpdateProject :: UpdateProjectResponse -> TestTree+responseUpdateProject =+  res+    "UpdateProjectResponse"+    "fixture/UpdateProjectResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateProject)++responseUpdateProjectDataDelivery :: UpdateProjectDataDeliveryResponse -> TestTree+responseUpdateProjectDataDelivery =+  res+    "UpdateProjectDataDeliveryResponse"+    "fixture/UpdateProjectDataDeliveryResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateProjectDataDelivery)