packages feed

amazonka-fis (empty) → 2.0

raw patch · 100 files changed

+9848/−0 lines, 100 filesdep +amazonka-coredep +amazonka-fisdep +amazonka-test

Dependencies added: amazonka-core, amazonka-fis, 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 Fault Injection Simulator SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2020-12-01@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-fis)+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.FIS](http://hackage.haskell.org/package/amazonka-fis/docs/Amazonka-FIS.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-fis` 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-fis.cabal view
@@ -0,0 +1,139 @@+cabal-version:      2.2+name:               amazonka-fis+version:            2.0+synopsis:           Amazon Fault Injection Simulator 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 @2020-12-01@ of the AWS service descriptions, licensed under Apache 2.0.+  .+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.+  .+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.+  .+  Generated lenses can be found in "Amazonka.FIS.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.FIS" 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-fis++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.FIS+    Amazonka.FIS.CreateExperimentTemplate+    Amazonka.FIS.DeleteExperimentTemplate+    Amazonka.FIS.GetAction+    Amazonka.FIS.GetExperiment+    Amazonka.FIS.GetExperimentTemplate+    Amazonka.FIS.GetTargetResourceType+    Amazonka.FIS.Lens+    Amazonka.FIS.ListActions+    Amazonka.FIS.ListExperiments+    Amazonka.FIS.ListExperimentTemplates+    Amazonka.FIS.ListTagsForResource+    Amazonka.FIS.ListTargetResourceTypes+    Amazonka.FIS.StartExperiment+    Amazonka.FIS.StopExperiment+    Amazonka.FIS.TagResource+    Amazonka.FIS.Types+    Amazonka.FIS.Types.Action+    Amazonka.FIS.Types.ActionParameter+    Amazonka.FIS.Types.ActionSummary+    Amazonka.FIS.Types.ActionTarget+    Amazonka.FIS.Types.CreateExperimentTemplateActionInput+    Amazonka.FIS.Types.CreateExperimentTemplateLogConfigurationInput+    Amazonka.FIS.Types.CreateExperimentTemplateStopConditionInput+    Amazonka.FIS.Types.CreateExperimentTemplateTargetInput+    Amazonka.FIS.Types.Experiment+    Amazonka.FIS.Types.ExperimentAction+    Amazonka.FIS.Types.ExperimentActionState+    Amazonka.FIS.Types.ExperimentActionStatus+    Amazonka.FIS.Types.ExperimentCloudWatchLogsLogConfiguration+    Amazonka.FIS.Types.ExperimentLogConfiguration+    Amazonka.FIS.Types.ExperimentS3LogConfiguration+    Amazonka.FIS.Types.ExperimentState+    Amazonka.FIS.Types.ExperimentStatus+    Amazonka.FIS.Types.ExperimentStopCondition+    Amazonka.FIS.Types.ExperimentSummary+    Amazonka.FIS.Types.ExperimentTarget+    Amazonka.FIS.Types.ExperimentTargetFilter+    Amazonka.FIS.Types.ExperimentTemplate+    Amazonka.FIS.Types.ExperimentTemplateAction+    Amazonka.FIS.Types.ExperimentTemplateCloudWatchLogsLogConfiguration+    Amazonka.FIS.Types.ExperimentTemplateCloudWatchLogsLogConfigurationInput+    Amazonka.FIS.Types.ExperimentTemplateLogConfiguration+    Amazonka.FIS.Types.ExperimentTemplateS3LogConfiguration+    Amazonka.FIS.Types.ExperimentTemplateS3LogConfigurationInput+    Amazonka.FIS.Types.ExperimentTemplateStopCondition+    Amazonka.FIS.Types.ExperimentTemplateSummary+    Amazonka.FIS.Types.ExperimentTemplateTarget+    Amazonka.FIS.Types.ExperimentTemplateTargetFilter+    Amazonka.FIS.Types.ExperimentTemplateTargetInputFilter+    Amazonka.FIS.Types.TargetResourceType+    Amazonka.FIS.Types.TargetResourceTypeParameter+    Amazonka.FIS.Types.TargetResourceTypeSummary+    Amazonka.FIS.Types.UpdateExperimentTemplateActionInputItem+    Amazonka.FIS.Types.UpdateExperimentTemplateLogConfigurationInput+    Amazonka.FIS.Types.UpdateExperimentTemplateStopConditionInput+    Amazonka.FIS.Types.UpdateExperimentTemplateTargetInput+    Amazonka.FIS.UntagResource+    Amazonka.FIS.UpdateExperimentTemplate+    Amazonka.FIS.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-fis-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.FIS+    Test.Amazonka.FIS.Internal+    Test.Amazonka.Gen.FIS++  build-depends:+    , amazonka-core         >=2.0 && <2.1+    , amazonka-fis+    , amazonka-test         >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/CreateExperimentTemplate.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/CreateExperimentTemplateResponse.proto view
+ fixture/DeleteExperimentTemplate.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/DeleteExperimentTemplateResponse.proto view
+ fixture/GetAction.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/GetActionResponse.proto view
+ fixture/GetExperiment.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/GetExperimentTemplate.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/GetExperimentTemplateResponse.proto view
+ fixture/GetTargetResourceType.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/GetTargetResourceTypeResponse.proto view
+ fixture/ListActions.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/ListActionsResponse.proto view
+ fixture/ListExperimentTemplates.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/ListExperimentTemplatesResponse.proto view
+ fixture/ListExperiments.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/ListTargetResourceTypes.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/ListTargetResourceTypesResponse.proto view
+ fixture/StartExperiment.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/StopExperiment.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/TagResourceResponse.proto view
+ fixture/UntagResource.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/UpdateExperimentTemplate.yaml view
@@ -0,0 +1,10 @@+---+method: PATCH+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/fis/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  fis.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/UpdateExperimentTemplateResponse.proto view
+ gen/Amazonka/FIS.hs view
@@ -0,0 +1,346 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.FIS+-- 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 @2020-12-01@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- Fault Injection Simulator is a managed service that enables you to+-- perform fault injection experiments on your Amazon Web Services+-- workloads. For more information, see the+-- <https://docs.aws.amazon.com/fis/latest/userguide/ Fault Injection Simulator User Guide>.+module Amazonka.FIS+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** ConflictException+    _ConflictException,++    -- ** ResourceNotFoundException+    _ResourceNotFoundException,++    -- ** ServiceQuotaExceededException+    _ServiceQuotaExceededException,++    -- ** ValidationException+    _ValidationException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** CreateExperimentTemplate+    CreateExperimentTemplate (CreateExperimentTemplate'),+    newCreateExperimentTemplate,+    CreateExperimentTemplateResponse (CreateExperimentTemplateResponse'),+    newCreateExperimentTemplateResponse,++    -- ** DeleteExperimentTemplate+    DeleteExperimentTemplate (DeleteExperimentTemplate'),+    newDeleteExperimentTemplate,+    DeleteExperimentTemplateResponse (DeleteExperimentTemplateResponse'),+    newDeleteExperimentTemplateResponse,++    -- ** GetAction+    GetAction (GetAction'),+    newGetAction,+    GetActionResponse (GetActionResponse'),+    newGetActionResponse,++    -- ** GetExperiment+    GetExperiment (GetExperiment'),+    newGetExperiment,+    GetExperimentResponse (GetExperimentResponse'),+    newGetExperimentResponse,++    -- ** GetExperimentTemplate+    GetExperimentTemplate (GetExperimentTemplate'),+    newGetExperimentTemplate,+    GetExperimentTemplateResponse (GetExperimentTemplateResponse'),+    newGetExperimentTemplateResponse,++    -- ** GetTargetResourceType+    GetTargetResourceType (GetTargetResourceType'),+    newGetTargetResourceType,+    GetTargetResourceTypeResponse (GetTargetResourceTypeResponse'),+    newGetTargetResourceTypeResponse,++    -- ** ListActions+    ListActions (ListActions'),+    newListActions,+    ListActionsResponse (ListActionsResponse'),+    newListActionsResponse,++    -- ** ListExperimentTemplates+    ListExperimentTemplates (ListExperimentTemplates'),+    newListExperimentTemplates,+    ListExperimentTemplatesResponse (ListExperimentTemplatesResponse'),+    newListExperimentTemplatesResponse,++    -- ** ListExperiments+    ListExperiments (ListExperiments'),+    newListExperiments,+    ListExperimentsResponse (ListExperimentsResponse'),+    newListExperimentsResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** ListTargetResourceTypes+    ListTargetResourceTypes (ListTargetResourceTypes'),+    newListTargetResourceTypes,+    ListTargetResourceTypesResponse (ListTargetResourceTypesResponse'),+    newListTargetResourceTypesResponse,++    -- ** StartExperiment+    StartExperiment (StartExperiment'),+    newStartExperiment,+    StartExperimentResponse (StartExperimentResponse'),+    newStartExperimentResponse,++    -- ** StopExperiment+    StopExperiment (StopExperiment'),+    newStopExperiment,+    StopExperimentResponse (StopExperimentResponse'),+    newStopExperimentResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateExperimentTemplate+    UpdateExperimentTemplate (UpdateExperimentTemplate'),+    newUpdateExperimentTemplate,+    UpdateExperimentTemplateResponse (UpdateExperimentTemplateResponse'),+    newUpdateExperimentTemplateResponse,++    -- * Types++    -- ** ExperimentActionStatus+    ExperimentActionStatus (..),++    -- ** ExperimentStatus+    ExperimentStatus (..),++    -- ** Action+    Action (Action'),+    newAction,++    -- ** ActionParameter+    ActionParameter (ActionParameter'),+    newActionParameter,++    -- ** ActionSummary+    ActionSummary (ActionSummary'),+    newActionSummary,++    -- ** ActionTarget+    ActionTarget (ActionTarget'),+    newActionTarget,++    -- ** CreateExperimentTemplateActionInput+    CreateExperimentTemplateActionInput (CreateExperimentTemplateActionInput'),+    newCreateExperimentTemplateActionInput,++    -- ** CreateExperimentTemplateLogConfigurationInput+    CreateExperimentTemplateLogConfigurationInput (CreateExperimentTemplateLogConfigurationInput'),+    newCreateExperimentTemplateLogConfigurationInput,++    -- ** CreateExperimentTemplateStopConditionInput+    CreateExperimentTemplateStopConditionInput (CreateExperimentTemplateStopConditionInput'),+    newCreateExperimentTemplateStopConditionInput,++    -- ** CreateExperimentTemplateTargetInput+    CreateExperimentTemplateTargetInput (CreateExperimentTemplateTargetInput'),+    newCreateExperimentTemplateTargetInput,++    -- ** Experiment+    Experiment (Experiment'),+    newExperiment,++    -- ** ExperimentAction+    ExperimentAction (ExperimentAction'),+    newExperimentAction,++    -- ** ExperimentActionState+    ExperimentActionState (ExperimentActionState'),+    newExperimentActionState,++    -- ** ExperimentCloudWatchLogsLogConfiguration+    ExperimentCloudWatchLogsLogConfiguration (ExperimentCloudWatchLogsLogConfiguration'),+    newExperimentCloudWatchLogsLogConfiguration,++    -- ** ExperimentLogConfiguration+    ExperimentLogConfiguration (ExperimentLogConfiguration'),+    newExperimentLogConfiguration,++    -- ** ExperimentS3LogConfiguration+    ExperimentS3LogConfiguration (ExperimentS3LogConfiguration'),+    newExperimentS3LogConfiguration,++    -- ** ExperimentState+    ExperimentState (ExperimentState'),+    newExperimentState,++    -- ** ExperimentStopCondition+    ExperimentStopCondition (ExperimentStopCondition'),+    newExperimentStopCondition,++    -- ** ExperimentSummary+    ExperimentSummary (ExperimentSummary'),+    newExperimentSummary,++    -- ** ExperimentTarget+    ExperimentTarget (ExperimentTarget'),+    newExperimentTarget,++    -- ** ExperimentTargetFilter+    ExperimentTargetFilter (ExperimentTargetFilter'),+    newExperimentTargetFilter,++    -- ** ExperimentTemplate+    ExperimentTemplate (ExperimentTemplate'),+    newExperimentTemplate,++    -- ** ExperimentTemplateAction+    ExperimentTemplateAction (ExperimentTemplateAction'),+    newExperimentTemplateAction,++    -- ** ExperimentTemplateCloudWatchLogsLogConfiguration+    ExperimentTemplateCloudWatchLogsLogConfiguration (ExperimentTemplateCloudWatchLogsLogConfiguration'),+    newExperimentTemplateCloudWatchLogsLogConfiguration,++    -- ** ExperimentTemplateCloudWatchLogsLogConfigurationInput+    ExperimentTemplateCloudWatchLogsLogConfigurationInput (ExperimentTemplateCloudWatchLogsLogConfigurationInput'),+    newExperimentTemplateCloudWatchLogsLogConfigurationInput,++    -- ** ExperimentTemplateLogConfiguration+    ExperimentTemplateLogConfiguration (ExperimentTemplateLogConfiguration'),+    newExperimentTemplateLogConfiguration,++    -- ** ExperimentTemplateS3LogConfiguration+    ExperimentTemplateS3LogConfiguration (ExperimentTemplateS3LogConfiguration'),+    newExperimentTemplateS3LogConfiguration,++    -- ** ExperimentTemplateS3LogConfigurationInput+    ExperimentTemplateS3LogConfigurationInput (ExperimentTemplateS3LogConfigurationInput'),+    newExperimentTemplateS3LogConfigurationInput,++    -- ** ExperimentTemplateStopCondition+    ExperimentTemplateStopCondition (ExperimentTemplateStopCondition'),+    newExperimentTemplateStopCondition,++    -- ** ExperimentTemplateSummary+    ExperimentTemplateSummary (ExperimentTemplateSummary'),+    newExperimentTemplateSummary,++    -- ** ExperimentTemplateTarget+    ExperimentTemplateTarget (ExperimentTemplateTarget'),+    newExperimentTemplateTarget,++    -- ** ExperimentTemplateTargetFilter+    ExperimentTemplateTargetFilter (ExperimentTemplateTargetFilter'),+    newExperimentTemplateTargetFilter,++    -- ** ExperimentTemplateTargetInputFilter+    ExperimentTemplateTargetInputFilter (ExperimentTemplateTargetInputFilter'),+    newExperimentTemplateTargetInputFilter,++    -- ** TargetResourceType+    TargetResourceType (TargetResourceType'),+    newTargetResourceType,++    -- ** TargetResourceTypeParameter+    TargetResourceTypeParameter (TargetResourceTypeParameter'),+    newTargetResourceTypeParameter,++    -- ** TargetResourceTypeSummary+    TargetResourceTypeSummary (TargetResourceTypeSummary'),+    newTargetResourceTypeSummary,++    -- ** UpdateExperimentTemplateActionInputItem+    UpdateExperimentTemplateActionInputItem (UpdateExperimentTemplateActionInputItem'),+    newUpdateExperimentTemplateActionInputItem,++    -- ** UpdateExperimentTemplateLogConfigurationInput+    UpdateExperimentTemplateLogConfigurationInput (UpdateExperimentTemplateLogConfigurationInput'),+    newUpdateExperimentTemplateLogConfigurationInput,++    -- ** UpdateExperimentTemplateStopConditionInput+    UpdateExperimentTemplateStopConditionInput (UpdateExperimentTemplateStopConditionInput'),+    newUpdateExperimentTemplateStopConditionInput,++    -- ** UpdateExperimentTemplateTargetInput+    UpdateExperimentTemplateTargetInput (UpdateExperimentTemplateTargetInput'),+    newUpdateExperimentTemplateTargetInput,+  )+where++import Amazonka.FIS.CreateExperimentTemplate+import Amazonka.FIS.DeleteExperimentTemplate+import Amazonka.FIS.GetAction+import Amazonka.FIS.GetExperiment+import Amazonka.FIS.GetExperimentTemplate+import Amazonka.FIS.GetTargetResourceType+import Amazonka.FIS.Lens+import Amazonka.FIS.ListActions+import Amazonka.FIS.ListExperimentTemplates+import Amazonka.FIS.ListExperiments+import Amazonka.FIS.ListTagsForResource+import Amazonka.FIS.ListTargetResourceTypes+import Amazonka.FIS.StartExperiment+import Amazonka.FIS.StopExperiment+import Amazonka.FIS.TagResource+import Amazonka.FIS.Types+import Amazonka.FIS.UntagResource+import Amazonka.FIS.UpdateExperimentTemplate+import Amazonka.FIS.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 'FIS'.++-- $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/FIS/CreateExperimentTemplate.hs view
@@ -0,0 +1,297 @@+{-# 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.FIS.CreateExperimentTemplate+-- 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 experiment template.+--+-- An experiment template includes the following components:+--+-- -   __Targets__: A target can be a specific resource in your Amazon Web+--     Services environment, or one or more resources that match criteria+--     that you specify, for example, resources that have specific tags.+--+-- -   __Actions__: The actions to carry out on the target. You can specify+--     multiple actions, the duration of each action, and when to start+--     each action during an experiment.+--+-- -   __Stop conditions__: If a stop condition is triggered while an+--     experiment is running, the experiment is automatically stopped. You+--     can define a stop condition as a CloudWatch alarm.+--+-- For more information, see+-- <https://docs.aws.amazon.com/fis/latest/userguide/experiment-templates.html Experiment templates>+-- in the /Fault Injection Simulator User Guide/.+module Amazonka.FIS.CreateExperimentTemplate+  ( -- * Creating a Request+    CreateExperimentTemplate (..),+    newCreateExperimentTemplate,++    -- * Request Lenses+    createExperimentTemplate_logConfiguration,+    createExperimentTemplate_tags,+    createExperimentTemplate_targets,+    createExperimentTemplate_clientToken,+    createExperimentTemplate_description,+    createExperimentTemplate_stopConditions,+    createExperimentTemplate_actions,+    createExperimentTemplate_roleArn,++    -- * Destructuring the Response+    CreateExperimentTemplateResponse (..),+    newCreateExperimentTemplateResponse,++    -- * Response Lenses+    createExperimentTemplateResponse_experimentTemplate,+    createExperimentTemplateResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateExperimentTemplate' smart constructor.+data CreateExperimentTemplate = CreateExperimentTemplate'+  { -- | The configuration for experiment logging.+    logConfiguration :: Prelude.Maybe CreateExperimentTemplateLogConfigurationInput,+    -- | The tags to apply to the experiment template.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The targets for the experiment.+    targets :: Prelude.Maybe (Prelude.HashMap Prelude.Text CreateExperimentTemplateTargetInput),+    -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientToken :: Prelude.Text,+    -- | A description for the experiment template.+    description :: Prelude.Text,+    -- | The stop conditions.+    stopConditions :: [CreateExperimentTemplateStopConditionInput],+    -- | The actions for the experiment.+    actions :: Prelude.HashMap Prelude.Text CreateExperimentTemplateActionInput,+    -- | The Amazon Resource Name (ARN) of an IAM role that grants the FIS+    -- service permission to perform service actions on your behalf.+    roleArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateExperimentTemplate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'logConfiguration', 'createExperimentTemplate_logConfiguration' - The configuration for experiment logging.+--+-- 'tags', 'createExperimentTemplate_tags' - The tags to apply to the experiment template.+--+-- 'targets', 'createExperimentTemplate_targets' - The targets for the experiment.+--+-- 'clientToken', 'createExperimentTemplate_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'description', 'createExperimentTemplate_description' - A description for the experiment template.+--+-- 'stopConditions', 'createExperimentTemplate_stopConditions' - The stop conditions.+--+-- 'actions', 'createExperimentTemplate_actions' - The actions for the experiment.+--+-- 'roleArn', 'createExperimentTemplate_roleArn' - The Amazon Resource Name (ARN) of an IAM role that grants the FIS+-- service permission to perform service actions on your behalf.+newCreateExperimentTemplate ::+  -- | 'clientToken'+  Prelude.Text ->+  -- | 'description'+  Prelude.Text ->+  -- | 'roleArn'+  Prelude.Text ->+  CreateExperimentTemplate+newCreateExperimentTemplate+  pClientToken_+  pDescription_+  pRoleArn_ =+    CreateExperimentTemplate'+      { logConfiguration =+          Prelude.Nothing,+        tags = Prelude.Nothing,+        targets = Prelude.Nothing,+        clientToken = pClientToken_,+        description = pDescription_,+        stopConditions = Prelude.mempty,+        actions = Prelude.mempty,+        roleArn = pRoleArn_+      }++-- | The configuration for experiment logging.+createExperimentTemplate_logConfiguration :: Lens.Lens' CreateExperimentTemplate (Prelude.Maybe CreateExperimentTemplateLogConfigurationInput)+createExperimentTemplate_logConfiguration = Lens.lens (\CreateExperimentTemplate' {logConfiguration} -> logConfiguration) (\s@CreateExperimentTemplate' {} a -> s {logConfiguration = a} :: CreateExperimentTemplate)++-- | The tags to apply to the experiment template.+createExperimentTemplate_tags :: Lens.Lens' CreateExperimentTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createExperimentTemplate_tags = Lens.lens (\CreateExperimentTemplate' {tags} -> tags) (\s@CreateExperimentTemplate' {} a -> s {tags = a} :: CreateExperimentTemplate) Prelude.. Lens.mapping Lens.coerced++-- | The targets for the experiment.+createExperimentTemplate_targets :: Lens.Lens' CreateExperimentTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text CreateExperimentTemplateTargetInput))+createExperimentTemplate_targets = Lens.lens (\CreateExperimentTemplate' {targets} -> targets) (\s@CreateExperimentTemplate' {} a -> s {targets = a} :: CreateExperimentTemplate) Prelude.. Lens.mapping Lens.coerced++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+createExperimentTemplate_clientToken :: Lens.Lens' CreateExperimentTemplate Prelude.Text+createExperimentTemplate_clientToken = Lens.lens (\CreateExperimentTemplate' {clientToken} -> clientToken) (\s@CreateExperimentTemplate' {} a -> s {clientToken = a} :: CreateExperimentTemplate)++-- | A description for the experiment template.+createExperimentTemplate_description :: Lens.Lens' CreateExperimentTemplate Prelude.Text+createExperimentTemplate_description = Lens.lens (\CreateExperimentTemplate' {description} -> description) (\s@CreateExperimentTemplate' {} a -> s {description = a} :: CreateExperimentTemplate)++-- | The stop conditions.+createExperimentTemplate_stopConditions :: Lens.Lens' CreateExperimentTemplate [CreateExperimentTemplateStopConditionInput]+createExperimentTemplate_stopConditions = Lens.lens (\CreateExperimentTemplate' {stopConditions} -> stopConditions) (\s@CreateExperimentTemplate' {} a -> s {stopConditions = a} :: CreateExperimentTemplate) Prelude.. Lens.coerced++-- | The actions for the experiment.+createExperimentTemplate_actions :: Lens.Lens' CreateExperimentTemplate (Prelude.HashMap Prelude.Text CreateExperimentTemplateActionInput)+createExperimentTemplate_actions = Lens.lens (\CreateExperimentTemplate' {actions} -> actions) (\s@CreateExperimentTemplate' {} a -> s {actions = a} :: CreateExperimentTemplate) Prelude.. Lens.coerced++-- | The Amazon Resource Name (ARN) of an IAM role that grants the FIS+-- service permission to perform service actions on your behalf.+createExperimentTemplate_roleArn :: Lens.Lens' CreateExperimentTemplate Prelude.Text+createExperimentTemplate_roleArn = Lens.lens (\CreateExperimentTemplate' {roleArn} -> roleArn) (\s@CreateExperimentTemplate' {} a -> s {roleArn = a} :: CreateExperimentTemplate)++instance Core.AWSRequest CreateExperimentTemplate where+  type+    AWSResponse CreateExperimentTemplate =+      CreateExperimentTemplateResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateExperimentTemplateResponse'+            Prelude.<$> (x Data..?> "experimentTemplate")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateExperimentTemplate where+  hashWithSalt _salt CreateExperimentTemplate' {..} =+    _salt+      `Prelude.hashWithSalt` logConfiguration+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` targets+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` stopConditions+      `Prelude.hashWithSalt` actions+      `Prelude.hashWithSalt` roleArn++instance Prelude.NFData CreateExperimentTemplate where+  rnf CreateExperimentTemplate' {..} =+    Prelude.rnf logConfiguration+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf targets+      `Prelude.seq` Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf stopConditions+      `Prelude.seq` Prelude.rnf actions+      `Prelude.seq` Prelude.rnf roleArn++instance Data.ToHeaders CreateExperimentTemplate where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateExperimentTemplate where+  toJSON CreateExperimentTemplate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("logConfiguration" Data..=)+              Prelude.<$> logConfiguration,+            ("tags" Data..=) Prelude.<$> tags,+            ("targets" Data..=) Prelude.<$> targets,+            Prelude.Just ("clientToken" Data..= clientToken),+            Prelude.Just ("description" Data..= description),+            Prelude.Just+              ("stopConditions" Data..= stopConditions),+            Prelude.Just ("actions" Data..= actions),+            Prelude.Just ("roleArn" Data..= roleArn)+          ]+      )++instance Data.ToPath CreateExperimentTemplate where+  toPath = Prelude.const "/experimentTemplates"++instance Data.ToQuery CreateExperimentTemplate where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateExperimentTemplateResponse' smart constructor.+data CreateExperimentTemplateResponse = CreateExperimentTemplateResponse'+  { -- | Information about the experiment template.+    experimentTemplate :: Prelude.Maybe ExperimentTemplate,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateExperimentTemplateResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'experimentTemplate', 'createExperimentTemplateResponse_experimentTemplate' - Information about the experiment template.+--+-- 'httpStatus', 'createExperimentTemplateResponse_httpStatus' - The response's http status code.+newCreateExperimentTemplateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateExperimentTemplateResponse+newCreateExperimentTemplateResponse pHttpStatus_ =+  CreateExperimentTemplateResponse'+    { experimentTemplate =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the experiment template.+createExperimentTemplateResponse_experimentTemplate :: Lens.Lens' CreateExperimentTemplateResponse (Prelude.Maybe ExperimentTemplate)+createExperimentTemplateResponse_experimentTemplate = Lens.lens (\CreateExperimentTemplateResponse' {experimentTemplate} -> experimentTemplate) (\s@CreateExperimentTemplateResponse' {} a -> s {experimentTemplate = a} :: CreateExperimentTemplateResponse)++-- | The response's http status code.+createExperimentTemplateResponse_httpStatus :: Lens.Lens' CreateExperimentTemplateResponse Prelude.Int+createExperimentTemplateResponse_httpStatus = Lens.lens (\CreateExperimentTemplateResponse' {httpStatus} -> httpStatus) (\s@CreateExperimentTemplateResponse' {} a -> s {httpStatus = a} :: CreateExperimentTemplateResponse)++instance+  Prelude.NFData+    CreateExperimentTemplateResponse+  where+  rnf CreateExperimentTemplateResponse' {..} =+    Prelude.rnf experimentTemplate+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/FIS/DeleteExperimentTemplate.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.FIS.DeleteExperimentTemplate+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes the specified experiment template.+module Amazonka.FIS.DeleteExperimentTemplate+  ( -- * Creating a Request+    DeleteExperimentTemplate (..),+    newDeleteExperimentTemplate,++    -- * Request Lenses+    deleteExperimentTemplate_id,++    -- * Destructuring the Response+    DeleteExperimentTemplateResponse (..),+    newDeleteExperimentTemplateResponse,++    -- * Response Lenses+    deleteExperimentTemplateResponse_experimentTemplate,+    deleteExperimentTemplateResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteExperimentTemplate' smart constructor.+data DeleteExperimentTemplate = DeleteExperimentTemplate'+  { -- | The ID of the experiment template.+    id :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteExperimentTemplate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'deleteExperimentTemplate_id' - The ID of the experiment template.+newDeleteExperimentTemplate ::+  -- | 'id'+  Prelude.Text ->+  DeleteExperimentTemplate+newDeleteExperimentTemplate pId_ =+  DeleteExperimentTemplate' {id = pId_}++-- | The ID of the experiment template.+deleteExperimentTemplate_id :: Lens.Lens' DeleteExperimentTemplate Prelude.Text+deleteExperimentTemplate_id = Lens.lens (\DeleteExperimentTemplate' {id} -> id) (\s@DeleteExperimentTemplate' {} a -> s {id = a} :: DeleteExperimentTemplate)++instance Core.AWSRequest DeleteExperimentTemplate where+  type+    AWSResponse DeleteExperimentTemplate =+      DeleteExperimentTemplateResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteExperimentTemplateResponse'+            Prelude.<$> (x Data..?> "experimentTemplate")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteExperimentTemplate where+  hashWithSalt _salt DeleteExperimentTemplate' {..} =+    _salt `Prelude.hashWithSalt` id++instance Prelude.NFData DeleteExperimentTemplate where+  rnf DeleteExperimentTemplate' {..} = Prelude.rnf id++instance Data.ToHeaders DeleteExperimentTemplate where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteExperimentTemplate where+  toPath DeleteExperimentTemplate' {..} =+    Prelude.mconcat+      ["/experimentTemplates/", Data.toBS id]++instance Data.ToQuery DeleteExperimentTemplate where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteExperimentTemplateResponse' smart constructor.+data DeleteExperimentTemplateResponse = DeleteExperimentTemplateResponse'+  { -- | Information about the experiment template.+    experimentTemplate :: Prelude.Maybe ExperimentTemplate,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteExperimentTemplateResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'experimentTemplate', 'deleteExperimentTemplateResponse_experimentTemplate' - Information about the experiment template.+--+-- 'httpStatus', 'deleteExperimentTemplateResponse_httpStatus' - The response's http status code.+newDeleteExperimentTemplateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteExperimentTemplateResponse+newDeleteExperimentTemplateResponse pHttpStatus_ =+  DeleteExperimentTemplateResponse'+    { experimentTemplate =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the experiment template.+deleteExperimentTemplateResponse_experimentTemplate :: Lens.Lens' DeleteExperimentTemplateResponse (Prelude.Maybe ExperimentTemplate)+deleteExperimentTemplateResponse_experimentTemplate = Lens.lens (\DeleteExperimentTemplateResponse' {experimentTemplate} -> experimentTemplate) (\s@DeleteExperimentTemplateResponse' {} a -> s {experimentTemplate = a} :: DeleteExperimentTemplateResponse)++-- | The response's http status code.+deleteExperimentTemplateResponse_httpStatus :: Lens.Lens' DeleteExperimentTemplateResponse Prelude.Int+deleteExperimentTemplateResponse_httpStatus = Lens.lens (\DeleteExperimentTemplateResponse' {httpStatus} -> httpStatus) (\s@DeleteExperimentTemplateResponse' {} a -> s {httpStatus = a} :: DeleteExperimentTemplateResponse)++instance+  Prelude.NFData+    DeleteExperimentTemplateResponse+  where+  rnf DeleteExperimentTemplateResponse' {..} =+    Prelude.rnf experimentTemplate+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/FIS/GetAction.hs view
@@ -0,0 +1,154 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.GetAction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets information about the specified FIS action.+module Amazonka.FIS.GetAction+  ( -- * Creating a Request+    GetAction (..),+    newGetAction,++    -- * Request Lenses+    getAction_id,++    -- * Destructuring the Response+    GetActionResponse (..),+    newGetActionResponse,++    -- * Response Lenses+    getActionResponse_action,+    getActionResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetAction' smart constructor.+data GetAction = GetAction'+  { -- | The ID of the action.+    id :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetAction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'getAction_id' - The ID of the action.+newGetAction ::+  -- | 'id'+  Prelude.Text ->+  GetAction+newGetAction pId_ = GetAction' {id = pId_}++-- | The ID of the action.+getAction_id :: Lens.Lens' GetAction Prelude.Text+getAction_id = Lens.lens (\GetAction' {id} -> id) (\s@GetAction' {} a -> s {id = a} :: GetAction)++instance Core.AWSRequest GetAction where+  type AWSResponse GetAction = GetActionResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetActionResponse'+            Prelude.<$> (x Data..?> "action")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetAction where+  hashWithSalt _salt GetAction' {..} =+    _salt `Prelude.hashWithSalt` id++instance Prelude.NFData GetAction where+  rnf GetAction' {..} = Prelude.rnf id++instance Data.ToHeaders GetAction where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetAction where+  toPath GetAction' {..} =+    Prelude.mconcat ["/actions/", Data.toBS id]++instance Data.ToQuery GetAction where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetActionResponse' smart constructor.+data GetActionResponse = GetActionResponse'+  { -- | Information about the action.+    action :: Prelude.Maybe Action,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetActionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'action', 'getActionResponse_action' - Information about the action.+--+-- 'httpStatus', 'getActionResponse_httpStatus' - The response's http status code.+newGetActionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetActionResponse+newGetActionResponse pHttpStatus_ =+  GetActionResponse'+    { action = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the action.+getActionResponse_action :: Lens.Lens' GetActionResponse (Prelude.Maybe Action)+getActionResponse_action = Lens.lens (\GetActionResponse' {action} -> action) (\s@GetActionResponse' {} a -> s {action = a} :: GetActionResponse)++-- | The response's http status code.+getActionResponse_httpStatus :: Lens.Lens' GetActionResponse Prelude.Int+getActionResponse_httpStatus = Lens.lens (\GetActionResponse' {httpStatus} -> httpStatus) (\s@GetActionResponse' {} a -> s {httpStatus = a} :: GetActionResponse)++instance Prelude.NFData GetActionResponse where+  rnf GetActionResponse' {..} =+    Prelude.rnf action+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/FIS/GetExperiment.hs view
@@ -0,0 +1,157 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.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)+--+-- Gets information about the specified experiment.+module Amazonka.FIS.GetExperiment+  ( -- * Creating a Request+    GetExperiment (..),+    newGetExperiment,++    -- * Request Lenses+    getExperiment_id,++    -- * 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.FIS.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 ID of the experiment.+    id :: 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:+--+-- 'id', 'getExperiment_id' - The ID of the experiment.+newGetExperiment ::+  -- | 'id'+  Prelude.Text ->+  GetExperiment+newGetExperiment pId_ = GetExperiment' {id = pId_}++-- | The ID of the experiment.+getExperiment_id :: Lens.Lens' GetExperiment Prelude.Text+getExperiment_id = Lens.lens (\GetExperiment' {id} -> id) (\s@GetExperiment' {} a -> s {id = 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` id++instance Prelude.NFData GetExperiment where+  rnf GetExperiment' {..} = Prelude.rnf id++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 ["/experiments/", Data.toBS id]++instance Data.ToQuery GetExperiment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetExperimentResponse' smart constructor.+data GetExperimentResponse = GetExperimentResponse'+  { -- | Information about 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' - Information about the experiment.+--+-- 'httpStatus', 'getExperimentResponse_httpStatus' - The response's http status code.+newGetExperimentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetExperimentResponse+newGetExperimentResponse pHttpStatus_ =+  GetExperimentResponse'+    { experiment =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about 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/FIS/GetExperimentTemplate.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.FIS.GetExperimentTemplate+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets information about the specified experiment template.+module Amazonka.FIS.GetExperimentTemplate+  ( -- * Creating a Request+    GetExperimentTemplate (..),+    newGetExperimentTemplate,++    -- * Request Lenses+    getExperimentTemplate_id,++    -- * Destructuring the Response+    GetExperimentTemplateResponse (..),+    newGetExperimentTemplateResponse,++    -- * Response Lenses+    getExperimentTemplateResponse_experimentTemplate,+    getExperimentTemplateResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetExperimentTemplate' smart constructor.+data GetExperimentTemplate = GetExperimentTemplate'+  { -- | The ID of the experiment template.+    id :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetExperimentTemplate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'getExperimentTemplate_id' - The ID of the experiment template.+newGetExperimentTemplate ::+  -- | 'id'+  Prelude.Text ->+  GetExperimentTemplate+newGetExperimentTemplate pId_ =+  GetExperimentTemplate' {id = pId_}++-- | The ID of the experiment template.+getExperimentTemplate_id :: Lens.Lens' GetExperimentTemplate Prelude.Text+getExperimentTemplate_id = Lens.lens (\GetExperimentTemplate' {id} -> id) (\s@GetExperimentTemplate' {} a -> s {id = a} :: GetExperimentTemplate)++instance Core.AWSRequest GetExperimentTemplate where+  type+    AWSResponse GetExperimentTemplate =+      GetExperimentTemplateResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetExperimentTemplateResponse'+            Prelude.<$> (x Data..?> "experimentTemplate")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetExperimentTemplate where+  hashWithSalt _salt GetExperimentTemplate' {..} =+    _salt `Prelude.hashWithSalt` id++instance Prelude.NFData GetExperimentTemplate where+  rnf GetExperimentTemplate' {..} = Prelude.rnf id++instance Data.ToHeaders GetExperimentTemplate where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetExperimentTemplate where+  toPath GetExperimentTemplate' {..} =+    Prelude.mconcat+      ["/experimentTemplates/", Data.toBS id]++instance Data.ToQuery GetExperimentTemplate where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetExperimentTemplateResponse' smart constructor.+data GetExperimentTemplateResponse = GetExperimentTemplateResponse'+  { -- | Information about the experiment template.+    experimentTemplate :: Prelude.Maybe ExperimentTemplate,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetExperimentTemplateResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'experimentTemplate', 'getExperimentTemplateResponse_experimentTemplate' - Information about the experiment template.+--+-- 'httpStatus', 'getExperimentTemplateResponse_httpStatus' - The response's http status code.+newGetExperimentTemplateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetExperimentTemplateResponse+newGetExperimentTemplateResponse pHttpStatus_ =+  GetExperimentTemplateResponse'+    { experimentTemplate =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the experiment template.+getExperimentTemplateResponse_experimentTemplate :: Lens.Lens' GetExperimentTemplateResponse (Prelude.Maybe ExperimentTemplate)+getExperimentTemplateResponse_experimentTemplate = Lens.lens (\GetExperimentTemplateResponse' {experimentTemplate} -> experimentTemplate) (\s@GetExperimentTemplateResponse' {} a -> s {experimentTemplate = a} :: GetExperimentTemplateResponse)++-- | The response's http status code.+getExperimentTemplateResponse_httpStatus :: Lens.Lens' GetExperimentTemplateResponse Prelude.Int+getExperimentTemplateResponse_httpStatus = Lens.lens (\GetExperimentTemplateResponse' {httpStatus} -> httpStatus) (\s@GetExperimentTemplateResponse' {} a -> s {httpStatus = a} :: GetExperimentTemplateResponse)++instance Prelude.NFData GetExperimentTemplateResponse where+  rnf GetExperimentTemplateResponse' {..} =+    Prelude.rnf experimentTemplate+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/FIS/GetTargetResourceType.hs view
@@ -0,0 +1,163 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.GetTargetResourceType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets information about the specified resource type.+module Amazonka.FIS.GetTargetResourceType+  ( -- * Creating a Request+    GetTargetResourceType (..),+    newGetTargetResourceType,++    -- * Request Lenses+    getTargetResourceType_resourceType,++    -- * Destructuring the Response+    GetTargetResourceTypeResponse (..),+    newGetTargetResourceTypeResponse,++    -- * Response Lenses+    getTargetResourceTypeResponse_targetResourceType,+    getTargetResourceTypeResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetTargetResourceType' smart constructor.+data GetTargetResourceType = GetTargetResourceType'+  { -- | The resource type.+    resourceType :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetTargetResourceType' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceType', 'getTargetResourceType_resourceType' - The resource type.+newGetTargetResourceType ::+  -- | 'resourceType'+  Prelude.Text ->+  GetTargetResourceType+newGetTargetResourceType pResourceType_ =+  GetTargetResourceType'+    { resourceType =+        pResourceType_+    }++-- | The resource type.+getTargetResourceType_resourceType :: Lens.Lens' GetTargetResourceType Prelude.Text+getTargetResourceType_resourceType = Lens.lens (\GetTargetResourceType' {resourceType} -> resourceType) (\s@GetTargetResourceType' {} a -> s {resourceType = a} :: GetTargetResourceType)++instance Core.AWSRequest GetTargetResourceType where+  type+    AWSResponse GetTargetResourceType =+      GetTargetResourceTypeResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetTargetResourceTypeResponse'+            Prelude.<$> (x Data..?> "targetResourceType")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetTargetResourceType where+  hashWithSalt _salt GetTargetResourceType' {..} =+    _salt `Prelude.hashWithSalt` resourceType++instance Prelude.NFData GetTargetResourceType where+  rnf GetTargetResourceType' {..} =+    Prelude.rnf resourceType++instance Data.ToHeaders GetTargetResourceType where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetTargetResourceType where+  toPath GetTargetResourceType' {..} =+    Prelude.mconcat+      ["/targetResourceTypes/", Data.toBS resourceType]++instance Data.ToQuery GetTargetResourceType where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetTargetResourceTypeResponse' smart constructor.+data GetTargetResourceTypeResponse = GetTargetResourceTypeResponse'+  { -- | Information about the resource type.+    targetResourceType :: Prelude.Maybe TargetResourceType,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetTargetResourceTypeResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'targetResourceType', 'getTargetResourceTypeResponse_targetResourceType' - Information about the resource type.+--+-- 'httpStatus', 'getTargetResourceTypeResponse_httpStatus' - The response's http status code.+newGetTargetResourceTypeResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetTargetResourceTypeResponse+newGetTargetResourceTypeResponse pHttpStatus_ =+  GetTargetResourceTypeResponse'+    { targetResourceType =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the resource type.+getTargetResourceTypeResponse_targetResourceType :: Lens.Lens' GetTargetResourceTypeResponse (Prelude.Maybe TargetResourceType)+getTargetResourceTypeResponse_targetResourceType = Lens.lens (\GetTargetResourceTypeResponse' {targetResourceType} -> targetResourceType) (\s@GetTargetResourceTypeResponse' {} a -> s {targetResourceType = a} :: GetTargetResourceTypeResponse)++-- | The response's http status code.+getTargetResourceTypeResponse_httpStatus :: Lens.Lens' GetTargetResourceTypeResponse Prelude.Int+getTargetResourceTypeResponse_httpStatus = Lens.lens (\GetTargetResourceTypeResponse' {httpStatus} -> httpStatus) (\s@GetTargetResourceTypeResponse' {} a -> s {httpStatus = a} :: GetTargetResourceTypeResponse)++instance Prelude.NFData GetTargetResourceTypeResponse where+  rnf GetTargetResourceTypeResponse' {..} =+    Prelude.rnf targetResourceType+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/FIS/Lens.hs view
@@ -0,0 +1,390 @@+{-# 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.FIS.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.FIS.Lens+  ( -- * Operations++    -- ** CreateExperimentTemplate+    createExperimentTemplate_logConfiguration,+    createExperimentTemplate_tags,+    createExperimentTemplate_targets,+    createExperimentTemplate_clientToken,+    createExperimentTemplate_description,+    createExperimentTemplate_stopConditions,+    createExperimentTemplate_actions,+    createExperimentTemplate_roleArn,+    createExperimentTemplateResponse_experimentTemplate,+    createExperimentTemplateResponse_httpStatus,++    -- ** DeleteExperimentTemplate+    deleteExperimentTemplate_id,+    deleteExperimentTemplateResponse_experimentTemplate,+    deleteExperimentTemplateResponse_httpStatus,++    -- ** GetAction+    getAction_id,+    getActionResponse_action,+    getActionResponse_httpStatus,++    -- ** GetExperiment+    getExperiment_id,+    getExperimentResponse_experiment,+    getExperimentResponse_httpStatus,++    -- ** GetExperimentTemplate+    getExperimentTemplate_id,+    getExperimentTemplateResponse_experimentTemplate,+    getExperimentTemplateResponse_httpStatus,++    -- ** GetTargetResourceType+    getTargetResourceType_resourceType,+    getTargetResourceTypeResponse_targetResourceType,+    getTargetResourceTypeResponse_httpStatus,++    -- ** ListActions+    listActions_maxResults,+    listActions_nextToken,+    listActionsResponse_actions,+    listActionsResponse_nextToken,+    listActionsResponse_httpStatus,++    -- ** ListExperimentTemplates+    listExperimentTemplates_maxResults,+    listExperimentTemplates_nextToken,+    listExperimentTemplatesResponse_experimentTemplates,+    listExperimentTemplatesResponse_nextToken,+    listExperimentTemplatesResponse_httpStatus,++    -- ** ListExperiments+    listExperiments_maxResults,+    listExperiments_nextToken,+    listExperimentsResponse_experiments,+    listExperimentsResponse_nextToken,+    listExperimentsResponse_httpStatus,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,++    -- ** ListTargetResourceTypes+    listTargetResourceTypes_maxResults,+    listTargetResourceTypes_nextToken,+    listTargetResourceTypesResponse_nextToken,+    listTargetResourceTypesResponse_targetResourceTypes,+    listTargetResourceTypesResponse_httpStatus,++    -- ** StartExperiment+    startExperiment_tags,+    startExperiment_clientToken,+    startExperiment_experimentTemplateId,+    startExperimentResponse_experiment,+    startExperimentResponse_httpStatus,++    -- ** StopExperiment+    stopExperiment_id,+    stopExperimentResponse_experiment,+    stopExperimentResponse_httpStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_tagKeys,+    untagResource_resourceArn,+    untagResourceResponse_httpStatus,++    -- ** UpdateExperimentTemplate+    updateExperimentTemplate_actions,+    updateExperimentTemplate_description,+    updateExperimentTemplate_logConfiguration,+    updateExperimentTemplate_roleArn,+    updateExperimentTemplate_stopConditions,+    updateExperimentTemplate_targets,+    updateExperimentTemplate_id,+    updateExperimentTemplateResponse_experimentTemplate,+    updateExperimentTemplateResponse_httpStatus,++    -- * Types++    -- ** Action+    action_description,+    action_id,+    action_parameters,+    action_tags,+    action_targets,++    -- ** ActionParameter+    actionParameter_description,+    actionParameter_required,++    -- ** ActionSummary+    actionSummary_description,+    actionSummary_id,+    actionSummary_tags,+    actionSummary_targets,++    -- ** ActionTarget+    actionTarget_resourceType,++    -- ** CreateExperimentTemplateActionInput+    createExperimentTemplateActionInput_description,+    createExperimentTemplateActionInput_parameters,+    createExperimentTemplateActionInput_startAfter,+    createExperimentTemplateActionInput_targets,+    createExperimentTemplateActionInput_actionId,++    -- ** CreateExperimentTemplateLogConfigurationInput+    createExperimentTemplateLogConfigurationInput_cloudWatchLogsConfiguration,+    createExperimentTemplateLogConfigurationInput_s3Configuration,+    createExperimentTemplateLogConfigurationInput_logSchemaVersion,++    -- ** CreateExperimentTemplateStopConditionInput+    createExperimentTemplateStopConditionInput_value,+    createExperimentTemplateStopConditionInput_source,++    -- ** CreateExperimentTemplateTargetInput+    createExperimentTemplateTargetInput_filters,+    createExperimentTemplateTargetInput_parameters,+    createExperimentTemplateTargetInput_resourceArns,+    createExperimentTemplateTargetInput_resourceTags,+    createExperimentTemplateTargetInput_resourceType,+    createExperimentTemplateTargetInput_selectionMode,++    -- ** Experiment+    experiment_actions,+    experiment_creationTime,+    experiment_endTime,+    experiment_experimentTemplateId,+    experiment_id,+    experiment_logConfiguration,+    experiment_roleArn,+    experiment_startTime,+    experiment_state,+    experiment_stopConditions,+    experiment_tags,+    experiment_targets,++    -- ** ExperimentAction+    experimentAction_actionId,+    experimentAction_description,+    experimentAction_endTime,+    experimentAction_parameters,+    experimentAction_startAfter,+    experimentAction_startTime,+    experimentAction_state,+    experimentAction_targets,++    -- ** ExperimentActionState+    experimentActionState_reason,+    experimentActionState_status,++    -- ** ExperimentCloudWatchLogsLogConfiguration+    experimentCloudWatchLogsLogConfiguration_logGroupArn,++    -- ** ExperimentLogConfiguration+    experimentLogConfiguration_cloudWatchLogsConfiguration,+    experimentLogConfiguration_logSchemaVersion,+    experimentLogConfiguration_s3Configuration,++    -- ** ExperimentS3LogConfiguration+    experimentS3LogConfiguration_bucketName,+    experimentS3LogConfiguration_prefix,++    -- ** ExperimentState+    experimentState_reason,+    experimentState_status,++    -- ** ExperimentStopCondition+    experimentStopCondition_source,+    experimentStopCondition_value,++    -- ** ExperimentSummary+    experimentSummary_creationTime,+    experimentSummary_experimentTemplateId,+    experimentSummary_id,+    experimentSummary_state,+    experimentSummary_tags,++    -- ** ExperimentTarget+    experimentTarget_filters,+    experimentTarget_parameters,+    experimentTarget_resourceArns,+    experimentTarget_resourceTags,+    experimentTarget_resourceType,+    experimentTarget_selectionMode,++    -- ** ExperimentTargetFilter+    experimentTargetFilter_path,+    experimentTargetFilter_values,++    -- ** ExperimentTemplate+    experimentTemplate_actions,+    experimentTemplate_creationTime,+    experimentTemplate_description,+    experimentTemplate_id,+    experimentTemplate_lastUpdateTime,+    experimentTemplate_logConfiguration,+    experimentTemplate_roleArn,+    experimentTemplate_stopConditions,+    experimentTemplate_tags,+    experimentTemplate_targets,++    -- ** ExperimentTemplateAction+    experimentTemplateAction_actionId,+    experimentTemplateAction_description,+    experimentTemplateAction_parameters,+    experimentTemplateAction_startAfter,+    experimentTemplateAction_targets,++    -- ** ExperimentTemplateCloudWatchLogsLogConfiguration+    experimentTemplateCloudWatchLogsLogConfiguration_logGroupArn,++    -- ** ExperimentTemplateCloudWatchLogsLogConfigurationInput+    experimentTemplateCloudWatchLogsLogConfigurationInput_logGroupArn,++    -- ** ExperimentTemplateLogConfiguration+    experimentTemplateLogConfiguration_cloudWatchLogsConfiguration,+    experimentTemplateLogConfiguration_logSchemaVersion,+    experimentTemplateLogConfiguration_s3Configuration,++    -- ** ExperimentTemplateS3LogConfiguration+    experimentTemplateS3LogConfiguration_bucketName,+    experimentTemplateS3LogConfiguration_prefix,++    -- ** ExperimentTemplateS3LogConfigurationInput+    experimentTemplateS3LogConfigurationInput_prefix,+    experimentTemplateS3LogConfigurationInput_bucketName,++    -- ** ExperimentTemplateStopCondition+    experimentTemplateStopCondition_source,+    experimentTemplateStopCondition_value,++    -- ** ExperimentTemplateSummary+    experimentTemplateSummary_creationTime,+    experimentTemplateSummary_description,+    experimentTemplateSummary_id,+    experimentTemplateSummary_lastUpdateTime,+    experimentTemplateSummary_tags,++    -- ** ExperimentTemplateTarget+    experimentTemplateTarget_filters,+    experimentTemplateTarget_parameters,+    experimentTemplateTarget_resourceArns,+    experimentTemplateTarget_resourceTags,+    experimentTemplateTarget_resourceType,+    experimentTemplateTarget_selectionMode,++    -- ** ExperimentTemplateTargetFilter+    experimentTemplateTargetFilter_path,+    experimentTemplateTargetFilter_values,++    -- ** ExperimentTemplateTargetInputFilter+    experimentTemplateTargetInputFilter_path,+    experimentTemplateTargetInputFilter_values,++    -- ** TargetResourceType+    targetResourceType_description,+    targetResourceType_parameters,+    targetResourceType_resourceType,++    -- ** TargetResourceTypeParameter+    targetResourceTypeParameter_description,+    targetResourceTypeParameter_required,++    -- ** TargetResourceTypeSummary+    targetResourceTypeSummary_description,+    targetResourceTypeSummary_resourceType,++    -- ** UpdateExperimentTemplateActionInputItem+    updateExperimentTemplateActionInputItem_actionId,+    updateExperimentTemplateActionInputItem_description,+    updateExperimentTemplateActionInputItem_parameters,+    updateExperimentTemplateActionInputItem_startAfter,+    updateExperimentTemplateActionInputItem_targets,++    -- ** UpdateExperimentTemplateLogConfigurationInput+    updateExperimentTemplateLogConfigurationInput_cloudWatchLogsConfiguration,+    updateExperimentTemplateLogConfigurationInput_logSchemaVersion,+    updateExperimentTemplateLogConfigurationInput_s3Configuration,++    -- ** UpdateExperimentTemplateStopConditionInput+    updateExperimentTemplateStopConditionInput_value,+    updateExperimentTemplateStopConditionInput_source,++    -- ** UpdateExperimentTemplateTargetInput+    updateExperimentTemplateTargetInput_filters,+    updateExperimentTemplateTargetInput_parameters,+    updateExperimentTemplateTargetInput_resourceArns,+    updateExperimentTemplateTargetInput_resourceTags,+    updateExperimentTemplateTargetInput_resourceType,+    updateExperimentTemplateTargetInput_selectionMode,+  )+where++import Amazonka.FIS.CreateExperimentTemplate+import Amazonka.FIS.DeleteExperimentTemplate+import Amazonka.FIS.GetAction+import Amazonka.FIS.GetExperiment+import Amazonka.FIS.GetExperimentTemplate+import Amazonka.FIS.GetTargetResourceType+import Amazonka.FIS.ListActions+import Amazonka.FIS.ListExperimentTemplates+import Amazonka.FIS.ListExperiments+import Amazonka.FIS.ListTagsForResource+import Amazonka.FIS.ListTargetResourceTypes+import Amazonka.FIS.StartExperiment+import Amazonka.FIS.StopExperiment+import Amazonka.FIS.TagResource+import Amazonka.FIS.Types.Action+import Amazonka.FIS.Types.ActionParameter+import Amazonka.FIS.Types.ActionSummary+import Amazonka.FIS.Types.ActionTarget+import Amazonka.FIS.Types.CreateExperimentTemplateActionInput+import Amazonka.FIS.Types.CreateExperimentTemplateLogConfigurationInput+import Amazonka.FIS.Types.CreateExperimentTemplateStopConditionInput+import Amazonka.FIS.Types.CreateExperimentTemplateTargetInput+import Amazonka.FIS.Types.Experiment+import Amazonka.FIS.Types.ExperimentAction+import Amazonka.FIS.Types.ExperimentActionState+import Amazonka.FIS.Types.ExperimentCloudWatchLogsLogConfiguration+import Amazonka.FIS.Types.ExperimentLogConfiguration+import Amazonka.FIS.Types.ExperimentS3LogConfiguration+import Amazonka.FIS.Types.ExperimentState+import Amazonka.FIS.Types.ExperimentStopCondition+import Amazonka.FIS.Types.ExperimentSummary+import Amazonka.FIS.Types.ExperimentTarget+import Amazonka.FIS.Types.ExperimentTargetFilter+import Amazonka.FIS.Types.ExperimentTemplate+import Amazonka.FIS.Types.ExperimentTemplateAction+import Amazonka.FIS.Types.ExperimentTemplateCloudWatchLogsLogConfiguration+import Amazonka.FIS.Types.ExperimentTemplateCloudWatchLogsLogConfigurationInput+import Amazonka.FIS.Types.ExperimentTemplateLogConfiguration+import Amazonka.FIS.Types.ExperimentTemplateS3LogConfiguration+import Amazonka.FIS.Types.ExperimentTemplateS3LogConfigurationInput+import Amazonka.FIS.Types.ExperimentTemplateStopCondition+import Amazonka.FIS.Types.ExperimentTemplateSummary+import Amazonka.FIS.Types.ExperimentTemplateTarget+import Amazonka.FIS.Types.ExperimentTemplateTargetFilter+import Amazonka.FIS.Types.ExperimentTemplateTargetInputFilter+import Amazonka.FIS.Types.TargetResourceType+import Amazonka.FIS.Types.TargetResourceTypeParameter+import Amazonka.FIS.Types.TargetResourceTypeSummary+import Amazonka.FIS.Types.UpdateExperimentTemplateActionInputItem+import Amazonka.FIS.Types.UpdateExperimentTemplateLogConfigurationInput+import Amazonka.FIS.Types.UpdateExperimentTemplateStopConditionInput+import Amazonka.FIS.Types.UpdateExperimentTemplateTargetInput+import Amazonka.FIS.UntagResource+import Amazonka.FIS.UpdateExperimentTemplate
+ gen/Amazonka/FIS/ListActions.hs view
@@ -0,0 +1,193 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.ListActions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists the available FIS actions.+module Amazonka.FIS.ListActions+  ( -- * Creating a Request+    ListActions (..),+    newListActions,++    -- * Request Lenses+    listActions_maxResults,+    listActions_nextToken,++    -- * Destructuring the Response+    ListActionsResponse (..),+    newListActionsResponse,++    -- * Response Lenses+    listActionsResponse_actions,+    listActionsResponse_nextToken,+    listActionsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListActions' smart constructor.+data ListActions = ListActions'+  { -- | The maximum number of results to return with a single call. To retrieve+    -- the remaining results, make another call with the returned @nextToken@+    -- value.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next page of results.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListActions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listActions_maxResults' - The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+--+-- 'nextToken', 'listActions_nextToken' - The token for the next page of results.+newListActions ::+  ListActions+newListActions =+  ListActions'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+listActions_maxResults :: Lens.Lens' ListActions (Prelude.Maybe Prelude.Natural)+listActions_maxResults = Lens.lens (\ListActions' {maxResults} -> maxResults) (\s@ListActions' {} a -> s {maxResults = a} :: ListActions)++-- | The token for the next page of results.+listActions_nextToken :: Lens.Lens' ListActions (Prelude.Maybe Prelude.Text)+listActions_nextToken = Lens.lens (\ListActions' {nextToken} -> nextToken) (\s@ListActions' {} a -> s {nextToken = a} :: ListActions)++instance Core.AWSRequest ListActions where+  type AWSResponse ListActions = ListActionsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListActionsResponse'+            Prelude.<$> (x Data..?> "actions" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListActions where+  hashWithSalt _salt ListActions' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListActions where+  rnf ListActions' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListActions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListActions where+  toPath = Prelude.const "/actions"++instance Data.ToQuery ListActions where+  toQuery ListActions' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListActionsResponse' smart constructor.+data ListActionsResponse = ListActionsResponse'+  { -- | The actions.+    actions :: Prelude.Maybe [ActionSummary],+    -- | The token to use to retrieve the next page of results. This value is+    -- @null@ when there are no more results to return.+    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 'ListActionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'actions', 'listActionsResponse_actions' - The actions.+--+-- 'nextToken', 'listActionsResponse_nextToken' - The token to use to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+--+-- 'httpStatus', 'listActionsResponse_httpStatus' - The response's http status code.+newListActionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListActionsResponse+newListActionsResponse pHttpStatus_ =+  ListActionsResponse'+    { actions = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The actions.+listActionsResponse_actions :: Lens.Lens' ListActionsResponse (Prelude.Maybe [ActionSummary])+listActionsResponse_actions = Lens.lens (\ListActionsResponse' {actions} -> actions) (\s@ListActionsResponse' {} a -> s {actions = a} :: ListActionsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token to use to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+listActionsResponse_nextToken :: Lens.Lens' ListActionsResponse (Prelude.Maybe Prelude.Text)+listActionsResponse_nextToken = Lens.lens (\ListActionsResponse' {nextToken} -> nextToken) (\s@ListActionsResponse' {} a -> s {nextToken = a} :: ListActionsResponse)++-- | The response's http status code.+listActionsResponse_httpStatus :: Lens.Lens' ListActionsResponse Prelude.Int+listActionsResponse_httpStatus = Lens.lens (\ListActionsResponse' {httpStatus} -> httpStatus) (\s@ListActionsResponse' {} a -> s {httpStatus = a} :: ListActionsResponse)++instance Prelude.NFData ListActionsResponse where+  rnf ListActionsResponse' {..} =+    Prelude.rnf actions+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/FIS/ListExperimentTemplates.hs view
@@ -0,0 +1,203 @@+{-# 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.FIS.ListExperimentTemplates+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists your experiment templates.+module Amazonka.FIS.ListExperimentTemplates+  ( -- * Creating a Request+    ListExperimentTemplates (..),+    newListExperimentTemplates,++    -- * Request Lenses+    listExperimentTemplates_maxResults,+    listExperimentTemplates_nextToken,++    -- * Destructuring the Response+    ListExperimentTemplatesResponse (..),+    newListExperimentTemplatesResponse,++    -- * Response Lenses+    listExperimentTemplatesResponse_experimentTemplates,+    listExperimentTemplatesResponse_nextToken,+    listExperimentTemplatesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListExperimentTemplates' smart constructor.+data ListExperimentTemplates = ListExperimentTemplates'+  { -- | The maximum number of results to return with a single call. To retrieve+    -- the remaining results, make another call with the returned @nextToken@+    -- value.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next page of results.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListExperimentTemplates' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listExperimentTemplates_maxResults' - The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+--+-- 'nextToken', 'listExperimentTemplates_nextToken' - The token for the next page of results.+newListExperimentTemplates ::+  ListExperimentTemplates+newListExperimentTemplates =+  ListExperimentTemplates'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+listExperimentTemplates_maxResults :: Lens.Lens' ListExperimentTemplates (Prelude.Maybe Prelude.Natural)+listExperimentTemplates_maxResults = Lens.lens (\ListExperimentTemplates' {maxResults} -> maxResults) (\s@ListExperimentTemplates' {} a -> s {maxResults = a} :: ListExperimentTemplates)++-- | The token for the next page of results.+listExperimentTemplates_nextToken :: Lens.Lens' ListExperimentTemplates (Prelude.Maybe Prelude.Text)+listExperimentTemplates_nextToken = Lens.lens (\ListExperimentTemplates' {nextToken} -> nextToken) (\s@ListExperimentTemplates' {} a -> s {nextToken = a} :: ListExperimentTemplates)++instance Core.AWSRequest ListExperimentTemplates where+  type+    AWSResponse ListExperimentTemplates =+      ListExperimentTemplatesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListExperimentTemplatesResponse'+            Prelude.<$> ( x+                            Data..?> "experimentTemplates"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListExperimentTemplates where+  hashWithSalt _salt ListExperimentTemplates' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListExperimentTemplates where+  rnf ListExperimentTemplates' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListExperimentTemplates where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListExperimentTemplates where+  toPath = Prelude.const "/experimentTemplates"++instance Data.ToQuery ListExperimentTemplates where+  toQuery ListExperimentTemplates' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListExperimentTemplatesResponse' smart constructor.+data ListExperimentTemplatesResponse = ListExperimentTemplatesResponse'+  { -- | The experiment templates.+    experimentTemplates :: Prelude.Maybe [ExperimentTemplateSummary],+    -- | The token to use to retrieve the next page of results. This value is+    -- @null@ when there are no more results to return.+    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 'ListExperimentTemplatesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'experimentTemplates', 'listExperimentTemplatesResponse_experimentTemplates' - The experiment templates.+--+-- 'nextToken', 'listExperimentTemplatesResponse_nextToken' - The token to use to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+--+-- 'httpStatus', 'listExperimentTemplatesResponse_httpStatus' - The response's http status code.+newListExperimentTemplatesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListExperimentTemplatesResponse+newListExperimentTemplatesResponse pHttpStatus_ =+  ListExperimentTemplatesResponse'+    { experimentTemplates =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The experiment templates.+listExperimentTemplatesResponse_experimentTemplates :: Lens.Lens' ListExperimentTemplatesResponse (Prelude.Maybe [ExperimentTemplateSummary])+listExperimentTemplatesResponse_experimentTemplates = Lens.lens (\ListExperimentTemplatesResponse' {experimentTemplates} -> experimentTemplates) (\s@ListExperimentTemplatesResponse' {} a -> s {experimentTemplates = a} :: ListExperimentTemplatesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token to use to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+listExperimentTemplatesResponse_nextToken :: Lens.Lens' ListExperimentTemplatesResponse (Prelude.Maybe Prelude.Text)+listExperimentTemplatesResponse_nextToken = Lens.lens (\ListExperimentTemplatesResponse' {nextToken} -> nextToken) (\s@ListExperimentTemplatesResponse' {} a -> s {nextToken = a} :: ListExperimentTemplatesResponse)++-- | The response's http status code.+listExperimentTemplatesResponse_httpStatus :: Lens.Lens' ListExperimentTemplatesResponse Prelude.Int+listExperimentTemplatesResponse_httpStatus = Lens.lens (\ListExperimentTemplatesResponse' {httpStatus} -> httpStatus) (\s@ListExperimentTemplatesResponse' {} a -> s {httpStatus = a} :: ListExperimentTemplatesResponse)++instance+  Prelude.NFData+    ListExperimentTemplatesResponse+  where+  rnf ListExperimentTemplatesResponse' {..} =+    Prelude.rnf experimentTemplates+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/FIS/ListExperiments.hs view
@@ -0,0 +1,196 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.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)+--+-- Lists your experiments.+module Amazonka.FIS.ListExperiments+  ( -- * Creating a Request+    ListExperiments (..),+    newListExperiments,++    -- * Request Lenses+    listExperiments_maxResults,+    listExperiments_nextToken,++    -- * 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.FIS.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 return with a single call. To retrieve+    -- the remaining results, make another call with the returned @nextToken@+    -- value.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next page of results.+    nextToken :: Prelude.Maybe 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 return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+--+-- 'nextToken', 'listExperiments_nextToken' - The token for the next page of results.+newListExperiments ::+  ListExperiments+newListExperiments =+  ListExperiments'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+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 for the next page of results.+listExperiments_nextToken :: Lens.Lens' ListExperiments (Prelude.Maybe Prelude.Text)+listExperiments_nextToken = Lens.lens (\ListExperiments' {nextToken} -> nextToken) (\s@ListExperiments' {} a -> s {nextToken = a} :: ListExperiments)++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++instance Prelude.NFData ListExperiments where+  rnf ListExperiments' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++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 = Prelude.const "/experiments"++instance Data.ToQuery ListExperiments where+  toQuery ListExperiments' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListExperimentsResponse' smart constructor.+data ListExperimentsResponse = ListExperimentsResponse'+  { -- | The experiments.+    experiments :: Prelude.Maybe [ExperimentSummary],+    -- | The token to use to retrieve the next page of results. This value is+    -- @null@ when there are no more results to return.+    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' - The experiments.+--+-- 'nextToken', 'listExperimentsResponse_nextToken' - The token to use to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+--+-- '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_+    }++-- | The experiments.+listExperimentsResponse_experiments :: Lens.Lens' ListExperimentsResponse (Prelude.Maybe [ExperimentSummary])+listExperimentsResponse_experiments = Lens.lens (\ListExperimentsResponse' {experiments} -> experiments) (\s@ListExperimentsResponse' {} a -> s {experiments = a} :: ListExperimentsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token to use to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+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/FIS/ListTagsForResource.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.FIS.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)+--+-- Lists the tags for the specified resource.+module Amazonka.FIS.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.FIS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListTagsForResource' smart constructor.+data ListTagsForResource = ListTagsForResource'+  { -- | The Amazon Resource Name (ARN) of the resource.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the resource.+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource' {resourceArn = pResourceArn_}++-- | The Amazon Resource Name (ARN) of the resource.+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 tags for the resource.+    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 tags for the resource.+--+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { tags =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The tags for the resource.+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/FIS/ListTargetResourceTypes.hs view
@@ -0,0 +1,203 @@+{-# 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.FIS.ListTargetResourceTypes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists the target resource types.+module Amazonka.FIS.ListTargetResourceTypes+  ( -- * Creating a Request+    ListTargetResourceTypes (..),+    newListTargetResourceTypes,++    -- * Request Lenses+    listTargetResourceTypes_maxResults,+    listTargetResourceTypes_nextToken,++    -- * Destructuring the Response+    ListTargetResourceTypesResponse (..),+    newListTargetResourceTypesResponse,++    -- * Response Lenses+    listTargetResourceTypesResponse_nextToken,+    listTargetResourceTypesResponse_targetResourceTypes,+    listTargetResourceTypesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListTargetResourceTypes' smart constructor.+data ListTargetResourceTypes = ListTargetResourceTypes'+  { -- | The maximum number of results to return with a single call. To retrieve+    -- the remaining results, make another call with the returned @nextToken@+    -- value.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next page of results.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTargetResourceTypes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTargetResourceTypes_maxResults' - The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+--+-- 'nextToken', 'listTargetResourceTypes_nextToken' - The token for the next page of results.+newListTargetResourceTypes ::+  ListTargetResourceTypes+newListTargetResourceTypes =+  ListTargetResourceTypes'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+listTargetResourceTypes_maxResults :: Lens.Lens' ListTargetResourceTypes (Prelude.Maybe Prelude.Natural)+listTargetResourceTypes_maxResults = Lens.lens (\ListTargetResourceTypes' {maxResults} -> maxResults) (\s@ListTargetResourceTypes' {} a -> s {maxResults = a} :: ListTargetResourceTypes)++-- | The token for the next page of results.+listTargetResourceTypes_nextToken :: Lens.Lens' ListTargetResourceTypes (Prelude.Maybe Prelude.Text)+listTargetResourceTypes_nextToken = Lens.lens (\ListTargetResourceTypes' {nextToken} -> nextToken) (\s@ListTargetResourceTypes' {} a -> s {nextToken = a} :: ListTargetResourceTypes)++instance Core.AWSRequest ListTargetResourceTypes where+  type+    AWSResponse ListTargetResourceTypes =+      ListTargetResourceTypesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTargetResourceTypesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> ( x+                            Data..?> "targetResourceTypes"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListTargetResourceTypes where+  hashWithSalt _salt ListTargetResourceTypes' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListTargetResourceTypes where+  rnf ListTargetResourceTypes' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListTargetResourceTypes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListTargetResourceTypes where+  toPath = Prelude.const "/targetResourceTypes"++instance Data.ToQuery ListTargetResourceTypes where+  toQuery ListTargetResourceTypes' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListTargetResourceTypesResponse' smart constructor.+data ListTargetResourceTypesResponse = ListTargetResourceTypesResponse'+  { -- | The token to use to retrieve the next page of results. This value is+    -- @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The target resource types.+    targetResourceTypes :: Prelude.Maybe [TargetResourceTypeSummary],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTargetResourceTypesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTargetResourceTypesResponse_nextToken' - The token to use to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+--+-- 'targetResourceTypes', 'listTargetResourceTypesResponse_targetResourceTypes' - The target resource types.+--+-- 'httpStatus', 'listTargetResourceTypesResponse_httpStatus' - The response's http status code.+newListTargetResourceTypesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTargetResourceTypesResponse+newListTargetResourceTypesResponse pHttpStatus_ =+  ListTargetResourceTypesResponse'+    { nextToken =+        Prelude.Nothing,+      targetResourceTypes = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The token to use to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+listTargetResourceTypesResponse_nextToken :: Lens.Lens' ListTargetResourceTypesResponse (Prelude.Maybe Prelude.Text)+listTargetResourceTypesResponse_nextToken = Lens.lens (\ListTargetResourceTypesResponse' {nextToken} -> nextToken) (\s@ListTargetResourceTypesResponse' {} a -> s {nextToken = a} :: ListTargetResourceTypesResponse)++-- | The target resource types.+listTargetResourceTypesResponse_targetResourceTypes :: Lens.Lens' ListTargetResourceTypesResponse (Prelude.Maybe [TargetResourceTypeSummary])+listTargetResourceTypesResponse_targetResourceTypes = Lens.lens (\ListTargetResourceTypesResponse' {targetResourceTypes} -> targetResourceTypes) (\s@ListTargetResourceTypesResponse' {} a -> s {targetResourceTypes = a} :: ListTargetResourceTypesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listTargetResourceTypesResponse_httpStatus :: Lens.Lens' ListTargetResourceTypesResponse Prelude.Int+listTargetResourceTypesResponse_httpStatus = Lens.lens (\ListTargetResourceTypesResponse' {httpStatus} -> httpStatus) (\s@ListTargetResourceTypesResponse' {} a -> s {httpStatus = a} :: ListTargetResourceTypesResponse)++instance+  Prelude.NFData+    ListTargetResourceTypesResponse+  where+  rnf ListTargetResourceTypesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf targetResourceTypes+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/FIS/StartExperiment.hs view
@@ -0,0 +1,205 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.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 running an experiment from the specified experiment template.+module Amazonka.FIS.StartExperiment+  ( -- * Creating a Request+    StartExperiment (..),+    newStartExperiment,++    -- * Request Lenses+    startExperiment_tags,+    startExperiment_clientToken,+    startExperiment_experimentTemplateId,++    -- * Destructuring the Response+    StartExperimentResponse (..),+    newStartExperimentResponse,++    -- * Response Lenses+    startExperimentResponse_experiment,+    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.FIS.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 tags to apply to the experiment.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientToken :: Prelude.Text,+    -- | The ID of the experiment template.+    experimentTemplateId :: 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:+--+-- 'tags', 'startExperiment_tags' - The tags to apply to the experiment.+--+-- 'clientToken', 'startExperiment_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'experimentTemplateId', 'startExperiment_experimentTemplateId' - The ID of the experiment template.+newStartExperiment ::+  -- | 'clientToken'+  Prelude.Text ->+  -- | 'experimentTemplateId'+  Prelude.Text ->+  StartExperiment+newStartExperiment+  pClientToken_+  pExperimentTemplateId_ =+    StartExperiment'+      { tags = Prelude.Nothing,+        clientToken = pClientToken_,+        experimentTemplateId = pExperimentTemplateId_+      }++-- | The tags to apply to the experiment.+startExperiment_tags :: Lens.Lens' StartExperiment (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+startExperiment_tags = Lens.lens (\StartExperiment' {tags} -> tags) (\s@StartExperiment' {} a -> s {tags = a} :: StartExperiment) Prelude.. Lens.mapping Lens.coerced++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+startExperiment_clientToken :: Lens.Lens' StartExperiment Prelude.Text+startExperiment_clientToken = Lens.lens (\StartExperiment' {clientToken} -> clientToken) (\s@StartExperiment' {} a -> s {clientToken = a} :: StartExperiment)++-- | The ID of the experiment template.+startExperiment_experimentTemplateId :: Lens.Lens' StartExperiment Prelude.Text+startExperiment_experimentTemplateId = Lens.lens (\StartExperiment' {experimentTemplateId} -> experimentTemplateId) (\s@StartExperiment' {} a -> s {experimentTemplateId = 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..?> "experiment")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StartExperiment where+  hashWithSalt _salt StartExperiment' {..} =+    _salt+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` experimentTemplateId++instance Prelude.NFData StartExperiment where+  rnf StartExperiment' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf experimentTemplateId++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+          [ ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("clientToken" Data..= clientToken),+            Prelude.Just+              ( "experimentTemplateId"+                  Data..= experimentTemplateId+              )+          ]+      )++instance Data.ToPath StartExperiment where+  toPath = Prelude.const "/experiments"++instance Data.ToQuery StartExperiment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartExperimentResponse' smart constructor.+data StartExperimentResponse = StartExperimentResponse'+  { -- | Information about 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 '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:+--+-- 'experiment', 'startExperimentResponse_experiment' - Information about the experiment.+--+-- 'httpStatus', 'startExperimentResponse_httpStatus' - The response's http status code.+newStartExperimentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StartExperimentResponse+newStartExperimentResponse pHttpStatus_ =+  StartExperimentResponse'+    { experiment =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the experiment.+startExperimentResponse_experiment :: Lens.Lens' StartExperimentResponse (Prelude.Maybe Experiment)+startExperimentResponse_experiment = Lens.lens (\StartExperimentResponse' {experiment} -> experiment) (\s@StartExperimentResponse' {} a -> s {experiment = a} :: StartExperimentResponse)++-- | 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 experiment+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/FIS/StopExperiment.hs view
@@ -0,0 +1,157 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.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 the specified experiment.+module Amazonka.FIS.StopExperiment+  ( -- * Creating a Request+    StopExperiment (..),+    newStopExperiment,++    -- * Request Lenses+    stopExperiment_id,++    -- * Destructuring the Response+    StopExperimentResponse (..),+    newStopExperimentResponse,++    -- * Response Lenses+    stopExperimentResponse_experiment,+    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.FIS.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'+  { -- | The ID of the experiment.+    id :: 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:+--+-- 'id', 'stopExperiment_id' - The ID of the experiment.+newStopExperiment ::+  -- | 'id'+  Prelude.Text ->+  StopExperiment+newStopExperiment pId_ = StopExperiment' {id = pId_}++-- | The ID of the experiment.+stopExperiment_id :: Lens.Lens' StopExperiment Prelude.Text+stopExperiment_id = Lens.lens (\StopExperiment' {id} -> id) (\s@StopExperiment' {} a -> s {id = a} :: StopExperiment)++instance Core.AWSRequest StopExperiment where+  type+    AWSResponse StopExperiment =+      StopExperimentResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StopExperimentResponse'+            Prelude.<$> (x Data..?> "experiment")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StopExperiment where+  hashWithSalt _salt StopExperiment' {..} =+    _salt `Prelude.hashWithSalt` id++instance Prelude.NFData StopExperiment where+  rnf StopExperiment' {..} = Prelude.rnf id++instance Data.ToHeaders StopExperiment where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath StopExperiment where+  toPath StopExperiment' {..} =+    Prelude.mconcat ["/experiments/", Data.toBS id]++instance Data.ToQuery StopExperiment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStopExperimentResponse' smart constructor.+data StopExperimentResponse = StopExperimentResponse'+  { -- | Information about 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 '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:+--+-- 'experiment', 'stopExperimentResponse_experiment' - Information about the experiment.+--+-- 'httpStatus', 'stopExperimentResponse_httpStatus' - The response's http status code.+newStopExperimentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StopExperimentResponse+newStopExperimentResponse pHttpStatus_ =+  StopExperimentResponse'+    { experiment =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the experiment.+stopExperimentResponse_experiment :: Lens.Lens' StopExperimentResponse (Prelude.Maybe Experiment)+stopExperimentResponse_experiment = Lens.lens (\StopExperimentResponse' {experiment} -> experiment) (\s@StopExperimentResponse' {} a -> s {experiment = a} :: StopExperimentResponse)++-- | 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 experiment+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/FIS/TagResource.hs view
@@ -0,0 +1,163 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.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)+--+-- Applies the specified tags to the specified resource.+module Amazonka.FIS.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.FIS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newTagResource' smart constructor.+data TagResource = TagResource'+  { -- | The Amazon Resource Name (ARN) of the resource.+    resourceArn :: Prelude.Text,+    -- | The tags for 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 Amazon Resource Name (ARN) of the resource.+--+-- 'tags', 'tagResource_tags' - The tags for the resource.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the resource.+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | The tags for 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/FIS/Types.hs view
@@ -0,0 +1,469 @@+{-# 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.FIS.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.FIS.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _ConflictException,+    _ResourceNotFoundException,+    _ServiceQuotaExceededException,+    _ValidationException,++    -- * ExperimentActionStatus+    ExperimentActionStatus (..),++    -- * ExperimentStatus+    ExperimentStatus (..),++    -- * Action+    Action (..),+    newAction,+    action_description,+    action_id,+    action_parameters,+    action_tags,+    action_targets,++    -- * ActionParameter+    ActionParameter (..),+    newActionParameter,+    actionParameter_description,+    actionParameter_required,++    -- * ActionSummary+    ActionSummary (..),+    newActionSummary,+    actionSummary_description,+    actionSummary_id,+    actionSummary_tags,+    actionSummary_targets,++    -- * ActionTarget+    ActionTarget (..),+    newActionTarget,+    actionTarget_resourceType,++    -- * CreateExperimentTemplateActionInput+    CreateExperimentTemplateActionInput (..),+    newCreateExperimentTemplateActionInput,+    createExperimentTemplateActionInput_description,+    createExperimentTemplateActionInput_parameters,+    createExperimentTemplateActionInput_startAfter,+    createExperimentTemplateActionInput_targets,+    createExperimentTemplateActionInput_actionId,++    -- * CreateExperimentTemplateLogConfigurationInput+    CreateExperimentTemplateLogConfigurationInput (..),+    newCreateExperimentTemplateLogConfigurationInput,+    createExperimentTemplateLogConfigurationInput_cloudWatchLogsConfiguration,+    createExperimentTemplateLogConfigurationInput_s3Configuration,+    createExperimentTemplateLogConfigurationInput_logSchemaVersion,++    -- * CreateExperimentTemplateStopConditionInput+    CreateExperimentTemplateStopConditionInput (..),+    newCreateExperimentTemplateStopConditionInput,+    createExperimentTemplateStopConditionInput_value,+    createExperimentTemplateStopConditionInput_source,++    -- * CreateExperimentTemplateTargetInput+    CreateExperimentTemplateTargetInput (..),+    newCreateExperimentTemplateTargetInput,+    createExperimentTemplateTargetInput_filters,+    createExperimentTemplateTargetInput_parameters,+    createExperimentTemplateTargetInput_resourceArns,+    createExperimentTemplateTargetInput_resourceTags,+    createExperimentTemplateTargetInput_resourceType,+    createExperimentTemplateTargetInput_selectionMode,++    -- * Experiment+    Experiment (..),+    newExperiment,+    experiment_actions,+    experiment_creationTime,+    experiment_endTime,+    experiment_experimentTemplateId,+    experiment_id,+    experiment_logConfiguration,+    experiment_roleArn,+    experiment_startTime,+    experiment_state,+    experiment_stopConditions,+    experiment_tags,+    experiment_targets,++    -- * ExperimentAction+    ExperimentAction (..),+    newExperimentAction,+    experimentAction_actionId,+    experimentAction_description,+    experimentAction_endTime,+    experimentAction_parameters,+    experimentAction_startAfter,+    experimentAction_startTime,+    experimentAction_state,+    experimentAction_targets,++    -- * ExperimentActionState+    ExperimentActionState (..),+    newExperimentActionState,+    experimentActionState_reason,+    experimentActionState_status,++    -- * ExperimentCloudWatchLogsLogConfiguration+    ExperimentCloudWatchLogsLogConfiguration (..),+    newExperimentCloudWatchLogsLogConfiguration,+    experimentCloudWatchLogsLogConfiguration_logGroupArn,++    -- * ExperimentLogConfiguration+    ExperimentLogConfiguration (..),+    newExperimentLogConfiguration,+    experimentLogConfiguration_cloudWatchLogsConfiguration,+    experimentLogConfiguration_logSchemaVersion,+    experimentLogConfiguration_s3Configuration,++    -- * ExperimentS3LogConfiguration+    ExperimentS3LogConfiguration (..),+    newExperimentS3LogConfiguration,+    experimentS3LogConfiguration_bucketName,+    experimentS3LogConfiguration_prefix,++    -- * ExperimentState+    ExperimentState (..),+    newExperimentState,+    experimentState_reason,+    experimentState_status,++    -- * ExperimentStopCondition+    ExperimentStopCondition (..),+    newExperimentStopCondition,+    experimentStopCondition_source,+    experimentStopCondition_value,++    -- * ExperimentSummary+    ExperimentSummary (..),+    newExperimentSummary,+    experimentSummary_creationTime,+    experimentSummary_experimentTemplateId,+    experimentSummary_id,+    experimentSummary_state,+    experimentSummary_tags,++    -- * ExperimentTarget+    ExperimentTarget (..),+    newExperimentTarget,+    experimentTarget_filters,+    experimentTarget_parameters,+    experimentTarget_resourceArns,+    experimentTarget_resourceTags,+    experimentTarget_resourceType,+    experimentTarget_selectionMode,++    -- * ExperimentTargetFilter+    ExperimentTargetFilter (..),+    newExperimentTargetFilter,+    experimentTargetFilter_path,+    experimentTargetFilter_values,++    -- * ExperimentTemplate+    ExperimentTemplate (..),+    newExperimentTemplate,+    experimentTemplate_actions,+    experimentTemplate_creationTime,+    experimentTemplate_description,+    experimentTemplate_id,+    experimentTemplate_lastUpdateTime,+    experimentTemplate_logConfiguration,+    experimentTemplate_roleArn,+    experimentTemplate_stopConditions,+    experimentTemplate_tags,+    experimentTemplate_targets,++    -- * ExperimentTemplateAction+    ExperimentTemplateAction (..),+    newExperimentTemplateAction,+    experimentTemplateAction_actionId,+    experimentTemplateAction_description,+    experimentTemplateAction_parameters,+    experimentTemplateAction_startAfter,+    experimentTemplateAction_targets,++    -- * ExperimentTemplateCloudWatchLogsLogConfiguration+    ExperimentTemplateCloudWatchLogsLogConfiguration (..),+    newExperimentTemplateCloudWatchLogsLogConfiguration,+    experimentTemplateCloudWatchLogsLogConfiguration_logGroupArn,++    -- * ExperimentTemplateCloudWatchLogsLogConfigurationInput+    ExperimentTemplateCloudWatchLogsLogConfigurationInput (..),+    newExperimentTemplateCloudWatchLogsLogConfigurationInput,+    experimentTemplateCloudWatchLogsLogConfigurationInput_logGroupArn,++    -- * ExperimentTemplateLogConfiguration+    ExperimentTemplateLogConfiguration (..),+    newExperimentTemplateLogConfiguration,+    experimentTemplateLogConfiguration_cloudWatchLogsConfiguration,+    experimentTemplateLogConfiguration_logSchemaVersion,+    experimentTemplateLogConfiguration_s3Configuration,++    -- * ExperimentTemplateS3LogConfiguration+    ExperimentTemplateS3LogConfiguration (..),+    newExperimentTemplateS3LogConfiguration,+    experimentTemplateS3LogConfiguration_bucketName,+    experimentTemplateS3LogConfiguration_prefix,++    -- * ExperimentTemplateS3LogConfigurationInput+    ExperimentTemplateS3LogConfigurationInput (..),+    newExperimentTemplateS3LogConfigurationInput,+    experimentTemplateS3LogConfigurationInput_prefix,+    experimentTemplateS3LogConfigurationInput_bucketName,++    -- * ExperimentTemplateStopCondition+    ExperimentTemplateStopCondition (..),+    newExperimentTemplateStopCondition,+    experimentTemplateStopCondition_source,+    experimentTemplateStopCondition_value,++    -- * ExperimentTemplateSummary+    ExperimentTemplateSummary (..),+    newExperimentTemplateSummary,+    experimentTemplateSummary_creationTime,+    experimentTemplateSummary_description,+    experimentTemplateSummary_id,+    experimentTemplateSummary_lastUpdateTime,+    experimentTemplateSummary_tags,++    -- * ExperimentTemplateTarget+    ExperimentTemplateTarget (..),+    newExperimentTemplateTarget,+    experimentTemplateTarget_filters,+    experimentTemplateTarget_parameters,+    experimentTemplateTarget_resourceArns,+    experimentTemplateTarget_resourceTags,+    experimentTemplateTarget_resourceType,+    experimentTemplateTarget_selectionMode,++    -- * ExperimentTemplateTargetFilter+    ExperimentTemplateTargetFilter (..),+    newExperimentTemplateTargetFilter,+    experimentTemplateTargetFilter_path,+    experimentTemplateTargetFilter_values,++    -- * ExperimentTemplateTargetInputFilter+    ExperimentTemplateTargetInputFilter (..),+    newExperimentTemplateTargetInputFilter,+    experimentTemplateTargetInputFilter_path,+    experimentTemplateTargetInputFilter_values,++    -- * TargetResourceType+    TargetResourceType (..),+    newTargetResourceType,+    targetResourceType_description,+    targetResourceType_parameters,+    targetResourceType_resourceType,++    -- * TargetResourceTypeParameter+    TargetResourceTypeParameter (..),+    newTargetResourceTypeParameter,+    targetResourceTypeParameter_description,+    targetResourceTypeParameter_required,++    -- * TargetResourceTypeSummary+    TargetResourceTypeSummary (..),+    newTargetResourceTypeSummary,+    targetResourceTypeSummary_description,+    targetResourceTypeSummary_resourceType,++    -- * UpdateExperimentTemplateActionInputItem+    UpdateExperimentTemplateActionInputItem (..),+    newUpdateExperimentTemplateActionInputItem,+    updateExperimentTemplateActionInputItem_actionId,+    updateExperimentTemplateActionInputItem_description,+    updateExperimentTemplateActionInputItem_parameters,+    updateExperimentTemplateActionInputItem_startAfter,+    updateExperimentTemplateActionInputItem_targets,++    -- * UpdateExperimentTemplateLogConfigurationInput+    UpdateExperimentTemplateLogConfigurationInput (..),+    newUpdateExperimentTemplateLogConfigurationInput,+    updateExperimentTemplateLogConfigurationInput_cloudWatchLogsConfiguration,+    updateExperimentTemplateLogConfigurationInput_logSchemaVersion,+    updateExperimentTemplateLogConfigurationInput_s3Configuration,++    -- * UpdateExperimentTemplateStopConditionInput+    UpdateExperimentTemplateStopConditionInput (..),+    newUpdateExperimentTemplateStopConditionInput,+    updateExperimentTemplateStopConditionInput_value,+    updateExperimentTemplateStopConditionInput_source,++    -- * UpdateExperimentTemplateTargetInput+    UpdateExperimentTemplateTargetInput (..),+    newUpdateExperimentTemplateTargetInput,+    updateExperimentTemplateTargetInput_filters,+    updateExperimentTemplateTargetInput_parameters,+    updateExperimentTemplateTargetInput_resourceArns,+    updateExperimentTemplateTargetInput_resourceTags,+    updateExperimentTemplateTargetInput_resourceType,+    updateExperimentTemplateTargetInput_selectionMode,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.FIS.Types.Action+import Amazonka.FIS.Types.ActionParameter+import Amazonka.FIS.Types.ActionSummary+import Amazonka.FIS.Types.ActionTarget+import Amazonka.FIS.Types.CreateExperimentTemplateActionInput+import Amazonka.FIS.Types.CreateExperimentTemplateLogConfigurationInput+import Amazonka.FIS.Types.CreateExperimentTemplateStopConditionInput+import Amazonka.FIS.Types.CreateExperimentTemplateTargetInput+import Amazonka.FIS.Types.Experiment+import Amazonka.FIS.Types.ExperimentAction+import Amazonka.FIS.Types.ExperimentActionState+import Amazonka.FIS.Types.ExperimentActionStatus+import Amazonka.FIS.Types.ExperimentCloudWatchLogsLogConfiguration+import Amazonka.FIS.Types.ExperimentLogConfiguration+import Amazonka.FIS.Types.ExperimentS3LogConfiguration+import Amazonka.FIS.Types.ExperimentState+import Amazonka.FIS.Types.ExperimentStatus+import Amazonka.FIS.Types.ExperimentStopCondition+import Amazonka.FIS.Types.ExperimentSummary+import Amazonka.FIS.Types.ExperimentTarget+import Amazonka.FIS.Types.ExperimentTargetFilter+import Amazonka.FIS.Types.ExperimentTemplate+import Amazonka.FIS.Types.ExperimentTemplateAction+import Amazonka.FIS.Types.ExperimentTemplateCloudWatchLogsLogConfiguration+import Amazonka.FIS.Types.ExperimentTemplateCloudWatchLogsLogConfigurationInput+import Amazonka.FIS.Types.ExperimentTemplateLogConfiguration+import Amazonka.FIS.Types.ExperimentTemplateS3LogConfiguration+import Amazonka.FIS.Types.ExperimentTemplateS3LogConfigurationInput+import Amazonka.FIS.Types.ExperimentTemplateStopCondition+import Amazonka.FIS.Types.ExperimentTemplateSummary+import Amazonka.FIS.Types.ExperimentTemplateTarget+import Amazonka.FIS.Types.ExperimentTemplateTargetFilter+import Amazonka.FIS.Types.ExperimentTemplateTargetInputFilter+import Amazonka.FIS.Types.TargetResourceType+import Amazonka.FIS.Types.TargetResourceTypeParameter+import Amazonka.FIS.Types.TargetResourceTypeSummary+import Amazonka.FIS.Types.UpdateExperimentTemplateActionInputItem+import Amazonka.FIS.Types.UpdateExperimentTemplateLogConfigurationInput+import Amazonka.FIS.Types.UpdateExperimentTemplateStopConditionInput+import Amazonka.FIS.Types.UpdateExperimentTemplateTargetInput+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2020-12-01@ of the Amazon Fault Injection Simulator SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "FIS",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "fis",+      Core.signingName = "fis",+      Core.version = "2020-12-01",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "FIS",+      Core.retry = retry+    }+  where+    retry =+      Core.Exponential+        { Core.base = 5.0e-2,+          Core.growth = 2,+          Core.attempts = 5,+          Core.check = check+        }+    check e+      | Lens.has (Core.hasStatus 502) e =+          Prelude.Just "bad_gateway"+      | Lens.has (Core.hasStatus 504) e =+          Prelude.Just "gateway_timeout"+      | Lens.has (Core.hasStatus 500) e =+          Prelude.Just "general_server_error"+      | Lens.has (Core.hasStatus 509) e =+          Prelude.Just "limit_exceeded"+      | Lens.has+          ( Core.hasCode "RequestThrottledException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "request_throttled_exception"+      | Lens.has (Core.hasStatus 503) e =+          Prelude.Just "service_unavailable"+      | Lens.has+          ( Core.hasCode "ThrottledException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttled_exception"+      | Lens.has+          ( Core.hasCode "Throttling"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttling"+      | Lens.has+          ( Core.hasCode "ThrottlingException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttling_exception"+      | Lens.has+          ( Core.hasCode+              "ProvisionedThroughputExceededException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throughput_exceeded"+      | Lens.has (Core.hasStatus 429) e =+          Prelude.Just "too_many_requests"+      | Prelude.otherwise = Prelude.Nothing++-- | The request could not be processed because of a conflict.+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConflictException =+  Core._MatchServiceError+    defaultService+    "ConflictException"+    Prelude.. Core.hasStatus 409++-- | The specified resource cannot be found.+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceNotFoundException =+  Core._MatchServiceError+    defaultService+    "ResourceNotFoundException"+    Prelude.. Core.hasStatus 404++-- | You have exceeded your service quota.+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceQuotaExceededException =+  Core._MatchServiceError+    defaultService+    "ServiceQuotaExceededException"+    Prelude.. Core.hasStatus 402++-- | The specified input is not valid, or fails to satisfy the constraints+-- for the request.+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ValidationException =+  Core._MatchServiceError+    defaultService+    "ValidationException"+    Prelude.. Core.hasStatus 400
+ gen/Amazonka/FIS/Types/Action.hs view
@@ -0,0 +1,124 @@+{-# 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.FIS.Types.Action+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.Action where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ActionParameter+import Amazonka.FIS.Types.ActionTarget+import qualified Amazonka.Prelude as Prelude++-- | Describes an action. For more information, see+-- <https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html FIS actions>+-- in the /Fault Injection Simulator User Guide/.+--+-- /See:/ 'newAction' smart constructor.+data Action = Action'+  { -- | The description for the action.+    description :: Prelude.Maybe Prelude.Text,+    -- | The ID of the action.+    id :: Prelude.Maybe Prelude.Text,+    -- | The action parameters, if applicable.+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text ActionParameter),+    -- | The tags for the action.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The supported targets for the action.+    targets :: Prelude.Maybe (Prelude.HashMap Prelude.Text ActionTarget)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Action' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'action_description' - The description for the action.+--+-- 'id', 'action_id' - The ID of the action.+--+-- 'parameters', 'action_parameters' - The action parameters, if applicable.+--+-- 'tags', 'action_tags' - The tags for the action.+--+-- 'targets', 'action_targets' - The supported targets for the action.+newAction ::+  Action+newAction =+  Action'+    { description = Prelude.Nothing,+      id = Prelude.Nothing,+      parameters = Prelude.Nothing,+      tags = Prelude.Nothing,+      targets = Prelude.Nothing+    }++-- | The description for the action.+action_description :: Lens.Lens' Action (Prelude.Maybe Prelude.Text)+action_description = Lens.lens (\Action' {description} -> description) (\s@Action' {} a -> s {description = a} :: Action)++-- | The ID of the action.+action_id :: Lens.Lens' Action (Prelude.Maybe Prelude.Text)+action_id = Lens.lens (\Action' {id} -> id) (\s@Action' {} a -> s {id = a} :: Action)++-- | The action parameters, if applicable.+action_parameters :: Lens.Lens' Action (Prelude.Maybe (Prelude.HashMap Prelude.Text ActionParameter))+action_parameters = Lens.lens (\Action' {parameters} -> parameters) (\s@Action' {} a -> s {parameters = a} :: Action) Prelude.. Lens.mapping Lens.coerced++-- | The tags for the action.+action_tags :: Lens.Lens' Action (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+action_tags = Lens.lens (\Action' {tags} -> tags) (\s@Action' {} a -> s {tags = a} :: Action) Prelude.. Lens.mapping Lens.coerced++-- | The supported targets for the action.+action_targets :: Lens.Lens' Action (Prelude.Maybe (Prelude.HashMap Prelude.Text ActionTarget))+action_targets = Lens.lens (\Action' {targets} -> targets) (\s@Action' {} a -> s {targets = a} :: Action) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON Action where+  parseJSON =+    Data.withObject+      "Action"+      ( \x ->+          Action'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> (x Data..:? "id")+            Prelude.<*> (x Data..:? "parameters" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "targets" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable Action where+  hashWithSalt _salt Action' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` parameters+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` targets++instance Prelude.NFData Action where+  rnf Action' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf parameters+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf targets
+ gen/Amazonka/FIS/Types/ActionParameter.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.FIS.Types.ActionParameter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ActionParameter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes a parameter for an action.+--+-- /See:/ 'newActionParameter' smart constructor.+data ActionParameter = ActionParameter'+  { -- | The parameter description.+    description :: Prelude.Maybe Prelude.Text,+    -- | Indicates whether the parameter is required.+    required :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ActionParameter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'actionParameter_description' - The parameter description.+--+-- 'required', 'actionParameter_required' - Indicates whether the parameter is required.+newActionParameter ::+  ActionParameter+newActionParameter =+  ActionParameter'+    { description = Prelude.Nothing,+      required = Prelude.Nothing+    }++-- | The parameter description.+actionParameter_description :: Lens.Lens' ActionParameter (Prelude.Maybe Prelude.Text)+actionParameter_description = Lens.lens (\ActionParameter' {description} -> description) (\s@ActionParameter' {} a -> s {description = a} :: ActionParameter)++-- | Indicates whether the parameter is required.+actionParameter_required :: Lens.Lens' ActionParameter (Prelude.Maybe Prelude.Bool)+actionParameter_required = Lens.lens (\ActionParameter' {required} -> required) (\s@ActionParameter' {} a -> s {required = a} :: ActionParameter)++instance Data.FromJSON ActionParameter where+  parseJSON =+    Data.withObject+      "ActionParameter"+      ( \x ->+          ActionParameter'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> (x Data..:? "required")+      )++instance Prelude.Hashable ActionParameter where+  hashWithSalt _salt ActionParameter' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` required++instance Prelude.NFData ActionParameter where+  rnf ActionParameter' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf required
+ gen/Amazonka/FIS/Types/ActionSummary.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.FIS.Types.ActionSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ActionSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ActionTarget+import qualified Amazonka.Prelude as Prelude++-- | Provides a summary of an action.+--+-- /See:/ 'newActionSummary' smart constructor.+data ActionSummary = ActionSummary'+  { -- | The description for the action.+    description :: Prelude.Maybe Prelude.Text,+    -- | The ID of the action.+    id :: Prelude.Maybe Prelude.Text,+    -- | The tags for the action.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The targets for the action.+    targets :: Prelude.Maybe (Prelude.HashMap Prelude.Text ActionTarget)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ActionSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'actionSummary_description' - The description for the action.+--+-- 'id', 'actionSummary_id' - The ID of the action.+--+-- 'tags', 'actionSummary_tags' - The tags for the action.+--+-- 'targets', 'actionSummary_targets' - The targets for the action.+newActionSummary ::+  ActionSummary+newActionSummary =+  ActionSummary'+    { description = Prelude.Nothing,+      id = Prelude.Nothing,+      tags = Prelude.Nothing,+      targets = Prelude.Nothing+    }++-- | The description for the action.+actionSummary_description :: Lens.Lens' ActionSummary (Prelude.Maybe Prelude.Text)+actionSummary_description = Lens.lens (\ActionSummary' {description} -> description) (\s@ActionSummary' {} a -> s {description = a} :: ActionSummary)++-- | The ID of the action.+actionSummary_id :: Lens.Lens' ActionSummary (Prelude.Maybe Prelude.Text)+actionSummary_id = Lens.lens (\ActionSummary' {id} -> id) (\s@ActionSummary' {} a -> s {id = a} :: ActionSummary)++-- | The tags for the action.+actionSummary_tags :: Lens.Lens' ActionSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+actionSummary_tags = Lens.lens (\ActionSummary' {tags} -> tags) (\s@ActionSummary' {} a -> s {tags = a} :: ActionSummary) Prelude.. Lens.mapping Lens.coerced++-- | The targets for the action.+actionSummary_targets :: Lens.Lens' ActionSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text ActionTarget))+actionSummary_targets = Lens.lens (\ActionSummary' {targets} -> targets) (\s@ActionSummary' {} a -> s {targets = a} :: ActionSummary) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ActionSummary where+  parseJSON =+    Data.withObject+      "ActionSummary"+      ( \x ->+          ActionSummary'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> (x Data..:? "id")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "targets" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ActionSummary where+  hashWithSalt _salt ActionSummary' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` targets++instance Prelude.NFData ActionSummary where+  rnf ActionSummary' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf targets
+ gen/Amazonka/FIS/Types/ActionTarget.hs view
@@ -0,0 +1,68 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.ActionTarget+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ActionTarget where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes a target for an action.+--+-- /See:/ 'newActionTarget' smart constructor.+data ActionTarget = ActionTarget'+  { -- | The resource type of the target.+    resourceType :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ActionTarget' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceType', 'actionTarget_resourceType' - The resource type of the target.+newActionTarget ::+  ActionTarget+newActionTarget =+  ActionTarget' {resourceType = Prelude.Nothing}++-- | The resource type of the target.+actionTarget_resourceType :: Lens.Lens' ActionTarget (Prelude.Maybe Prelude.Text)+actionTarget_resourceType = Lens.lens (\ActionTarget' {resourceType} -> resourceType) (\s@ActionTarget' {} a -> s {resourceType = a} :: ActionTarget)++instance Data.FromJSON ActionTarget where+  parseJSON =+    Data.withObject+      "ActionTarget"+      ( \x ->+          ActionTarget'+            Prelude.<$> (x Data..:? "resourceType")+      )++instance Prelude.Hashable ActionTarget where+  hashWithSalt _salt ActionTarget' {..} =+    _salt `Prelude.hashWithSalt` resourceType++instance Prelude.NFData ActionTarget where+  rnf ActionTarget' {..} = Prelude.rnf resourceType
+ gen/Amazonka/FIS/Types/CreateExperimentTemplateActionInput.hs view
@@ -0,0 +1,146 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.CreateExperimentTemplateActionInput+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.CreateExperimentTemplateActionInput where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies an action for an experiment template.+--+-- For more information, see+-- <https://docs.aws.amazon.com/fis/latest/userguide/actions.html Actions>+-- in the /Fault Injection Simulator User Guide/.+--+-- /See:/ 'newCreateExperimentTemplateActionInput' smart constructor.+data CreateExperimentTemplateActionInput = CreateExperimentTemplateActionInput'+  { -- | A description for the action.+    description :: Prelude.Maybe Prelude.Text,+    -- | The parameters for the action, if applicable.+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name of the action that must be completed before the current action+    -- starts. Omit this parameter to run the action at the start of the+    -- experiment.+    startAfter :: Prelude.Maybe [Prelude.Text],+    -- | The targets for the action.+    targets :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The ID of the action. The format of the action ID is:+    -- aws:/service-name/:/action-type/.+    actionId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateExperimentTemplateActionInput' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createExperimentTemplateActionInput_description' - A description for the action.+--+-- 'parameters', 'createExperimentTemplateActionInput_parameters' - The parameters for the action, if applicable.+--+-- 'startAfter', 'createExperimentTemplateActionInput_startAfter' - The name of the action that must be completed before the current action+-- starts. Omit this parameter to run the action at the start of the+-- experiment.+--+-- 'targets', 'createExperimentTemplateActionInput_targets' - The targets for the action.+--+-- 'actionId', 'createExperimentTemplateActionInput_actionId' - The ID of the action. The format of the action ID is:+-- aws:/service-name/:/action-type/.+newCreateExperimentTemplateActionInput ::+  -- | 'actionId'+  Prelude.Text ->+  CreateExperimentTemplateActionInput+newCreateExperimentTemplateActionInput pActionId_ =+  CreateExperimentTemplateActionInput'+    { description =+        Prelude.Nothing,+      parameters = Prelude.Nothing,+      startAfter = Prelude.Nothing,+      targets = Prelude.Nothing,+      actionId = pActionId_+    }++-- | A description for the action.+createExperimentTemplateActionInput_description :: Lens.Lens' CreateExperimentTemplateActionInput (Prelude.Maybe Prelude.Text)+createExperimentTemplateActionInput_description = Lens.lens (\CreateExperimentTemplateActionInput' {description} -> description) (\s@CreateExperimentTemplateActionInput' {} a -> s {description = a} :: CreateExperimentTemplateActionInput)++-- | The parameters for the action, if applicable.+createExperimentTemplateActionInput_parameters :: Lens.Lens' CreateExperimentTemplateActionInput (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createExperimentTemplateActionInput_parameters = Lens.lens (\CreateExperimentTemplateActionInput' {parameters} -> parameters) (\s@CreateExperimentTemplateActionInput' {} a -> s {parameters = a} :: CreateExperimentTemplateActionInput) Prelude.. Lens.mapping Lens.coerced++-- | The name of the action that must be completed before the current action+-- starts. Omit this parameter to run the action at the start of the+-- experiment.+createExperimentTemplateActionInput_startAfter :: Lens.Lens' CreateExperimentTemplateActionInput (Prelude.Maybe [Prelude.Text])+createExperimentTemplateActionInput_startAfter = Lens.lens (\CreateExperimentTemplateActionInput' {startAfter} -> startAfter) (\s@CreateExperimentTemplateActionInput' {} a -> s {startAfter = a} :: CreateExperimentTemplateActionInput) Prelude.. Lens.mapping Lens.coerced++-- | The targets for the action.+createExperimentTemplateActionInput_targets :: Lens.Lens' CreateExperimentTemplateActionInput (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createExperimentTemplateActionInput_targets = Lens.lens (\CreateExperimentTemplateActionInput' {targets} -> targets) (\s@CreateExperimentTemplateActionInput' {} a -> s {targets = a} :: CreateExperimentTemplateActionInput) Prelude.. Lens.mapping Lens.coerced++-- | The ID of the action. The format of the action ID is:+-- aws:/service-name/:/action-type/.+createExperimentTemplateActionInput_actionId :: Lens.Lens' CreateExperimentTemplateActionInput Prelude.Text+createExperimentTemplateActionInput_actionId = Lens.lens (\CreateExperimentTemplateActionInput' {actionId} -> actionId) (\s@CreateExperimentTemplateActionInput' {} a -> s {actionId = a} :: CreateExperimentTemplateActionInput)++instance+  Prelude.Hashable+    CreateExperimentTemplateActionInput+  where+  hashWithSalt+    _salt+    CreateExperimentTemplateActionInput' {..} =+      _salt+        `Prelude.hashWithSalt` description+        `Prelude.hashWithSalt` parameters+        `Prelude.hashWithSalt` startAfter+        `Prelude.hashWithSalt` targets+        `Prelude.hashWithSalt` actionId++instance+  Prelude.NFData+    CreateExperimentTemplateActionInput+  where+  rnf CreateExperimentTemplateActionInput' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf parameters+      `Prelude.seq` Prelude.rnf startAfter+      `Prelude.seq` Prelude.rnf targets+      `Prelude.seq` Prelude.rnf actionId++instance+  Data.ToJSON+    CreateExperimentTemplateActionInput+  where+  toJSON CreateExperimentTemplateActionInput' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            ("parameters" Data..=) Prelude.<$> parameters,+            ("startAfter" Data..=) Prelude.<$> startAfter,+            ("targets" Data..=) Prelude.<$> targets,+            Prelude.Just ("actionId" Data..= actionId)+          ]+      )
+ gen/Amazonka/FIS/Types/CreateExperimentTemplateLogConfigurationInput.hs view
@@ -0,0 +1,119 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.CreateExperimentTemplateLogConfigurationInput+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.CreateExperimentTemplateLogConfigurationInput where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ExperimentTemplateCloudWatchLogsLogConfigurationInput+import Amazonka.FIS.Types.ExperimentTemplateS3LogConfigurationInput+import qualified Amazonka.Prelude as Prelude++-- | Specifies the configuration for experiment logging.+--+-- /See:/ 'newCreateExperimentTemplateLogConfigurationInput' smart constructor.+data CreateExperimentTemplateLogConfigurationInput = CreateExperimentTemplateLogConfigurationInput'+  { -- | The configuration for experiment logging to Amazon CloudWatch Logs.+    cloudWatchLogsConfiguration :: Prelude.Maybe ExperimentTemplateCloudWatchLogsLogConfigurationInput,+    -- | The configuration for experiment logging to Amazon S3.+    s3Configuration :: Prelude.Maybe ExperimentTemplateS3LogConfigurationInput,+    -- | The schema version.+    logSchemaVersion :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateExperimentTemplateLogConfigurationInput' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cloudWatchLogsConfiguration', 'createExperimentTemplateLogConfigurationInput_cloudWatchLogsConfiguration' - The configuration for experiment logging to Amazon CloudWatch Logs.+--+-- 's3Configuration', 'createExperimentTemplateLogConfigurationInput_s3Configuration' - The configuration for experiment logging to Amazon S3.+--+-- 'logSchemaVersion', 'createExperimentTemplateLogConfigurationInput_logSchemaVersion' - The schema version.+newCreateExperimentTemplateLogConfigurationInput ::+  -- | 'logSchemaVersion'+  Prelude.Int ->+  CreateExperimentTemplateLogConfigurationInput+newCreateExperimentTemplateLogConfigurationInput+  pLogSchemaVersion_ =+    CreateExperimentTemplateLogConfigurationInput'+      { cloudWatchLogsConfiguration =+          Prelude.Nothing,+        s3Configuration =+          Prelude.Nothing,+        logSchemaVersion =+          pLogSchemaVersion_+      }++-- | The configuration for experiment logging to Amazon CloudWatch Logs.+createExperimentTemplateLogConfigurationInput_cloudWatchLogsConfiguration :: Lens.Lens' CreateExperimentTemplateLogConfigurationInput (Prelude.Maybe ExperimentTemplateCloudWatchLogsLogConfigurationInput)+createExperimentTemplateLogConfigurationInput_cloudWatchLogsConfiguration = Lens.lens (\CreateExperimentTemplateLogConfigurationInput' {cloudWatchLogsConfiguration} -> cloudWatchLogsConfiguration) (\s@CreateExperimentTemplateLogConfigurationInput' {} a -> s {cloudWatchLogsConfiguration = a} :: CreateExperimentTemplateLogConfigurationInput)++-- | The configuration for experiment logging to Amazon S3.+createExperimentTemplateLogConfigurationInput_s3Configuration :: Lens.Lens' CreateExperimentTemplateLogConfigurationInput (Prelude.Maybe ExperimentTemplateS3LogConfigurationInput)+createExperimentTemplateLogConfigurationInput_s3Configuration = Lens.lens (\CreateExperimentTemplateLogConfigurationInput' {s3Configuration} -> s3Configuration) (\s@CreateExperimentTemplateLogConfigurationInput' {} a -> s {s3Configuration = a} :: CreateExperimentTemplateLogConfigurationInput)++-- | The schema version.+createExperimentTemplateLogConfigurationInput_logSchemaVersion :: Lens.Lens' CreateExperimentTemplateLogConfigurationInput Prelude.Int+createExperimentTemplateLogConfigurationInput_logSchemaVersion = Lens.lens (\CreateExperimentTemplateLogConfigurationInput' {logSchemaVersion} -> logSchemaVersion) (\s@CreateExperimentTemplateLogConfigurationInput' {} a -> s {logSchemaVersion = a} :: CreateExperimentTemplateLogConfigurationInput)++instance+  Prelude.Hashable+    CreateExperimentTemplateLogConfigurationInput+  where+  hashWithSalt+    _salt+    CreateExperimentTemplateLogConfigurationInput' {..} =+      _salt+        `Prelude.hashWithSalt` cloudWatchLogsConfiguration+        `Prelude.hashWithSalt` s3Configuration+        `Prelude.hashWithSalt` logSchemaVersion++instance+  Prelude.NFData+    CreateExperimentTemplateLogConfigurationInput+  where+  rnf+    CreateExperimentTemplateLogConfigurationInput' {..} =+      Prelude.rnf cloudWatchLogsConfiguration+        `Prelude.seq` Prelude.rnf s3Configuration+        `Prelude.seq` Prelude.rnf logSchemaVersion++instance+  Data.ToJSON+    CreateExperimentTemplateLogConfigurationInput+  where+  toJSON+    CreateExperimentTemplateLogConfigurationInput' {..} =+      Data.object+        ( Prelude.catMaybes+            [ ("cloudWatchLogsConfiguration" Data..=)+                Prelude.<$> cloudWatchLogsConfiguration,+              ("s3Configuration" Data..=)+                Prelude.<$> s3Configuration,+              Prelude.Just+                ("logSchemaVersion" Data..= logSchemaVersion)+            ]+        )
+ gen/Amazonka/FIS/Types/CreateExperimentTemplateStopConditionInput.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.FIS.Types.CreateExperimentTemplateStopConditionInput+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.CreateExperimentTemplateStopConditionInput where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies a stop condition for an experiment template.+--+-- /See:/ 'newCreateExperimentTemplateStopConditionInput' smart constructor.+data CreateExperimentTemplateStopConditionInput = CreateExperimentTemplateStopConditionInput'+  { -- | The Amazon Resource Name (ARN) of the CloudWatch alarm. This is required+    -- if the source is a CloudWatch alarm.+    value :: Prelude.Maybe Prelude.Text,+    -- | The source for the stop condition. Specify @aws:cloudwatch:alarm@ if the+    -- stop condition is defined by a CloudWatch alarm. Specify @none@ if there+    -- is no stop condition.+    source :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateExperimentTemplateStopConditionInput' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'value', 'createExperimentTemplateStopConditionInput_value' - The Amazon Resource Name (ARN) of the CloudWatch alarm. This is required+-- if the source is a CloudWatch alarm.+--+-- 'source', 'createExperimentTemplateStopConditionInput_source' - The source for the stop condition. Specify @aws:cloudwatch:alarm@ if the+-- stop condition is defined by a CloudWatch alarm. Specify @none@ if there+-- is no stop condition.+newCreateExperimentTemplateStopConditionInput ::+  -- | 'source'+  Prelude.Text ->+  CreateExperimentTemplateStopConditionInput+newCreateExperimentTemplateStopConditionInput+  pSource_ =+    CreateExperimentTemplateStopConditionInput'+      { value =+          Prelude.Nothing,+        source = pSource_+      }++-- | The Amazon Resource Name (ARN) of the CloudWatch alarm. This is required+-- if the source is a CloudWatch alarm.+createExperimentTemplateStopConditionInput_value :: Lens.Lens' CreateExperimentTemplateStopConditionInput (Prelude.Maybe Prelude.Text)+createExperimentTemplateStopConditionInput_value = Lens.lens (\CreateExperimentTemplateStopConditionInput' {value} -> value) (\s@CreateExperimentTemplateStopConditionInput' {} a -> s {value = a} :: CreateExperimentTemplateStopConditionInput)++-- | The source for the stop condition. Specify @aws:cloudwatch:alarm@ if the+-- stop condition is defined by a CloudWatch alarm. Specify @none@ if there+-- is no stop condition.+createExperimentTemplateStopConditionInput_source :: Lens.Lens' CreateExperimentTemplateStopConditionInput Prelude.Text+createExperimentTemplateStopConditionInput_source = Lens.lens (\CreateExperimentTemplateStopConditionInput' {source} -> source) (\s@CreateExperimentTemplateStopConditionInput' {} a -> s {source = a} :: CreateExperimentTemplateStopConditionInput)++instance+  Prelude.Hashable+    CreateExperimentTemplateStopConditionInput+  where+  hashWithSalt+    _salt+    CreateExperimentTemplateStopConditionInput' {..} =+      _salt+        `Prelude.hashWithSalt` value+        `Prelude.hashWithSalt` source++instance+  Prelude.NFData+    CreateExperimentTemplateStopConditionInput+  where+  rnf CreateExperimentTemplateStopConditionInput' {..} =+    Prelude.rnf value `Prelude.seq` Prelude.rnf source++instance+  Data.ToJSON+    CreateExperimentTemplateStopConditionInput+  where+  toJSON+    CreateExperimentTemplateStopConditionInput' {..} =+      Data.object+        ( Prelude.catMaybes+            [ ("value" Data..=) Prelude.<$> value,+              Prelude.Just ("source" Data..= source)+            ]+        )
+ gen/Amazonka/FIS/Types/CreateExperimentTemplateTargetInput.hs view
@@ -0,0 +1,199 @@+{-# 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.FIS.Types.CreateExperimentTemplateTargetInput+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.CreateExperimentTemplateTargetInput where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ExperimentTemplateTargetInputFilter+import qualified Amazonka.Prelude as Prelude++-- | Specifies a target for an experiment. You must specify at least one+-- Amazon Resource Name (ARN) or at least one resource tag. You cannot+-- specify both ARNs and tags.+--+-- For more information, see+-- <https://docs.aws.amazon.com/fis/latest/userguide/targets.html Targets>+-- in the /Fault Injection Simulator User Guide/.+--+-- /See:/ 'newCreateExperimentTemplateTargetInput' smart constructor.+data CreateExperimentTemplateTargetInput = CreateExperimentTemplateTargetInput'+  { -- | The filters to apply to identify target resources using specific+    -- attributes.+    filters :: Prelude.Maybe [ExperimentTemplateTargetInputFilter],+    -- | The resource type parameters.+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The Amazon Resource Names (ARNs) of the resources.+    resourceArns :: Prelude.Maybe [Prelude.Text],+    -- | The tags for the target resources.+    resourceTags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The resource type. The resource type must be supported for the specified+    -- action.+    resourceType :: Prelude.Text,+    -- | Scopes the identified resources to a specific count of the resources at+    -- random, or a percentage of the resources. All identified resources are+    -- included in the target.+    --+    -- -   ALL - Run the action on all identified targets. This is the default.+    --+    -- -   COUNT(n) - Run the action on the specified number of targets, chosen+    --     from the identified targets at random. For example, COUNT(1) selects+    --     one of the targets.+    --+    -- -   PERCENT(n) - Run the action on the specified percentage of targets,+    --     chosen from the identified targets at random. For example,+    --     PERCENT(25) selects 25% of the targets.+    selectionMode :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateExperimentTemplateTargetInput' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filters', 'createExperimentTemplateTargetInput_filters' - The filters to apply to identify target resources using specific+-- attributes.+--+-- 'parameters', 'createExperimentTemplateTargetInput_parameters' - The resource type parameters.+--+-- 'resourceArns', 'createExperimentTemplateTargetInput_resourceArns' - The Amazon Resource Names (ARNs) of the resources.+--+-- 'resourceTags', 'createExperimentTemplateTargetInput_resourceTags' - The tags for the target resources.+--+-- 'resourceType', 'createExperimentTemplateTargetInput_resourceType' - The resource type. The resource type must be supported for the specified+-- action.+--+-- 'selectionMode', 'createExperimentTemplateTargetInput_selectionMode' - Scopes the identified resources to a specific count of the resources at+-- random, or a percentage of the resources. All identified resources are+-- included in the target.+--+-- -   ALL - Run the action on all identified targets. This is the default.+--+-- -   COUNT(n) - Run the action on the specified number of targets, chosen+--     from the identified targets at random. For example, COUNT(1) selects+--     one of the targets.+--+-- -   PERCENT(n) - Run the action on the specified percentage of targets,+--     chosen from the identified targets at random. For example,+--     PERCENT(25) selects 25% of the targets.+newCreateExperimentTemplateTargetInput ::+  -- | 'resourceType'+  Prelude.Text ->+  -- | 'selectionMode'+  Prelude.Text ->+  CreateExperimentTemplateTargetInput+newCreateExperimentTemplateTargetInput+  pResourceType_+  pSelectionMode_ =+    CreateExperimentTemplateTargetInput'+      { filters =+          Prelude.Nothing,+        parameters = Prelude.Nothing,+        resourceArns = Prelude.Nothing,+        resourceTags = Prelude.Nothing,+        resourceType = pResourceType_,+        selectionMode = pSelectionMode_+      }++-- | The filters to apply to identify target resources using specific+-- attributes.+createExperimentTemplateTargetInput_filters :: Lens.Lens' CreateExperimentTemplateTargetInput (Prelude.Maybe [ExperimentTemplateTargetInputFilter])+createExperimentTemplateTargetInput_filters = Lens.lens (\CreateExperimentTemplateTargetInput' {filters} -> filters) (\s@CreateExperimentTemplateTargetInput' {} a -> s {filters = a} :: CreateExperimentTemplateTargetInput) Prelude.. Lens.mapping Lens.coerced++-- | The resource type parameters.+createExperimentTemplateTargetInput_parameters :: Lens.Lens' CreateExperimentTemplateTargetInput (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createExperimentTemplateTargetInput_parameters = Lens.lens (\CreateExperimentTemplateTargetInput' {parameters} -> parameters) (\s@CreateExperimentTemplateTargetInput' {} a -> s {parameters = a} :: CreateExperimentTemplateTargetInput) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Names (ARNs) of the resources.+createExperimentTemplateTargetInput_resourceArns :: Lens.Lens' CreateExperimentTemplateTargetInput (Prelude.Maybe [Prelude.Text])+createExperimentTemplateTargetInput_resourceArns = Lens.lens (\CreateExperimentTemplateTargetInput' {resourceArns} -> resourceArns) (\s@CreateExperimentTemplateTargetInput' {} a -> s {resourceArns = a} :: CreateExperimentTemplateTargetInput) Prelude.. Lens.mapping Lens.coerced++-- | The tags for the target resources.+createExperimentTemplateTargetInput_resourceTags :: Lens.Lens' CreateExperimentTemplateTargetInput (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createExperimentTemplateTargetInput_resourceTags = Lens.lens (\CreateExperimentTemplateTargetInput' {resourceTags} -> resourceTags) (\s@CreateExperimentTemplateTargetInput' {} a -> s {resourceTags = a} :: CreateExperimentTemplateTargetInput) Prelude.. Lens.mapping Lens.coerced++-- | The resource type. The resource type must be supported for the specified+-- action.+createExperimentTemplateTargetInput_resourceType :: Lens.Lens' CreateExperimentTemplateTargetInput Prelude.Text+createExperimentTemplateTargetInput_resourceType = Lens.lens (\CreateExperimentTemplateTargetInput' {resourceType} -> resourceType) (\s@CreateExperimentTemplateTargetInput' {} a -> s {resourceType = a} :: CreateExperimentTemplateTargetInput)++-- | Scopes the identified resources to a specific count of the resources at+-- random, or a percentage of the resources. All identified resources are+-- included in the target.+--+-- -   ALL - Run the action on all identified targets. This is the default.+--+-- -   COUNT(n) - Run the action on the specified number of targets, chosen+--     from the identified targets at random. For example, COUNT(1) selects+--     one of the targets.+--+-- -   PERCENT(n) - Run the action on the specified percentage of targets,+--     chosen from the identified targets at random. For example,+--     PERCENT(25) selects 25% of the targets.+createExperimentTemplateTargetInput_selectionMode :: Lens.Lens' CreateExperimentTemplateTargetInput Prelude.Text+createExperimentTemplateTargetInput_selectionMode = Lens.lens (\CreateExperimentTemplateTargetInput' {selectionMode} -> selectionMode) (\s@CreateExperimentTemplateTargetInput' {} a -> s {selectionMode = a} :: CreateExperimentTemplateTargetInput)++instance+  Prelude.Hashable+    CreateExperimentTemplateTargetInput+  where+  hashWithSalt+    _salt+    CreateExperimentTemplateTargetInput' {..} =+      _salt+        `Prelude.hashWithSalt` filters+        `Prelude.hashWithSalt` parameters+        `Prelude.hashWithSalt` resourceArns+        `Prelude.hashWithSalt` resourceTags+        `Prelude.hashWithSalt` resourceType+        `Prelude.hashWithSalt` selectionMode++instance+  Prelude.NFData+    CreateExperimentTemplateTargetInput+  where+  rnf CreateExperimentTemplateTargetInput' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf parameters+      `Prelude.seq` Prelude.rnf resourceArns+      `Prelude.seq` Prelude.rnf resourceTags+      `Prelude.seq` Prelude.rnf resourceType+      `Prelude.seq` Prelude.rnf selectionMode++instance+  Data.ToJSON+    CreateExperimentTemplateTargetInput+  where+  toJSON CreateExperimentTemplateTargetInput' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filters" Data..=) Prelude.<$> filters,+            ("parameters" Data..=) Prelude.<$> parameters,+            ("resourceArns" Data..=) Prelude.<$> resourceArns,+            ("resourceTags" Data..=) Prelude.<$> resourceTags,+            Prelude.Just ("resourceType" Data..= resourceType),+            Prelude.Just+              ("selectionMode" Data..= selectionMode)+          ]+      )
+ gen/Amazonka/FIS/Types/Experiment.hs view
@@ -0,0 +1,212 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.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.FIS.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.FIS.Types.ExperimentAction+import Amazonka.FIS.Types.ExperimentLogConfiguration+import Amazonka.FIS.Types.ExperimentState+import Amazonka.FIS.Types.ExperimentStopCondition+import Amazonka.FIS.Types.ExperimentTarget+import qualified Amazonka.Prelude as Prelude++-- | Describes an experiment.+--+-- /See:/ 'newExperiment' smart constructor.+data Experiment = Experiment'+  { -- | The actions for the experiment.+    actions :: Prelude.Maybe (Prelude.HashMap Prelude.Text ExperimentAction),+    -- | The time that the experiment was created.+    creationTime :: Prelude.Maybe Data.POSIX,+    -- | The time that the experiment ended.+    endTime :: Prelude.Maybe Data.POSIX,+    -- | The ID of the experiment template.+    experimentTemplateId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the experiment.+    id :: Prelude.Maybe Prelude.Text,+    -- | The configuration for experiment logging.+    logConfiguration :: Prelude.Maybe ExperimentLogConfiguration,+    -- | The Amazon Resource Name (ARN) of an IAM role that grants the FIS+    -- service permission to perform service actions on your behalf.+    roleArn :: Prelude.Maybe Prelude.Text,+    -- | The time that the experiment started.+    startTime :: Prelude.Maybe Data.POSIX,+    -- | The state of the experiment.+    state :: Prelude.Maybe ExperimentState,+    -- | The stop conditions for the experiment.+    stopConditions :: Prelude.Maybe [ExperimentStopCondition],+    -- | The tags for the experiment.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The targets for the experiment.+    targets :: Prelude.Maybe (Prelude.HashMap Prelude.Text ExperimentTarget)+  }+  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:+--+-- 'actions', 'experiment_actions' - The actions for the experiment.+--+-- 'creationTime', 'experiment_creationTime' - The time that the experiment was created.+--+-- 'endTime', 'experiment_endTime' - The time that the experiment ended.+--+-- 'experimentTemplateId', 'experiment_experimentTemplateId' - The ID of the experiment template.+--+-- 'id', 'experiment_id' - The ID of the experiment.+--+-- 'logConfiguration', 'experiment_logConfiguration' - The configuration for experiment logging.+--+-- 'roleArn', 'experiment_roleArn' - The Amazon Resource Name (ARN) of an IAM role that grants the FIS+-- service permission to perform service actions on your behalf.+--+-- 'startTime', 'experiment_startTime' - The time that the experiment started.+--+-- 'state', 'experiment_state' - The state of the experiment.+--+-- 'stopConditions', 'experiment_stopConditions' - The stop conditions for the experiment.+--+-- 'tags', 'experiment_tags' - The tags for the experiment.+--+-- 'targets', 'experiment_targets' - The targets for the experiment.+newExperiment ::+  Experiment+newExperiment =+  Experiment'+    { actions = Prelude.Nothing,+      creationTime = Prelude.Nothing,+      endTime = Prelude.Nothing,+      experimentTemplateId = Prelude.Nothing,+      id = Prelude.Nothing,+      logConfiguration = Prelude.Nothing,+      roleArn = Prelude.Nothing,+      startTime = Prelude.Nothing,+      state = Prelude.Nothing,+      stopConditions = Prelude.Nothing,+      tags = Prelude.Nothing,+      targets = Prelude.Nothing+    }++-- | The actions for the experiment.+experiment_actions :: Lens.Lens' Experiment (Prelude.Maybe (Prelude.HashMap Prelude.Text ExperimentAction))+experiment_actions = Lens.lens (\Experiment' {actions} -> actions) (\s@Experiment' {} a -> s {actions = a} :: Experiment) Prelude.. Lens.mapping Lens.coerced++-- | The time that the experiment was created.+experiment_creationTime :: Lens.Lens' Experiment (Prelude.Maybe Prelude.UTCTime)+experiment_creationTime = Lens.lens (\Experiment' {creationTime} -> creationTime) (\s@Experiment' {} a -> s {creationTime = a} :: Experiment) Prelude.. Lens.mapping Data._Time++-- | The time that the experiment ended.+experiment_endTime :: Lens.Lens' Experiment (Prelude.Maybe Prelude.UTCTime)+experiment_endTime = Lens.lens (\Experiment' {endTime} -> endTime) (\s@Experiment' {} a -> s {endTime = a} :: Experiment) Prelude.. Lens.mapping Data._Time++-- | The ID of the experiment template.+experiment_experimentTemplateId :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)+experiment_experimentTemplateId = Lens.lens (\Experiment' {experimentTemplateId} -> experimentTemplateId) (\s@Experiment' {} a -> s {experimentTemplateId = a} :: Experiment)++-- | The ID of the experiment.+experiment_id :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)+experiment_id = Lens.lens (\Experiment' {id} -> id) (\s@Experiment' {} a -> s {id = a} :: Experiment)++-- | The configuration for experiment logging.+experiment_logConfiguration :: Lens.Lens' Experiment (Prelude.Maybe ExperimentLogConfiguration)+experiment_logConfiguration = Lens.lens (\Experiment' {logConfiguration} -> logConfiguration) (\s@Experiment' {} a -> s {logConfiguration = a} :: Experiment)++-- | The Amazon Resource Name (ARN) of an IAM role that grants the FIS+-- service permission to perform service actions on your behalf.+experiment_roleArn :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)+experiment_roleArn = Lens.lens (\Experiment' {roleArn} -> roleArn) (\s@Experiment' {} a -> s {roleArn = a} :: Experiment)++-- | The time that the experiment started.+experiment_startTime :: Lens.Lens' Experiment (Prelude.Maybe Prelude.UTCTime)+experiment_startTime = Lens.lens (\Experiment' {startTime} -> startTime) (\s@Experiment' {} a -> s {startTime = a} :: Experiment) Prelude.. Lens.mapping Data._Time++-- | The state of the experiment.+experiment_state :: Lens.Lens' Experiment (Prelude.Maybe ExperimentState)+experiment_state = Lens.lens (\Experiment' {state} -> state) (\s@Experiment' {} a -> s {state = a} :: Experiment)++-- | The stop conditions for the experiment.+experiment_stopConditions :: Lens.Lens' Experiment (Prelude.Maybe [ExperimentStopCondition])+experiment_stopConditions = Lens.lens (\Experiment' {stopConditions} -> stopConditions) (\s@Experiment' {} a -> s {stopConditions = a} :: Experiment) Prelude.. Lens.mapping Lens.coerced++-- | The tags for the 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++-- | The targets for the experiment.+experiment_targets :: Lens.Lens' Experiment (Prelude.Maybe (Prelude.HashMap Prelude.Text ExperimentTarget))+experiment_targets = Lens.lens (\Experiment' {targets} -> targets) (\s@Experiment' {} a -> s {targets = a} :: Experiment) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON Experiment where+  parseJSON =+    Data.withObject+      "Experiment"+      ( \x ->+          Experiment'+            Prelude.<$> (x Data..:? "actions" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "creationTime")+            Prelude.<*> (x Data..:? "endTime")+            Prelude.<*> (x Data..:? "experimentTemplateId")+            Prelude.<*> (x Data..:? "id")+            Prelude.<*> (x Data..:? "logConfiguration")+            Prelude.<*> (x Data..:? "roleArn")+            Prelude.<*> (x Data..:? "startTime")+            Prelude.<*> (x Data..:? "state")+            Prelude.<*> (x Data..:? "stopConditions" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "targets" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable Experiment where+  hashWithSalt _salt Experiment' {..} =+    _salt+      `Prelude.hashWithSalt` actions+      `Prelude.hashWithSalt` creationTime+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` experimentTemplateId+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` logConfiguration+      `Prelude.hashWithSalt` roleArn+      `Prelude.hashWithSalt` startTime+      `Prelude.hashWithSalt` state+      `Prelude.hashWithSalt` stopConditions+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` targets++instance Prelude.NFData Experiment where+  rnf Experiment' {..} =+    Prelude.rnf actions+      `Prelude.seq` Prelude.rnf creationTime+      `Prelude.seq` Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf experimentTemplateId+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf logConfiguration+      `Prelude.seq` Prelude.rnf roleArn+      `Prelude.seq` Prelude.rnf startTime+      `Prelude.seq` Prelude.rnf state+      `Prelude.seq` Prelude.rnf stopConditions+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf targets
+ gen/Amazonka/FIS/Types/ExperimentAction.hs view
@@ -0,0 +1,157 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.ExperimentAction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentAction where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ExperimentActionState+import qualified Amazonka.Prelude as Prelude++-- | Describes the action for an experiment.+--+-- /See:/ 'newExperimentAction' smart constructor.+data ExperimentAction = ExperimentAction'+  { -- | The ID of the action.+    actionId :: Prelude.Maybe Prelude.Text,+    -- | The description for the action.+    description :: Prelude.Maybe Prelude.Text,+    -- | The time that the action ended.+    endTime :: Prelude.Maybe Data.POSIX,+    -- | The parameters for the action.+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name of the action that must be completed before this action starts.+    startAfter :: Prelude.Maybe [Prelude.Text],+    -- | The time that the action started.+    startTime :: Prelude.Maybe Data.POSIX,+    -- | The state of the action.+    state :: Prelude.Maybe ExperimentActionState,+    -- | The targets for the action.+    targets :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentAction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'actionId', 'experimentAction_actionId' - The ID of the action.+--+-- 'description', 'experimentAction_description' - The description for the action.+--+-- 'endTime', 'experimentAction_endTime' - The time that the action ended.+--+-- 'parameters', 'experimentAction_parameters' - The parameters for the action.+--+-- 'startAfter', 'experimentAction_startAfter' - The name of the action that must be completed before this action starts.+--+-- 'startTime', 'experimentAction_startTime' - The time that the action started.+--+-- 'state', 'experimentAction_state' - The state of the action.+--+-- 'targets', 'experimentAction_targets' - The targets for the action.+newExperimentAction ::+  ExperimentAction+newExperimentAction =+  ExperimentAction'+    { actionId = Prelude.Nothing,+      description = Prelude.Nothing,+      endTime = Prelude.Nothing,+      parameters = Prelude.Nothing,+      startAfter = Prelude.Nothing,+      startTime = Prelude.Nothing,+      state = Prelude.Nothing,+      targets = Prelude.Nothing+    }++-- | The ID of the action.+experimentAction_actionId :: Lens.Lens' ExperimentAction (Prelude.Maybe Prelude.Text)+experimentAction_actionId = Lens.lens (\ExperimentAction' {actionId} -> actionId) (\s@ExperimentAction' {} a -> s {actionId = a} :: ExperimentAction)++-- | The description for the action.+experimentAction_description :: Lens.Lens' ExperimentAction (Prelude.Maybe Prelude.Text)+experimentAction_description = Lens.lens (\ExperimentAction' {description} -> description) (\s@ExperimentAction' {} a -> s {description = a} :: ExperimentAction)++-- | The time that the action ended.+experimentAction_endTime :: Lens.Lens' ExperimentAction (Prelude.Maybe Prelude.UTCTime)+experimentAction_endTime = Lens.lens (\ExperimentAction' {endTime} -> endTime) (\s@ExperimentAction' {} a -> s {endTime = a} :: ExperimentAction) Prelude.. Lens.mapping Data._Time++-- | The parameters for the action.+experimentAction_parameters :: Lens.Lens' ExperimentAction (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+experimentAction_parameters = Lens.lens (\ExperimentAction' {parameters} -> parameters) (\s@ExperimentAction' {} a -> s {parameters = a} :: ExperimentAction) Prelude.. Lens.mapping Lens.coerced++-- | The name of the action that must be completed before this action starts.+experimentAction_startAfter :: Lens.Lens' ExperimentAction (Prelude.Maybe [Prelude.Text])+experimentAction_startAfter = Lens.lens (\ExperimentAction' {startAfter} -> startAfter) (\s@ExperimentAction' {} a -> s {startAfter = a} :: ExperimentAction) Prelude.. Lens.mapping Lens.coerced++-- | The time that the action started.+experimentAction_startTime :: Lens.Lens' ExperimentAction (Prelude.Maybe Prelude.UTCTime)+experimentAction_startTime = Lens.lens (\ExperimentAction' {startTime} -> startTime) (\s@ExperimentAction' {} a -> s {startTime = a} :: ExperimentAction) Prelude.. Lens.mapping Data._Time++-- | The state of the action.+experimentAction_state :: Lens.Lens' ExperimentAction (Prelude.Maybe ExperimentActionState)+experimentAction_state = Lens.lens (\ExperimentAction' {state} -> state) (\s@ExperimentAction' {} a -> s {state = a} :: ExperimentAction)++-- | The targets for the action.+experimentAction_targets :: Lens.Lens' ExperimentAction (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+experimentAction_targets = Lens.lens (\ExperimentAction' {targets} -> targets) (\s@ExperimentAction' {} a -> s {targets = a} :: ExperimentAction) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ExperimentAction where+  parseJSON =+    Data.withObject+      "ExperimentAction"+      ( \x ->+          ExperimentAction'+            Prelude.<$> (x Data..:? "actionId")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "endTime")+            Prelude.<*> (x Data..:? "parameters" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "startAfter" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "startTime")+            Prelude.<*> (x Data..:? "state")+            Prelude.<*> (x Data..:? "targets" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ExperimentAction where+  hashWithSalt _salt ExperimentAction' {..} =+    _salt+      `Prelude.hashWithSalt` actionId+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` parameters+      `Prelude.hashWithSalt` startAfter+      `Prelude.hashWithSalt` startTime+      `Prelude.hashWithSalt` state+      `Prelude.hashWithSalt` targets++instance Prelude.NFData ExperimentAction where+  rnf ExperimentAction' {..} =+    Prelude.rnf actionId+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf parameters+      `Prelude.seq` Prelude.rnf startAfter+      `Prelude.seq` Prelude.rnf startTime+      `Prelude.seq` Prelude.rnf state+      `Prelude.seq` Prelude.rnf targets
+ gen/Amazonka/FIS/Types/ExperimentActionState.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.FIS.Types.ExperimentActionState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentActionState where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ExperimentActionStatus+import qualified Amazonka.Prelude as Prelude++-- | Describes the state of an action.+--+-- /See:/ 'newExperimentActionState' smart constructor.+data ExperimentActionState = ExperimentActionState'+  { -- | The reason for the state.+    reason :: Prelude.Maybe Prelude.Text,+    -- | The state of the action.+    status :: Prelude.Maybe ExperimentActionStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentActionState' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'reason', 'experimentActionState_reason' - The reason for the state.+--+-- 'status', 'experimentActionState_status' - The state of the action.+newExperimentActionState ::+  ExperimentActionState+newExperimentActionState =+  ExperimentActionState'+    { reason = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The reason for the state.+experimentActionState_reason :: Lens.Lens' ExperimentActionState (Prelude.Maybe Prelude.Text)+experimentActionState_reason = Lens.lens (\ExperimentActionState' {reason} -> reason) (\s@ExperimentActionState' {} a -> s {reason = a} :: ExperimentActionState)++-- | The state of the action.+experimentActionState_status :: Lens.Lens' ExperimentActionState (Prelude.Maybe ExperimentActionStatus)+experimentActionState_status = Lens.lens (\ExperimentActionState' {status} -> status) (\s@ExperimentActionState' {} a -> s {status = a} :: ExperimentActionState)++instance Data.FromJSON ExperimentActionState where+  parseJSON =+    Data.withObject+      "ExperimentActionState"+      ( \x ->+          ExperimentActionState'+            Prelude.<$> (x Data..:? "reason")+            Prelude.<*> (x Data..:? "status")+      )++instance Prelude.Hashable ExperimentActionState where+  hashWithSalt _salt ExperimentActionState' {..} =+    _salt+      `Prelude.hashWithSalt` reason+      `Prelude.hashWithSalt` status++instance Prelude.NFData ExperimentActionState where+  rnf ExperimentActionState' {..} =+    Prelude.rnf reason `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/FIS/Types/ExperimentActionStatus.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.ExperimentActionStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentActionStatus+  ( ExperimentActionStatus+      ( ..,+        ExperimentActionStatus_Cancelled,+        ExperimentActionStatus_Completed,+        ExperimentActionStatus_Failed,+        ExperimentActionStatus_Initiating,+        ExperimentActionStatus_Pending,+        ExperimentActionStatus_Running,+        ExperimentActionStatus_Stopped,+        ExperimentActionStatus_Stopping+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ExperimentActionStatus = ExperimentActionStatus'+  { fromExperimentActionStatus ::+      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 ExperimentActionStatus_Cancelled :: ExperimentActionStatus+pattern ExperimentActionStatus_Cancelled = ExperimentActionStatus' "cancelled"++pattern ExperimentActionStatus_Completed :: ExperimentActionStatus+pattern ExperimentActionStatus_Completed = ExperimentActionStatus' "completed"++pattern ExperimentActionStatus_Failed :: ExperimentActionStatus+pattern ExperimentActionStatus_Failed = ExperimentActionStatus' "failed"++pattern ExperimentActionStatus_Initiating :: ExperimentActionStatus+pattern ExperimentActionStatus_Initiating = ExperimentActionStatus' "initiating"++pattern ExperimentActionStatus_Pending :: ExperimentActionStatus+pattern ExperimentActionStatus_Pending = ExperimentActionStatus' "pending"++pattern ExperimentActionStatus_Running :: ExperimentActionStatus+pattern ExperimentActionStatus_Running = ExperimentActionStatus' "running"++pattern ExperimentActionStatus_Stopped :: ExperimentActionStatus+pattern ExperimentActionStatus_Stopped = ExperimentActionStatus' "stopped"++pattern ExperimentActionStatus_Stopping :: ExperimentActionStatus+pattern ExperimentActionStatus_Stopping = ExperimentActionStatus' "stopping"++{-# COMPLETE+  ExperimentActionStatus_Cancelled,+  ExperimentActionStatus_Completed,+  ExperimentActionStatus_Failed,+  ExperimentActionStatus_Initiating,+  ExperimentActionStatus_Pending,+  ExperimentActionStatus_Running,+  ExperimentActionStatus_Stopped,+  ExperimentActionStatus_Stopping,+  ExperimentActionStatus'+  #-}
+ gen/Amazonka/FIS/Types/ExperimentCloudWatchLogsLogConfiguration.hs view
@@ -0,0 +1,87 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.ExperimentCloudWatchLogsLogConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentCloudWatchLogsLogConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes the configuration for experiment logging to Amazon CloudWatch+-- Logs.+--+-- /See:/ 'newExperimentCloudWatchLogsLogConfiguration' smart constructor.+data ExperimentCloudWatchLogsLogConfiguration = ExperimentCloudWatchLogsLogConfiguration'+  { -- | The Amazon Resource Name (ARN) of the destination Amazon CloudWatch Logs+    -- log group.+    logGroupArn :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentCloudWatchLogsLogConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'logGroupArn', 'experimentCloudWatchLogsLogConfiguration_logGroupArn' - The Amazon Resource Name (ARN) of the destination Amazon CloudWatch Logs+-- log group.+newExperimentCloudWatchLogsLogConfiguration ::+  ExperimentCloudWatchLogsLogConfiguration+newExperimentCloudWatchLogsLogConfiguration =+  ExperimentCloudWatchLogsLogConfiguration'+    { logGroupArn =+        Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the destination Amazon CloudWatch Logs+-- log group.+experimentCloudWatchLogsLogConfiguration_logGroupArn :: Lens.Lens' ExperimentCloudWatchLogsLogConfiguration (Prelude.Maybe Prelude.Text)+experimentCloudWatchLogsLogConfiguration_logGroupArn = Lens.lens (\ExperimentCloudWatchLogsLogConfiguration' {logGroupArn} -> logGroupArn) (\s@ExperimentCloudWatchLogsLogConfiguration' {} a -> s {logGroupArn = a} :: ExperimentCloudWatchLogsLogConfiguration)++instance+  Data.FromJSON+    ExperimentCloudWatchLogsLogConfiguration+  where+  parseJSON =+    Data.withObject+      "ExperimentCloudWatchLogsLogConfiguration"+      ( \x ->+          ExperimentCloudWatchLogsLogConfiguration'+            Prelude.<$> (x Data..:? "logGroupArn")+      )++instance+  Prelude.Hashable+    ExperimentCloudWatchLogsLogConfiguration+  where+  hashWithSalt+    _salt+    ExperimentCloudWatchLogsLogConfiguration' {..} =+      _salt `Prelude.hashWithSalt` logGroupArn++instance+  Prelude.NFData+    ExperimentCloudWatchLogsLogConfiguration+  where+  rnf ExperimentCloudWatchLogsLogConfiguration' {..} =+    Prelude.rnf logGroupArn
+ gen/Amazonka/FIS/Types/ExperimentLogConfiguration.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.ExperimentLogConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentLogConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ExperimentCloudWatchLogsLogConfiguration+import Amazonka.FIS.Types.ExperimentS3LogConfiguration+import qualified Amazonka.Prelude as Prelude++-- | Describes the configuration for experiment logging.+--+-- /See:/ 'newExperimentLogConfiguration' smart constructor.+data ExperimentLogConfiguration = ExperimentLogConfiguration'+  { -- | The configuration for experiment logging to Amazon CloudWatch Logs.+    cloudWatchLogsConfiguration :: Prelude.Maybe ExperimentCloudWatchLogsLogConfiguration,+    -- | The schema version.+    logSchemaVersion :: Prelude.Maybe Prelude.Int,+    -- | The configuration for experiment logging to Amazon S3.+    s3Configuration :: Prelude.Maybe ExperimentS3LogConfiguration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentLogConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cloudWatchLogsConfiguration', 'experimentLogConfiguration_cloudWatchLogsConfiguration' - The configuration for experiment logging to Amazon CloudWatch Logs.+--+-- 'logSchemaVersion', 'experimentLogConfiguration_logSchemaVersion' - The schema version.+--+-- 's3Configuration', 'experimentLogConfiguration_s3Configuration' - The configuration for experiment logging to Amazon S3.+newExperimentLogConfiguration ::+  ExperimentLogConfiguration+newExperimentLogConfiguration =+  ExperimentLogConfiguration'+    { cloudWatchLogsConfiguration =+        Prelude.Nothing,+      logSchemaVersion = Prelude.Nothing,+      s3Configuration = Prelude.Nothing+    }++-- | The configuration for experiment logging to Amazon CloudWatch Logs.+experimentLogConfiguration_cloudWatchLogsConfiguration :: Lens.Lens' ExperimentLogConfiguration (Prelude.Maybe ExperimentCloudWatchLogsLogConfiguration)+experimentLogConfiguration_cloudWatchLogsConfiguration = Lens.lens (\ExperimentLogConfiguration' {cloudWatchLogsConfiguration} -> cloudWatchLogsConfiguration) (\s@ExperimentLogConfiguration' {} a -> s {cloudWatchLogsConfiguration = a} :: ExperimentLogConfiguration)++-- | The schema version.+experimentLogConfiguration_logSchemaVersion :: Lens.Lens' ExperimentLogConfiguration (Prelude.Maybe Prelude.Int)+experimentLogConfiguration_logSchemaVersion = Lens.lens (\ExperimentLogConfiguration' {logSchemaVersion} -> logSchemaVersion) (\s@ExperimentLogConfiguration' {} a -> s {logSchemaVersion = a} :: ExperimentLogConfiguration)++-- | The configuration for experiment logging to Amazon S3.+experimentLogConfiguration_s3Configuration :: Lens.Lens' ExperimentLogConfiguration (Prelude.Maybe ExperimentS3LogConfiguration)+experimentLogConfiguration_s3Configuration = Lens.lens (\ExperimentLogConfiguration' {s3Configuration} -> s3Configuration) (\s@ExperimentLogConfiguration' {} a -> s {s3Configuration = a} :: ExperimentLogConfiguration)++instance Data.FromJSON ExperimentLogConfiguration where+  parseJSON =+    Data.withObject+      "ExperimentLogConfiguration"+      ( \x ->+          ExperimentLogConfiguration'+            Prelude.<$> (x Data..:? "cloudWatchLogsConfiguration")+            Prelude.<*> (x Data..:? "logSchemaVersion")+            Prelude.<*> (x Data..:? "s3Configuration")+      )++instance Prelude.Hashable ExperimentLogConfiguration where+  hashWithSalt _salt ExperimentLogConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` cloudWatchLogsConfiguration+      `Prelude.hashWithSalt` logSchemaVersion+      `Prelude.hashWithSalt` s3Configuration++instance Prelude.NFData ExperimentLogConfiguration where+  rnf ExperimentLogConfiguration' {..} =+    Prelude.rnf cloudWatchLogsConfiguration+      `Prelude.seq` Prelude.rnf logSchemaVersion+      `Prelude.seq` Prelude.rnf s3Configuration
+ gen/Amazonka/FIS/Types/ExperimentS3LogConfiguration.hs view
@@ -0,0 +1,88 @@+{-# 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.FIS.Types.ExperimentS3LogConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentS3LogConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes the configuration for experiment logging to Amazon S3.+--+-- /See:/ 'newExperimentS3LogConfiguration' smart constructor.+data ExperimentS3LogConfiguration = ExperimentS3LogConfiguration'+  { -- | The name of the destination bucket.+    bucketName :: Prelude.Maybe Prelude.Text,+    -- | The bucket prefix.+    prefix :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentS3LogConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'bucketName', 'experimentS3LogConfiguration_bucketName' - The name of the destination bucket.+--+-- 'prefix', 'experimentS3LogConfiguration_prefix' - The bucket prefix.+newExperimentS3LogConfiguration ::+  ExperimentS3LogConfiguration+newExperimentS3LogConfiguration =+  ExperimentS3LogConfiguration'+    { bucketName =+        Prelude.Nothing,+      prefix = Prelude.Nothing+    }++-- | The name of the destination bucket.+experimentS3LogConfiguration_bucketName :: Lens.Lens' ExperimentS3LogConfiguration (Prelude.Maybe Prelude.Text)+experimentS3LogConfiguration_bucketName = Lens.lens (\ExperimentS3LogConfiguration' {bucketName} -> bucketName) (\s@ExperimentS3LogConfiguration' {} a -> s {bucketName = a} :: ExperimentS3LogConfiguration)++-- | The bucket prefix.+experimentS3LogConfiguration_prefix :: Lens.Lens' ExperimentS3LogConfiguration (Prelude.Maybe Prelude.Text)+experimentS3LogConfiguration_prefix = Lens.lens (\ExperimentS3LogConfiguration' {prefix} -> prefix) (\s@ExperimentS3LogConfiguration' {} a -> s {prefix = a} :: ExperimentS3LogConfiguration)++instance Data.FromJSON ExperimentS3LogConfiguration where+  parseJSON =+    Data.withObject+      "ExperimentS3LogConfiguration"+      ( \x ->+          ExperimentS3LogConfiguration'+            Prelude.<$> (x Data..:? "bucketName")+            Prelude.<*> (x Data..:? "prefix")+      )++instance+  Prelude.Hashable+    ExperimentS3LogConfiguration+  where+  hashWithSalt _salt ExperimentS3LogConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` bucketName+      `Prelude.hashWithSalt` prefix++instance Prelude.NFData ExperimentS3LogConfiguration where+  rnf ExperimentS3LogConfiguration' {..} =+    Prelude.rnf bucketName+      `Prelude.seq` Prelude.rnf prefix
+ gen/Amazonka/FIS/Types/ExperimentState.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.FIS.Types.ExperimentState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentState where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ExperimentStatus+import qualified Amazonka.Prelude as Prelude++-- | Describes the state of an experiment.+--+-- /See:/ 'newExperimentState' smart constructor.+data ExperimentState = ExperimentState'+  { -- | The reason for the state.+    reason :: Prelude.Maybe Prelude.Text,+    -- | The state of the experiment.+    status :: Prelude.Maybe ExperimentStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentState' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'reason', 'experimentState_reason' - The reason for the state.+--+-- 'status', 'experimentState_status' - The state of the experiment.+newExperimentState ::+  ExperimentState+newExperimentState =+  ExperimentState'+    { reason = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The reason for the state.+experimentState_reason :: Lens.Lens' ExperimentState (Prelude.Maybe Prelude.Text)+experimentState_reason = Lens.lens (\ExperimentState' {reason} -> reason) (\s@ExperimentState' {} a -> s {reason = a} :: ExperimentState)++-- | The state of the experiment.+experimentState_status :: Lens.Lens' ExperimentState (Prelude.Maybe ExperimentStatus)+experimentState_status = Lens.lens (\ExperimentState' {status} -> status) (\s@ExperimentState' {} a -> s {status = a} :: ExperimentState)++instance Data.FromJSON ExperimentState where+  parseJSON =+    Data.withObject+      "ExperimentState"+      ( \x ->+          ExperimentState'+            Prelude.<$> (x Data..:? "reason")+            Prelude.<*> (x Data..:? "status")+      )++instance Prelude.Hashable ExperimentState where+  hashWithSalt _salt ExperimentState' {..} =+    _salt+      `Prelude.hashWithSalt` reason+      `Prelude.hashWithSalt` status++instance Prelude.NFData ExperimentState where+  rnf ExperimentState' {..} =+    Prelude.rnf reason `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/FIS/Types/ExperimentStatus.hs view
@@ -0,0 +1,96 @@+{-# 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.FIS.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.FIS.Types.ExperimentStatus+  ( ExperimentStatus+      ( ..,+        ExperimentStatus_Completed,+        ExperimentStatus_Failed,+        ExperimentStatus_Initiating,+        ExperimentStatus_Pending,+        ExperimentStatus_Running,+        ExperimentStatus_Stopped,+        ExperimentStatus_Stopping+      ),+  )+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_Completed :: ExperimentStatus+pattern ExperimentStatus_Completed = ExperimentStatus' "completed"++pattern ExperimentStatus_Failed :: ExperimentStatus+pattern ExperimentStatus_Failed = ExperimentStatus' "failed"++pattern ExperimentStatus_Initiating :: ExperimentStatus+pattern ExperimentStatus_Initiating = ExperimentStatus' "initiating"++pattern ExperimentStatus_Pending :: ExperimentStatus+pattern ExperimentStatus_Pending = ExperimentStatus' "pending"++pattern ExperimentStatus_Running :: ExperimentStatus+pattern ExperimentStatus_Running = ExperimentStatus' "running"++pattern ExperimentStatus_Stopped :: ExperimentStatus+pattern ExperimentStatus_Stopped = ExperimentStatus' "stopped"++pattern ExperimentStatus_Stopping :: ExperimentStatus+pattern ExperimentStatus_Stopping = ExperimentStatus' "stopping"++{-# COMPLETE+  ExperimentStatus_Completed,+  ExperimentStatus_Failed,+  ExperimentStatus_Initiating,+  ExperimentStatus_Pending,+  ExperimentStatus_Running,+  ExperimentStatus_Stopped,+  ExperimentStatus_Stopping,+  ExperimentStatus'+  #-}
+ gen/Amazonka/FIS/Types/ExperimentStopCondition.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.FIS.Types.ExperimentStopCondition+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentStopCondition where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes the stop condition for an experiment.+--+-- /See:/ 'newExperimentStopCondition' smart constructor.+data ExperimentStopCondition = ExperimentStopCondition'+  { -- | The source for the stop condition.+    source :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the CloudWatch alarm, if applicable.+    value :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentStopCondition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'source', 'experimentStopCondition_source' - The source for the stop condition.+--+-- 'value', 'experimentStopCondition_value' - The Amazon Resource Name (ARN) of the CloudWatch alarm, if applicable.+newExperimentStopCondition ::+  ExperimentStopCondition+newExperimentStopCondition =+  ExperimentStopCondition'+    { source = Prelude.Nothing,+      value = Prelude.Nothing+    }++-- | The source for the stop condition.+experimentStopCondition_source :: Lens.Lens' ExperimentStopCondition (Prelude.Maybe Prelude.Text)+experimentStopCondition_source = Lens.lens (\ExperimentStopCondition' {source} -> source) (\s@ExperimentStopCondition' {} a -> s {source = a} :: ExperimentStopCondition)++-- | The Amazon Resource Name (ARN) of the CloudWatch alarm, if applicable.+experimentStopCondition_value :: Lens.Lens' ExperimentStopCondition (Prelude.Maybe Prelude.Text)+experimentStopCondition_value = Lens.lens (\ExperimentStopCondition' {value} -> value) (\s@ExperimentStopCondition' {} a -> s {value = a} :: ExperimentStopCondition)++instance Data.FromJSON ExperimentStopCondition where+  parseJSON =+    Data.withObject+      "ExperimentStopCondition"+      ( \x ->+          ExperimentStopCondition'+            Prelude.<$> (x Data..:? "source")+            Prelude.<*> (x Data..:? "value")+      )++instance Prelude.Hashable ExperimentStopCondition where+  hashWithSalt _salt ExperimentStopCondition' {..} =+    _salt+      `Prelude.hashWithSalt` source+      `Prelude.hashWithSalt` value++instance Prelude.NFData ExperimentStopCondition where+  rnf ExperimentStopCondition' {..} =+    Prelude.rnf source `Prelude.seq` Prelude.rnf value
+ gen/Amazonka/FIS/Types/ExperimentSummary.hs view
@@ -0,0 +1,121 @@+{-# 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.FIS.Types.ExperimentSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ExperimentState+import qualified Amazonka.Prelude as Prelude++-- | Provides a summary of an experiment.+--+-- /See:/ 'newExperimentSummary' smart constructor.+data ExperimentSummary = ExperimentSummary'+  { -- | The time that the experiment was created.+    creationTime :: Prelude.Maybe Data.POSIX,+    -- | The ID of the experiment template.+    experimentTemplateId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the experiment.+    id :: Prelude.Maybe Prelude.Text,+    -- | The state of the experiment.+    state :: Prelude.Maybe ExperimentState,+    -- | The tags for the experiment.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'creationTime', 'experimentSummary_creationTime' - The time that the experiment was created.+--+-- 'experimentTemplateId', 'experimentSummary_experimentTemplateId' - The ID of the experiment template.+--+-- 'id', 'experimentSummary_id' - The ID of the experiment.+--+-- 'state', 'experimentSummary_state' - The state of the experiment.+--+-- 'tags', 'experimentSummary_tags' - The tags for the experiment.+newExperimentSummary ::+  ExperimentSummary+newExperimentSummary =+  ExperimentSummary'+    { creationTime = Prelude.Nothing,+      experimentTemplateId = Prelude.Nothing,+      id = Prelude.Nothing,+      state = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | The time that the experiment was created.+experimentSummary_creationTime :: Lens.Lens' ExperimentSummary (Prelude.Maybe Prelude.UTCTime)+experimentSummary_creationTime = Lens.lens (\ExperimentSummary' {creationTime} -> creationTime) (\s@ExperimentSummary' {} a -> s {creationTime = a} :: ExperimentSummary) Prelude.. Lens.mapping Data._Time++-- | The ID of the experiment template.+experimentSummary_experimentTemplateId :: Lens.Lens' ExperimentSummary (Prelude.Maybe Prelude.Text)+experimentSummary_experimentTemplateId = Lens.lens (\ExperimentSummary' {experimentTemplateId} -> experimentTemplateId) (\s@ExperimentSummary' {} a -> s {experimentTemplateId = a} :: ExperimentSummary)++-- | The ID of the experiment.+experimentSummary_id :: Lens.Lens' ExperimentSummary (Prelude.Maybe Prelude.Text)+experimentSummary_id = Lens.lens (\ExperimentSummary' {id} -> id) (\s@ExperimentSummary' {} a -> s {id = a} :: ExperimentSummary)++-- | The state of the experiment.+experimentSummary_state :: Lens.Lens' ExperimentSummary (Prelude.Maybe ExperimentState)+experimentSummary_state = Lens.lens (\ExperimentSummary' {state} -> state) (\s@ExperimentSummary' {} a -> s {state = a} :: ExperimentSummary)++-- | The tags for the experiment.+experimentSummary_tags :: Lens.Lens' ExperimentSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+experimentSummary_tags = Lens.lens (\ExperimentSummary' {tags} -> tags) (\s@ExperimentSummary' {} a -> s {tags = a} :: ExperimentSummary) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ExperimentSummary where+  parseJSON =+    Data.withObject+      "ExperimentSummary"+      ( \x ->+          ExperimentSummary'+            Prelude.<$> (x Data..:? "creationTime")+            Prelude.<*> (x Data..:? "experimentTemplateId")+            Prelude.<*> (x Data..:? "id")+            Prelude.<*> (x Data..:? "state")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ExperimentSummary where+  hashWithSalt _salt ExperimentSummary' {..} =+    _salt+      `Prelude.hashWithSalt` creationTime+      `Prelude.hashWithSalt` experimentTemplateId+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` state+      `Prelude.hashWithSalt` tags++instance Prelude.NFData ExperimentSummary where+  rnf ExperimentSummary' {..} =+    Prelude.rnf creationTime+      `Prelude.seq` Prelude.rnf experimentTemplateId+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf state+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/FIS/Types/ExperimentTarget.hs view
@@ -0,0 +1,136 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.ExperimentTarget+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentTarget where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ExperimentTargetFilter+import qualified Amazonka.Prelude as Prelude++-- | Describes a target for an experiment.+--+-- /See:/ 'newExperimentTarget' smart constructor.+data ExperimentTarget = ExperimentTarget'+  { -- | The filters to apply to identify target resources using specific+    -- attributes.+    filters :: Prelude.Maybe [ExperimentTargetFilter],+    -- | The resource type parameters.+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The Amazon Resource Names (ARNs) of the resources.+    resourceArns :: Prelude.Maybe [Prelude.Text],+    -- | The tags for the target resources.+    resourceTags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The resource type.+    resourceType :: Prelude.Maybe Prelude.Text,+    -- | Scopes the identified resources to a specific count or percentage.+    selectionMode :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentTarget' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filters', 'experimentTarget_filters' - The filters to apply to identify target resources using specific+-- attributes.+--+-- 'parameters', 'experimentTarget_parameters' - The resource type parameters.+--+-- 'resourceArns', 'experimentTarget_resourceArns' - The Amazon Resource Names (ARNs) of the resources.+--+-- 'resourceTags', 'experimentTarget_resourceTags' - The tags for the target resources.+--+-- 'resourceType', 'experimentTarget_resourceType' - The resource type.+--+-- 'selectionMode', 'experimentTarget_selectionMode' - Scopes the identified resources to a specific count or percentage.+newExperimentTarget ::+  ExperimentTarget+newExperimentTarget =+  ExperimentTarget'+    { filters = Prelude.Nothing,+      parameters = Prelude.Nothing,+      resourceArns = Prelude.Nothing,+      resourceTags = Prelude.Nothing,+      resourceType = Prelude.Nothing,+      selectionMode = Prelude.Nothing+    }++-- | The filters to apply to identify target resources using specific+-- attributes.+experimentTarget_filters :: Lens.Lens' ExperimentTarget (Prelude.Maybe [ExperimentTargetFilter])+experimentTarget_filters = Lens.lens (\ExperimentTarget' {filters} -> filters) (\s@ExperimentTarget' {} a -> s {filters = a} :: ExperimentTarget) Prelude.. Lens.mapping Lens.coerced++-- | The resource type parameters.+experimentTarget_parameters :: Lens.Lens' ExperimentTarget (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+experimentTarget_parameters = Lens.lens (\ExperimentTarget' {parameters} -> parameters) (\s@ExperimentTarget' {} a -> s {parameters = a} :: ExperimentTarget) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Names (ARNs) of the resources.+experimentTarget_resourceArns :: Lens.Lens' ExperimentTarget (Prelude.Maybe [Prelude.Text])+experimentTarget_resourceArns = Lens.lens (\ExperimentTarget' {resourceArns} -> resourceArns) (\s@ExperimentTarget' {} a -> s {resourceArns = a} :: ExperimentTarget) Prelude.. Lens.mapping Lens.coerced++-- | The tags for the target resources.+experimentTarget_resourceTags :: Lens.Lens' ExperimentTarget (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+experimentTarget_resourceTags = Lens.lens (\ExperimentTarget' {resourceTags} -> resourceTags) (\s@ExperimentTarget' {} a -> s {resourceTags = a} :: ExperimentTarget) Prelude.. Lens.mapping Lens.coerced++-- | The resource type.+experimentTarget_resourceType :: Lens.Lens' ExperimentTarget (Prelude.Maybe Prelude.Text)+experimentTarget_resourceType = Lens.lens (\ExperimentTarget' {resourceType} -> resourceType) (\s@ExperimentTarget' {} a -> s {resourceType = a} :: ExperimentTarget)++-- | Scopes the identified resources to a specific count or percentage.+experimentTarget_selectionMode :: Lens.Lens' ExperimentTarget (Prelude.Maybe Prelude.Text)+experimentTarget_selectionMode = Lens.lens (\ExperimentTarget' {selectionMode} -> selectionMode) (\s@ExperimentTarget' {} a -> s {selectionMode = a} :: ExperimentTarget)++instance Data.FromJSON ExperimentTarget where+  parseJSON =+    Data.withObject+      "ExperimentTarget"+      ( \x ->+          ExperimentTarget'+            Prelude.<$> (x Data..:? "filters" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "parameters" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "resourceArns" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "resourceTags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "resourceType")+            Prelude.<*> (x Data..:? "selectionMode")+      )++instance Prelude.Hashable ExperimentTarget where+  hashWithSalt _salt ExperimentTarget' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` parameters+      `Prelude.hashWithSalt` resourceArns+      `Prelude.hashWithSalt` resourceTags+      `Prelude.hashWithSalt` resourceType+      `Prelude.hashWithSalt` selectionMode++instance Prelude.NFData ExperimentTarget where+  rnf ExperimentTarget' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf parameters+      `Prelude.seq` Prelude.rnf resourceArns+      `Prelude.seq` Prelude.rnf resourceTags+      `Prelude.seq` Prelude.rnf resourceType+      `Prelude.seq` Prelude.rnf selectionMode
+ gen/Amazonka/FIS/Types/ExperimentTargetFilter.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.FIS.Types.ExperimentTargetFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentTargetFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes a filter used for the target resources in an experiment.+--+-- /See:/ 'newExperimentTargetFilter' smart constructor.+data ExperimentTargetFilter = ExperimentTargetFilter'+  { -- | The attribute path for the filter.+    path :: Prelude.Maybe Prelude.Text,+    -- | The attribute values for the filter.+    values :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentTargetFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'path', 'experimentTargetFilter_path' - The attribute path for the filter.+--+-- 'values', 'experimentTargetFilter_values' - The attribute values for the filter.+newExperimentTargetFilter ::+  ExperimentTargetFilter+newExperimentTargetFilter =+  ExperimentTargetFilter'+    { path = Prelude.Nothing,+      values = Prelude.Nothing+    }++-- | The attribute path for the filter.+experimentTargetFilter_path :: Lens.Lens' ExperimentTargetFilter (Prelude.Maybe Prelude.Text)+experimentTargetFilter_path = Lens.lens (\ExperimentTargetFilter' {path} -> path) (\s@ExperimentTargetFilter' {} a -> s {path = a} :: ExperimentTargetFilter)++-- | The attribute values for the filter.+experimentTargetFilter_values :: Lens.Lens' ExperimentTargetFilter (Prelude.Maybe [Prelude.Text])+experimentTargetFilter_values = Lens.lens (\ExperimentTargetFilter' {values} -> values) (\s@ExperimentTargetFilter' {} a -> s {values = a} :: ExperimentTargetFilter) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ExperimentTargetFilter where+  parseJSON =+    Data.withObject+      "ExperimentTargetFilter"+      ( \x ->+          ExperimentTargetFilter'+            Prelude.<$> (x Data..:? "path")+            Prelude.<*> (x Data..:? "values" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ExperimentTargetFilter where+  hashWithSalt _salt ExperimentTargetFilter' {..} =+    _salt+      `Prelude.hashWithSalt` path+      `Prelude.hashWithSalt` values++instance Prelude.NFData ExperimentTargetFilter where+  rnf ExperimentTargetFilter' {..} =+    Prelude.rnf path `Prelude.seq` Prelude.rnf values
+ gen/Amazonka/FIS/Types/ExperimentTemplate.hs view
@@ -0,0 +1,184 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.ExperimentTemplate+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentTemplate where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ExperimentTemplateAction+import Amazonka.FIS.Types.ExperimentTemplateLogConfiguration+import Amazonka.FIS.Types.ExperimentTemplateStopCondition+import Amazonka.FIS.Types.ExperimentTemplateTarget+import qualified Amazonka.Prelude as Prelude++-- | Describes an experiment template.+--+-- /See:/ 'newExperimentTemplate' smart constructor.+data ExperimentTemplate = ExperimentTemplate'+  { -- | The actions for the experiment.+    actions :: Prelude.Maybe (Prelude.HashMap Prelude.Text ExperimentTemplateAction),+    -- | The time the experiment template was created.+    creationTime :: Prelude.Maybe Data.POSIX,+    -- | The description for the experiment template.+    description :: Prelude.Maybe Prelude.Text,+    -- | The ID of the experiment template.+    id :: Prelude.Maybe Prelude.Text,+    -- | The time the experiment template was last updated.+    lastUpdateTime :: Prelude.Maybe Data.POSIX,+    -- | The configuration for experiment logging.+    logConfiguration :: Prelude.Maybe ExperimentTemplateLogConfiguration,+    -- | The Amazon Resource Name (ARN) of an IAM role.+    roleArn :: Prelude.Maybe Prelude.Text,+    -- | The stop conditions for the experiment.+    stopConditions :: Prelude.Maybe [ExperimentTemplateStopCondition],+    -- | The tags for the experiment template.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The targets for the experiment.+    targets :: Prelude.Maybe (Prelude.HashMap Prelude.Text ExperimentTemplateTarget)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentTemplate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'actions', 'experimentTemplate_actions' - The actions for the experiment.+--+-- 'creationTime', 'experimentTemplate_creationTime' - The time the experiment template was created.+--+-- 'description', 'experimentTemplate_description' - The description for the experiment template.+--+-- 'id', 'experimentTemplate_id' - The ID of the experiment template.+--+-- 'lastUpdateTime', 'experimentTemplate_lastUpdateTime' - The time the experiment template was last updated.+--+-- 'logConfiguration', 'experimentTemplate_logConfiguration' - The configuration for experiment logging.+--+-- 'roleArn', 'experimentTemplate_roleArn' - The Amazon Resource Name (ARN) of an IAM role.+--+-- 'stopConditions', 'experimentTemplate_stopConditions' - The stop conditions for the experiment.+--+-- 'tags', 'experimentTemplate_tags' - The tags for the experiment template.+--+-- 'targets', 'experimentTemplate_targets' - The targets for the experiment.+newExperimentTemplate ::+  ExperimentTemplate+newExperimentTemplate =+  ExperimentTemplate'+    { actions = Prelude.Nothing,+      creationTime = Prelude.Nothing,+      description = Prelude.Nothing,+      id = Prelude.Nothing,+      lastUpdateTime = Prelude.Nothing,+      logConfiguration = Prelude.Nothing,+      roleArn = Prelude.Nothing,+      stopConditions = Prelude.Nothing,+      tags = Prelude.Nothing,+      targets = Prelude.Nothing+    }++-- | The actions for the experiment.+experimentTemplate_actions :: Lens.Lens' ExperimentTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text ExperimentTemplateAction))+experimentTemplate_actions = Lens.lens (\ExperimentTemplate' {actions} -> actions) (\s@ExperimentTemplate' {} a -> s {actions = a} :: ExperimentTemplate) Prelude.. Lens.mapping Lens.coerced++-- | The time the experiment template was created.+experimentTemplate_creationTime :: Lens.Lens' ExperimentTemplate (Prelude.Maybe Prelude.UTCTime)+experimentTemplate_creationTime = Lens.lens (\ExperimentTemplate' {creationTime} -> creationTime) (\s@ExperimentTemplate' {} a -> s {creationTime = a} :: ExperimentTemplate) Prelude.. Lens.mapping Data._Time++-- | The description for the experiment template.+experimentTemplate_description :: Lens.Lens' ExperimentTemplate (Prelude.Maybe Prelude.Text)+experimentTemplate_description = Lens.lens (\ExperimentTemplate' {description} -> description) (\s@ExperimentTemplate' {} a -> s {description = a} :: ExperimentTemplate)++-- | The ID of the experiment template.+experimentTemplate_id :: Lens.Lens' ExperimentTemplate (Prelude.Maybe Prelude.Text)+experimentTemplate_id = Lens.lens (\ExperimentTemplate' {id} -> id) (\s@ExperimentTemplate' {} a -> s {id = a} :: ExperimentTemplate)++-- | The time the experiment template was last updated.+experimentTemplate_lastUpdateTime :: Lens.Lens' ExperimentTemplate (Prelude.Maybe Prelude.UTCTime)+experimentTemplate_lastUpdateTime = Lens.lens (\ExperimentTemplate' {lastUpdateTime} -> lastUpdateTime) (\s@ExperimentTemplate' {} a -> s {lastUpdateTime = a} :: ExperimentTemplate) Prelude.. Lens.mapping Data._Time++-- | The configuration for experiment logging.+experimentTemplate_logConfiguration :: Lens.Lens' ExperimentTemplate (Prelude.Maybe ExperimentTemplateLogConfiguration)+experimentTemplate_logConfiguration = Lens.lens (\ExperimentTemplate' {logConfiguration} -> logConfiguration) (\s@ExperimentTemplate' {} a -> s {logConfiguration = a} :: ExperimentTemplate)++-- | The Amazon Resource Name (ARN) of an IAM role.+experimentTemplate_roleArn :: Lens.Lens' ExperimentTemplate (Prelude.Maybe Prelude.Text)+experimentTemplate_roleArn = Lens.lens (\ExperimentTemplate' {roleArn} -> roleArn) (\s@ExperimentTemplate' {} a -> s {roleArn = a} :: ExperimentTemplate)++-- | The stop conditions for the experiment.+experimentTemplate_stopConditions :: Lens.Lens' ExperimentTemplate (Prelude.Maybe [ExperimentTemplateStopCondition])+experimentTemplate_stopConditions = Lens.lens (\ExperimentTemplate' {stopConditions} -> stopConditions) (\s@ExperimentTemplate' {} a -> s {stopConditions = a} :: ExperimentTemplate) Prelude.. Lens.mapping Lens.coerced++-- | The tags for the experiment template.+experimentTemplate_tags :: Lens.Lens' ExperimentTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+experimentTemplate_tags = Lens.lens (\ExperimentTemplate' {tags} -> tags) (\s@ExperimentTemplate' {} a -> s {tags = a} :: ExperimentTemplate) Prelude.. Lens.mapping Lens.coerced++-- | The targets for the experiment.+experimentTemplate_targets :: Lens.Lens' ExperimentTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text ExperimentTemplateTarget))+experimentTemplate_targets = Lens.lens (\ExperimentTemplate' {targets} -> targets) (\s@ExperimentTemplate' {} a -> s {targets = a} :: ExperimentTemplate) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ExperimentTemplate where+  parseJSON =+    Data.withObject+      "ExperimentTemplate"+      ( \x ->+          ExperimentTemplate'+            Prelude.<$> (x Data..:? "actions" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "creationTime")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "id")+            Prelude.<*> (x Data..:? "lastUpdateTime")+            Prelude.<*> (x Data..:? "logConfiguration")+            Prelude.<*> (x Data..:? "roleArn")+            Prelude.<*> (x Data..:? "stopConditions" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "targets" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ExperimentTemplate where+  hashWithSalt _salt ExperimentTemplate' {..} =+    _salt+      `Prelude.hashWithSalt` actions+      `Prelude.hashWithSalt` creationTime+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` lastUpdateTime+      `Prelude.hashWithSalt` logConfiguration+      `Prelude.hashWithSalt` roleArn+      `Prelude.hashWithSalt` stopConditions+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` targets++instance Prelude.NFData ExperimentTemplate where+  rnf ExperimentTemplate' {..} =+    Prelude.rnf actions+      `Prelude.seq` Prelude.rnf creationTime+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf lastUpdateTime+      `Prelude.seq` Prelude.rnf logConfiguration+      `Prelude.seq` Prelude.rnf roleArn+      `Prelude.seq` Prelude.rnf stopConditions+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf targets
+ gen/Amazonka/FIS/Types/ExperimentTemplateAction.hs view
@@ -0,0 +1,124 @@+{-# 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.FIS.Types.ExperimentTemplateAction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentTemplateAction where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes an action for an experiment template.+--+-- /See:/ 'newExperimentTemplateAction' smart constructor.+data ExperimentTemplateAction = ExperimentTemplateAction'+  { -- | The ID of the action.+    actionId :: Prelude.Maybe Prelude.Text,+    -- | A description for the action.+    description :: Prelude.Maybe Prelude.Text,+    -- | The parameters for the action.+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name of the action that must be completed before the current action+    -- starts.+    startAfter :: Prelude.Maybe [Prelude.Text],+    -- | The targets for the action.+    targets :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentTemplateAction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'actionId', 'experimentTemplateAction_actionId' - The ID of the action.+--+-- 'description', 'experimentTemplateAction_description' - A description for the action.+--+-- 'parameters', 'experimentTemplateAction_parameters' - The parameters for the action.+--+-- 'startAfter', 'experimentTemplateAction_startAfter' - The name of the action that must be completed before the current action+-- starts.+--+-- 'targets', 'experimentTemplateAction_targets' - The targets for the action.+newExperimentTemplateAction ::+  ExperimentTemplateAction+newExperimentTemplateAction =+  ExperimentTemplateAction'+    { actionId =+        Prelude.Nothing,+      description = Prelude.Nothing,+      parameters = Prelude.Nothing,+      startAfter = Prelude.Nothing,+      targets = Prelude.Nothing+    }++-- | The ID of the action.+experimentTemplateAction_actionId :: Lens.Lens' ExperimentTemplateAction (Prelude.Maybe Prelude.Text)+experimentTemplateAction_actionId = Lens.lens (\ExperimentTemplateAction' {actionId} -> actionId) (\s@ExperimentTemplateAction' {} a -> s {actionId = a} :: ExperimentTemplateAction)++-- | A description for the action.+experimentTemplateAction_description :: Lens.Lens' ExperimentTemplateAction (Prelude.Maybe Prelude.Text)+experimentTemplateAction_description = Lens.lens (\ExperimentTemplateAction' {description} -> description) (\s@ExperimentTemplateAction' {} a -> s {description = a} :: ExperimentTemplateAction)++-- | The parameters for the action.+experimentTemplateAction_parameters :: Lens.Lens' ExperimentTemplateAction (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+experimentTemplateAction_parameters = Lens.lens (\ExperimentTemplateAction' {parameters} -> parameters) (\s@ExperimentTemplateAction' {} a -> s {parameters = a} :: ExperimentTemplateAction) Prelude.. Lens.mapping Lens.coerced++-- | The name of the action that must be completed before the current action+-- starts.+experimentTemplateAction_startAfter :: Lens.Lens' ExperimentTemplateAction (Prelude.Maybe [Prelude.Text])+experimentTemplateAction_startAfter = Lens.lens (\ExperimentTemplateAction' {startAfter} -> startAfter) (\s@ExperimentTemplateAction' {} a -> s {startAfter = a} :: ExperimentTemplateAction) Prelude.. Lens.mapping Lens.coerced++-- | The targets for the action.+experimentTemplateAction_targets :: Lens.Lens' ExperimentTemplateAction (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+experimentTemplateAction_targets = Lens.lens (\ExperimentTemplateAction' {targets} -> targets) (\s@ExperimentTemplateAction' {} a -> s {targets = a} :: ExperimentTemplateAction) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ExperimentTemplateAction where+  parseJSON =+    Data.withObject+      "ExperimentTemplateAction"+      ( \x ->+          ExperimentTemplateAction'+            Prelude.<$> (x Data..:? "actionId")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "parameters" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "startAfter" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "targets" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ExperimentTemplateAction where+  hashWithSalt _salt ExperimentTemplateAction' {..} =+    _salt+      `Prelude.hashWithSalt` actionId+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` parameters+      `Prelude.hashWithSalt` startAfter+      `Prelude.hashWithSalt` targets++instance Prelude.NFData ExperimentTemplateAction where+  rnf ExperimentTemplateAction' {..} =+    Prelude.rnf actionId+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf parameters+      `Prelude.seq` Prelude.rnf startAfter+      `Prelude.seq` Prelude.rnf targets
+ gen/Amazonka/FIS/Types/ExperimentTemplateCloudWatchLogsLogConfiguration.hs view
@@ -0,0 +1,88 @@+{-# 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.FIS.Types.ExperimentTemplateCloudWatchLogsLogConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentTemplateCloudWatchLogsLogConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes the configuration for experiment logging to Amazon CloudWatch+-- Logs.+--+-- /See:/ 'newExperimentTemplateCloudWatchLogsLogConfiguration' smart constructor.+data ExperimentTemplateCloudWatchLogsLogConfiguration = ExperimentTemplateCloudWatchLogsLogConfiguration'+  { -- | The Amazon Resource Name (ARN) of the destination Amazon CloudWatch Logs+    -- log group.+    logGroupArn :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentTemplateCloudWatchLogsLogConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'logGroupArn', 'experimentTemplateCloudWatchLogsLogConfiguration_logGroupArn' - The Amazon Resource Name (ARN) of the destination Amazon CloudWatch Logs+-- log group.+newExperimentTemplateCloudWatchLogsLogConfiguration ::+  ExperimentTemplateCloudWatchLogsLogConfiguration+newExperimentTemplateCloudWatchLogsLogConfiguration =+  ExperimentTemplateCloudWatchLogsLogConfiguration'+    { logGroupArn =+        Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the destination Amazon CloudWatch Logs+-- log group.+experimentTemplateCloudWatchLogsLogConfiguration_logGroupArn :: Lens.Lens' ExperimentTemplateCloudWatchLogsLogConfiguration (Prelude.Maybe Prelude.Text)+experimentTemplateCloudWatchLogsLogConfiguration_logGroupArn = Lens.lens (\ExperimentTemplateCloudWatchLogsLogConfiguration' {logGroupArn} -> logGroupArn) (\s@ExperimentTemplateCloudWatchLogsLogConfiguration' {} a -> s {logGroupArn = a} :: ExperimentTemplateCloudWatchLogsLogConfiguration)++instance+  Data.FromJSON+    ExperimentTemplateCloudWatchLogsLogConfiguration+  where+  parseJSON =+    Data.withObject+      "ExperimentTemplateCloudWatchLogsLogConfiguration"+      ( \x ->+          ExperimentTemplateCloudWatchLogsLogConfiguration'+            Prelude.<$> (x Data..:? "logGroupArn")+      )++instance+  Prelude.Hashable+    ExperimentTemplateCloudWatchLogsLogConfiguration+  where+  hashWithSalt+    _salt+    ExperimentTemplateCloudWatchLogsLogConfiguration' {..} =+      _salt `Prelude.hashWithSalt` logGroupArn++instance+  Prelude.NFData+    ExperimentTemplateCloudWatchLogsLogConfiguration+  where+  rnf+    ExperimentTemplateCloudWatchLogsLogConfiguration' {..} =+      Prelude.rnf logGroupArn
+ gen/Amazonka/FIS/Types/ExperimentTemplateCloudWatchLogsLogConfigurationInput.hs view
@@ -0,0 +1,90 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.ExperimentTemplateCloudWatchLogsLogConfigurationInput+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentTemplateCloudWatchLogsLogConfigurationInput where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies the configuration for experiment logging to Amazon CloudWatch+-- Logs.+--+-- /See:/ 'newExperimentTemplateCloudWatchLogsLogConfigurationInput' smart constructor.+data ExperimentTemplateCloudWatchLogsLogConfigurationInput = ExperimentTemplateCloudWatchLogsLogConfigurationInput'+  { -- | The Amazon Resource Name (ARN) of the destination Amazon CloudWatch Logs+    -- log group.+    logGroupArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentTemplateCloudWatchLogsLogConfigurationInput' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'logGroupArn', 'experimentTemplateCloudWatchLogsLogConfigurationInput_logGroupArn' - The Amazon Resource Name (ARN) of the destination Amazon CloudWatch Logs+-- log group.+newExperimentTemplateCloudWatchLogsLogConfigurationInput ::+  -- | 'logGroupArn'+  Prelude.Text ->+  ExperimentTemplateCloudWatchLogsLogConfigurationInput+newExperimentTemplateCloudWatchLogsLogConfigurationInput+  pLogGroupArn_ =+    ExperimentTemplateCloudWatchLogsLogConfigurationInput'+      { logGroupArn =+          pLogGroupArn_+      }++-- | The Amazon Resource Name (ARN) of the destination Amazon CloudWatch Logs+-- log group.+experimentTemplateCloudWatchLogsLogConfigurationInput_logGroupArn :: Lens.Lens' ExperimentTemplateCloudWatchLogsLogConfigurationInput Prelude.Text+experimentTemplateCloudWatchLogsLogConfigurationInput_logGroupArn = Lens.lens (\ExperimentTemplateCloudWatchLogsLogConfigurationInput' {logGroupArn} -> logGroupArn) (\s@ExperimentTemplateCloudWatchLogsLogConfigurationInput' {} a -> s {logGroupArn = a} :: ExperimentTemplateCloudWatchLogsLogConfigurationInput)++instance+  Prelude.Hashable+    ExperimentTemplateCloudWatchLogsLogConfigurationInput+  where+  hashWithSalt+    _salt+    ExperimentTemplateCloudWatchLogsLogConfigurationInput' {..} =+      _salt `Prelude.hashWithSalt` logGroupArn++instance+  Prelude.NFData+    ExperimentTemplateCloudWatchLogsLogConfigurationInput+  where+  rnf+    ExperimentTemplateCloudWatchLogsLogConfigurationInput' {..} =+      Prelude.rnf logGroupArn++instance+  Data.ToJSON+    ExperimentTemplateCloudWatchLogsLogConfigurationInput+  where+  toJSON+    ExperimentTemplateCloudWatchLogsLogConfigurationInput' {..} =+      Data.object+        ( Prelude.catMaybes+            [Prelude.Just ("logGroupArn" Data..= logGroupArn)]+        )
+ gen/Amazonka/FIS/Types/ExperimentTemplateLogConfiguration.hs view
@@ -0,0 +1,110 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.ExperimentTemplateLogConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentTemplateLogConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ExperimentTemplateCloudWatchLogsLogConfiguration+import Amazonka.FIS.Types.ExperimentTemplateS3LogConfiguration+import qualified Amazonka.Prelude as Prelude++-- | Describes the configuration for experiment logging.+--+-- /See:/ 'newExperimentTemplateLogConfiguration' smart constructor.+data ExperimentTemplateLogConfiguration = ExperimentTemplateLogConfiguration'+  { -- | The configuration for experiment logging to Amazon CloudWatch Logs.+    cloudWatchLogsConfiguration :: Prelude.Maybe ExperimentTemplateCloudWatchLogsLogConfiguration,+    -- | The schema version.+    logSchemaVersion :: Prelude.Maybe Prelude.Int,+    -- | The configuration for experiment logging to Amazon S3.+    s3Configuration :: Prelude.Maybe ExperimentTemplateS3LogConfiguration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentTemplateLogConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cloudWatchLogsConfiguration', 'experimentTemplateLogConfiguration_cloudWatchLogsConfiguration' - The configuration for experiment logging to Amazon CloudWatch Logs.+--+-- 'logSchemaVersion', 'experimentTemplateLogConfiguration_logSchemaVersion' - The schema version.+--+-- 's3Configuration', 'experimentTemplateLogConfiguration_s3Configuration' - The configuration for experiment logging to Amazon S3.+newExperimentTemplateLogConfiguration ::+  ExperimentTemplateLogConfiguration+newExperimentTemplateLogConfiguration =+  ExperimentTemplateLogConfiguration'+    { cloudWatchLogsConfiguration =+        Prelude.Nothing,+      logSchemaVersion = Prelude.Nothing,+      s3Configuration = Prelude.Nothing+    }++-- | The configuration for experiment logging to Amazon CloudWatch Logs.+experimentTemplateLogConfiguration_cloudWatchLogsConfiguration :: Lens.Lens' ExperimentTemplateLogConfiguration (Prelude.Maybe ExperimentTemplateCloudWatchLogsLogConfiguration)+experimentTemplateLogConfiguration_cloudWatchLogsConfiguration = Lens.lens (\ExperimentTemplateLogConfiguration' {cloudWatchLogsConfiguration} -> cloudWatchLogsConfiguration) (\s@ExperimentTemplateLogConfiguration' {} a -> s {cloudWatchLogsConfiguration = a} :: ExperimentTemplateLogConfiguration)++-- | The schema version.+experimentTemplateLogConfiguration_logSchemaVersion :: Lens.Lens' ExperimentTemplateLogConfiguration (Prelude.Maybe Prelude.Int)+experimentTemplateLogConfiguration_logSchemaVersion = Lens.lens (\ExperimentTemplateLogConfiguration' {logSchemaVersion} -> logSchemaVersion) (\s@ExperimentTemplateLogConfiguration' {} a -> s {logSchemaVersion = a} :: ExperimentTemplateLogConfiguration)++-- | The configuration for experiment logging to Amazon S3.+experimentTemplateLogConfiguration_s3Configuration :: Lens.Lens' ExperimentTemplateLogConfiguration (Prelude.Maybe ExperimentTemplateS3LogConfiguration)+experimentTemplateLogConfiguration_s3Configuration = Lens.lens (\ExperimentTemplateLogConfiguration' {s3Configuration} -> s3Configuration) (\s@ExperimentTemplateLogConfiguration' {} a -> s {s3Configuration = a} :: ExperimentTemplateLogConfiguration)++instance+  Data.FromJSON+    ExperimentTemplateLogConfiguration+  where+  parseJSON =+    Data.withObject+      "ExperimentTemplateLogConfiguration"+      ( \x ->+          ExperimentTemplateLogConfiguration'+            Prelude.<$> (x Data..:? "cloudWatchLogsConfiguration")+            Prelude.<*> (x Data..:? "logSchemaVersion")+            Prelude.<*> (x Data..:? "s3Configuration")+      )++instance+  Prelude.Hashable+    ExperimentTemplateLogConfiguration+  where+  hashWithSalt+    _salt+    ExperimentTemplateLogConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` cloudWatchLogsConfiguration+        `Prelude.hashWithSalt` logSchemaVersion+        `Prelude.hashWithSalt` s3Configuration++instance+  Prelude.NFData+    ExperimentTemplateLogConfiguration+  where+  rnf ExperimentTemplateLogConfiguration' {..} =+    Prelude.rnf cloudWatchLogsConfiguration+      `Prelude.seq` Prelude.rnf logSchemaVersion+      `Prelude.seq` Prelude.rnf s3Configuration
+ gen/Amazonka/FIS/Types/ExperimentTemplateS3LogConfiguration.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.ExperimentTemplateS3LogConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentTemplateS3LogConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes the configuration for experiment logging to Amazon S3.+--+-- /See:/ 'newExperimentTemplateS3LogConfiguration' smart constructor.+data ExperimentTemplateS3LogConfiguration = ExperimentTemplateS3LogConfiguration'+  { -- | The name of the destination bucket.+    bucketName :: Prelude.Maybe Prelude.Text,+    -- | The bucket prefix.+    prefix :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentTemplateS3LogConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'bucketName', 'experimentTemplateS3LogConfiguration_bucketName' - The name of the destination bucket.+--+-- 'prefix', 'experimentTemplateS3LogConfiguration_prefix' - The bucket prefix.+newExperimentTemplateS3LogConfiguration ::+  ExperimentTemplateS3LogConfiguration+newExperimentTemplateS3LogConfiguration =+  ExperimentTemplateS3LogConfiguration'+    { bucketName =+        Prelude.Nothing,+      prefix = Prelude.Nothing+    }++-- | The name of the destination bucket.+experimentTemplateS3LogConfiguration_bucketName :: Lens.Lens' ExperimentTemplateS3LogConfiguration (Prelude.Maybe Prelude.Text)+experimentTemplateS3LogConfiguration_bucketName = Lens.lens (\ExperimentTemplateS3LogConfiguration' {bucketName} -> bucketName) (\s@ExperimentTemplateS3LogConfiguration' {} a -> s {bucketName = a} :: ExperimentTemplateS3LogConfiguration)++-- | The bucket prefix.+experimentTemplateS3LogConfiguration_prefix :: Lens.Lens' ExperimentTemplateS3LogConfiguration (Prelude.Maybe Prelude.Text)+experimentTemplateS3LogConfiguration_prefix = Lens.lens (\ExperimentTemplateS3LogConfiguration' {prefix} -> prefix) (\s@ExperimentTemplateS3LogConfiguration' {} a -> s {prefix = a} :: ExperimentTemplateS3LogConfiguration)++instance+  Data.FromJSON+    ExperimentTemplateS3LogConfiguration+  where+  parseJSON =+    Data.withObject+      "ExperimentTemplateS3LogConfiguration"+      ( \x ->+          ExperimentTemplateS3LogConfiguration'+            Prelude.<$> (x Data..:? "bucketName")+            Prelude.<*> (x Data..:? "prefix")+      )++instance+  Prelude.Hashable+    ExperimentTemplateS3LogConfiguration+  where+  hashWithSalt+    _salt+    ExperimentTemplateS3LogConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` bucketName+        `Prelude.hashWithSalt` prefix++instance+  Prelude.NFData+    ExperimentTemplateS3LogConfiguration+  where+  rnf ExperimentTemplateS3LogConfiguration' {..} =+    Prelude.rnf bucketName+      `Prelude.seq` Prelude.rnf prefix
+ gen/Amazonka/FIS/Types/ExperimentTemplateS3LogConfigurationInput.hs view
@@ -0,0 +1,98 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.ExperimentTemplateS3LogConfigurationInput+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentTemplateS3LogConfigurationInput where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies the configuration for experiment logging to Amazon S3.+--+-- /See:/ 'newExperimentTemplateS3LogConfigurationInput' smart constructor.+data ExperimentTemplateS3LogConfigurationInput = ExperimentTemplateS3LogConfigurationInput'+  { -- | The bucket prefix.+    prefix :: Prelude.Maybe Prelude.Text,+    -- | The name of the destination bucket.+    bucketName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentTemplateS3LogConfigurationInput' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'prefix', 'experimentTemplateS3LogConfigurationInput_prefix' - The bucket prefix.+--+-- 'bucketName', 'experimentTemplateS3LogConfigurationInput_bucketName' - The name of the destination bucket.+newExperimentTemplateS3LogConfigurationInput ::+  -- | 'bucketName'+  Prelude.Text ->+  ExperimentTemplateS3LogConfigurationInput+newExperimentTemplateS3LogConfigurationInput+  pBucketName_ =+    ExperimentTemplateS3LogConfigurationInput'+      { prefix =+          Prelude.Nothing,+        bucketName = pBucketName_+      }++-- | The bucket prefix.+experimentTemplateS3LogConfigurationInput_prefix :: Lens.Lens' ExperimentTemplateS3LogConfigurationInput (Prelude.Maybe Prelude.Text)+experimentTemplateS3LogConfigurationInput_prefix = Lens.lens (\ExperimentTemplateS3LogConfigurationInput' {prefix} -> prefix) (\s@ExperimentTemplateS3LogConfigurationInput' {} a -> s {prefix = a} :: ExperimentTemplateS3LogConfigurationInput)++-- | The name of the destination bucket.+experimentTemplateS3LogConfigurationInput_bucketName :: Lens.Lens' ExperimentTemplateS3LogConfigurationInput Prelude.Text+experimentTemplateS3LogConfigurationInput_bucketName = Lens.lens (\ExperimentTemplateS3LogConfigurationInput' {bucketName} -> bucketName) (\s@ExperimentTemplateS3LogConfigurationInput' {} a -> s {bucketName = a} :: ExperimentTemplateS3LogConfigurationInput)++instance+  Prelude.Hashable+    ExperimentTemplateS3LogConfigurationInput+  where+  hashWithSalt+    _salt+    ExperimentTemplateS3LogConfigurationInput' {..} =+      _salt+        `Prelude.hashWithSalt` prefix+        `Prelude.hashWithSalt` bucketName++instance+  Prelude.NFData+    ExperimentTemplateS3LogConfigurationInput+  where+  rnf ExperimentTemplateS3LogConfigurationInput' {..} =+    Prelude.rnf prefix+      `Prelude.seq` Prelude.rnf bucketName++instance+  Data.ToJSON+    ExperimentTemplateS3LogConfigurationInput+  where+  toJSON ExperimentTemplateS3LogConfigurationInput' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("prefix" Data..=) Prelude.<$> prefix,+            Prelude.Just ("bucketName" Data..= bucketName)+          ]+      )
+ gen/Amazonka/FIS/Types/ExperimentTemplateStopCondition.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.ExperimentTemplateStopCondition+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentTemplateStopCondition where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes a stop condition for an experiment template.+--+-- /See:/ 'newExperimentTemplateStopCondition' smart constructor.+data ExperimentTemplateStopCondition = ExperimentTemplateStopCondition'+  { -- | The source for the stop condition.+    source :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the CloudWatch alarm, if applicable.+    value :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentTemplateStopCondition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'source', 'experimentTemplateStopCondition_source' - The source for the stop condition.+--+-- 'value', 'experimentTemplateStopCondition_value' - The Amazon Resource Name (ARN) of the CloudWatch alarm, if applicable.+newExperimentTemplateStopCondition ::+  ExperimentTemplateStopCondition+newExperimentTemplateStopCondition =+  ExperimentTemplateStopCondition'+    { source =+        Prelude.Nothing,+      value = Prelude.Nothing+    }++-- | The source for the stop condition.+experimentTemplateStopCondition_source :: Lens.Lens' ExperimentTemplateStopCondition (Prelude.Maybe Prelude.Text)+experimentTemplateStopCondition_source = Lens.lens (\ExperimentTemplateStopCondition' {source} -> source) (\s@ExperimentTemplateStopCondition' {} a -> s {source = a} :: ExperimentTemplateStopCondition)++-- | The Amazon Resource Name (ARN) of the CloudWatch alarm, if applicable.+experimentTemplateStopCondition_value :: Lens.Lens' ExperimentTemplateStopCondition (Prelude.Maybe Prelude.Text)+experimentTemplateStopCondition_value = Lens.lens (\ExperimentTemplateStopCondition' {value} -> value) (\s@ExperimentTemplateStopCondition' {} a -> s {value = a} :: ExperimentTemplateStopCondition)++instance+  Data.FromJSON+    ExperimentTemplateStopCondition+  where+  parseJSON =+    Data.withObject+      "ExperimentTemplateStopCondition"+      ( \x ->+          ExperimentTemplateStopCondition'+            Prelude.<$> (x Data..:? "source")+            Prelude.<*> (x Data..:? "value")+      )++instance+  Prelude.Hashable+    ExperimentTemplateStopCondition+  where+  hashWithSalt+    _salt+    ExperimentTemplateStopCondition' {..} =+      _salt+        `Prelude.hashWithSalt` source+        `Prelude.hashWithSalt` value++instance+  Prelude.NFData+    ExperimentTemplateStopCondition+  where+  rnf ExperimentTemplateStopCondition' {..} =+    Prelude.rnf source `Prelude.seq` Prelude.rnf value
+ gen/Amazonka/FIS/Types/ExperimentTemplateSummary.hs view
@@ -0,0 +1,121 @@+{-# 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.FIS.Types.ExperimentTemplateSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentTemplateSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Provides a summary of an experiment template.+--+-- /See:/ 'newExperimentTemplateSummary' smart constructor.+data ExperimentTemplateSummary = ExperimentTemplateSummary'+  { -- | The time that the experiment template was created.+    creationTime :: Prelude.Maybe Data.POSIX,+    -- | The description of the experiment template.+    description :: Prelude.Maybe Prelude.Text,+    -- | The ID of the experiment template.+    id :: Prelude.Maybe Prelude.Text,+    -- | The time that the experiment template was last updated.+    lastUpdateTime :: Prelude.Maybe Data.POSIX,+    -- | The tags for the experiment template.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentTemplateSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'creationTime', 'experimentTemplateSummary_creationTime' - The time that the experiment template was created.+--+-- 'description', 'experimentTemplateSummary_description' - The description of the experiment template.+--+-- 'id', 'experimentTemplateSummary_id' - The ID of the experiment template.+--+-- 'lastUpdateTime', 'experimentTemplateSummary_lastUpdateTime' - The time that the experiment template was last updated.+--+-- 'tags', 'experimentTemplateSummary_tags' - The tags for the experiment template.+newExperimentTemplateSummary ::+  ExperimentTemplateSummary+newExperimentTemplateSummary =+  ExperimentTemplateSummary'+    { creationTime =+        Prelude.Nothing,+      description = Prelude.Nothing,+      id = Prelude.Nothing,+      lastUpdateTime = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | The time that the experiment template was created.+experimentTemplateSummary_creationTime :: Lens.Lens' ExperimentTemplateSummary (Prelude.Maybe Prelude.UTCTime)+experimentTemplateSummary_creationTime = Lens.lens (\ExperimentTemplateSummary' {creationTime} -> creationTime) (\s@ExperimentTemplateSummary' {} a -> s {creationTime = a} :: ExperimentTemplateSummary) Prelude.. Lens.mapping Data._Time++-- | The description of the experiment template.+experimentTemplateSummary_description :: Lens.Lens' ExperimentTemplateSummary (Prelude.Maybe Prelude.Text)+experimentTemplateSummary_description = Lens.lens (\ExperimentTemplateSummary' {description} -> description) (\s@ExperimentTemplateSummary' {} a -> s {description = a} :: ExperimentTemplateSummary)++-- | The ID of the experiment template.+experimentTemplateSummary_id :: Lens.Lens' ExperimentTemplateSummary (Prelude.Maybe Prelude.Text)+experimentTemplateSummary_id = Lens.lens (\ExperimentTemplateSummary' {id} -> id) (\s@ExperimentTemplateSummary' {} a -> s {id = a} :: ExperimentTemplateSummary)++-- | The time that the experiment template was last updated.+experimentTemplateSummary_lastUpdateTime :: Lens.Lens' ExperimentTemplateSummary (Prelude.Maybe Prelude.UTCTime)+experimentTemplateSummary_lastUpdateTime = Lens.lens (\ExperimentTemplateSummary' {lastUpdateTime} -> lastUpdateTime) (\s@ExperimentTemplateSummary' {} a -> s {lastUpdateTime = a} :: ExperimentTemplateSummary) Prelude.. Lens.mapping Data._Time++-- | The tags for the experiment template.+experimentTemplateSummary_tags :: Lens.Lens' ExperimentTemplateSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+experimentTemplateSummary_tags = Lens.lens (\ExperimentTemplateSummary' {tags} -> tags) (\s@ExperimentTemplateSummary' {} a -> s {tags = a} :: ExperimentTemplateSummary) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ExperimentTemplateSummary where+  parseJSON =+    Data.withObject+      "ExperimentTemplateSummary"+      ( \x ->+          ExperimentTemplateSummary'+            Prelude.<$> (x Data..:? "creationTime")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "id")+            Prelude.<*> (x Data..:? "lastUpdateTime")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ExperimentTemplateSummary where+  hashWithSalt _salt ExperimentTemplateSummary' {..} =+    _salt+      `Prelude.hashWithSalt` creationTime+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` lastUpdateTime+      `Prelude.hashWithSalt` tags++instance Prelude.NFData ExperimentTemplateSummary where+  rnf ExperimentTemplateSummary' {..} =+    Prelude.rnf creationTime+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf lastUpdateTime+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/FIS/Types/ExperimentTemplateTarget.hs view
@@ -0,0 +1,137 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.ExperimentTemplateTarget+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentTemplateTarget where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ExperimentTemplateTargetFilter+import qualified Amazonka.Prelude as Prelude++-- | Describes a target for an experiment template.+--+-- /See:/ 'newExperimentTemplateTarget' smart constructor.+data ExperimentTemplateTarget = ExperimentTemplateTarget'+  { -- | The filters to apply to identify target resources using specific+    -- attributes.+    filters :: Prelude.Maybe [ExperimentTemplateTargetFilter],+    -- | The resource type parameters.+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The Amazon Resource Names (ARNs) of the targets.+    resourceArns :: Prelude.Maybe [Prelude.Text],+    -- | The tags for the target resources.+    resourceTags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The resource type.+    resourceType :: Prelude.Maybe Prelude.Text,+    -- | Scopes the identified resources to a specific count or percentage.+    selectionMode :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentTemplateTarget' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filters', 'experimentTemplateTarget_filters' - The filters to apply to identify target resources using specific+-- attributes.+--+-- 'parameters', 'experimentTemplateTarget_parameters' - The resource type parameters.+--+-- 'resourceArns', 'experimentTemplateTarget_resourceArns' - The Amazon Resource Names (ARNs) of the targets.+--+-- 'resourceTags', 'experimentTemplateTarget_resourceTags' - The tags for the target resources.+--+-- 'resourceType', 'experimentTemplateTarget_resourceType' - The resource type.+--+-- 'selectionMode', 'experimentTemplateTarget_selectionMode' - Scopes the identified resources to a specific count or percentage.+newExperimentTemplateTarget ::+  ExperimentTemplateTarget+newExperimentTemplateTarget =+  ExperimentTemplateTarget'+    { filters =+        Prelude.Nothing,+      parameters = Prelude.Nothing,+      resourceArns = Prelude.Nothing,+      resourceTags = Prelude.Nothing,+      resourceType = Prelude.Nothing,+      selectionMode = Prelude.Nothing+    }++-- | The filters to apply to identify target resources using specific+-- attributes.+experimentTemplateTarget_filters :: Lens.Lens' ExperimentTemplateTarget (Prelude.Maybe [ExperimentTemplateTargetFilter])+experimentTemplateTarget_filters = Lens.lens (\ExperimentTemplateTarget' {filters} -> filters) (\s@ExperimentTemplateTarget' {} a -> s {filters = a} :: ExperimentTemplateTarget) Prelude.. Lens.mapping Lens.coerced++-- | The resource type parameters.+experimentTemplateTarget_parameters :: Lens.Lens' ExperimentTemplateTarget (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+experimentTemplateTarget_parameters = Lens.lens (\ExperimentTemplateTarget' {parameters} -> parameters) (\s@ExperimentTemplateTarget' {} a -> s {parameters = a} :: ExperimentTemplateTarget) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Names (ARNs) of the targets.+experimentTemplateTarget_resourceArns :: Lens.Lens' ExperimentTemplateTarget (Prelude.Maybe [Prelude.Text])+experimentTemplateTarget_resourceArns = Lens.lens (\ExperimentTemplateTarget' {resourceArns} -> resourceArns) (\s@ExperimentTemplateTarget' {} a -> s {resourceArns = a} :: ExperimentTemplateTarget) Prelude.. Lens.mapping Lens.coerced++-- | The tags for the target resources.+experimentTemplateTarget_resourceTags :: Lens.Lens' ExperimentTemplateTarget (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+experimentTemplateTarget_resourceTags = Lens.lens (\ExperimentTemplateTarget' {resourceTags} -> resourceTags) (\s@ExperimentTemplateTarget' {} a -> s {resourceTags = a} :: ExperimentTemplateTarget) Prelude.. Lens.mapping Lens.coerced++-- | The resource type.+experimentTemplateTarget_resourceType :: Lens.Lens' ExperimentTemplateTarget (Prelude.Maybe Prelude.Text)+experimentTemplateTarget_resourceType = Lens.lens (\ExperimentTemplateTarget' {resourceType} -> resourceType) (\s@ExperimentTemplateTarget' {} a -> s {resourceType = a} :: ExperimentTemplateTarget)++-- | Scopes the identified resources to a specific count or percentage.+experimentTemplateTarget_selectionMode :: Lens.Lens' ExperimentTemplateTarget (Prelude.Maybe Prelude.Text)+experimentTemplateTarget_selectionMode = Lens.lens (\ExperimentTemplateTarget' {selectionMode} -> selectionMode) (\s@ExperimentTemplateTarget' {} a -> s {selectionMode = a} :: ExperimentTemplateTarget)++instance Data.FromJSON ExperimentTemplateTarget where+  parseJSON =+    Data.withObject+      "ExperimentTemplateTarget"+      ( \x ->+          ExperimentTemplateTarget'+            Prelude.<$> (x Data..:? "filters" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "parameters" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "resourceArns" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "resourceTags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "resourceType")+            Prelude.<*> (x Data..:? "selectionMode")+      )++instance Prelude.Hashable ExperimentTemplateTarget where+  hashWithSalt _salt ExperimentTemplateTarget' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` parameters+      `Prelude.hashWithSalt` resourceArns+      `Prelude.hashWithSalt` resourceTags+      `Prelude.hashWithSalt` resourceType+      `Prelude.hashWithSalt` selectionMode++instance Prelude.NFData ExperimentTemplateTarget where+  rnf ExperimentTemplateTarget' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf parameters+      `Prelude.seq` Prelude.rnf resourceArns+      `Prelude.seq` Prelude.rnf resourceTags+      `Prelude.seq` Prelude.rnf resourceType+      `Prelude.seq` Prelude.rnf selectionMode
+ gen/Amazonka/FIS/Types/ExperimentTemplateTargetFilter.hs view
@@ -0,0 +1,93 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.ExperimentTemplateTargetFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentTemplateTargetFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes a filter used for the target resources in an experiment+-- template.+--+-- /See:/ 'newExperimentTemplateTargetFilter' smart constructor.+data ExperimentTemplateTargetFilter = ExperimentTemplateTargetFilter'+  { -- | The attribute path for the filter.+    path :: Prelude.Maybe Prelude.Text,+    -- | The attribute values for the filter.+    values :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentTemplateTargetFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'path', 'experimentTemplateTargetFilter_path' - The attribute path for the filter.+--+-- 'values', 'experimentTemplateTargetFilter_values' - The attribute values for the filter.+newExperimentTemplateTargetFilter ::+  ExperimentTemplateTargetFilter+newExperimentTemplateTargetFilter =+  ExperimentTemplateTargetFilter'+    { path =+        Prelude.Nothing,+      values = Prelude.Nothing+    }++-- | The attribute path for the filter.+experimentTemplateTargetFilter_path :: Lens.Lens' ExperimentTemplateTargetFilter (Prelude.Maybe Prelude.Text)+experimentTemplateTargetFilter_path = Lens.lens (\ExperimentTemplateTargetFilter' {path} -> path) (\s@ExperimentTemplateTargetFilter' {} a -> s {path = a} :: ExperimentTemplateTargetFilter)++-- | The attribute values for the filter.+experimentTemplateTargetFilter_values :: Lens.Lens' ExperimentTemplateTargetFilter (Prelude.Maybe [Prelude.Text])+experimentTemplateTargetFilter_values = Lens.lens (\ExperimentTemplateTargetFilter' {values} -> values) (\s@ExperimentTemplateTargetFilter' {} a -> s {values = a} :: ExperimentTemplateTargetFilter) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ExperimentTemplateTargetFilter where+  parseJSON =+    Data.withObject+      "ExperimentTemplateTargetFilter"+      ( \x ->+          ExperimentTemplateTargetFilter'+            Prelude.<$> (x Data..:? "path")+            Prelude.<*> (x Data..:? "values" Data..!= Prelude.mempty)+      )++instance+  Prelude.Hashable+    ExperimentTemplateTargetFilter+  where+  hashWithSalt+    _salt+    ExperimentTemplateTargetFilter' {..} =+      _salt+        `Prelude.hashWithSalt` path+        `Prelude.hashWithSalt` values++instance+  Prelude.NFData+    ExperimentTemplateTargetFilter+  where+  rnf ExperimentTemplateTargetFilter' {..} =+    Prelude.rnf path `Prelude.seq` Prelude.rnf values
+ gen/Amazonka/FIS/Types/ExperimentTemplateTargetInputFilter.hs view
@@ -0,0 +1,100 @@+{-# 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.FIS.Types.ExperimentTemplateTargetInputFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.ExperimentTemplateTargetInputFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies a filter used for the target resource input in an experiment+-- template.+--+-- For more information, see+-- <https://docs.aws.amazon.com/fis/latest/userguide/targets.html#target-filters Resource filters>+-- in the /Fault Injection Simulator User Guide/.+--+-- /See:/ 'newExperimentTemplateTargetInputFilter' smart constructor.+data ExperimentTemplateTargetInputFilter = ExperimentTemplateTargetInputFilter'+  { -- | The attribute path for the filter.+    path :: Prelude.Text,+    -- | The attribute values for the filter.+    values :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExperimentTemplateTargetInputFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'path', 'experimentTemplateTargetInputFilter_path' - The attribute path for the filter.+--+-- 'values', 'experimentTemplateTargetInputFilter_values' - The attribute values for the filter.+newExperimentTemplateTargetInputFilter ::+  -- | 'path'+  Prelude.Text ->+  ExperimentTemplateTargetInputFilter+newExperimentTemplateTargetInputFilter pPath_ =+  ExperimentTemplateTargetInputFilter'+    { path = pPath_,+      values = Prelude.mempty+    }++-- | The attribute path for the filter.+experimentTemplateTargetInputFilter_path :: Lens.Lens' ExperimentTemplateTargetInputFilter Prelude.Text+experimentTemplateTargetInputFilter_path = Lens.lens (\ExperimentTemplateTargetInputFilter' {path} -> path) (\s@ExperimentTemplateTargetInputFilter' {} a -> s {path = a} :: ExperimentTemplateTargetInputFilter)++-- | The attribute values for the filter.+experimentTemplateTargetInputFilter_values :: Lens.Lens' ExperimentTemplateTargetInputFilter [Prelude.Text]+experimentTemplateTargetInputFilter_values = Lens.lens (\ExperimentTemplateTargetInputFilter' {values} -> values) (\s@ExperimentTemplateTargetInputFilter' {} a -> s {values = a} :: ExperimentTemplateTargetInputFilter) Prelude.. Lens.coerced++instance+  Prelude.Hashable+    ExperimentTemplateTargetInputFilter+  where+  hashWithSalt+    _salt+    ExperimentTemplateTargetInputFilter' {..} =+      _salt+        `Prelude.hashWithSalt` path+        `Prelude.hashWithSalt` values++instance+  Prelude.NFData+    ExperimentTemplateTargetInputFilter+  where+  rnf ExperimentTemplateTargetInputFilter' {..} =+    Prelude.rnf path `Prelude.seq` Prelude.rnf values++instance+  Data.ToJSON+    ExperimentTemplateTargetInputFilter+  where+  toJSON ExperimentTemplateTargetInputFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("path" Data..= path),+            Prelude.Just ("values" Data..= values)+          ]+      )
+ gen/Amazonka/FIS/Types/TargetResourceType.hs view
@@ -0,0 +1,97 @@+{-# 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.FIS.Types.TargetResourceType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.TargetResourceType where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.TargetResourceTypeParameter+import qualified Amazonka.Prelude as Prelude++-- | Describes a resource type.+--+-- /See:/ 'newTargetResourceType' smart constructor.+data TargetResourceType = TargetResourceType'+  { -- | A description of the resource type.+    description :: Prelude.Maybe Prelude.Text,+    -- | The parameters for the resource type.+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text TargetResourceTypeParameter),+    -- | The resource type.+    resourceType :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TargetResourceType' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'targetResourceType_description' - A description of the resource type.+--+-- 'parameters', 'targetResourceType_parameters' - The parameters for the resource type.+--+-- 'resourceType', 'targetResourceType_resourceType' - The resource type.+newTargetResourceType ::+  TargetResourceType+newTargetResourceType =+  TargetResourceType'+    { description = Prelude.Nothing,+      parameters = Prelude.Nothing,+      resourceType = Prelude.Nothing+    }++-- | A description of the resource type.+targetResourceType_description :: Lens.Lens' TargetResourceType (Prelude.Maybe Prelude.Text)+targetResourceType_description = Lens.lens (\TargetResourceType' {description} -> description) (\s@TargetResourceType' {} a -> s {description = a} :: TargetResourceType)++-- | The parameters for the resource type.+targetResourceType_parameters :: Lens.Lens' TargetResourceType (Prelude.Maybe (Prelude.HashMap Prelude.Text TargetResourceTypeParameter))+targetResourceType_parameters = Lens.lens (\TargetResourceType' {parameters} -> parameters) (\s@TargetResourceType' {} a -> s {parameters = a} :: TargetResourceType) Prelude.. Lens.mapping Lens.coerced++-- | The resource type.+targetResourceType_resourceType :: Lens.Lens' TargetResourceType (Prelude.Maybe Prelude.Text)+targetResourceType_resourceType = Lens.lens (\TargetResourceType' {resourceType} -> resourceType) (\s@TargetResourceType' {} a -> s {resourceType = a} :: TargetResourceType)++instance Data.FromJSON TargetResourceType where+  parseJSON =+    Data.withObject+      "TargetResourceType"+      ( \x ->+          TargetResourceType'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> (x Data..:? "parameters" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "resourceType")+      )++instance Prelude.Hashable TargetResourceType where+  hashWithSalt _salt TargetResourceType' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` parameters+      `Prelude.hashWithSalt` resourceType++instance Prelude.NFData TargetResourceType where+  rnf TargetResourceType' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf parameters+      `Prelude.seq` Prelude.rnf resourceType
+ gen/Amazonka/FIS/Types/TargetResourceTypeParameter.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.TargetResourceTypeParameter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.TargetResourceTypeParameter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes the parameters for a resource type. Use parameters to+-- determine which tasks are identified during target resolution.+--+-- /See:/ 'newTargetResourceTypeParameter' smart constructor.+data TargetResourceTypeParameter = TargetResourceTypeParameter'+  { -- | A description of the parameter.+    description :: Prelude.Maybe Prelude.Text,+    -- | Indicates whether the parameter is required.+    required :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TargetResourceTypeParameter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'targetResourceTypeParameter_description' - A description of the parameter.+--+-- 'required', 'targetResourceTypeParameter_required' - Indicates whether the parameter is required.+newTargetResourceTypeParameter ::+  TargetResourceTypeParameter+newTargetResourceTypeParameter =+  TargetResourceTypeParameter'+    { description =+        Prelude.Nothing,+      required = Prelude.Nothing+    }++-- | A description of the parameter.+targetResourceTypeParameter_description :: Lens.Lens' TargetResourceTypeParameter (Prelude.Maybe Prelude.Text)+targetResourceTypeParameter_description = Lens.lens (\TargetResourceTypeParameter' {description} -> description) (\s@TargetResourceTypeParameter' {} a -> s {description = a} :: TargetResourceTypeParameter)++-- | Indicates whether the parameter is required.+targetResourceTypeParameter_required :: Lens.Lens' TargetResourceTypeParameter (Prelude.Maybe Prelude.Bool)+targetResourceTypeParameter_required = Lens.lens (\TargetResourceTypeParameter' {required} -> required) (\s@TargetResourceTypeParameter' {} a -> s {required = a} :: TargetResourceTypeParameter)++instance Data.FromJSON TargetResourceTypeParameter where+  parseJSON =+    Data.withObject+      "TargetResourceTypeParameter"+      ( \x ->+          TargetResourceTypeParameter'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> (x Data..:? "required")+      )++instance Prelude.Hashable TargetResourceTypeParameter where+  hashWithSalt _salt TargetResourceTypeParameter' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` required++instance Prelude.NFData TargetResourceTypeParameter where+  rnf TargetResourceTypeParameter' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf required
+ gen/Amazonka/FIS/Types/TargetResourceTypeSummary.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.FIS.Types.TargetResourceTypeSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.TargetResourceTypeSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes a resource type.+--+-- /See:/ 'newTargetResourceTypeSummary' smart constructor.+data TargetResourceTypeSummary = TargetResourceTypeSummary'+  { -- | A description of the resource type.+    description :: Prelude.Maybe Prelude.Text,+    -- | The resource type.+    resourceType :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TargetResourceTypeSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'targetResourceTypeSummary_description' - A description of the resource type.+--+-- 'resourceType', 'targetResourceTypeSummary_resourceType' - The resource type.+newTargetResourceTypeSummary ::+  TargetResourceTypeSummary+newTargetResourceTypeSummary =+  TargetResourceTypeSummary'+    { description =+        Prelude.Nothing,+      resourceType = Prelude.Nothing+    }++-- | A description of the resource type.+targetResourceTypeSummary_description :: Lens.Lens' TargetResourceTypeSummary (Prelude.Maybe Prelude.Text)+targetResourceTypeSummary_description = Lens.lens (\TargetResourceTypeSummary' {description} -> description) (\s@TargetResourceTypeSummary' {} a -> s {description = a} :: TargetResourceTypeSummary)++-- | The resource type.+targetResourceTypeSummary_resourceType :: Lens.Lens' TargetResourceTypeSummary (Prelude.Maybe Prelude.Text)+targetResourceTypeSummary_resourceType = Lens.lens (\TargetResourceTypeSummary' {resourceType} -> resourceType) (\s@TargetResourceTypeSummary' {} a -> s {resourceType = a} :: TargetResourceTypeSummary)++instance Data.FromJSON TargetResourceTypeSummary where+  parseJSON =+    Data.withObject+      "TargetResourceTypeSummary"+      ( \x ->+          TargetResourceTypeSummary'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> (x Data..:? "resourceType")+      )++instance Prelude.Hashable TargetResourceTypeSummary where+  hashWithSalt _salt TargetResourceTypeSummary' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` resourceType++instance Prelude.NFData TargetResourceTypeSummary where+  rnf TargetResourceTypeSummary' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf resourceType
+ gen/Amazonka/FIS/Types/UpdateExperimentTemplateActionInputItem.hs view
@@ -0,0 +1,137 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.UpdateExperimentTemplateActionInputItem+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.UpdateExperimentTemplateActionInputItem where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies an action for an experiment template.+--+-- /See:/ 'newUpdateExperimentTemplateActionInputItem' smart constructor.+data UpdateExperimentTemplateActionInputItem = UpdateExperimentTemplateActionInputItem'+  { -- | The ID of the action.+    actionId :: Prelude.Maybe Prelude.Text,+    -- | A description for the action.+    description :: Prelude.Maybe Prelude.Text,+    -- | The parameters for the action, if applicable.+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name of the action that must be completed before the current action+    -- starts. Omit this parameter to run the action at the start of the+    -- experiment.+    startAfter :: Prelude.Maybe [Prelude.Text],+    -- | The targets for the action.+    targets :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateExperimentTemplateActionInputItem' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'actionId', 'updateExperimentTemplateActionInputItem_actionId' - The ID of the action.+--+-- 'description', 'updateExperimentTemplateActionInputItem_description' - A description for the action.+--+-- 'parameters', 'updateExperimentTemplateActionInputItem_parameters' - The parameters for the action, if applicable.+--+-- 'startAfter', 'updateExperimentTemplateActionInputItem_startAfter' - The name of the action that must be completed before the current action+-- starts. Omit this parameter to run the action at the start of the+-- experiment.+--+-- 'targets', 'updateExperimentTemplateActionInputItem_targets' - The targets for the action.+newUpdateExperimentTemplateActionInputItem ::+  UpdateExperimentTemplateActionInputItem+newUpdateExperimentTemplateActionInputItem =+  UpdateExperimentTemplateActionInputItem'+    { actionId =+        Prelude.Nothing,+      description = Prelude.Nothing,+      parameters = Prelude.Nothing,+      startAfter = Prelude.Nothing,+      targets = Prelude.Nothing+    }++-- | The ID of the action.+updateExperimentTemplateActionInputItem_actionId :: Lens.Lens' UpdateExperimentTemplateActionInputItem (Prelude.Maybe Prelude.Text)+updateExperimentTemplateActionInputItem_actionId = Lens.lens (\UpdateExperimentTemplateActionInputItem' {actionId} -> actionId) (\s@UpdateExperimentTemplateActionInputItem' {} a -> s {actionId = a} :: UpdateExperimentTemplateActionInputItem)++-- | A description for the action.+updateExperimentTemplateActionInputItem_description :: Lens.Lens' UpdateExperimentTemplateActionInputItem (Prelude.Maybe Prelude.Text)+updateExperimentTemplateActionInputItem_description = Lens.lens (\UpdateExperimentTemplateActionInputItem' {description} -> description) (\s@UpdateExperimentTemplateActionInputItem' {} a -> s {description = a} :: UpdateExperimentTemplateActionInputItem)++-- | The parameters for the action, if applicable.+updateExperimentTemplateActionInputItem_parameters :: Lens.Lens' UpdateExperimentTemplateActionInputItem (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+updateExperimentTemplateActionInputItem_parameters = Lens.lens (\UpdateExperimentTemplateActionInputItem' {parameters} -> parameters) (\s@UpdateExperimentTemplateActionInputItem' {} a -> s {parameters = a} :: UpdateExperimentTemplateActionInputItem) Prelude.. Lens.mapping Lens.coerced++-- | The name of the action that must be completed before the current action+-- starts. Omit this parameter to run the action at the start of the+-- experiment.+updateExperimentTemplateActionInputItem_startAfter :: Lens.Lens' UpdateExperimentTemplateActionInputItem (Prelude.Maybe [Prelude.Text])+updateExperimentTemplateActionInputItem_startAfter = Lens.lens (\UpdateExperimentTemplateActionInputItem' {startAfter} -> startAfter) (\s@UpdateExperimentTemplateActionInputItem' {} a -> s {startAfter = a} :: UpdateExperimentTemplateActionInputItem) Prelude.. Lens.mapping Lens.coerced++-- | The targets for the action.+updateExperimentTemplateActionInputItem_targets :: Lens.Lens' UpdateExperimentTemplateActionInputItem (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+updateExperimentTemplateActionInputItem_targets = Lens.lens (\UpdateExperimentTemplateActionInputItem' {targets} -> targets) (\s@UpdateExperimentTemplateActionInputItem' {} a -> s {targets = a} :: UpdateExperimentTemplateActionInputItem) Prelude.. Lens.mapping Lens.coerced++instance+  Prelude.Hashable+    UpdateExperimentTemplateActionInputItem+  where+  hashWithSalt+    _salt+    UpdateExperimentTemplateActionInputItem' {..} =+      _salt+        `Prelude.hashWithSalt` actionId+        `Prelude.hashWithSalt` description+        `Prelude.hashWithSalt` parameters+        `Prelude.hashWithSalt` startAfter+        `Prelude.hashWithSalt` targets++instance+  Prelude.NFData+    UpdateExperimentTemplateActionInputItem+  where+  rnf UpdateExperimentTemplateActionInputItem' {..} =+    Prelude.rnf actionId+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf parameters+      `Prelude.seq` Prelude.rnf startAfter+      `Prelude.seq` Prelude.rnf targets++instance+  Data.ToJSON+    UpdateExperimentTemplateActionInputItem+  where+  toJSON UpdateExperimentTemplateActionInputItem' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("actionId" Data..=) Prelude.<$> actionId,+            ("description" Data..=) Prelude.<$> description,+            ("parameters" Data..=) Prelude.<$> parameters,+            ("startAfter" Data..=) Prelude.<$> startAfter,+            ("targets" Data..=) Prelude.<$> targets+          ]+      )
+ gen/Amazonka/FIS/Types/UpdateExperimentTemplateLogConfigurationInput.hs view
@@ -0,0 +1,116 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.UpdateExperimentTemplateLogConfigurationInput+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.UpdateExperimentTemplateLogConfigurationInput where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ExperimentTemplateCloudWatchLogsLogConfigurationInput+import Amazonka.FIS.Types.ExperimentTemplateS3LogConfigurationInput+import qualified Amazonka.Prelude as Prelude++-- | Specifies the configuration for experiment logging.+--+-- /See:/ 'newUpdateExperimentTemplateLogConfigurationInput' smart constructor.+data UpdateExperimentTemplateLogConfigurationInput = UpdateExperimentTemplateLogConfigurationInput'+  { -- | The configuration for experiment logging to Amazon CloudWatch Logs.+    cloudWatchLogsConfiguration :: Prelude.Maybe ExperimentTemplateCloudWatchLogsLogConfigurationInput,+    -- | The schema version.+    logSchemaVersion :: Prelude.Maybe Prelude.Int,+    -- | The configuration for experiment logging to Amazon S3.+    s3Configuration :: Prelude.Maybe ExperimentTemplateS3LogConfigurationInput+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateExperimentTemplateLogConfigurationInput' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cloudWatchLogsConfiguration', 'updateExperimentTemplateLogConfigurationInput_cloudWatchLogsConfiguration' - The configuration for experiment logging to Amazon CloudWatch Logs.+--+-- 'logSchemaVersion', 'updateExperimentTemplateLogConfigurationInput_logSchemaVersion' - The schema version.+--+-- 's3Configuration', 'updateExperimentTemplateLogConfigurationInput_s3Configuration' - The configuration for experiment logging to Amazon S3.+newUpdateExperimentTemplateLogConfigurationInput ::+  UpdateExperimentTemplateLogConfigurationInput+newUpdateExperimentTemplateLogConfigurationInput =+  UpdateExperimentTemplateLogConfigurationInput'+    { cloudWatchLogsConfiguration =+        Prelude.Nothing,+      logSchemaVersion =+        Prelude.Nothing,+      s3Configuration =+        Prelude.Nothing+    }++-- | The configuration for experiment logging to Amazon CloudWatch Logs.+updateExperimentTemplateLogConfigurationInput_cloudWatchLogsConfiguration :: Lens.Lens' UpdateExperimentTemplateLogConfigurationInput (Prelude.Maybe ExperimentTemplateCloudWatchLogsLogConfigurationInput)+updateExperimentTemplateLogConfigurationInput_cloudWatchLogsConfiguration = Lens.lens (\UpdateExperimentTemplateLogConfigurationInput' {cloudWatchLogsConfiguration} -> cloudWatchLogsConfiguration) (\s@UpdateExperimentTemplateLogConfigurationInput' {} a -> s {cloudWatchLogsConfiguration = a} :: UpdateExperimentTemplateLogConfigurationInput)++-- | The schema version.+updateExperimentTemplateLogConfigurationInput_logSchemaVersion :: Lens.Lens' UpdateExperimentTemplateLogConfigurationInput (Prelude.Maybe Prelude.Int)+updateExperimentTemplateLogConfigurationInput_logSchemaVersion = Lens.lens (\UpdateExperimentTemplateLogConfigurationInput' {logSchemaVersion} -> logSchemaVersion) (\s@UpdateExperimentTemplateLogConfigurationInput' {} a -> s {logSchemaVersion = a} :: UpdateExperimentTemplateLogConfigurationInput)++-- | The configuration for experiment logging to Amazon S3.+updateExperimentTemplateLogConfigurationInput_s3Configuration :: Lens.Lens' UpdateExperimentTemplateLogConfigurationInput (Prelude.Maybe ExperimentTemplateS3LogConfigurationInput)+updateExperimentTemplateLogConfigurationInput_s3Configuration = Lens.lens (\UpdateExperimentTemplateLogConfigurationInput' {s3Configuration} -> s3Configuration) (\s@UpdateExperimentTemplateLogConfigurationInput' {} a -> s {s3Configuration = a} :: UpdateExperimentTemplateLogConfigurationInput)++instance+  Prelude.Hashable+    UpdateExperimentTemplateLogConfigurationInput+  where+  hashWithSalt+    _salt+    UpdateExperimentTemplateLogConfigurationInput' {..} =+      _salt+        `Prelude.hashWithSalt` cloudWatchLogsConfiguration+        `Prelude.hashWithSalt` logSchemaVersion+        `Prelude.hashWithSalt` s3Configuration++instance+  Prelude.NFData+    UpdateExperimentTemplateLogConfigurationInput+  where+  rnf+    UpdateExperimentTemplateLogConfigurationInput' {..} =+      Prelude.rnf cloudWatchLogsConfiguration+        `Prelude.seq` Prelude.rnf logSchemaVersion+        `Prelude.seq` Prelude.rnf s3Configuration++instance+  Data.ToJSON+    UpdateExperimentTemplateLogConfigurationInput+  where+  toJSON+    UpdateExperimentTemplateLogConfigurationInput' {..} =+      Data.object+        ( Prelude.catMaybes+            [ ("cloudWatchLogsConfiguration" Data..=)+                Prelude.<$> cloudWatchLogsConfiguration,+              ("logSchemaVersion" Data..=)+                Prelude.<$> logSchemaVersion,+              ("s3Configuration" Data..=)+                Prelude.<$> s3Configuration+            ]+        )
+ gen/Amazonka/FIS/Types/UpdateExperimentTemplateStopConditionInput.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.FIS.Types.UpdateExperimentTemplateStopConditionInput+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.UpdateExperimentTemplateStopConditionInput where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies a stop condition for an experiment. You can define a stop+-- condition as a CloudWatch alarm.+--+-- /See:/ 'newUpdateExperimentTemplateStopConditionInput' smart constructor.+data UpdateExperimentTemplateStopConditionInput = UpdateExperimentTemplateStopConditionInput'+  { -- | The Amazon Resource Name (ARN) of the CloudWatch alarm.+    value :: Prelude.Maybe Prelude.Text,+    -- | The source for the stop condition. Specify @aws:cloudwatch:alarm@ if the+    -- stop condition is defined by a CloudWatch alarm. Specify @none@ if there+    -- is no stop condition.+    source :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateExperimentTemplateStopConditionInput' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'value', 'updateExperimentTemplateStopConditionInput_value' - The Amazon Resource Name (ARN) of the CloudWatch alarm.+--+-- 'source', 'updateExperimentTemplateStopConditionInput_source' - The source for the stop condition. Specify @aws:cloudwatch:alarm@ if the+-- stop condition is defined by a CloudWatch alarm. Specify @none@ if there+-- is no stop condition.+newUpdateExperimentTemplateStopConditionInput ::+  -- | 'source'+  Prelude.Text ->+  UpdateExperimentTemplateStopConditionInput+newUpdateExperimentTemplateStopConditionInput+  pSource_ =+    UpdateExperimentTemplateStopConditionInput'+      { value =+          Prelude.Nothing,+        source = pSource_+      }++-- | The Amazon Resource Name (ARN) of the CloudWatch alarm.+updateExperimentTemplateStopConditionInput_value :: Lens.Lens' UpdateExperimentTemplateStopConditionInput (Prelude.Maybe Prelude.Text)+updateExperimentTemplateStopConditionInput_value = Lens.lens (\UpdateExperimentTemplateStopConditionInput' {value} -> value) (\s@UpdateExperimentTemplateStopConditionInput' {} a -> s {value = a} :: UpdateExperimentTemplateStopConditionInput)++-- | The source for the stop condition. Specify @aws:cloudwatch:alarm@ if the+-- stop condition is defined by a CloudWatch alarm. Specify @none@ if there+-- is no stop condition.+updateExperimentTemplateStopConditionInput_source :: Lens.Lens' UpdateExperimentTemplateStopConditionInput Prelude.Text+updateExperimentTemplateStopConditionInput_source = Lens.lens (\UpdateExperimentTemplateStopConditionInput' {source} -> source) (\s@UpdateExperimentTemplateStopConditionInput' {} a -> s {source = a} :: UpdateExperimentTemplateStopConditionInput)++instance+  Prelude.Hashable+    UpdateExperimentTemplateStopConditionInput+  where+  hashWithSalt+    _salt+    UpdateExperimentTemplateStopConditionInput' {..} =+      _salt+        `Prelude.hashWithSalt` value+        `Prelude.hashWithSalt` source++instance+  Prelude.NFData+    UpdateExperimentTemplateStopConditionInput+  where+  rnf UpdateExperimentTemplateStopConditionInput' {..} =+    Prelude.rnf value `Prelude.seq` Prelude.rnf source++instance+  Data.ToJSON+    UpdateExperimentTemplateStopConditionInput+  where+  toJSON+    UpdateExperimentTemplateStopConditionInput' {..} =+      Data.object+        ( Prelude.catMaybes+            [ ("value" Data..=) Prelude.<$> value,+              Prelude.Just ("source" Data..= source)+            ]+        )
+ gen/Amazonka/FIS/Types/UpdateExperimentTemplateTargetInput.hs view
@@ -0,0 +1,159 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.FIS.Types.UpdateExperimentTemplateTargetInput+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.FIS.Types.UpdateExperimentTemplateTargetInput where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types.ExperimentTemplateTargetInputFilter+import qualified Amazonka.Prelude as Prelude++-- | Specifies a target for an experiment. You must specify at least one+-- Amazon Resource Name (ARN) or at least one resource tag. You cannot+-- specify both.+--+-- /See:/ 'newUpdateExperimentTemplateTargetInput' smart constructor.+data UpdateExperimentTemplateTargetInput = UpdateExperimentTemplateTargetInput'+  { -- | The filters to apply to identify target resources using specific+    -- attributes.+    filters :: Prelude.Maybe [ExperimentTemplateTargetInputFilter],+    -- | The resource type parameters.+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The Amazon Resource Names (ARNs) of the targets.+    resourceArns :: Prelude.Maybe [Prelude.Text],+    -- | The tags for the target resources.+    resourceTags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The resource type. The resource type must be supported for the specified+    -- action.+    resourceType :: Prelude.Text,+    -- | Scopes the identified resources to a specific count or percentage.+    selectionMode :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateExperimentTemplateTargetInput' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filters', 'updateExperimentTemplateTargetInput_filters' - The filters to apply to identify target resources using specific+-- attributes.+--+-- 'parameters', 'updateExperimentTemplateTargetInput_parameters' - The resource type parameters.+--+-- 'resourceArns', 'updateExperimentTemplateTargetInput_resourceArns' - The Amazon Resource Names (ARNs) of the targets.+--+-- 'resourceTags', 'updateExperimentTemplateTargetInput_resourceTags' - The tags for the target resources.+--+-- 'resourceType', 'updateExperimentTemplateTargetInput_resourceType' - The resource type. The resource type must be supported for the specified+-- action.+--+-- 'selectionMode', 'updateExperimentTemplateTargetInput_selectionMode' - Scopes the identified resources to a specific count or percentage.+newUpdateExperimentTemplateTargetInput ::+  -- | 'resourceType'+  Prelude.Text ->+  -- | 'selectionMode'+  Prelude.Text ->+  UpdateExperimentTemplateTargetInput+newUpdateExperimentTemplateTargetInput+  pResourceType_+  pSelectionMode_ =+    UpdateExperimentTemplateTargetInput'+      { filters =+          Prelude.Nothing,+        parameters = Prelude.Nothing,+        resourceArns = Prelude.Nothing,+        resourceTags = Prelude.Nothing,+        resourceType = pResourceType_,+        selectionMode = pSelectionMode_+      }++-- | The filters to apply to identify target resources using specific+-- attributes.+updateExperimentTemplateTargetInput_filters :: Lens.Lens' UpdateExperimentTemplateTargetInput (Prelude.Maybe [ExperimentTemplateTargetInputFilter])+updateExperimentTemplateTargetInput_filters = Lens.lens (\UpdateExperimentTemplateTargetInput' {filters} -> filters) (\s@UpdateExperimentTemplateTargetInput' {} a -> s {filters = a} :: UpdateExperimentTemplateTargetInput) Prelude.. Lens.mapping Lens.coerced++-- | The resource type parameters.+updateExperimentTemplateTargetInput_parameters :: Lens.Lens' UpdateExperimentTemplateTargetInput (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+updateExperimentTemplateTargetInput_parameters = Lens.lens (\UpdateExperimentTemplateTargetInput' {parameters} -> parameters) (\s@UpdateExperimentTemplateTargetInput' {} a -> s {parameters = a} :: UpdateExperimentTemplateTargetInput) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Names (ARNs) of the targets.+updateExperimentTemplateTargetInput_resourceArns :: Lens.Lens' UpdateExperimentTemplateTargetInput (Prelude.Maybe [Prelude.Text])+updateExperimentTemplateTargetInput_resourceArns = Lens.lens (\UpdateExperimentTemplateTargetInput' {resourceArns} -> resourceArns) (\s@UpdateExperimentTemplateTargetInput' {} a -> s {resourceArns = a} :: UpdateExperimentTemplateTargetInput) Prelude.. Lens.mapping Lens.coerced++-- | The tags for the target resources.+updateExperimentTemplateTargetInput_resourceTags :: Lens.Lens' UpdateExperimentTemplateTargetInput (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+updateExperimentTemplateTargetInput_resourceTags = Lens.lens (\UpdateExperimentTemplateTargetInput' {resourceTags} -> resourceTags) (\s@UpdateExperimentTemplateTargetInput' {} a -> s {resourceTags = a} :: UpdateExperimentTemplateTargetInput) Prelude.. Lens.mapping Lens.coerced++-- | The resource type. The resource type must be supported for the specified+-- action.+updateExperimentTemplateTargetInput_resourceType :: Lens.Lens' UpdateExperimentTemplateTargetInput Prelude.Text+updateExperimentTemplateTargetInput_resourceType = Lens.lens (\UpdateExperimentTemplateTargetInput' {resourceType} -> resourceType) (\s@UpdateExperimentTemplateTargetInput' {} a -> s {resourceType = a} :: UpdateExperimentTemplateTargetInput)++-- | Scopes the identified resources to a specific count or percentage.+updateExperimentTemplateTargetInput_selectionMode :: Lens.Lens' UpdateExperimentTemplateTargetInput Prelude.Text+updateExperimentTemplateTargetInput_selectionMode = Lens.lens (\UpdateExperimentTemplateTargetInput' {selectionMode} -> selectionMode) (\s@UpdateExperimentTemplateTargetInput' {} a -> s {selectionMode = a} :: UpdateExperimentTemplateTargetInput)++instance+  Prelude.Hashable+    UpdateExperimentTemplateTargetInput+  where+  hashWithSalt+    _salt+    UpdateExperimentTemplateTargetInput' {..} =+      _salt+        `Prelude.hashWithSalt` filters+        `Prelude.hashWithSalt` parameters+        `Prelude.hashWithSalt` resourceArns+        `Prelude.hashWithSalt` resourceTags+        `Prelude.hashWithSalt` resourceType+        `Prelude.hashWithSalt` selectionMode++instance+  Prelude.NFData+    UpdateExperimentTemplateTargetInput+  where+  rnf UpdateExperimentTemplateTargetInput' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf parameters+      `Prelude.seq` Prelude.rnf resourceArns+      `Prelude.seq` Prelude.rnf resourceTags+      `Prelude.seq` Prelude.rnf resourceType+      `Prelude.seq` Prelude.rnf selectionMode++instance+  Data.ToJSON+    UpdateExperimentTemplateTargetInput+  where+  toJSON UpdateExperimentTemplateTargetInput' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filters" Data..=) Prelude.<$> filters,+            ("parameters" Data..=) Prelude.<$> parameters,+            ("resourceArns" Data..=) Prelude.<$> resourceArns,+            ("resourceTags" Data..=) Prelude.<$> resourceTags,+            Prelude.Just ("resourceType" Data..= resourceType),+            Prelude.Just+              ("selectionMode" Data..= selectionMode)+          ]+      )
+ gen/Amazonka/FIS/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.FIS.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 the specified tags from the specified resource.+module Amazonka.FIS.UntagResource+  ( -- * Creating a Request+    UntagResource (..),+    newUntagResource,++    -- * Request Lenses+    untagResource_tagKeys,+    untagResource_resourceArn,++    -- * 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.FIS.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 tag keys to remove.+    tagKeys :: Prelude.Maybe [Prelude.Text],+    -- | The Amazon Resource Name (ARN) of the resource.+    resourceArn :: 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:+--+-- 'tagKeys', 'untagResource_tagKeys' - The tag keys to remove.+--+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource.+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ =+  UntagResource'+    { tagKeys = Prelude.Nothing,+      resourceArn = pResourceArn_+    }++-- | The tag keys to remove.+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.Maybe [Prelude.Text])+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Name (ARN) of the resource.+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++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` tagKeys+      `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData UntagResource where+  rnf UntagResource' {..} =+    Prelude.rnf tagKeys+      `Prelude.seq` Prelude.rnf resourceArn++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.toQuery+            (Data.toQueryList "member" Prelude.<$> 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/FIS/UpdateExperimentTemplate.hs view
@@ -0,0 +1,257 @@+{-# 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.FIS.UpdateExperimentTemplate+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the specified experiment template.+module Amazonka.FIS.UpdateExperimentTemplate+  ( -- * Creating a Request+    UpdateExperimentTemplate (..),+    newUpdateExperimentTemplate,++    -- * Request Lenses+    updateExperimentTemplate_actions,+    updateExperimentTemplate_description,+    updateExperimentTemplate_logConfiguration,+    updateExperimentTemplate_roleArn,+    updateExperimentTemplate_stopConditions,+    updateExperimentTemplate_targets,+    updateExperimentTemplate_id,++    -- * Destructuring the Response+    UpdateExperimentTemplateResponse (..),+    newUpdateExperimentTemplateResponse,++    -- * Response Lenses+    updateExperimentTemplateResponse_experimentTemplate,+    updateExperimentTemplateResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateExperimentTemplate' smart constructor.+data UpdateExperimentTemplate = UpdateExperimentTemplate'+  { -- | The actions for the experiment.+    actions :: Prelude.Maybe (Prelude.HashMap Prelude.Text UpdateExperimentTemplateActionInputItem),+    -- | A description for the template.+    description :: Prelude.Maybe Prelude.Text,+    -- | The configuration for experiment logging.+    logConfiguration :: Prelude.Maybe UpdateExperimentTemplateLogConfigurationInput,+    -- | The Amazon Resource Name (ARN) of an IAM role that grants the FIS+    -- service permission to perform service actions on your behalf.+    roleArn :: Prelude.Maybe Prelude.Text,+    -- | The stop conditions for the experiment.+    stopConditions :: Prelude.Maybe [UpdateExperimentTemplateStopConditionInput],+    -- | The targets for the experiment.+    targets :: Prelude.Maybe (Prelude.HashMap Prelude.Text UpdateExperimentTemplateTargetInput),+    -- | The ID of the experiment template.+    id :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateExperimentTemplate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'actions', 'updateExperimentTemplate_actions' - The actions for the experiment.+--+-- 'description', 'updateExperimentTemplate_description' - A description for the template.+--+-- 'logConfiguration', 'updateExperimentTemplate_logConfiguration' - The configuration for experiment logging.+--+-- 'roleArn', 'updateExperimentTemplate_roleArn' - The Amazon Resource Name (ARN) of an IAM role that grants the FIS+-- service permission to perform service actions on your behalf.+--+-- 'stopConditions', 'updateExperimentTemplate_stopConditions' - The stop conditions for the experiment.+--+-- 'targets', 'updateExperimentTemplate_targets' - The targets for the experiment.+--+-- 'id', 'updateExperimentTemplate_id' - The ID of the experiment template.+newUpdateExperimentTemplate ::+  -- | 'id'+  Prelude.Text ->+  UpdateExperimentTemplate+newUpdateExperimentTemplate pId_ =+  UpdateExperimentTemplate'+    { actions =+        Prelude.Nothing,+      description = Prelude.Nothing,+      logConfiguration = Prelude.Nothing,+      roleArn = Prelude.Nothing,+      stopConditions = Prelude.Nothing,+      targets = Prelude.Nothing,+      id = pId_+    }++-- | The actions for the experiment.+updateExperimentTemplate_actions :: Lens.Lens' UpdateExperimentTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text UpdateExperimentTemplateActionInputItem))+updateExperimentTemplate_actions = Lens.lens (\UpdateExperimentTemplate' {actions} -> actions) (\s@UpdateExperimentTemplate' {} a -> s {actions = a} :: UpdateExperimentTemplate) Prelude.. Lens.mapping Lens.coerced++-- | A description for the template.+updateExperimentTemplate_description :: Lens.Lens' UpdateExperimentTemplate (Prelude.Maybe Prelude.Text)+updateExperimentTemplate_description = Lens.lens (\UpdateExperimentTemplate' {description} -> description) (\s@UpdateExperimentTemplate' {} a -> s {description = a} :: UpdateExperimentTemplate)++-- | The configuration for experiment logging.+updateExperimentTemplate_logConfiguration :: Lens.Lens' UpdateExperimentTemplate (Prelude.Maybe UpdateExperimentTemplateLogConfigurationInput)+updateExperimentTemplate_logConfiguration = Lens.lens (\UpdateExperimentTemplate' {logConfiguration} -> logConfiguration) (\s@UpdateExperimentTemplate' {} a -> s {logConfiguration = a} :: UpdateExperimentTemplate)++-- | The Amazon Resource Name (ARN) of an IAM role that grants the FIS+-- service permission to perform service actions on your behalf.+updateExperimentTemplate_roleArn :: Lens.Lens' UpdateExperimentTemplate (Prelude.Maybe Prelude.Text)+updateExperimentTemplate_roleArn = Lens.lens (\UpdateExperimentTemplate' {roleArn} -> roleArn) (\s@UpdateExperimentTemplate' {} a -> s {roleArn = a} :: UpdateExperimentTemplate)++-- | The stop conditions for the experiment.+updateExperimentTemplate_stopConditions :: Lens.Lens' UpdateExperimentTemplate (Prelude.Maybe [UpdateExperimentTemplateStopConditionInput])+updateExperimentTemplate_stopConditions = Lens.lens (\UpdateExperimentTemplate' {stopConditions} -> stopConditions) (\s@UpdateExperimentTemplate' {} a -> s {stopConditions = a} :: UpdateExperimentTemplate) Prelude.. Lens.mapping Lens.coerced++-- | The targets for the experiment.+updateExperimentTemplate_targets :: Lens.Lens' UpdateExperimentTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text UpdateExperimentTemplateTargetInput))+updateExperimentTemplate_targets = Lens.lens (\UpdateExperimentTemplate' {targets} -> targets) (\s@UpdateExperimentTemplate' {} a -> s {targets = a} :: UpdateExperimentTemplate) Prelude.. Lens.mapping Lens.coerced++-- | The ID of the experiment template.+updateExperimentTemplate_id :: Lens.Lens' UpdateExperimentTemplate Prelude.Text+updateExperimentTemplate_id = Lens.lens (\UpdateExperimentTemplate' {id} -> id) (\s@UpdateExperimentTemplate' {} a -> s {id = a} :: UpdateExperimentTemplate)++instance Core.AWSRequest UpdateExperimentTemplate where+  type+    AWSResponse UpdateExperimentTemplate =+      UpdateExperimentTemplateResponse+  request overrides =+    Request.patchJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateExperimentTemplateResponse'+            Prelude.<$> (x Data..?> "experimentTemplate")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateExperimentTemplate where+  hashWithSalt _salt UpdateExperimentTemplate' {..} =+    _salt+      `Prelude.hashWithSalt` actions+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` logConfiguration+      `Prelude.hashWithSalt` roleArn+      `Prelude.hashWithSalt` stopConditions+      `Prelude.hashWithSalt` targets+      `Prelude.hashWithSalt` id++instance Prelude.NFData UpdateExperimentTemplate where+  rnf UpdateExperimentTemplate' {..} =+    Prelude.rnf actions+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf logConfiguration+      `Prelude.seq` Prelude.rnf roleArn+      `Prelude.seq` Prelude.rnf stopConditions+      `Prelude.seq` Prelude.rnf targets+      `Prelude.seq` Prelude.rnf id++instance Data.ToHeaders UpdateExperimentTemplate where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateExperimentTemplate where+  toJSON UpdateExperimentTemplate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("actions" Data..=) Prelude.<$> actions,+            ("description" Data..=) Prelude.<$> description,+            ("logConfiguration" Data..=)+              Prelude.<$> logConfiguration,+            ("roleArn" Data..=) Prelude.<$> roleArn,+            ("stopConditions" Data..=)+              Prelude.<$> stopConditions,+            ("targets" Data..=) Prelude.<$> targets+          ]+      )++instance Data.ToPath UpdateExperimentTemplate where+  toPath UpdateExperimentTemplate' {..} =+    Prelude.mconcat+      ["/experimentTemplates/", Data.toBS id]++instance Data.ToQuery UpdateExperimentTemplate where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateExperimentTemplateResponse' smart constructor.+data UpdateExperimentTemplateResponse = UpdateExperimentTemplateResponse'+  { -- | Information about the experiment template.+    experimentTemplate :: Prelude.Maybe ExperimentTemplate,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateExperimentTemplateResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'experimentTemplate', 'updateExperimentTemplateResponse_experimentTemplate' - Information about the experiment template.+--+-- 'httpStatus', 'updateExperimentTemplateResponse_httpStatus' - The response's http status code.+newUpdateExperimentTemplateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateExperimentTemplateResponse+newUpdateExperimentTemplateResponse pHttpStatus_ =+  UpdateExperimentTemplateResponse'+    { experimentTemplate =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the experiment template.+updateExperimentTemplateResponse_experimentTemplate :: Lens.Lens' UpdateExperimentTemplateResponse (Prelude.Maybe ExperimentTemplate)+updateExperimentTemplateResponse_experimentTemplate = Lens.lens (\UpdateExperimentTemplateResponse' {experimentTemplate} -> experimentTemplate) (\s@UpdateExperimentTemplateResponse' {} a -> s {experimentTemplate = a} :: UpdateExperimentTemplateResponse)++-- | The response's http status code.+updateExperimentTemplateResponse_httpStatus :: Lens.Lens' UpdateExperimentTemplateResponse Prelude.Int+updateExperimentTemplateResponse_httpStatus = Lens.lens (\UpdateExperimentTemplateResponse' {httpStatus} -> httpStatus) (\s@UpdateExperimentTemplateResponse' {} a -> s {httpStatus = a} :: UpdateExperimentTemplateResponse)++instance+  Prelude.NFData+    UpdateExperimentTemplateResponse+  where+  rnf UpdateExperimentTemplateResponse' {..} =+    Prelude.rnf experimentTemplate+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/FIS/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.FIS.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.FIS.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.FIS.Lens+import Amazonka.FIS.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.FIS+import Test.Amazonka.FIS.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "FIS"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/FIS.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.FIS+-- Copyright   : (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.FIS+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/FIS/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.FIS.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.FIS.Internal where
+ test/Test/Amazonka/Gen/FIS.hs view
@@ -0,0 +1,358 @@+{-# 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.FIS+-- Copyright   : (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.FIS where++import Amazonka.FIS+import qualified Data.Proxy as Proxy+import Test.Amazonka.FIS.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"+--         [ requestCreateExperimentTemplate $+--             newCreateExperimentTemplate+--+--         , requestDeleteExperimentTemplate $+--             newDeleteExperimentTemplate+--+--         , requestGetAction $+--             newGetAction+--+--         , requestGetExperiment $+--             newGetExperiment+--+--         , requestGetExperimentTemplate $+--             newGetExperimentTemplate+--+--         , requestGetTargetResourceType $+--             newGetTargetResourceType+--+--         , requestListActions $+--             newListActions+--+--         , requestListExperimentTemplates $+--             newListExperimentTemplates+--+--         , requestListExperiments $+--             newListExperiments+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestListTargetResourceTypes $+--             newListTargetResourceTypes+--+--         , requestStartExperiment $+--             newStartExperiment+--+--         , requestStopExperiment $+--             newStopExperiment+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateExperimentTemplate $+--             newUpdateExperimentTemplate+--+--           ]++--     , testGroup "response"+--         [ responseCreateExperimentTemplate $+--             newCreateExperimentTemplateResponse+--+--         , responseDeleteExperimentTemplate $+--             newDeleteExperimentTemplateResponse+--+--         , responseGetAction $+--             newGetActionResponse+--+--         , responseGetExperiment $+--             newGetExperimentResponse+--+--         , responseGetExperimentTemplate $+--             newGetExperimentTemplateResponse+--+--         , responseGetTargetResourceType $+--             newGetTargetResourceTypeResponse+--+--         , responseListActions $+--             newListActionsResponse+--+--         , responseListExperimentTemplates $+--             newListExperimentTemplatesResponse+--+--         , responseListExperiments $+--             newListExperimentsResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responseListTargetResourceTypes $+--             newListTargetResourceTypesResponse+--+--         , responseStartExperiment $+--             newStartExperimentResponse+--+--         , responseStopExperiment $+--             newStopExperimentResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateExperimentTemplate $+--             newUpdateExperimentTemplateResponse+--+--           ]+--     ]++-- Requests++requestCreateExperimentTemplate :: CreateExperimentTemplate -> TestTree+requestCreateExperimentTemplate =+  req+    "CreateExperimentTemplate"+    "fixture/CreateExperimentTemplate.yaml"++requestDeleteExperimentTemplate :: DeleteExperimentTemplate -> TestTree+requestDeleteExperimentTemplate =+  req+    "DeleteExperimentTemplate"+    "fixture/DeleteExperimentTemplate.yaml"++requestGetAction :: GetAction -> TestTree+requestGetAction =+  req+    "GetAction"+    "fixture/GetAction.yaml"++requestGetExperiment :: GetExperiment -> TestTree+requestGetExperiment =+  req+    "GetExperiment"+    "fixture/GetExperiment.yaml"++requestGetExperimentTemplate :: GetExperimentTemplate -> TestTree+requestGetExperimentTemplate =+  req+    "GetExperimentTemplate"+    "fixture/GetExperimentTemplate.yaml"++requestGetTargetResourceType :: GetTargetResourceType -> TestTree+requestGetTargetResourceType =+  req+    "GetTargetResourceType"+    "fixture/GetTargetResourceType.yaml"++requestListActions :: ListActions -> TestTree+requestListActions =+  req+    "ListActions"+    "fixture/ListActions.yaml"++requestListExperimentTemplates :: ListExperimentTemplates -> TestTree+requestListExperimentTemplates =+  req+    "ListExperimentTemplates"+    "fixture/ListExperimentTemplates.yaml"++requestListExperiments :: ListExperiments -> TestTree+requestListExperiments =+  req+    "ListExperiments"+    "fixture/ListExperiments.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestListTargetResourceTypes :: ListTargetResourceTypes -> TestTree+requestListTargetResourceTypes =+  req+    "ListTargetResourceTypes"+    "fixture/ListTargetResourceTypes.yaml"++requestStartExperiment :: StartExperiment -> TestTree+requestStartExperiment =+  req+    "StartExperiment"+    "fixture/StartExperiment.yaml"++requestStopExperiment :: StopExperiment -> TestTree+requestStopExperiment =+  req+    "StopExperiment"+    "fixture/StopExperiment.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateExperimentTemplate :: UpdateExperimentTemplate -> TestTree+requestUpdateExperimentTemplate =+  req+    "UpdateExperimentTemplate"+    "fixture/UpdateExperimentTemplate.yaml"++-- Responses++responseCreateExperimentTemplate :: CreateExperimentTemplateResponse -> TestTree+responseCreateExperimentTemplate =+  res+    "CreateExperimentTemplateResponse"+    "fixture/CreateExperimentTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateExperimentTemplate)++responseDeleteExperimentTemplate :: DeleteExperimentTemplateResponse -> TestTree+responseDeleteExperimentTemplate =+  res+    "DeleteExperimentTemplateResponse"+    "fixture/DeleteExperimentTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteExperimentTemplate)++responseGetAction :: GetActionResponse -> TestTree+responseGetAction =+  res+    "GetActionResponse"+    "fixture/GetActionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetAction)++responseGetExperiment :: GetExperimentResponse -> TestTree+responseGetExperiment =+  res+    "GetExperimentResponse"+    "fixture/GetExperimentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetExperiment)++responseGetExperimentTemplate :: GetExperimentTemplateResponse -> TestTree+responseGetExperimentTemplate =+  res+    "GetExperimentTemplateResponse"+    "fixture/GetExperimentTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetExperimentTemplate)++responseGetTargetResourceType :: GetTargetResourceTypeResponse -> TestTree+responseGetTargetResourceType =+  res+    "GetTargetResourceTypeResponse"+    "fixture/GetTargetResourceTypeResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetTargetResourceType)++responseListActions :: ListActionsResponse -> TestTree+responseListActions =+  res+    "ListActionsResponse"+    "fixture/ListActionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListActions)++responseListExperimentTemplates :: ListExperimentTemplatesResponse -> TestTree+responseListExperimentTemplates =+  res+    "ListExperimentTemplatesResponse"+    "fixture/ListExperimentTemplatesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListExperimentTemplates)++responseListExperiments :: ListExperimentsResponse -> TestTree+responseListExperiments =+  res+    "ListExperimentsResponse"+    "fixture/ListExperimentsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListExperiments)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responseListTargetResourceTypes :: ListTargetResourceTypesResponse -> TestTree+responseListTargetResourceTypes =+  res+    "ListTargetResourceTypesResponse"+    "fixture/ListTargetResourceTypesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTargetResourceTypes)++responseStartExperiment :: StartExperimentResponse -> TestTree+responseStartExperiment =+  res+    "StartExperimentResponse"+    "fixture/StartExperimentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartExperiment)++responseStopExperiment :: StopExperimentResponse -> TestTree+responseStopExperiment =+  res+    "StopExperimentResponse"+    "fixture/StopExperimentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StopExperiment)++responseTagResource :: TagResourceResponse -> TestTree+responseTagResource =+  res+    "TagResourceResponse"+    "fixture/TagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy TagResource)++responseUntagResource :: UntagResourceResponse -> TestTree+responseUntagResource =+  res+    "UntagResourceResponse"+    "fixture/UntagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UntagResource)++responseUpdateExperimentTemplate :: UpdateExperimentTemplateResponse -> TestTree+responseUpdateExperimentTemplate =+  res+    "UpdateExperimentTemplateResponse"+    "fixture/UpdateExperimentTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateExperimentTemplate)