packages feed

amazonka-devops-guru (empty) → 2.0

raw patch · 217 files changed

+25109/−0 lines, 217 filesdep +amazonka-coredep +amazonka-devops-gurudep +amazonka-test

Dependencies added: amazonka-core, amazonka-devops-guru, 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 DevOps Guru 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-devops-guru)+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.DevOpsGuru](http://hackage.haskell.org/package/amazonka-devops-guru/docs/Amazonka-DevOpsGuru.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-devops-guru` 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-devops-guru.cabal view
@@ -0,0 +1,226 @@+cabal-version:      2.2+name:               amazonka-devops-guru+version:            2.0+synopsis:           Amazon DevOps Guru 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.DevOpsGuru.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.DevOpsGuru" 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-devops-guru++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.DevOpsGuru+    Amazonka.DevOpsGuru.AddNotificationChannel+    Amazonka.DevOpsGuru.DeleteInsight+    Amazonka.DevOpsGuru.DescribeAccountHealth+    Amazonka.DevOpsGuru.DescribeAccountOverview+    Amazonka.DevOpsGuru.DescribeAnomaly+    Amazonka.DevOpsGuru.DescribeEventSourcesConfig+    Amazonka.DevOpsGuru.DescribeFeedback+    Amazonka.DevOpsGuru.DescribeInsight+    Amazonka.DevOpsGuru.DescribeOrganizationHealth+    Amazonka.DevOpsGuru.DescribeOrganizationOverview+    Amazonka.DevOpsGuru.DescribeOrganizationResourceCollectionHealth+    Amazonka.DevOpsGuru.DescribeResourceCollectionHealth+    Amazonka.DevOpsGuru.DescribeServiceIntegration+    Amazonka.DevOpsGuru.GetCostEstimation+    Amazonka.DevOpsGuru.GetResourceCollection+    Amazonka.DevOpsGuru.Lens+    Amazonka.DevOpsGuru.ListAnomaliesForInsight+    Amazonka.DevOpsGuru.ListAnomalousLogGroups+    Amazonka.DevOpsGuru.ListEvents+    Amazonka.DevOpsGuru.ListInsights+    Amazonka.DevOpsGuru.ListMonitoredResources+    Amazonka.DevOpsGuru.ListNotificationChannels+    Amazonka.DevOpsGuru.ListOrganizationInsights+    Amazonka.DevOpsGuru.ListRecommendations+    Amazonka.DevOpsGuru.PutFeedback+    Amazonka.DevOpsGuru.RemoveNotificationChannel+    Amazonka.DevOpsGuru.SearchInsights+    Amazonka.DevOpsGuru.SearchOrganizationInsights+    Amazonka.DevOpsGuru.StartCostEstimation+    Amazonka.DevOpsGuru.Types+    Amazonka.DevOpsGuru.Types.AccountHealth+    Amazonka.DevOpsGuru.Types.AccountInsightHealth+    Amazonka.DevOpsGuru.Types.AmazonCodeGuruProfilerIntegration+    Amazonka.DevOpsGuru.Types.AnomalousLogGroup+    Amazonka.DevOpsGuru.Types.AnomalyReportedTimeRange+    Amazonka.DevOpsGuru.Types.AnomalyResource+    Amazonka.DevOpsGuru.Types.AnomalySeverity+    Amazonka.DevOpsGuru.Types.AnomalySourceDetails+    Amazonka.DevOpsGuru.Types.AnomalySourceMetadata+    Amazonka.DevOpsGuru.Types.AnomalyStatus+    Amazonka.DevOpsGuru.Types.AnomalyTimeRange+    Amazonka.DevOpsGuru.Types.AnomalyType+    Amazonka.DevOpsGuru.Types.CloudFormationCollection+    Amazonka.DevOpsGuru.Types.CloudFormationCollectionFilter+    Amazonka.DevOpsGuru.Types.CloudFormationCostEstimationResourceCollectionFilter+    Amazonka.DevOpsGuru.Types.CloudFormationHealth+    Amazonka.DevOpsGuru.Types.CloudWatchMetricDataStatusCode+    Amazonka.DevOpsGuru.Types.CloudWatchMetricsDataSummary+    Amazonka.DevOpsGuru.Types.CloudWatchMetricsDetail+    Amazonka.DevOpsGuru.Types.CloudWatchMetricsDimension+    Amazonka.DevOpsGuru.Types.CloudWatchMetricsStat+    Amazonka.DevOpsGuru.Types.CostEstimationResourceCollectionFilter+    Amazonka.DevOpsGuru.Types.CostEstimationServiceResourceState+    Amazonka.DevOpsGuru.Types.CostEstimationStatus+    Amazonka.DevOpsGuru.Types.CostEstimationTimeRange+    Amazonka.DevOpsGuru.Types.EndTimeRange+    Amazonka.DevOpsGuru.Types.Event+    Amazonka.DevOpsGuru.Types.EventClass+    Amazonka.DevOpsGuru.Types.EventDataSource+    Amazonka.DevOpsGuru.Types.EventResource+    Amazonka.DevOpsGuru.Types.EventSourceOptInStatus+    Amazonka.DevOpsGuru.Types.EventSourcesConfig+    Amazonka.DevOpsGuru.Types.EventTimeRange+    Amazonka.DevOpsGuru.Types.InsightFeedback+    Amazonka.DevOpsGuru.Types.InsightFeedbackOption+    Amazonka.DevOpsGuru.Types.InsightHealth+    Amazonka.DevOpsGuru.Types.InsightSeverity+    Amazonka.DevOpsGuru.Types.InsightStatus+    Amazonka.DevOpsGuru.Types.InsightTimeRange+    Amazonka.DevOpsGuru.Types.InsightType+    Amazonka.DevOpsGuru.Types.ListEventsFilters+    Amazonka.DevOpsGuru.Types.ListInsightsAnyStatusFilter+    Amazonka.DevOpsGuru.Types.ListInsightsClosedStatusFilter+    Amazonka.DevOpsGuru.Types.ListInsightsOngoingStatusFilter+    Amazonka.DevOpsGuru.Types.ListInsightsStatusFilter+    Amazonka.DevOpsGuru.Types.ListMonitoredResourcesFilters+    Amazonka.DevOpsGuru.Types.Locale+    Amazonka.DevOpsGuru.Types.LogAnomalyClass+    Amazonka.DevOpsGuru.Types.LogAnomalyShowcase+    Amazonka.DevOpsGuru.Types.LogAnomalyType+    Amazonka.DevOpsGuru.Types.LogsAnomalyDetectionIntegration+    Amazonka.DevOpsGuru.Types.LogsAnomalyDetectionIntegrationConfig+    Amazonka.DevOpsGuru.Types.MonitoredResourceIdentifier+    Amazonka.DevOpsGuru.Types.NotificationChannel+    Amazonka.DevOpsGuru.Types.NotificationChannelConfig+    Amazonka.DevOpsGuru.Types.NotificationFilterConfig+    Amazonka.DevOpsGuru.Types.NotificationMessageType+    Amazonka.DevOpsGuru.Types.OpsCenterIntegration+    Amazonka.DevOpsGuru.Types.OpsCenterIntegrationConfig+    Amazonka.DevOpsGuru.Types.OptInStatus+    Amazonka.DevOpsGuru.Types.OrganizationResourceCollectionType+    Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricDimensionGroup+    Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricQuery+    Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricsDetail+    Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceComparisonValues+    Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceData+    Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceMetric+    Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceScalar+    Amazonka.DevOpsGuru.Types.PerformanceInsightsStat+    Amazonka.DevOpsGuru.Types.PredictionTimeRange+    Amazonka.DevOpsGuru.Types.ProactiveAnomaly+    Amazonka.DevOpsGuru.Types.ProactiveAnomalySummary+    Amazonka.DevOpsGuru.Types.ProactiveInsight+    Amazonka.DevOpsGuru.Types.ProactiveInsightSummary+    Amazonka.DevOpsGuru.Types.ProactiveOrganizationInsightSummary+    Amazonka.DevOpsGuru.Types.ReactiveAnomaly+    Amazonka.DevOpsGuru.Types.ReactiveAnomalySummary+    Amazonka.DevOpsGuru.Types.ReactiveInsight+    Amazonka.DevOpsGuru.Types.ReactiveInsightSummary+    Amazonka.DevOpsGuru.Types.ReactiveOrganizationInsightSummary+    Amazonka.DevOpsGuru.Types.Recommendation+    Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomaly+    Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomalyResource+    Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomalySourceDetail+    Amazonka.DevOpsGuru.Types.RecommendationRelatedCloudWatchMetricsSourceDetail+    Amazonka.DevOpsGuru.Types.RecommendationRelatedEvent+    Amazonka.DevOpsGuru.Types.RecommendationRelatedEventResource+    Amazonka.DevOpsGuru.Types.ResourceCollection+    Amazonka.DevOpsGuru.Types.ResourceCollectionFilter+    Amazonka.DevOpsGuru.Types.ResourceCollectionType+    Amazonka.DevOpsGuru.Types.ResourcePermission+    Amazonka.DevOpsGuru.Types.ResourceTypeFilter+    Amazonka.DevOpsGuru.Types.SearchInsightsFilters+    Amazonka.DevOpsGuru.Types.SearchOrganizationInsightsFilters+    Amazonka.DevOpsGuru.Types.ServiceCollection+    Amazonka.DevOpsGuru.Types.ServiceHealth+    Amazonka.DevOpsGuru.Types.ServiceInsightHealth+    Amazonka.DevOpsGuru.Types.ServiceIntegrationConfig+    Amazonka.DevOpsGuru.Types.ServiceName+    Amazonka.DevOpsGuru.Types.ServiceResourceCost+    Amazonka.DevOpsGuru.Types.SnsChannelConfig+    Amazonka.DevOpsGuru.Types.StartTimeRange+    Amazonka.DevOpsGuru.Types.TagCollection+    Amazonka.DevOpsGuru.Types.TagCollectionFilter+    Amazonka.DevOpsGuru.Types.TagCostEstimationResourceCollectionFilter+    Amazonka.DevOpsGuru.Types.TagHealth+    Amazonka.DevOpsGuru.Types.TimestampMetricValuePair+    Amazonka.DevOpsGuru.Types.UpdateCloudFormationCollectionFilter+    Amazonka.DevOpsGuru.Types.UpdateResourceCollectionAction+    Amazonka.DevOpsGuru.Types.UpdateResourceCollectionFilter+    Amazonka.DevOpsGuru.Types.UpdateServiceIntegrationConfig+    Amazonka.DevOpsGuru.Types.UpdateTagCollectionFilter+    Amazonka.DevOpsGuru.UpdateEventSourcesConfig+    Amazonka.DevOpsGuru.UpdateResourceCollection+    Amazonka.DevOpsGuru.UpdateServiceIntegration+    Amazonka.DevOpsGuru.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-devops-guru-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.DevOpsGuru+    Test.Amazonka.DevOpsGuru.Internal+    Test.Amazonka.Gen.DevOpsGuru++  build-depends:+    , amazonka-core         >=2.0 && <2.1+    , amazonka-devops-guru+    , amazonka-test         >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/AddNotificationChannel.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/AddNotificationChannelResponse.proto view
+ fixture/DeleteInsight.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/DeleteInsightResponse.proto view
+ fixture/DescribeAccountHealth.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/DescribeAccountHealthResponse.proto view
+ fixture/DescribeAccountOverview.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/DescribeAccountOverviewResponse.proto view
+ fixture/DescribeAnomaly.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/DescribeAnomalyResponse.proto view
+ fixture/DescribeEventSourcesConfig.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/DescribeEventSourcesConfigResponse.proto view
+ fixture/DescribeFeedback.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/DescribeFeedbackResponse.proto view
+ fixture/DescribeInsight.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/DescribeInsightResponse.proto view
+ fixture/DescribeOrganizationHealth.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/DescribeOrganizationHealthResponse.proto view
+ fixture/DescribeOrganizationOverview.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/DescribeOrganizationOverviewResponse.proto view
+ fixture/DescribeOrganizationResourceCollectionHealth.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/DescribeOrganizationResourceCollectionHealthResponse.proto view
+ fixture/DescribeResourceCollectionHealth.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/DescribeResourceCollectionHealthResponse.proto view
+ fixture/DescribeServiceIntegration.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/DescribeServiceIntegrationResponse.proto view
+ fixture/GetCostEstimation.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/GetCostEstimationResponse.proto view
+ fixture/GetResourceCollection.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/GetResourceCollectionResponse.proto view
+ fixture/ListAnomaliesForInsight.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/ListAnomaliesForInsightResponse.proto view
+ fixture/ListAnomalousLogGroups.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/ListAnomalousLogGroupsResponse.proto view
+ fixture/ListEvents.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/ListEventsResponse.proto view
+ fixture/ListInsights.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/ListInsightsResponse.proto view
+ fixture/ListMonitoredResources.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/ListMonitoredResourcesResponse.proto view
+ fixture/ListNotificationChannels.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/ListNotificationChannelsResponse.proto view
+ fixture/ListOrganizationInsights.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/ListOrganizationInsightsResponse.proto view
+ fixture/ListRecommendations.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListRecommendationsResponse.proto view
+ fixture/PutFeedback.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/PutFeedbackResponse.proto view
+ fixture/RemoveNotificationChannel.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/RemoveNotificationChannelResponse.proto view
+ fixture/SearchInsights.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/SearchInsightsResponse.proto view
+ fixture/SearchOrganizationInsights.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/SearchOrganizationInsightsResponse.proto view
+ fixture/StartCostEstimation.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/StartCostEstimationResponse.proto view
+ fixture/UpdateEventSourcesConfig.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/UpdateEventSourcesConfigResponse.proto view
+ fixture/UpdateResourceCollection.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/UpdateResourceCollectionResponse.proto view
+ fixture/UpdateServiceIntegration.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/devops-guru/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  devops-guru.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/UpdateServiceIntegrationResponse.proto view
+ gen/Amazonka/DevOpsGuru.hs view
@@ -0,0 +1,743 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.DevOpsGuru+-- 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.+--+-- Amazon DevOps Guru is a fully managed service that helps you identify+-- anomalous behavior in business critical operational applications. You+-- specify the Amazon Web Services resources that you want DevOps Guru to+-- cover, then the Amazon CloudWatch metrics and Amazon Web Services+-- CloudTrail events related to those resources are analyzed. When+-- anomalous behavior is detected, DevOps Guru creates an /insight/ that+-- includes recommendations, related events, and related metrics that can+-- help you improve your operational applications. For more information,+-- see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/welcome.html What is Amazon DevOps Guru>.+--+-- You can specify 1 or 2 Amazon Simple Notification Service topics so you+-- are notified every time a new insight is created. You can also enable+-- DevOps Guru to generate an OpsItem in Amazon Web Services Systems+-- Manager for each insight to help you manage and track your work+-- addressing insights.+--+-- To learn about the DevOps Guru workflow, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/welcome.html#how-it-works How DevOps Guru works>.+-- To learn about DevOps Guru concepts, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/concepts.html Concepts in DevOps Guru>.+module Amazonka.DevOpsGuru+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** AccessDeniedException+    _AccessDeniedException,++    -- ** ConflictException+    _ConflictException,++    -- ** InternalServerException+    _InternalServerException,++    -- ** ResourceNotFoundException+    _ResourceNotFoundException,++    -- ** ServiceQuotaExceededException+    _ServiceQuotaExceededException,++    -- ** ThrottlingException+    _ThrottlingException,++    -- ** ValidationException+    _ValidationException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** AddNotificationChannel+    AddNotificationChannel (AddNotificationChannel'),+    newAddNotificationChannel,+    AddNotificationChannelResponse (AddNotificationChannelResponse'),+    newAddNotificationChannelResponse,++    -- ** DeleteInsight+    DeleteInsight (DeleteInsight'),+    newDeleteInsight,+    DeleteInsightResponse (DeleteInsightResponse'),+    newDeleteInsightResponse,++    -- ** DescribeAccountHealth+    DescribeAccountHealth (DescribeAccountHealth'),+    newDescribeAccountHealth,+    DescribeAccountHealthResponse (DescribeAccountHealthResponse'),+    newDescribeAccountHealthResponse,++    -- ** DescribeAccountOverview+    DescribeAccountOverview (DescribeAccountOverview'),+    newDescribeAccountOverview,+    DescribeAccountOverviewResponse (DescribeAccountOverviewResponse'),+    newDescribeAccountOverviewResponse,++    -- ** DescribeAnomaly+    DescribeAnomaly (DescribeAnomaly'),+    newDescribeAnomaly,+    DescribeAnomalyResponse (DescribeAnomalyResponse'),+    newDescribeAnomalyResponse,++    -- ** DescribeEventSourcesConfig+    DescribeEventSourcesConfig (DescribeEventSourcesConfig'),+    newDescribeEventSourcesConfig,+    DescribeEventSourcesConfigResponse (DescribeEventSourcesConfigResponse'),+    newDescribeEventSourcesConfigResponse,++    -- ** DescribeFeedback+    DescribeFeedback (DescribeFeedback'),+    newDescribeFeedback,+    DescribeFeedbackResponse (DescribeFeedbackResponse'),+    newDescribeFeedbackResponse,++    -- ** DescribeInsight+    DescribeInsight (DescribeInsight'),+    newDescribeInsight,+    DescribeInsightResponse (DescribeInsightResponse'),+    newDescribeInsightResponse,++    -- ** DescribeOrganizationHealth+    DescribeOrganizationHealth (DescribeOrganizationHealth'),+    newDescribeOrganizationHealth,+    DescribeOrganizationHealthResponse (DescribeOrganizationHealthResponse'),+    newDescribeOrganizationHealthResponse,++    -- ** DescribeOrganizationOverview+    DescribeOrganizationOverview (DescribeOrganizationOverview'),+    newDescribeOrganizationOverview,+    DescribeOrganizationOverviewResponse (DescribeOrganizationOverviewResponse'),+    newDescribeOrganizationOverviewResponse,++    -- ** DescribeOrganizationResourceCollectionHealth (Paginated)+    DescribeOrganizationResourceCollectionHealth (DescribeOrganizationResourceCollectionHealth'),+    newDescribeOrganizationResourceCollectionHealth,+    DescribeOrganizationResourceCollectionHealthResponse (DescribeOrganizationResourceCollectionHealthResponse'),+    newDescribeOrganizationResourceCollectionHealthResponse,++    -- ** DescribeResourceCollectionHealth (Paginated)+    DescribeResourceCollectionHealth (DescribeResourceCollectionHealth'),+    newDescribeResourceCollectionHealth,+    DescribeResourceCollectionHealthResponse (DescribeResourceCollectionHealthResponse'),+    newDescribeResourceCollectionHealthResponse,++    -- ** DescribeServiceIntegration+    DescribeServiceIntegration (DescribeServiceIntegration'),+    newDescribeServiceIntegration,+    DescribeServiceIntegrationResponse (DescribeServiceIntegrationResponse'),+    newDescribeServiceIntegrationResponse,++    -- ** GetCostEstimation (Paginated)+    GetCostEstimation (GetCostEstimation'),+    newGetCostEstimation,+    GetCostEstimationResponse (GetCostEstimationResponse'),+    newGetCostEstimationResponse,++    -- ** GetResourceCollection (Paginated)+    GetResourceCollection (GetResourceCollection'),+    newGetResourceCollection,+    GetResourceCollectionResponse (GetResourceCollectionResponse'),+    newGetResourceCollectionResponse,++    -- ** ListAnomaliesForInsight (Paginated)+    ListAnomaliesForInsight (ListAnomaliesForInsight'),+    newListAnomaliesForInsight,+    ListAnomaliesForInsightResponse (ListAnomaliesForInsightResponse'),+    newListAnomaliesForInsightResponse,++    -- ** ListAnomalousLogGroups (Paginated)+    ListAnomalousLogGroups (ListAnomalousLogGroups'),+    newListAnomalousLogGroups,+    ListAnomalousLogGroupsResponse (ListAnomalousLogGroupsResponse'),+    newListAnomalousLogGroupsResponse,++    -- ** ListEvents (Paginated)+    ListEvents (ListEvents'),+    newListEvents,+    ListEventsResponse (ListEventsResponse'),+    newListEventsResponse,++    -- ** ListInsights (Paginated)+    ListInsights (ListInsights'),+    newListInsights,+    ListInsightsResponse (ListInsightsResponse'),+    newListInsightsResponse,++    -- ** ListMonitoredResources (Paginated)+    ListMonitoredResources (ListMonitoredResources'),+    newListMonitoredResources,+    ListMonitoredResourcesResponse (ListMonitoredResourcesResponse'),+    newListMonitoredResourcesResponse,++    -- ** ListNotificationChannels (Paginated)+    ListNotificationChannels (ListNotificationChannels'),+    newListNotificationChannels,+    ListNotificationChannelsResponse (ListNotificationChannelsResponse'),+    newListNotificationChannelsResponse,++    -- ** ListOrganizationInsights (Paginated)+    ListOrganizationInsights (ListOrganizationInsights'),+    newListOrganizationInsights,+    ListOrganizationInsightsResponse (ListOrganizationInsightsResponse'),+    newListOrganizationInsightsResponse,++    -- ** ListRecommendations (Paginated)+    ListRecommendations (ListRecommendations'),+    newListRecommendations,+    ListRecommendationsResponse (ListRecommendationsResponse'),+    newListRecommendationsResponse,++    -- ** PutFeedback+    PutFeedback (PutFeedback'),+    newPutFeedback,+    PutFeedbackResponse (PutFeedbackResponse'),+    newPutFeedbackResponse,++    -- ** RemoveNotificationChannel+    RemoveNotificationChannel (RemoveNotificationChannel'),+    newRemoveNotificationChannel,+    RemoveNotificationChannelResponse (RemoveNotificationChannelResponse'),+    newRemoveNotificationChannelResponse,++    -- ** SearchInsights (Paginated)+    SearchInsights (SearchInsights'),+    newSearchInsights,+    SearchInsightsResponse (SearchInsightsResponse'),+    newSearchInsightsResponse,++    -- ** SearchOrganizationInsights (Paginated)+    SearchOrganizationInsights (SearchOrganizationInsights'),+    newSearchOrganizationInsights,+    SearchOrganizationInsightsResponse (SearchOrganizationInsightsResponse'),+    newSearchOrganizationInsightsResponse,++    -- ** StartCostEstimation+    StartCostEstimation (StartCostEstimation'),+    newStartCostEstimation,+    StartCostEstimationResponse (StartCostEstimationResponse'),+    newStartCostEstimationResponse,++    -- ** UpdateEventSourcesConfig+    UpdateEventSourcesConfig (UpdateEventSourcesConfig'),+    newUpdateEventSourcesConfig,+    UpdateEventSourcesConfigResponse (UpdateEventSourcesConfigResponse'),+    newUpdateEventSourcesConfigResponse,++    -- ** UpdateResourceCollection+    UpdateResourceCollection (UpdateResourceCollection'),+    newUpdateResourceCollection,+    UpdateResourceCollectionResponse (UpdateResourceCollectionResponse'),+    newUpdateResourceCollectionResponse,++    -- ** UpdateServiceIntegration+    UpdateServiceIntegration (UpdateServiceIntegration'),+    newUpdateServiceIntegration,+    UpdateServiceIntegrationResponse (UpdateServiceIntegrationResponse'),+    newUpdateServiceIntegrationResponse,++    -- * Types++    -- ** AnomalySeverity+    AnomalySeverity (..),++    -- ** AnomalyStatus+    AnomalyStatus (..),++    -- ** AnomalyType+    AnomalyType (..),++    -- ** CloudWatchMetricDataStatusCode+    CloudWatchMetricDataStatusCode (..),++    -- ** CloudWatchMetricsStat+    CloudWatchMetricsStat (..),++    -- ** CostEstimationServiceResourceState+    CostEstimationServiceResourceState (..),++    -- ** CostEstimationStatus+    CostEstimationStatus (..),++    -- ** EventClass+    EventClass (..),++    -- ** EventDataSource+    EventDataSource (..),++    -- ** EventSourceOptInStatus+    EventSourceOptInStatus (..),++    -- ** InsightFeedbackOption+    InsightFeedbackOption (..),++    -- ** InsightSeverity+    InsightSeverity (..),++    -- ** InsightStatus+    InsightStatus (..),++    -- ** InsightType+    InsightType (..),++    -- ** Locale+    Locale (..),++    -- ** LogAnomalyType+    LogAnomalyType (..),++    -- ** NotificationMessageType+    NotificationMessageType (..),++    -- ** OptInStatus+    OptInStatus (..),++    -- ** OrganizationResourceCollectionType+    OrganizationResourceCollectionType (..),++    -- ** ResourceCollectionType+    ResourceCollectionType (..),++    -- ** ResourcePermission+    ResourcePermission (..),++    -- ** ResourceTypeFilter+    ResourceTypeFilter (..),++    -- ** ServiceName+    ServiceName (..),++    -- ** UpdateResourceCollectionAction+    UpdateResourceCollectionAction (..),++    -- ** AccountHealth+    AccountHealth (AccountHealth'),+    newAccountHealth,++    -- ** AccountInsightHealth+    AccountInsightHealth (AccountInsightHealth'),+    newAccountInsightHealth,++    -- ** AmazonCodeGuruProfilerIntegration+    AmazonCodeGuruProfilerIntegration (AmazonCodeGuruProfilerIntegration'),+    newAmazonCodeGuruProfilerIntegration,++    -- ** AnomalousLogGroup+    AnomalousLogGroup (AnomalousLogGroup'),+    newAnomalousLogGroup,++    -- ** AnomalyReportedTimeRange+    AnomalyReportedTimeRange (AnomalyReportedTimeRange'),+    newAnomalyReportedTimeRange,++    -- ** AnomalyResource+    AnomalyResource (AnomalyResource'),+    newAnomalyResource,++    -- ** AnomalySourceDetails+    AnomalySourceDetails (AnomalySourceDetails'),+    newAnomalySourceDetails,++    -- ** AnomalySourceMetadata+    AnomalySourceMetadata (AnomalySourceMetadata'),+    newAnomalySourceMetadata,++    -- ** AnomalyTimeRange+    AnomalyTimeRange (AnomalyTimeRange'),+    newAnomalyTimeRange,++    -- ** CloudFormationCollection+    CloudFormationCollection (CloudFormationCollection'),+    newCloudFormationCollection,++    -- ** CloudFormationCollectionFilter+    CloudFormationCollectionFilter (CloudFormationCollectionFilter'),+    newCloudFormationCollectionFilter,++    -- ** CloudFormationCostEstimationResourceCollectionFilter+    CloudFormationCostEstimationResourceCollectionFilter (CloudFormationCostEstimationResourceCollectionFilter'),+    newCloudFormationCostEstimationResourceCollectionFilter,++    -- ** CloudFormationHealth+    CloudFormationHealth (CloudFormationHealth'),+    newCloudFormationHealth,++    -- ** CloudWatchMetricsDataSummary+    CloudWatchMetricsDataSummary (CloudWatchMetricsDataSummary'),+    newCloudWatchMetricsDataSummary,++    -- ** CloudWatchMetricsDetail+    CloudWatchMetricsDetail (CloudWatchMetricsDetail'),+    newCloudWatchMetricsDetail,++    -- ** CloudWatchMetricsDimension+    CloudWatchMetricsDimension (CloudWatchMetricsDimension'),+    newCloudWatchMetricsDimension,++    -- ** CostEstimationResourceCollectionFilter+    CostEstimationResourceCollectionFilter (CostEstimationResourceCollectionFilter'),+    newCostEstimationResourceCollectionFilter,++    -- ** CostEstimationTimeRange+    CostEstimationTimeRange (CostEstimationTimeRange'),+    newCostEstimationTimeRange,++    -- ** EndTimeRange+    EndTimeRange (EndTimeRange'),+    newEndTimeRange,++    -- ** Event+    Event (Event'),+    newEvent,++    -- ** EventResource+    EventResource (EventResource'),+    newEventResource,++    -- ** EventSourcesConfig+    EventSourcesConfig (EventSourcesConfig'),+    newEventSourcesConfig,++    -- ** EventTimeRange+    EventTimeRange (EventTimeRange'),+    newEventTimeRange,++    -- ** InsightFeedback+    InsightFeedback (InsightFeedback'),+    newInsightFeedback,++    -- ** InsightHealth+    InsightHealth (InsightHealth'),+    newInsightHealth,++    -- ** InsightTimeRange+    InsightTimeRange (InsightTimeRange'),+    newInsightTimeRange,++    -- ** ListEventsFilters+    ListEventsFilters (ListEventsFilters'),+    newListEventsFilters,++    -- ** ListInsightsAnyStatusFilter+    ListInsightsAnyStatusFilter (ListInsightsAnyStatusFilter'),+    newListInsightsAnyStatusFilter,++    -- ** ListInsightsClosedStatusFilter+    ListInsightsClosedStatusFilter (ListInsightsClosedStatusFilter'),+    newListInsightsClosedStatusFilter,++    -- ** ListInsightsOngoingStatusFilter+    ListInsightsOngoingStatusFilter (ListInsightsOngoingStatusFilter'),+    newListInsightsOngoingStatusFilter,++    -- ** ListInsightsStatusFilter+    ListInsightsStatusFilter (ListInsightsStatusFilter'),+    newListInsightsStatusFilter,++    -- ** ListMonitoredResourcesFilters+    ListMonitoredResourcesFilters (ListMonitoredResourcesFilters'),+    newListMonitoredResourcesFilters,++    -- ** LogAnomalyClass+    LogAnomalyClass (LogAnomalyClass'),+    newLogAnomalyClass,++    -- ** LogAnomalyShowcase+    LogAnomalyShowcase (LogAnomalyShowcase'),+    newLogAnomalyShowcase,++    -- ** LogsAnomalyDetectionIntegration+    LogsAnomalyDetectionIntegration (LogsAnomalyDetectionIntegration'),+    newLogsAnomalyDetectionIntegration,++    -- ** LogsAnomalyDetectionIntegrationConfig+    LogsAnomalyDetectionIntegrationConfig (LogsAnomalyDetectionIntegrationConfig'),+    newLogsAnomalyDetectionIntegrationConfig,++    -- ** MonitoredResourceIdentifier+    MonitoredResourceIdentifier (MonitoredResourceIdentifier'),+    newMonitoredResourceIdentifier,++    -- ** NotificationChannel+    NotificationChannel (NotificationChannel'),+    newNotificationChannel,++    -- ** NotificationChannelConfig+    NotificationChannelConfig (NotificationChannelConfig'),+    newNotificationChannelConfig,++    -- ** NotificationFilterConfig+    NotificationFilterConfig (NotificationFilterConfig'),+    newNotificationFilterConfig,++    -- ** OpsCenterIntegration+    OpsCenterIntegration (OpsCenterIntegration'),+    newOpsCenterIntegration,++    -- ** OpsCenterIntegrationConfig+    OpsCenterIntegrationConfig (OpsCenterIntegrationConfig'),+    newOpsCenterIntegrationConfig,++    -- ** PerformanceInsightsMetricDimensionGroup+    PerformanceInsightsMetricDimensionGroup (PerformanceInsightsMetricDimensionGroup'),+    newPerformanceInsightsMetricDimensionGroup,++    -- ** PerformanceInsightsMetricQuery+    PerformanceInsightsMetricQuery (PerformanceInsightsMetricQuery'),+    newPerformanceInsightsMetricQuery,++    -- ** PerformanceInsightsMetricsDetail+    PerformanceInsightsMetricsDetail (PerformanceInsightsMetricsDetail'),+    newPerformanceInsightsMetricsDetail,++    -- ** PerformanceInsightsReferenceComparisonValues+    PerformanceInsightsReferenceComparisonValues (PerformanceInsightsReferenceComparisonValues'),+    newPerformanceInsightsReferenceComparisonValues,++    -- ** PerformanceInsightsReferenceData+    PerformanceInsightsReferenceData (PerformanceInsightsReferenceData'),+    newPerformanceInsightsReferenceData,++    -- ** PerformanceInsightsReferenceMetric+    PerformanceInsightsReferenceMetric (PerformanceInsightsReferenceMetric'),+    newPerformanceInsightsReferenceMetric,++    -- ** PerformanceInsightsReferenceScalar+    PerformanceInsightsReferenceScalar (PerformanceInsightsReferenceScalar'),+    newPerformanceInsightsReferenceScalar,++    -- ** PerformanceInsightsStat+    PerformanceInsightsStat (PerformanceInsightsStat'),+    newPerformanceInsightsStat,++    -- ** PredictionTimeRange+    PredictionTimeRange (PredictionTimeRange'),+    newPredictionTimeRange,++    -- ** ProactiveAnomaly+    ProactiveAnomaly (ProactiveAnomaly'),+    newProactiveAnomaly,++    -- ** ProactiveAnomalySummary+    ProactiveAnomalySummary (ProactiveAnomalySummary'),+    newProactiveAnomalySummary,++    -- ** ProactiveInsight+    ProactiveInsight (ProactiveInsight'),+    newProactiveInsight,++    -- ** ProactiveInsightSummary+    ProactiveInsightSummary (ProactiveInsightSummary'),+    newProactiveInsightSummary,++    -- ** ProactiveOrganizationInsightSummary+    ProactiveOrganizationInsightSummary (ProactiveOrganizationInsightSummary'),+    newProactiveOrganizationInsightSummary,++    -- ** ReactiveAnomaly+    ReactiveAnomaly (ReactiveAnomaly'),+    newReactiveAnomaly,++    -- ** ReactiveAnomalySummary+    ReactiveAnomalySummary (ReactiveAnomalySummary'),+    newReactiveAnomalySummary,++    -- ** ReactiveInsight+    ReactiveInsight (ReactiveInsight'),+    newReactiveInsight,++    -- ** ReactiveInsightSummary+    ReactiveInsightSummary (ReactiveInsightSummary'),+    newReactiveInsightSummary,++    -- ** ReactiveOrganizationInsightSummary+    ReactiveOrganizationInsightSummary (ReactiveOrganizationInsightSummary'),+    newReactiveOrganizationInsightSummary,++    -- ** Recommendation+    Recommendation (Recommendation'),+    newRecommendation,++    -- ** RecommendationRelatedAnomaly+    RecommendationRelatedAnomaly (RecommendationRelatedAnomaly'),+    newRecommendationRelatedAnomaly,++    -- ** RecommendationRelatedAnomalyResource+    RecommendationRelatedAnomalyResource (RecommendationRelatedAnomalyResource'),+    newRecommendationRelatedAnomalyResource,++    -- ** RecommendationRelatedAnomalySourceDetail+    RecommendationRelatedAnomalySourceDetail (RecommendationRelatedAnomalySourceDetail'),+    newRecommendationRelatedAnomalySourceDetail,++    -- ** RecommendationRelatedCloudWatchMetricsSourceDetail+    RecommendationRelatedCloudWatchMetricsSourceDetail (RecommendationRelatedCloudWatchMetricsSourceDetail'),+    newRecommendationRelatedCloudWatchMetricsSourceDetail,++    -- ** RecommendationRelatedEvent+    RecommendationRelatedEvent (RecommendationRelatedEvent'),+    newRecommendationRelatedEvent,++    -- ** RecommendationRelatedEventResource+    RecommendationRelatedEventResource (RecommendationRelatedEventResource'),+    newRecommendationRelatedEventResource,++    -- ** ResourceCollection+    ResourceCollection (ResourceCollection'),+    newResourceCollection,++    -- ** ResourceCollectionFilter+    ResourceCollectionFilter (ResourceCollectionFilter'),+    newResourceCollectionFilter,++    -- ** SearchInsightsFilters+    SearchInsightsFilters (SearchInsightsFilters'),+    newSearchInsightsFilters,++    -- ** SearchOrganizationInsightsFilters+    SearchOrganizationInsightsFilters (SearchOrganizationInsightsFilters'),+    newSearchOrganizationInsightsFilters,++    -- ** ServiceCollection+    ServiceCollection (ServiceCollection'),+    newServiceCollection,++    -- ** ServiceHealth+    ServiceHealth (ServiceHealth'),+    newServiceHealth,++    -- ** ServiceInsightHealth+    ServiceInsightHealth (ServiceInsightHealth'),+    newServiceInsightHealth,++    -- ** ServiceIntegrationConfig+    ServiceIntegrationConfig (ServiceIntegrationConfig'),+    newServiceIntegrationConfig,++    -- ** ServiceResourceCost+    ServiceResourceCost (ServiceResourceCost'),+    newServiceResourceCost,++    -- ** SnsChannelConfig+    SnsChannelConfig (SnsChannelConfig'),+    newSnsChannelConfig,++    -- ** StartTimeRange+    StartTimeRange (StartTimeRange'),+    newStartTimeRange,++    -- ** TagCollection+    TagCollection (TagCollection'),+    newTagCollection,++    -- ** TagCollectionFilter+    TagCollectionFilter (TagCollectionFilter'),+    newTagCollectionFilter,++    -- ** TagCostEstimationResourceCollectionFilter+    TagCostEstimationResourceCollectionFilter (TagCostEstimationResourceCollectionFilter'),+    newTagCostEstimationResourceCollectionFilter,++    -- ** TagHealth+    TagHealth (TagHealth'),+    newTagHealth,++    -- ** TimestampMetricValuePair+    TimestampMetricValuePair (TimestampMetricValuePair'),+    newTimestampMetricValuePair,++    -- ** UpdateCloudFormationCollectionFilter+    UpdateCloudFormationCollectionFilter (UpdateCloudFormationCollectionFilter'),+    newUpdateCloudFormationCollectionFilter,++    -- ** UpdateResourceCollectionFilter+    UpdateResourceCollectionFilter (UpdateResourceCollectionFilter'),+    newUpdateResourceCollectionFilter,++    -- ** UpdateServiceIntegrationConfig+    UpdateServiceIntegrationConfig (UpdateServiceIntegrationConfig'),+    newUpdateServiceIntegrationConfig,++    -- ** UpdateTagCollectionFilter+    UpdateTagCollectionFilter (UpdateTagCollectionFilter'),+    newUpdateTagCollectionFilter,+  )+where++import Amazonka.DevOpsGuru.AddNotificationChannel+import Amazonka.DevOpsGuru.DeleteInsight+import Amazonka.DevOpsGuru.DescribeAccountHealth+import Amazonka.DevOpsGuru.DescribeAccountOverview+import Amazonka.DevOpsGuru.DescribeAnomaly+import Amazonka.DevOpsGuru.DescribeEventSourcesConfig+import Amazonka.DevOpsGuru.DescribeFeedback+import Amazonka.DevOpsGuru.DescribeInsight+import Amazonka.DevOpsGuru.DescribeOrganizationHealth+import Amazonka.DevOpsGuru.DescribeOrganizationOverview+import Amazonka.DevOpsGuru.DescribeOrganizationResourceCollectionHealth+import Amazonka.DevOpsGuru.DescribeResourceCollectionHealth+import Amazonka.DevOpsGuru.DescribeServiceIntegration+import Amazonka.DevOpsGuru.GetCostEstimation+import Amazonka.DevOpsGuru.GetResourceCollection+import Amazonka.DevOpsGuru.Lens+import Amazonka.DevOpsGuru.ListAnomaliesForInsight+import Amazonka.DevOpsGuru.ListAnomalousLogGroups+import Amazonka.DevOpsGuru.ListEvents+import Amazonka.DevOpsGuru.ListInsights+import Amazonka.DevOpsGuru.ListMonitoredResources+import Amazonka.DevOpsGuru.ListNotificationChannels+import Amazonka.DevOpsGuru.ListOrganizationInsights+import Amazonka.DevOpsGuru.ListRecommendations+import Amazonka.DevOpsGuru.PutFeedback+import Amazonka.DevOpsGuru.RemoveNotificationChannel+import Amazonka.DevOpsGuru.SearchInsights+import Amazonka.DevOpsGuru.SearchOrganizationInsights+import Amazonka.DevOpsGuru.StartCostEstimation+import Amazonka.DevOpsGuru.Types+import Amazonka.DevOpsGuru.UpdateEventSourcesConfig+import Amazonka.DevOpsGuru.UpdateResourceCollection+import Amazonka.DevOpsGuru.UpdateServiceIntegration+import Amazonka.DevOpsGuru.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 'DevOpsGuru'.++-- $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/DevOpsGuru/AddNotificationChannel.hs view
@@ -0,0 +1,194 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.AddNotificationChannel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Adds a notification channel to DevOps Guru. A notification channel is+-- used to notify you about important DevOps Guru events, such as when an+-- insight is generated.+--+-- If you use an Amazon SNS topic in another account, you must attach a+-- policy to it that grants DevOps Guru permission to it notifications.+-- DevOps Guru adds the required policy on your behalf to send+-- notifications using Amazon SNS in your account. DevOps Guru only+-- supports standard SNS topics. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-required-permissions.html Permissions for cross account Amazon SNS topics>.+--+-- If you use an Amazon SNS topic in another account, you must attach a+-- policy to it that grants DevOps Guru permission to it notifications.+-- DevOps Guru adds the required policy on your behalf to send+-- notifications using Amazon SNS in your account. For more information,+-- see Permissions for cross account Amazon SNS topics.+--+-- If you use an Amazon SNS topic that is encrypted by an Amazon Web+-- Services Key Management Service customer-managed key (CMK), then you+-- must add permissions to the CMK. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-kms-permissions.html Permissions for Amazon Web Services KMS–encrypted Amazon SNS topics>.+module Amazonka.DevOpsGuru.AddNotificationChannel+  ( -- * Creating a Request+    AddNotificationChannel (..),+    newAddNotificationChannel,++    -- * Request Lenses+    addNotificationChannel_config,++    -- * Destructuring the Response+    AddNotificationChannelResponse (..),+    newAddNotificationChannelResponse,++    -- * Response Lenses+    addNotificationChannelResponse_httpStatus,+    addNotificationChannelResponse_id,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newAddNotificationChannel' smart constructor.+data AddNotificationChannel = AddNotificationChannel'+  { -- | A @NotificationChannelConfig@ object that specifies what type of+    -- notification channel to add. The one supported notification channel is+    -- Amazon Simple Notification Service (Amazon SNS).+    config :: NotificationChannelConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddNotificationChannel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'config', 'addNotificationChannel_config' - A @NotificationChannelConfig@ object that specifies what type of+-- notification channel to add. The one supported notification channel is+-- Amazon Simple Notification Service (Amazon SNS).+newAddNotificationChannel ::+  -- | 'config'+  NotificationChannelConfig ->+  AddNotificationChannel+newAddNotificationChannel pConfig_ =+  AddNotificationChannel' {config = pConfig_}++-- | A @NotificationChannelConfig@ object that specifies what type of+-- notification channel to add. The one supported notification channel is+-- Amazon Simple Notification Service (Amazon SNS).+addNotificationChannel_config :: Lens.Lens' AddNotificationChannel NotificationChannelConfig+addNotificationChannel_config = Lens.lens (\AddNotificationChannel' {config} -> config) (\s@AddNotificationChannel' {} a -> s {config = a} :: AddNotificationChannel)++instance Core.AWSRequest AddNotificationChannel where+  type+    AWSResponse AddNotificationChannel =+      AddNotificationChannelResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          AddNotificationChannelResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "Id")+      )++instance Prelude.Hashable AddNotificationChannel where+  hashWithSalt _salt AddNotificationChannel' {..} =+    _salt `Prelude.hashWithSalt` config++instance Prelude.NFData AddNotificationChannel where+  rnf AddNotificationChannel' {..} = Prelude.rnf config++instance Data.ToHeaders AddNotificationChannel where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AddNotificationChannel where+  toJSON AddNotificationChannel' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Config" Data..= config)]+      )++instance Data.ToPath AddNotificationChannel where+  toPath = Prelude.const "/channels"++instance Data.ToQuery AddNotificationChannel where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAddNotificationChannelResponse' smart constructor.+data AddNotificationChannelResponse = AddNotificationChannelResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the added notification channel.+    id :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddNotificationChannelResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'addNotificationChannelResponse_httpStatus' - The response's http status code.+--+-- 'id', 'addNotificationChannelResponse_id' - The ID of the added notification channel.+newAddNotificationChannelResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'id'+  Prelude.Text ->+  AddNotificationChannelResponse+newAddNotificationChannelResponse pHttpStatus_ pId_ =+  AddNotificationChannelResponse'+    { httpStatus =+        pHttpStatus_,+      id = pId_+    }++-- | The response's http status code.+addNotificationChannelResponse_httpStatus :: Lens.Lens' AddNotificationChannelResponse Prelude.Int+addNotificationChannelResponse_httpStatus = Lens.lens (\AddNotificationChannelResponse' {httpStatus} -> httpStatus) (\s@AddNotificationChannelResponse' {} a -> s {httpStatus = a} :: AddNotificationChannelResponse)++-- | The ID of the added notification channel.+addNotificationChannelResponse_id :: Lens.Lens' AddNotificationChannelResponse Prelude.Text+addNotificationChannelResponse_id = Lens.lens (\AddNotificationChannelResponse' {id} -> id) (\s@AddNotificationChannelResponse' {} a -> s {id = a} :: AddNotificationChannelResponse)++instance+  Prelude.NFData+    AddNotificationChannelResponse+  where+  rnf AddNotificationChannelResponse' {..} =+    Prelude.rnf httpStatus `Prelude.seq` Prelude.rnf id
+ gen/Amazonka/DevOpsGuru/DeleteInsight.hs view
@@ -0,0 +1,143 @@+{-# 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.DevOpsGuru.DeleteInsight+-- 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 insight along with the associated anomalies, events and+-- recommendations.+module Amazonka.DevOpsGuru.DeleteInsight+  ( -- * Creating a Request+    DeleteInsight (..),+    newDeleteInsight,++    -- * Request Lenses+    deleteInsight_id,++    -- * Destructuring the Response+    DeleteInsightResponse (..),+    newDeleteInsightResponse,++    -- * Response Lenses+    deleteInsightResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteInsight' smart constructor.+data DeleteInsight = DeleteInsight'+  { -- | The ID of the insight.+    id :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteInsight' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteInsight_id' - The ID of the insight.+newDeleteInsight ::+  -- | 'id'+  Prelude.Text ->+  DeleteInsight+newDeleteInsight pId_ = DeleteInsight' {id = pId_}++-- | The ID of the insight.+deleteInsight_id :: Lens.Lens' DeleteInsight Prelude.Text+deleteInsight_id = Lens.lens (\DeleteInsight' {id} -> id) (\s@DeleteInsight' {} a -> s {id = a} :: DeleteInsight)++instance Core.AWSRequest DeleteInsight where+  type+    AWSResponse DeleteInsight =+      DeleteInsightResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteInsightResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteInsight where+  hashWithSalt _salt DeleteInsight' {..} =+    _salt `Prelude.hashWithSalt` id++instance Prelude.NFData DeleteInsight where+  rnf DeleteInsight' {..} = Prelude.rnf id++instance Data.ToHeaders DeleteInsight where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteInsight where+  toPath DeleteInsight' {..} =+    Prelude.mconcat ["/insights/", Data.toBS id]++instance Data.ToQuery DeleteInsight where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteInsightResponse' smart constructor.+data DeleteInsightResponse = DeleteInsightResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteInsightResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteInsightResponse_httpStatus' - The response's http status code.+newDeleteInsightResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteInsightResponse+newDeleteInsightResponse pHttpStatus_ =+  DeleteInsightResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+deleteInsightResponse_httpStatus :: Lens.Lens' DeleteInsightResponse Prelude.Int+deleteInsightResponse_httpStatus = Lens.lens (\DeleteInsightResponse' {httpStatus} -> httpStatus) (\s@DeleteInsightResponse' {} a -> s {httpStatus = a} :: DeleteInsightResponse)++instance Prelude.NFData DeleteInsightResponse where+  rnf DeleteInsightResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/DescribeAccountHealth.hs view
@@ -0,0 +1,222 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.DescribeAccountHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the number of open reactive insights, the number of open+-- proactive insights, and the number of metrics analyzed in your Amazon+-- Web Services account. Use these numbers to gauge the health of+-- operations in your Amazon Web Services account.+module Amazonka.DevOpsGuru.DescribeAccountHealth+  ( -- * Creating a Request+    DescribeAccountHealth (..),+    newDescribeAccountHealth,++    -- * Destructuring the Response+    DescribeAccountHealthResponse (..),+    newDescribeAccountHealthResponse,++    -- * Response Lenses+    describeAccountHealthResponse_analyzedResourceCount,+    describeAccountHealthResponse_httpStatus,+    describeAccountHealthResponse_openReactiveInsights,+    describeAccountHealthResponse_openProactiveInsights,+    describeAccountHealthResponse_metricsAnalyzed,+    describeAccountHealthResponse_resourceHours,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeAccountHealth' smart constructor.+data DescribeAccountHealth = DescribeAccountHealth'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAccountHealth' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDescribeAccountHealth ::+  DescribeAccountHealth+newDescribeAccountHealth = DescribeAccountHealth'++instance Core.AWSRequest DescribeAccountHealth where+  type+    AWSResponse DescribeAccountHealth =+      DescribeAccountHealthResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeAccountHealthResponse'+            Prelude.<$> (x Data..?> "AnalyzedResourceCount")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "OpenReactiveInsights")+            Prelude.<*> (x Data..:> "OpenProactiveInsights")+            Prelude.<*> (x Data..:> "MetricsAnalyzed")+            Prelude.<*> (x Data..:> "ResourceHours")+      )++instance Prelude.Hashable DescribeAccountHealth where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance Prelude.NFData DescribeAccountHealth where+  rnf _ = ()++instance Data.ToHeaders DescribeAccountHealth where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeAccountHealth where+  toPath = Prelude.const "/accounts/health"++instance Data.ToQuery DescribeAccountHealth where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeAccountHealthResponse' smart constructor.+data DescribeAccountHealthResponse = DescribeAccountHealthResponse'+  { -- | Number of resources that DevOps Guru is monitoring in your Amazon Web+    -- Services account.+    analyzedResourceCount :: Prelude.Maybe Prelude.Integer,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | An integer that specifies the number of open reactive insights in your+    -- Amazon Web Services account.+    openReactiveInsights :: Prelude.Int,+    -- | An integer that specifies the number of open proactive insights in your+    -- Amazon Web Services account.+    openProactiveInsights :: Prelude.Int,+    -- | An integer that specifies the number of metrics that have been analyzed+    -- in your Amazon Web Services account.+    metricsAnalyzed :: Prelude.Int,+    -- | The number of Amazon DevOps Guru resource analysis hours billed to the+    -- current Amazon Web Services account in the last hour.+    resourceHours :: Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAccountHealthResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'analyzedResourceCount', 'describeAccountHealthResponse_analyzedResourceCount' - Number of resources that DevOps Guru is monitoring in your Amazon Web+-- Services account.+--+-- 'httpStatus', 'describeAccountHealthResponse_httpStatus' - The response's http status code.+--+-- 'openReactiveInsights', 'describeAccountHealthResponse_openReactiveInsights' - An integer that specifies the number of open reactive insights in your+-- Amazon Web Services account.+--+-- 'openProactiveInsights', 'describeAccountHealthResponse_openProactiveInsights' - An integer that specifies the number of open proactive insights in your+-- Amazon Web Services account.+--+-- 'metricsAnalyzed', 'describeAccountHealthResponse_metricsAnalyzed' - An integer that specifies the number of metrics that have been analyzed+-- in your Amazon Web Services account.+--+-- 'resourceHours', 'describeAccountHealthResponse_resourceHours' - The number of Amazon DevOps Guru resource analysis hours billed to the+-- current Amazon Web Services account in the last hour.+newDescribeAccountHealthResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'openReactiveInsights'+  Prelude.Int ->+  -- | 'openProactiveInsights'+  Prelude.Int ->+  -- | 'metricsAnalyzed'+  Prelude.Int ->+  -- | 'resourceHours'+  Prelude.Integer ->+  DescribeAccountHealthResponse+newDescribeAccountHealthResponse+  pHttpStatus_+  pOpenReactiveInsights_+  pOpenProactiveInsights_+  pMetricsAnalyzed_+  pResourceHours_ =+    DescribeAccountHealthResponse'+      { analyzedResourceCount =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        openReactiveInsights =+          pOpenReactiveInsights_,+        openProactiveInsights =+          pOpenProactiveInsights_,+        metricsAnalyzed = pMetricsAnalyzed_,+        resourceHours = pResourceHours_+      }++-- | Number of resources that DevOps Guru is monitoring in your Amazon Web+-- Services account.+describeAccountHealthResponse_analyzedResourceCount :: Lens.Lens' DescribeAccountHealthResponse (Prelude.Maybe Prelude.Integer)+describeAccountHealthResponse_analyzedResourceCount = Lens.lens (\DescribeAccountHealthResponse' {analyzedResourceCount} -> analyzedResourceCount) (\s@DescribeAccountHealthResponse' {} a -> s {analyzedResourceCount = a} :: DescribeAccountHealthResponse)++-- | The response's http status code.+describeAccountHealthResponse_httpStatus :: Lens.Lens' DescribeAccountHealthResponse Prelude.Int+describeAccountHealthResponse_httpStatus = Lens.lens (\DescribeAccountHealthResponse' {httpStatus} -> httpStatus) (\s@DescribeAccountHealthResponse' {} a -> s {httpStatus = a} :: DescribeAccountHealthResponse)++-- | An integer that specifies the number of open reactive insights in your+-- Amazon Web Services account.+describeAccountHealthResponse_openReactiveInsights :: Lens.Lens' DescribeAccountHealthResponse Prelude.Int+describeAccountHealthResponse_openReactiveInsights = Lens.lens (\DescribeAccountHealthResponse' {openReactiveInsights} -> openReactiveInsights) (\s@DescribeAccountHealthResponse' {} a -> s {openReactiveInsights = a} :: DescribeAccountHealthResponse)++-- | An integer that specifies the number of open proactive insights in your+-- Amazon Web Services account.+describeAccountHealthResponse_openProactiveInsights :: Lens.Lens' DescribeAccountHealthResponse Prelude.Int+describeAccountHealthResponse_openProactiveInsights = Lens.lens (\DescribeAccountHealthResponse' {openProactiveInsights} -> openProactiveInsights) (\s@DescribeAccountHealthResponse' {} a -> s {openProactiveInsights = a} :: DescribeAccountHealthResponse)++-- | An integer that specifies the number of metrics that have been analyzed+-- in your Amazon Web Services account.+describeAccountHealthResponse_metricsAnalyzed :: Lens.Lens' DescribeAccountHealthResponse Prelude.Int+describeAccountHealthResponse_metricsAnalyzed = Lens.lens (\DescribeAccountHealthResponse' {metricsAnalyzed} -> metricsAnalyzed) (\s@DescribeAccountHealthResponse' {} a -> s {metricsAnalyzed = a} :: DescribeAccountHealthResponse)++-- | The number of Amazon DevOps Guru resource analysis hours billed to the+-- current Amazon Web Services account in the last hour.+describeAccountHealthResponse_resourceHours :: Lens.Lens' DescribeAccountHealthResponse Prelude.Integer+describeAccountHealthResponse_resourceHours = Lens.lens (\DescribeAccountHealthResponse' {resourceHours} -> resourceHours) (\s@DescribeAccountHealthResponse' {} a -> s {resourceHours = a} :: DescribeAccountHealthResponse)++instance Prelude.NFData DescribeAccountHealthResponse where+  rnf DescribeAccountHealthResponse' {..} =+    Prelude.rnf analyzedResourceCount+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf openReactiveInsights+      `Prelude.seq` Prelude.rnf openProactiveInsights+      `Prelude.seq` Prelude.rnf metricsAnalyzed+      `Prelude.seq` Prelude.rnf resourceHours
+ gen/Amazonka/DevOpsGuru/DescribeAccountOverview.hs view
@@ -0,0 +1,253 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.DescribeAccountOverview+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- For the time range passed in, returns the number of open reactive+-- insight that were created, the number of open proactive insights that+-- were created, and the Mean Time to Recover (MTTR) for all closed+-- reactive insights.+module Amazonka.DevOpsGuru.DescribeAccountOverview+  ( -- * Creating a Request+    DescribeAccountOverview (..),+    newDescribeAccountOverview,++    -- * Request Lenses+    describeAccountOverview_toTime,+    describeAccountOverview_fromTime,++    -- * Destructuring the Response+    DescribeAccountOverviewResponse (..),+    newDescribeAccountOverviewResponse,++    -- * Response Lenses+    describeAccountOverviewResponse_httpStatus,+    describeAccountOverviewResponse_reactiveInsights,+    describeAccountOverviewResponse_proactiveInsights,+    describeAccountOverviewResponse_meanTimeToRecoverInMilliseconds,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeAccountOverview' smart constructor.+data DescribeAccountOverview = DescribeAccountOverview'+  { -- | The end of the time range passed in. The start time granularity is at+    -- the day level. The floor of the start time is used. Returned information+    -- occurred before this day. If this is not specified, then the current day+    -- is used.+    toTime :: Prelude.Maybe Data.POSIX,+    -- | The start of the time range passed in. The start time granularity is at+    -- the day level. The floor of the start time is used. Returned information+    -- occurred after this day.+    fromTime :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAccountOverview' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'toTime', 'describeAccountOverview_toTime' - The end of the time range passed in. The start time granularity is at+-- the day level. The floor of the start time is used. Returned information+-- occurred before this day. If this is not specified, then the current day+-- is used.+--+-- 'fromTime', 'describeAccountOverview_fromTime' - The start of the time range passed in. The start time granularity is at+-- the day level. The floor of the start time is used. Returned information+-- occurred after this day.+newDescribeAccountOverview ::+  -- | 'fromTime'+  Prelude.UTCTime ->+  DescribeAccountOverview+newDescribeAccountOverview pFromTime_ =+  DescribeAccountOverview'+    { toTime = Prelude.Nothing,+      fromTime = Data._Time Lens.# pFromTime_+    }++-- | The end of the time range passed in. The start time granularity is at+-- the day level. The floor of the start time is used. Returned information+-- occurred before this day. If this is not specified, then the current day+-- is used.+describeAccountOverview_toTime :: Lens.Lens' DescribeAccountOverview (Prelude.Maybe Prelude.UTCTime)+describeAccountOverview_toTime = Lens.lens (\DescribeAccountOverview' {toTime} -> toTime) (\s@DescribeAccountOverview' {} a -> s {toTime = a} :: DescribeAccountOverview) Prelude.. Lens.mapping Data._Time++-- | The start of the time range passed in. The start time granularity is at+-- the day level. The floor of the start time is used. Returned information+-- occurred after this day.+describeAccountOverview_fromTime :: Lens.Lens' DescribeAccountOverview Prelude.UTCTime+describeAccountOverview_fromTime = Lens.lens (\DescribeAccountOverview' {fromTime} -> fromTime) (\s@DescribeAccountOverview' {} a -> s {fromTime = a} :: DescribeAccountOverview) Prelude.. Data._Time++instance Core.AWSRequest DescribeAccountOverview where+  type+    AWSResponse DescribeAccountOverview =+      DescribeAccountOverviewResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeAccountOverviewResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "ReactiveInsights")+            Prelude.<*> (x Data..:> "ProactiveInsights")+            Prelude.<*> (x Data..:> "MeanTimeToRecoverInMilliseconds")+      )++instance Prelude.Hashable DescribeAccountOverview where+  hashWithSalt _salt DescribeAccountOverview' {..} =+    _salt+      `Prelude.hashWithSalt` toTime+      `Prelude.hashWithSalt` fromTime++instance Prelude.NFData DescribeAccountOverview where+  rnf DescribeAccountOverview' {..} =+    Prelude.rnf toTime+      `Prelude.seq` Prelude.rnf fromTime++instance Data.ToHeaders DescribeAccountOverview where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeAccountOverview where+  toJSON DescribeAccountOverview' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ToTime" Data..=) Prelude.<$> toTime,+            Prelude.Just ("FromTime" Data..= fromTime)+          ]+      )++instance Data.ToPath DescribeAccountOverview where+  toPath = Prelude.const "/accounts/overview"++instance Data.ToQuery DescribeAccountOverview where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeAccountOverviewResponse' smart constructor.+data DescribeAccountOverviewResponse = DescribeAccountOverviewResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | An integer that specifies the number of open reactive insights in your+    -- Amazon Web Services account that were created during the time range+    -- passed in.+    reactiveInsights :: Prelude.Int,+    -- | An integer that specifies the number of open proactive insights in your+    -- Amazon Web Services account that were created during the time range+    -- passed in.+    proactiveInsights :: Prelude.Int,+    -- | The Mean Time to Recover (MTTR) for all closed insights that were+    -- created during the time range passed in.+    meanTimeToRecoverInMilliseconds :: Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAccountOverviewResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeAccountOverviewResponse_httpStatus' - The response's http status code.+--+-- 'reactiveInsights', 'describeAccountOverviewResponse_reactiveInsights' - An integer that specifies the number of open reactive insights in your+-- Amazon Web Services account that were created during the time range+-- passed in.+--+-- 'proactiveInsights', 'describeAccountOverviewResponse_proactiveInsights' - An integer that specifies the number of open proactive insights in your+-- Amazon Web Services account that were created during the time range+-- passed in.+--+-- 'meanTimeToRecoverInMilliseconds', 'describeAccountOverviewResponse_meanTimeToRecoverInMilliseconds' - The Mean Time to Recover (MTTR) for all closed insights that were+-- created during the time range passed in.+newDescribeAccountOverviewResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'reactiveInsights'+  Prelude.Int ->+  -- | 'proactiveInsights'+  Prelude.Int ->+  -- | 'meanTimeToRecoverInMilliseconds'+  Prelude.Integer ->+  DescribeAccountOverviewResponse+newDescribeAccountOverviewResponse+  pHttpStatus_+  pReactiveInsights_+  pProactiveInsights_+  pMeanTimeToRecoverInMilliseconds_ =+    DescribeAccountOverviewResponse'+      { httpStatus =+          pHttpStatus_,+        reactiveInsights = pReactiveInsights_,+        proactiveInsights = pProactiveInsights_,+        meanTimeToRecoverInMilliseconds =+          pMeanTimeToRecoverInMilliseconds_+      }++-- | The response's http status code.+describeAccountOverviewResponse_httpStatus :: Lens.Lens' DescribeAccountOverviewResponse Prelude.Int+describeAccountOverviewResponse_httpStatus = Lens.lens (\DescribeAccountOverviewResponse' {httpStatus} -> httpStatus) (\s@DescribeAccountOverviewResponse' {} a -> s {httpStatus = a} :: DescribeAccountOverviewResponse)++-- | An integer that specifies the number of open reactive insights in your+-- Amazon Web Services account that were created during the time range+-- passed in.+describeAccountOverviewResponse_reactiveInsights :: Lens.Lens' DescribeAccountOverviewResponse Prelude.Int+describeAccountOverviewResponse_reactiveInsights = Lens.lens (\DescribeAccountOverviewResponse' {reactiveInsights} -> reactiveInsights) (\s@DescribeAccountOverviewResponse' {} a -> s {reactiveInsights = a} :: DescribeAccountOverviewResponse)++-- | An integer that specifies the number of open proactive insights in your+-- Amazon Web Services account that were created during the time range+-- passed in.+describeAccountOverviewResponse_proactiveInsights :: Lens.Lens' DescribeAccountOverviewResponse Prelude.Int+describeAccountOverviewResponse_proactiveInsights = Lens.lens (\DescribeAccountOverviewResponse' {proactiveInsights} -> proactiveInsights) (\s@DescribeAccountOverviewResponse' {} a -> s {proactiveInsights = a} :: DescribeAccountOverviewResponse)++-- | The Mean Time to Recover (MTTR) for all closed insights that were+-- created during the time range passed in.+describeAccountOverviewResponse_meanTimeToRecoverInMilliseconds :: Lens.Lens' DescribeAccountOverviewResponse Prelude.Integer+describeAccountOverviewResponse_meanTimeToRecoverInMilliseconds = Lens.lens (\DescribeAccountOverviewResponse' {meanTimeToRecoverInMilliseconds} -> meanTimeToRecoverInMilliseconds) (\s@DescribeAccountOverviewResponse' {} a -> s {meanTimeToRecoverInMilliseconds = a} :: DescribeAccountOverviewResponse)++instance+  Prelude.NFData+    DescribeAccountOverviewResponse+  where+  rnf DescribeAccountOverviewResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf reactiveInsights+      `Prelude.seq` Prelude.rnf proactiveInsights+      `Prelude.seq` Prelude.rnf meanTimeToRecoverInMilliseconds
+ gen/Amazonka/DevOpsGuru/DescribeAnomaly.hs view
@@ -0,0 +1,186 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.DescribeAnomaly+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns details about an anomaly that you specify using its ID.+module Amazonka.DevOpsGuru.DescribeAnomaly+  ( -- * Creating a Request+    DescribeAnomaly (..),+    newDescribeAnomaly,++    -- * Request Lenses+    describeAnomaly_accountId,+    describeAnomaly_id,++    -- * Destructuring the Response+    DescribeAnomalyResponse (..),+    newDescribeAnomalyResponse,++    -- * Response Lenses+    describeAnomalyResponse_proactiveAnomaly,+    describeAnomalyResponse_reactiveAnomaly,+    describeAnomalyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeAnomaly' smart constructor.+data DescribeAnomaly = DescribeAnomaly'+  { -- | The ID of the member account.+    accountId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the anomaly.+    id :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAnomaly' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountId', 'describeAnomaly_accountId' - The ID of the member account.+--+-- 'id', 'describeAnomaly_id' - The ID of the anomaly.+newDescribeAnomaly ::+  -- | 'id'+  Prelude.Text ->+  DescribeAnomaly+newDescribeAnomaly pId_ =+  DescribeAnomaly'+    { accountId = Prelude.Nothing,+      id = pId_+    }++-- | The ID of the member account.+describeAnomaly_accountId :: Lens.Lens' DescribeAnomaly (Prelude.Maybe Prelude.Text)+describeAnomaly_accountId = Lens.lens (\DescribeAnomaly' {accountId} -> accountId) (\s@DescribeAnomaly' {} a -> s {accountId = a} :: DescribeAnomaly)++-- | The ID of the anomaly.+describeAnomaly_id :: Lens.Lens' DescribeAnomaly Prelude.Text+describeAnomaly_id = Lens.lens (\DescribeAnomaly' {id} -> id) (\s@DescribeAnomaly' {} a -> s {id = a} :: DescribeAnomaly)++instance Core.AWSRequest DescribeAnomaly where+  type+    AWSResponse DescribeAnomaly =+      DescribeAnomalyResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeAnomalyResponse'+            Prelude.<$> (x Data..?> "ProactiveAnomaly")+            Prelude.<*> (x Data..?> "ReactiveAnomaly")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeAnomaly where+  hashWithSalt _salt DescribeAnomaly' {..} =+    _salt+      `Prelude.hashWithSalt` accountId+      `Prelude.hashWithSalt` id++instance Prelude.NFData DescribeAnomaly where+  rnf DescribeAnomaly' {..} =+    Prelude.rnf accountId `Prelude.seq` Prelude.rnf id++instance Data.ToHeaders DescribeAnomaly where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeAnomaly where+  toPath DescribeAnomaly' {..} =+    Prelude.mconcat ["/anomalies/", Data.toBS id]++instance Data.ToQuery DescribeAnomaly where+  toQuery DescribeAnomaly' {..} =+    Prelude.mconcat ["AccountId" Data.=: accountId]++-- | /See:/ 'newDescribeAnomalyResponse' smart constructor.+data DescribeAnomalyResponse = DescribeAnomalyResponse'+  { -- | A @ProactiveAnomaly@ object that represents the requested anomaly.+    proactiveAnomaly :: Prelude.Maybe ProactiveAnomaly,+    -- | A @ReactiveAnomaly@ object that represents the requested anomaly.+    reactiveAnomaly :: Prelude.Maybe ReactiveAnomaly,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAnomalyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'proactiveAnomaly', 'describeAnomalyResponse_proactiveAnomaly' - A @ProactiveAnomaly@ object that represents the requested anomaly.+--+-- 'reactiveAnomaly', 'describeAnomalyResponse_reactiveAnomaly' - A @ReactiveAnomaly@ object that represents the requested anomaly.+--+-- 'httpStatus', 'describeAnomalyResponse_httpStatus' - The response's http status code.+newDescribeAnomalyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeAnomalyResponse+newDescribeAnomalyResponse pHttpStatus_ =+  DescribeAnomalyResponse'+    { proactiveAnomaly =+        Prelude.Nothing,+      reactiveAnomaly = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A @ProactiveAnomaly@ object that represents the requested anomaly.+describeAnomalyResponse_proactiveAnomaly :: Lens.Lens' DescribeAnomalyResponse (Prelude.Maybe ProactiveAnomaly)+describeAnomalyResponse_proactiveAnomaly = Lens.lens (\DescribeAnomalyResponse' {proactiveAnomaly} -> proactiveAnomaly) (\s@DescribeAnomalyResponse' {} a -> s {proactiveAnomaly = a} :: DescribeAnomalyResponse)++-- | A @ReactiveAnomaly@ object that represents the requested anomaly.+describeAnomalyResponse_reactiveAnomaly :: Lens.Lens' DescribeAnomalyResponse (Prelude.Maybe ReactiveAnomaly)+describeAnomalyResponse_reactiveAnomaly = Lens.lens (\DescribeAnomalyResponse' {reactiveAnomaly} -> reactiveAnomaly) (\s@DescribeAnomalyResponse' {} a -> s {reactiveAnomaly = a} :: DescribeAnomalyResponse)++-- | The response's http status code.+describeAnomalyResponse_httpStatus :: Lens.Lens' DescribeAnomalyResponse Prelude.Int+describeAnomalyResponse_httpStatus = Lens.lens (\DescribeAnomalyResponse' {httpStatus} -> httpStatus) (\s@DescribeAnomalyResponse' {} a -> s {httpStatus = a} :: DescribeAnomalyResponse)++instance Prelude.NFData DescribeAnomalyResponse where+  rnf DescribeAnomalyResponse' {..} =+    Prelude.rnf proactiveAnomaly+      `Prelude.seq` Prelude.rnf reactiveAnomaly+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/DescribeEventSourcesConfig.hs view
@@ -0,0 +1,152 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.DescribeEventSourcesConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the integration status of services that are integrated with+-- DevOps Guru as Consumer via EventBridge. The one service that can be+-- integrated with DevOps Guru is Amazon CodeGuru Profiler, which can+-- produce proactive recommendations which can be stored and viewed in+-- DevOps Guru.+module Amazonka.DevOpsGuru.DescribeEventSourcesConfig+  ( -- * Creating a Request+    DescribeEventSourcesConfig (..),+    newDescribeEventSourcesConfig,++    -- * Destructuring the Response+    DescribeEventSourcesConfigResponse (..),+    newDescribeEventSourcesConfigResponse,++    -- * Response Lenses+    describeEventSourcesConfigResponse_eventSources,+    describeEventSourcesConfigResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeEventSourcesConfig' smart constructor.+data DescribeEventSourcesConfig = DescribeEventSourcesConfig'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeEventSourcesConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDescribeEventSourcesConfig ::+  DescribeEventSourcesConfig+newDescribeEventSourcesConfig =+  DescribeEventSourcesConfig'++instance Core.AWSRequest DescribeEventSourcesConfig where+  type+    AWSResponse DescribeEventSourcesConfig =+      DescribeEventSourcesConfigResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeEventSourcesConfigResponse'+            Prelude.<$> (x Data..?> "EventSources")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeEventSourcesConfig where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance Prelude.NFData DescribeEventSourcesConfig where+  rnf _ = ()++instance Data.ToHeaders DescribeEventSourcesConfig where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeEventSourcesConfig where+  toJSON = Prelude.const (Data.Object Prelude.mempty)++instance Data.ToPath DescribeEventSourcesConfig where+  toPath = Prelude.const "/event-sources"++instance Data.ToQuery DescribeEventSourcesConfig where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeEventSourcesConfigResponse' smart constructor.+data DescribeEventSourcesConfigResponse = DescribeEventSourcesConfigResponse'+  { -- | Lists the event sources in the configuration.+    eventSources :: Prelude.Maybe EventSourcesConfig,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeEventSourcesConfigResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'eventSources', 'describeEventSourcesConfigResponse_eventSources' - Lists the event sources in the configuration.+--+-- 'httpStatus', 'describeEventSourcesConfigResponse_httpStatus' - The response's http status code.+newDescribeEventSourcesConfigResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeEventSourcesConfigResponse+newDescribeEventSourcesConfigResponse pHttpStatus_ =+  DescribeEventSourcesConfigResponse'+    { eventSources =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Lists the event sources in the configuration.+describeEventSourcesConfigResponse_eventSources :: Lens.Lens' DescribeEventSourcesConfigResponse (Prelude.Maybe EventSourcesConfig)+describeEventSourcesConfigResponse_eventSources = Lens.lens (\DescribeEventSourcesConfigResponse' {eventSources} -> eventSources) (\s@DescribeEventSourcesConfigResponse' {} a -> s {eventSources = a} :: DescribeEventSourcesConfigResponse)++-- | The response's http status code.+describeEventSourcesConfigResponse_httpStatus :: Lens.Lens' DescribeEventSourcesConfigResponse Prelude.Int+describeEventSourcesConfigResponse_httpStatus = Lens.lens (\DescribeEventSourcesConfigResponse' {httpStatus} -> httpStatus) (\s@DescribeEventSourcesConfigResponse' {} a -> s {httpStatus = a} :: DescribeEventSourcesConfigResponse)++instance+  Prelude.NFData+    DescribeEventSourcesConfigResponse+  where+  rnf DescribeEventSourcesConfigResponse' {..} =+    Prelude.rnf eventSources+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/DescribeFeedback.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.DevOpsGuru.DescribeFeedback+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the most recent feedback submitted in the current Amazon Web+-- Services account and Region.+module Amazonka.DevOpsGuru.DescribeFeedback+  ( -- * Creating a Request+    DescribeFeedback (..),+    newDescribeFeedback,++    -- * Request Lenses+    describeFeedback_insightId,++    -- * Destructuring the Response+    DescribeFeedbackResponse (..),+    newDescribeFeedbackResponse,++    -- * Response Lenses+    describeFeedbackResponse_insightFeedback,+    describeFeedbackResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeFeedback' smart constructor.+data DescribeFeedback = DescribeFeedback'+  { -- | The ID of the insight for which the feedback was provided.+    insightId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeFeedback' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'insightId', 'describeFeedback_insightId' - The ID of the insight for which the feedback was provided.+newDescribeFeedback ::+  DescribeFeedback+newDescribeFeedback =+  DescribeFeedback' {insightId = Prelude.Nothing}++-- | The ID of the insight for which the feedback was provided.+describeFeedback_insightId :: Lens.Lens' DescribeFeedback (Prelude.Maybe Prelude.Text)+describeFeedback_insightId = Lens.lens (\DescribeFeedback' {insightId} -> insightId) (\s@DescribeFeedback' {} a -> s {insightId = a} :: DescribeFeedback)++instance Core.AWSRequest DescribeFeedback where+  type+    AWSResponse DescribeFeedback =+      DescribeFeedbackResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeFeedbackResponse'+            Prelude.<$> (x Data..?> "InsightFeedback")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeFeedback where+  hashWithSalt _salt DescribeFeedback' {..} =+    _salt `Prelude.hashWithSalt` insightId++instance Prelude.NFData DescribeFeedback where+  rnf DescribeFeedback' {..} = Prelude.rnf insightId++instance Data.ToHeaders DescribeFeedback where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeFeedback where+  toJSON DescribeFeedback' {..} =+    Data.object+      ( Prelude.catMaybes+          [("InsightId" Data..=) Prelude.<$> insightId]+      )++instance Data.ToPath DescribeFeedback where+  toPath = Prelude.const "/feedback"++instance Data.ToQuery DescribeFeedback where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeFeedbackResponse' smart constructor.+data DescribeFeedbackResponse = DescribeFeedbackResponse'+  { insightFeedback :: Prelude.Maybe InsightFeedback,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeFeedbackResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'insightFeedback', 'describeFeedbackResponse_insightFeedback' - Undocumented member.+--+-- 'httpStatus', 'describeFeedbackResponse_httpStatus' - The response's http status code.+newDescribeFeedbackResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeFeedbackResponse+newDescribeFeedbackResponse pHttpStatus_ =+  DescribeFeedbackResponse'+    { insightFeedback =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+describeFeedbackResponse_insightFeedback :: Lens.Lens' DescribeFeedbackResponse (Prelude.Maybe InsightFeedback)+describeFeedbackResponse_insightFeedback = Lens.lens (\DescribeFeedbackResponse' {insightFeedback} -> insightFeedback) (\s@DescribeFeedbackResponse' {} a -> s {insightFeedback = a} :: DescribeFeedbackResponse)++-- | The response's http status code.+describeFeedbackResponse_httpStatus :: Lens.Lens' DescribeFeedbackResponse Prelude.Int+describeFeedbackResponse_httpStatus = Lens.lens (\DescribeFeedbackResponse' {httpStatus} -> httpStatus) (\s@DescribeFeedbackResponse' {} a -> s {httpStatus = a} :: DescribeFeedbackResponse)++instance Prelude.NFData DescribeFeedbackResponse where+  rnf DescribeFeedbackResponse' {..} =+    Prelude.rnf insightFeedback+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/DescribeInsight.hs view
@@ -0,0 +1,186 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.DescribeInsight+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns details about an insight that you specify using its ID.+module Amazonka.DevOpsGuru.DescribeInsight+  ( -- * Creating a Request+    DescribeInsight (..),+    newDescribeInsight,++    -- * Request Lenses+    describeInsight_accountId,+    describeInsight_id,++    -- * Destructuring the Response+    DescribeInsightResponse (..),+    newDescribeInsightResponse,++    -- * Response Lenses+    describeInsightResponse_proactiveInsight,+    describeInsightResponse_reactiveInsight,+    describeInsightResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeInsight' smart constructor.+data DescribeInsight = DescribeInsight'+  { -- | The ID of the member account in the organization.+    accountId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the insight.+    id :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeInsight' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountId', 'describeInsight_accountId' - The ID of the member account in the organization.+--+-- 'id', 'describeInsight_id' - The ID of the insight.+newDescribeInsight ::+  -- | 'id'+  Prelude.Text ->+  DescribeInsight+newDescribeInsight pId_ =+  DescribeInsight'+    { accountId = Prelude.Nothing,+      id = pId_+    }++-- | The ID of the member account in the organization.+describeInsight_accountId :: Lens.Lens' DescribeInsight (Prelude.Maybe Prelude.Text)+describeInsight_accountId = Lens.lens (\DescribeInsight' {accountId} -> accountId) (\s@DescribeInsight' {} a -> s {accountId = a} :: DescribeInsight)++-- | The ID of the insight.+describeInsight_id :: Lens.Lens' DescribeInsight Prelude.Text+describeInsight_id = Lens.lens (\DescribeInsight' {id} -> id) (\s@DescribeInsight' {} a -> s {id = a} :: DescribeInsight)++instance Core.AWSRequest DescribeInsight where+  type+    AWSResponse DescribeInsight =+      DescribeInsightResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeInsightResponse'+            Prelude.<$> (x Data..?> "ProactiveInsight")+            Prelude.<*> (x Data..?> "ReactiveInsight")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeInsight where+  hashWithSalt _salt DescribeInsight' {..} =+    _salt+      `Prelude.hashWithSalt` accountId+      `Prelude.hashWithSalt` id++instance Prelude.NFData DescribeInsight where+  rnf DescribeInsight' {..} =+    Prelude.rnf accountId `Prelude.seq` Prelude.rnf id++instance Data.ToHeaders DescribeInsight where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeInsight where+  toPath DescribeInsight' {..} =+    Prelude.mconcat ["/insights/", Data.toBS id]++instance Data.ToQuery DescribeInsight where+  toQuery DescribeInsight' {..} =+    Prelude.mconcat ["AccountId" Data.=: accountId]++-- | /See:/ 'newDescribeInsightResponse' smart constructor.+data DescribeInsightResponse = DescribeInsightResponse'+  { -- | A @ProactiveInsight@ object that represents the requested insight.+    proactiveInsight :: Prelude.Maybe ProactiveInsight,+    -- | A @ReactiveInsight@ object that represents the requested insight.+    reactiveInsight :: Prelude.Maybe ReactiveInsight,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeInsightResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'proactiveInsight', 'describeInsightResponse_proactiveInsight' - A @ProactiveInsight@ object that represents the requested insight.+--+-- 'reactiveInsight', 'describeInsightResponse_reactiveInsight' - A @ReactiveInsight@ object that represents the requested insight.+--+-- 'httpStatus', 'describeInsightResponse_httpStatus' - The response's http status code.+newDescribeInsightResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeInsightResponse+newDescribeInsightResponse pHttpStatus_ =+  DescribeInsightResponse'+    { proactiveInsight =+        Prelude.Nothing,+      reactiveInsight = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A @ProactiveInsight@ object that represents the requested insight.+describeInsightResponse_proactiveInsight :: Lens.Lens' DescribeInsightResponse (Prelude.Maybe ProactiveInsight)+describeInsightResponse_proactiveInsight = Lens.lens (\DescribeInsightResponse' {proactiveInsight} -> proactiveInsight) (\s@DescribeInsightResponse' {} a -> s {proactiveInsight = a} :: DescribeInsightResponse)++-- | A @ReactiveInsight@ object that represents the requested insight.+describeInsightResponse_reactiveInsight :: Lens.Lens' DescribeInsightResponse (Prelude.Maybe ReactiveInsight)+describeInsightResponse_reactiveInsight = Lens.lens (\DescribeInsightResponse' {reactiveInsight} -> reactiveInsight) (\s@DescribeInsightResponse' {} a -> s {reactiveInsight = a} :: DescribeInsightResponse)++-- | The response's http status code.+describeInsightResponse_httpStatus :: Lens.Lens' DescribeInsightResponse Prelude.Int+describeInsightResponse_httpStatus = Lens.lens (\DescribeInsightResponse' {httpStatus} -> httpStatus) (\s@DescribeInsightResponse' {} a -> s {httpStatus = a} :: DescribeInsightResponse)++instance Prelude.NFData DescribeInsightResponse where+  rnf DescribeInsightResponse' {..} =+    Prelude.rnf proactiveInsight+      `Prelude.seq` Prelude.rnf reactiveInsight+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/DescribeOrganizationHealth.hs view
@@ -0,0 +1,249 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.DescribeOrganizationHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns active insights, predictive insights, and resource hours+-- analyzed in last hour.+module Amazonka.DevOpsGuru.DescribeOrganizationHealth+  ( -- * Creating a Request+    DescribeOrganizationHealth (..),+    newDescribeOrganizationHealth,++    -- * Request Lenses+    describeOrganizationHealth_accountIds,+    describeOrganizationHealth_organizationalUnitIds,++    -- * Destructuring the Response+    DescribeOrganizationHealthResponse (..),+    newDescribeOrganizationHealthResponse,++    -- * Response Lenses+    describeOrganizationHealthResponse_httpStatus,+    describeOrganizationHealthResponse_openReactiveInsights,+    describeOrganizationHealthResponse_openProactiveInsights,+    describeOrganizationHealthResponse_metricsAnalyzed,+    describeOrganizationHealthResponse_resourceHours,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeOrganizationHealth' smart constructor.+data DescribeOrganizationHealth = DescribeOrganizationHealth'+  { -- | The ID of the Amazon Web Services account.+    accountIds :: Prelude.Maybe [Prelude.Text],+    -- | The ID of the organizational unit.+    organizationalUnitIds :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeOrganizationHealth' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountIds', 'describeOrganizationHealth_accountIds' - The ID of the Amazon Web Services account.+--+-- 'organizationalUnitIds', 'describeOrganizationHealth_organizationalUnitIds' - The ID of the organizational unit.+newDescribeOrganizationHealth ::+  DescribeOrganizationHealth+newDescribeOrganizationHealth =+  DescribeOrganizationHealth'+    { accountIds =+        Prelude.Nothing,+      organizationalUnitIds = Prelude.Nothing+    }++-- | The ID of the Amazon Web Services account.+describeOrganizationHealth_accountIds :: Lens.Lens' DescribeOrganizationHealth (Prelude.Maybe [Prelude.Text])+describeOrganizationHealth_accountIds = Lens.lens (\DescribeOrganizationHealth' {accountIds} -> accountIds) (\s@DescribeOrganizationHealth' {} a -> s {accountIds = a} :: DescribeOrganizationHealth) Prelude.. Lens.mapping Lens.coerced++-- | The ID of the organizational unit.+describeOrganizationHealth_organizationalUnitIds :: Lens.Lens' DescribeOrganizationHealth (Prelude.Maybe [Prelude.Text])+describeOrganizationHealth_organizationalUnitIds = Lens.lens (\DescribeOrganizationHealth' {organizationalUnitIds} -> organizationalUnitIds) (\s@DescribeOrganizationHealth' {} a -> s {organizationalUnitIds = a} :: DescribeOrganizationHealth) Prelude.. Lens.mapping Lens.coerced++instance Core.AWSRequest DescribeOrganizationHealth where+  type+    AWSResponse DescribeOrganizationHealth =+      DescribeOrganizationHealthResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeOrganizationHealthResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "OpenReactiveInsights")+            Prelude.<*> (x Data..:> "OpenProactiveInsights")+            Prelude.<*> (x Data..:> "MetricsAnalyzed")+            Prelude.<*> (x Data..:> "ResourceHours")+      )++instance Prelude.Hashable DescribeOrganizationHealth where+  hashWithSalt _salt DescribeOrganizationHealth' {..} =+    _salt+      `Prelude.hashWithSalt` accountIds+      `Prelude.hashWithSalt` organizationalUnitIds++instance Prelude.NFData DescribeOrganizationHealth where+  rnf DescribeOrganizationHealth' {..} =+    Prelude.rnf accountIds+      `Prelude.seq` Prelude.rnf organizationalUnitIds++instance Data.ToHeaders DescribeOrganizationHealth where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeOrganizationHealth where+  toJSON DescribeOrganizationHealth' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AccountIds" Data..=) Prelude.<$> accountIds,+            ("OrganizationalUnitIds" Data..=)+              Prelude.<$> organizationalUnitIds+          ]+      )++instance Data.ToPath DescribeOrganizationHealth where+  toPath = Prelude.const "/organization/health"++instance Data.ToQuery DescribeOrganizationHealth where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeOrganizationHealthResponse' smart constructor.+data DescribeOrganizationHealthResponse = DescribeOrganizationHealthResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | An integer that specifies the number of open reactive insights in your+    -- Amazon Web Services account.+    openReactiveInsights :: Prelude.Int,+    -- | An integer that specifies the number of open proactive insights in your+    -- Amazon Web Services account.+    openProactiveInsights :: Prelude.Int,+    -- | An integer that specifies the number of metrics that have been analyzed+    -- in your organization.+    metricsAnalyzed :: Prelude.Int,+    -- | The number of Amazon DevOps Guru resource analysis hours billed to the+    -- current Amazon Web Services account in the last hour.+    resourceHours :: Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeOrganizationHealthResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeOrganizationHealthResponse_httpStatus' - The response's http status code.+--+-- 'openReactiveInsights', 'describeOrganizationHealthResponse_openReactiveInsights' - An integer that specifies the number of open reactive insights in your+-- Amazon Web Services account.+--+-- 'openProactiveInsights', 'describeOrganizationHealthResponse_openProactiveInsights' - An integer that specifies the number of open proactive insights in your+-- Amazon Web Services account.+--+-- 'metricsAnalyzed', 'describeOrganizationHealthResponse_metricsAnalyzed' - An integer that specifies the number of metrics that have been analyzed+-- in your organization.+--+-- 'resourceHours', 'describeOrganizationHealthResponse_resourceHours' - The number of Amazon DevOps Guru resource analysis hours billed to the+-- current Amazon Web Services account in the last hour.+newDescribeOrganizationHealthResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'openReactiveInsights'+  Prelude.Int ->+  -- | 'openProactiveInsights'+  Prelude.Int ->+  -- | 'metricsAnalyzed'+  Prelude.Int ->+  -- | 'resourceHours'+  Prelude.Integer ->+  DescribeOrganizationHealthResponse+newDescribeOrganizationHealthResponse+  pHttpStatus_+  pOpenReactiveInsights_+  pOpenProactiveInsights_+  pMetricsAnalyzed_+  pResourceHours_ =+    DescribeOrganizationHealthResponse'+      { httpStatus =+          pHttpStatus_,+        openReactiveInsights =+          pOpenReactiveInsights_,+        openProactiveInsights =+          pOpenProactiveInsights_,+        metricsAnalyzed = pMetricsAnalyzed_,+        resourceHours = pResourceHours_+      }++-- | The response's http status code.+describeOrganizationHealthResponse_httpStatus :: Lens.Lens' DescribeOrganizationHealthResponse Prelude.Int+describeOrganizationHealthResponse_httpStatus = Lens.lens (\DescribeOrganizationHealthResponse' {httpStatus} -> httpStatus) (\s@DescribeOrganizationHealthResponse' {} a -> s {httpStatus = a} :: DescribeOrganizationHealthResponse)++-- | An integer that specifies the number of open reactive insights in your+-- Amazon Web Services account.+describeOrganizationHealthResponse_openReactiveInsights :: Lens.Lens' DescribeOrganizationHealthResponse Prelude.Int+describeOrganizationHealthResponse_openReactiveInsights = Lens.lens (\DescribeOrganizationHealthResponse' {openReactiveInsights} -> openReactiveInsights) (\s@DescribeOrganizationHealthResponse' {} a -> s {openReactiveInsights = a} :: DescribeOrganizationHealthResponse)++-- | An integer that specifies the number of open proactive insights in your+-- Amazon Web Services account.+describeOrganizationHealthResponse_openProactiveInsights :: Lens.Lens' DescribeOrganizationHealthResponse Prelude.Int+describeOrganizationHealthResponse_openProactiveInsights = Lens.lens (\DescribeOrganizationHealthResponse' {openProactiveInsights} -> openProactiveInsights) (\s@DescribeOrganizationHealthResponse' {} a -> s {openProactiveInsights = a} :: DescribeOrganizationHealthResponse)++-- | An integer that specifies the number of metrics that have been analyzed+-- in your organization.+describeOrganizationHealthResponse_metricsAnalyzed :: Lens.Lens' DescribeOrganizationHealthResponse Prelude.Int+describeOrganizationHealthResponse_metricsAnalyzed = Lens.lens (\DescribeOrganizationHealthResponse' {metricsAnalyzed} -> metricsAnalyzed) (\s@DescribeOrganizationHealthResponse' {} a -> s {metricsAnalyzed = a} :: DescribeOrganizationHealthResponse)++-- | The number of Amazon DevOps Guru resource analysis hours billed to the+-- current Amazon Web Services account in the last hour.+describeOrganizationHealthResponse_resourceHours :: Lens.Lens' DescribeOrganizationHealthResponse Prelude.Integer+describeOrganizationHealthResponse_resourceHours = Lens.lens (\DescribeOrganizationHealthResponse' {resourceHours} -> resourceHours) (\s@DescribeOrganizationHealthResponse' {} a -> s {resourceHours = a} :: DescribeOrganizationHealthResponse)++instance+  Prelude.NFData+    DescribeOrganizationHealthResponse+  where+  rnf DescribeOrganizationHealthResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf openReactiveInsights+      `Prelude.seq` Prelude.rnf openProactiveInsights+      `Prelude.seq` Prelude.rnf metricsAnalyzed+      `Prelude.seq` Prelude.rnf resourceHours
+ gen/Amazonka/DevOpsGuru/DescribeOrganizationOverview.hs view
@@ -0,0 +1,259 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.DescribeOrganizationOverview+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns an overview of your organization\'s history based on the+-- specified time range. The overview includes the total reactive and+-- proactive insights.+module Amazonka.DevOpsGuru.DescribeOrganizationOverview+  ( -- * Creating a Request+    DescribeOrganizationOverview (..),+    newDescribeOrganizationOverview,++    -- * Request Lenses+    describeOrganizationOverview_accountIds,+    describeOrganizationOverview_organizationalUnitIds,+    describeOrganizationOverview_toTime,+    describeOrganizationOverview_fromTime,++    -- * Destructuring the Response+    DescribeOrganizationOverviewResponse (..),+    newDescribeOrganizationOverviewResponse,++    -- * Response Lenses+    describeOrganizationOverviewResponse_httpStatus,+    describeOrganizationOverviewResponse_reactiveInsights,+    describeOrganizationOverviewResponse_proactiveInsights,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeOrganizationOverview' smart constructor.+data DescribeOrganizationOverview = DescribeOrganizationOverview'+  { -- | The ID of the Amazon Web Services account.+    accountIds :: Prelude.Maybe [Prelude.Text],+    -- | The ID of the organizational unit.+    organizationalUnitIds :: Prelude.Maybe [Prelude.Text],+    -- | The end of the time range passed in. The start time granularity is at+    -- the day level. The floor of the start time is used. Returned information+    -- occurred before this day. If this is not specified, then the current day+    -- is used.+    toTime :: Prelude.Maybe Data.POSIX,+    -- | The start of the time range passed in. The start time granularity is at+    -- the day level. The floor of the start time is used. Returned information+    -- occurred after this day.+    fromTime :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeOrganizationOverview' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountIds', 'describeOrganizationOverview_accountIds' - The ID of the Amazon Web Services account.+--+-- 'organizationalUnitIds', 'describeOrganizationOverview_organizationalUnitIds' - The ID of the organizational unit.+--+-- 'toTime', 'describeOrganizationOverview_toTime' - The end of the time range passed in. The start time granularity is at+-- the day level. The floor of the start time is used. Returned information+-- occurred before this day. If this is not specified, then the current day+-- is used.+--+-- 'fromTime', 'describeOrganizationOverview_fromTime' - The start of the time range passed in. The start time granularity is at+-- the day level. The floor of the start time is used. Returned information+-- occurred after this day.+newDescribeOrganizationOverview ::+  -- | 'fromTime'+  Prelude.UTCTime ->+  DescribeOrganizationOverview+newDescribeOrganizationOverview pFromTime_ =+  DescribeOrganizationOverview'+    { accountIds =+        Prelude.Nothing,+      organizationalUnitIds = Prelude.Nothing,+      toTime = Prelude.Nothing,+      fromTime = Data._Time Lens.# pFromTime_+    }++-- | The ID of the Amazon Web Services account.+describeOrganizationOverview_accountIds :: Lens.Lens' DescribeOrganizationOverview (Prelude.Maybe [Prelude.Text])+describeOrganizationOverview_accountIds = Lens.lens (\DescribeOrganizationOverview' {accountIds} -> accountIds) (\s@DescribeOrganizationOverview' {} a -> s {accountIds = a} :: DescribeOrganizationOverview) Prelude.. Lens.mapping Lens.coerced++-- | The ID of the organizational unit.+describeOrganizationOverview_organizationalUnitIds :: Lens.Lens' DescribeOrganizationOverview (Prelude.Maybe [Prelude.Text])+describeOrganizationOverview_organizationalUnitIds = Lens.lens (\DescribeOrganizationOverview' {organizationalUnitIds} -> organizationalUnitIds) (\s@DescribeOrganizationOverview' {} a -> s {organizationalUnitIds = a} :: DescribeOrganizationOverview) Prelude.. Lens.mapping Lens.coerced++-- | The end of the time range passed in. The start time granularity is at+-- the day level. The floor of the start time is used. Returned information+-- occurred before this day. If this is not specified, then the current day+-- is used.+describeOrganizationOverview_toTime :: Lens.Lens' DescribeOrganizationOverview (Prelude.Maybe Prelude.UTCTime)+describeOrganizationOverview_toTime = Lens.lens (\DescribeOrganizationOverview' {toTime} -> toTime) (\s@DescribeOrganizationOverview' {} a -> s {toTime = a} :: DescribeOrganizationOverview) Prelude.. Lens.mapping Data._Time++-- | The start of the time range passed in. The start time granularity is at+-- the day level. The floor of the start time is used. Returned information+-- occurred after this day.+describeOrganizationOverview_fromTime :: Lens.Lens' DescribeOrganizationOverview Prelude.UTCTime+describeOrganizationOverview_fromTime = Lens.lens (\DescribeOrganizationOverview' {fromTime} -> fromTime) (\s@DescribeOrganizationOverview' {} a -> s {fromTime = a} :: DescribeOrganizationOverview) Prelude.. Data._Time++instance Core.AWSRequest DescribeOrganizationOverview where+  type+    AWSResponse DescribeOrganizationOverview =+      DescribeOrganizationOverviewResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeOrganizationOverviewResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "ReactiveInsights")+            Prelude.<*> (x Data..:> "ProactiveInsights")+      )++instance+  Prelude.Hashable+    DescribeOrganizationOverview+  where+  hashWithSalt _salt DescribeOrganizationOverview' {..} =+    _salt+      `Prelude.hashWithSalt` accountIds+      `Prelude.hashWithSalt` organizationalUnitIds+      `Prelude.hashWithSalt` toTime+      `Prelude.hashWithSalt` fromTime++instance Prelude.NFData DescribeOrganizationOverview where+  rnf DescribeOrganizationOverview' {..} =+    Prelude.rnf accountIds+      `Prelude.seq` Prelude.rnf organizationalUnitIds+      `Prelude.seq` Prelude.rnf toTime+      `Prelude.seq` Prelude.rnf fromTime++instance Data.ToHeaders DescribeOrganizationOverview where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeOrganizationOverview where+  toJSON DescribeOrganizationOverview' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AccountIds" Data..=) Prelude.<$> accountIds,+            ("OrganizationalUnitIds" Data..=)+              Prelude.<$> organizationalUnitIds,+            ("ToTime" Data..=) Prelude.<$> toTime,+            Prelude.Just ("FromTime" Data..= fromTime)+          ]+      )++instance Data.ToPath DescribeOrganizationOverview where+  toPath = Prelude.const "/organization/overview"++instance Data.ToQuery DescribeOrganizationOverview where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeOrganizationOverviewResponse' smart constructor.+data DescribeOrganizationOverviewResponse = DescribeOrganizationOverviewResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | An integer that specifies the number of open reactive insights in your+    -- Amazon Web Services account.+    reactiveInsights :: Prelude.Int,+    -- | An integer that specifies the number of open proactive insights in your+    -- Amazon Web Services account.+    proactiveInsights :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeOrganizationOverviewResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeOrganizationOverviewResponse_httpStatus' - The response's http status code.+--+-- 'reactiveInsights', 'describeOrganizationOverviewResponse_reactiveInsights' - An integer that specifies the number of open reactive insights in your+-- Amazon Web Services account.+--+-- 'proactiveInsights', 'describeOrganizationOverviewResponse_proactiveInsights' - An integer that specifies the number of open proactive insights in your+-- Amazon Web Services account.+newDescribeOrganizationOverviewResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'reactiveInsights'+  Prelude.Int ->+  -- | 'proactiveInsights'+  Prelude.Int ->+  DescribeOrganizationOverviewResponse+newDescribeOrganizationOverviewResponse+  pHttpStatus_+  pReactiveInsights_+  pProactiveInsights_ =+    DescribeOrganizationOverviewResponse'+      { httpStatus =+          pHttpStatus_,+        reactiveInsights = pReactiveInsights_,+        proactiveInsights =+          pProactiveInsights_+      }++-- | The response's http status code.+describeOrganizationOverviewResponse_httpStatus :: Lens.Lens' DescribeOrganizationOverviewResponse Prelude.Int+describeOrganizationOverviewResponse_httpStatus = Lens.lens (\DescribeOrganizationOverviewResponse' {httpStatus} -> httpStatus) (\s@DescribeOrganizationOverviewResponse' {} a -> s {httpStatus = a} :: DescribeOrganizationOverviewResponse)++-- | An integer that specifies the number of open reactive insights in your+-- Amazon Web Services account.+describeOrganizationOverviewResponse_reactiveInsights :: Lens.Lens' DescribeOrganizationOverviewResponse Prelude.Int+describeOrganizationOverviewResponse_reactiveInsights = Lens.lens (\DescribeOrganizationOverviewResponse' {reactiveInsights} -> reactiveInsights) (\s@DescribeOrganizationOverviewResponse' {} a -> s {reactiveInsights = a} :: DescribeOrganizationOverviewResponse)++-- | An integer that specifies the number of open proactive insights in your+-- Amazon Web Services account.+describeOrganizationOverviewResponse_proactiveInsights :: Lens.Lens' DescribeOrganizationOverviewResponse Prelude.Int+describeOrganizationOverviewResponse_proactiveInsights = Lens.lens (\DescribeOrganizationOverviewResponse' {proactiveInsights} -> proactiveInsights) (\s@DescribeOrganizationOverviewResponse' {} a -> s {proactiveInsights = a} :: DescribeOrganizationOverviewResponse)++instance+  Prelude.NFData+    DescribeOrganizationOverviewResponse+  where+  rnf DescribeOrganizationOverviewResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf reactiveInsights+      `Prelude.seq` Prelude.rnf proactiveInsights
+ gen/Amazonka/DevOpsGuru/DescribeOrganizationResourceCollectionHealth.hs view
@@ -0,0 +1,496 @@+{-# 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.DevOpsGuru.DescribeOrganizationResourceCollectionHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Provides an overview of your system\'s health. If additional member+-- accounts are part of your organization, you can filter those accounts+-- using the @AccountIds@ field.+--+-- This operation returns paginated results.+module Amazonka.DevOpsGuru.DescribeOrganizationResourceCollectionHealth+  ( -- * Creating a Request+    DescribeOrganizationResourceCollectionHealth (..),+    newDescribeOrganizationResourceCollectionHealth,++    -- * Request Lenses+    describeOrganizationResourceCollectionHealth_accountIds,+    describeOrganizationResourceCollectionHealth_maxResults,+    describeOrganizationResourceCollectionHealth_nextToken,+    describeOrganizationResourceCollectionHealth_organizationalUnitIds,+    describeOrganizationResourceCollectionHealth_organizationResourceCollectionType,++    -- * Destructuring the Response+    DescribeOrganizationResourceCollectionHealthResponse (..),+    newDescribeOrganizationResourceCollectionHealthResponse,++    -- * Response Lenses+    describeOrganizationResourceCollectionHealthResponse_account,+    describeOrganizationResourceCollectionHealthResponse_cloudFormation,+    describeOrganizationResourceCollectionHealthResponse_nextToken,+    describeOrganizationResourceCollectionHealthResponse_service,+    describeOrganizationResourceCollectionHealthResponse_tags,+    describeOrganizationResourceCollectionHealthResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeOrganizationResourceCollectionHealth' smart constructor.+data DescribeOrganizationResourceCollectionHealth = DescribeOrganizationResourceCollectionHealth'+  { -- | The ID of the Amazon Web Services account.+    accountIds :: Prelude.Maybe [Prelude.Text],+    -- | 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 pagination token to use to retrieve the next page of results for+    -- this operation. If this value is null, it retrieves the first page.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the organizational unit.+    organizationalUnitIds :: Prelude.Maybe [Prelude.Text],+    -- | An Amazon Web Services resource collection type. This type specifies how+    -- analyzed Amazon Web Services resources are defined. The two types of+    -- Amazon Web Services resource collections supported are Amazon Web+    -- Services CloudFormation stacks and Amazon Web Services resources that+    -- contain the same Amazon Web Services tag. DevOps Guru can be configured+    -- to analyze the Amazon Web Services resources that are defined in the+    -- stacks or that are tagged using the same tag /key/. You can specify up+    -- to 500 Amazon Web Services CloudFormation stacks.+    organizationResourceCollectionType :: OrganizationResourceCollectionType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeOrganizationResourceCollectionHealth' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountIds', 'describeOrganizationResourceCollectionHealth_accountIds' - The ID of the Amazon Web Services account.+--+-- 'maxResults', 'describeOrganizationResourceCollectionHealth_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', 'describeOrganizationResourceCollectionHealth_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+--+-- 'organizationalUnitIds', 'describeOrganizationResourceCollectionHealth_organizationalUnitIds' - The ID of the organizational unit.+--+-- 'organizationResourceCollectionType', 'describeOrganizationResourceCollectionHealth_organizationResourceCollectionType' - An Amazon Web Services resource collection type. This type specifies how+-- analyzed Amazon Web Services resources are defined. The two types of+-- Amazon Web Services resource collections supported are Amazon Web+-- Services CloudFormation stacks and Amazon Web Services resources that+-- contain the same Amazon Web Services tag. DevOps Guru can be configured+-- to analyze the Amazon Web Services resources that are defined in the+-- stacks or that are tagged using the same tag /key/. You can specify up+-- to 500 Amazon Web Services CloudFormation stacks.+newDescribeOrganizationResourceCollectionHealth ::+  -- | 'organizationResourceCollectionType'+  OrganizationResourceCollectionType ->+  DescribeOrganizationResourceCollectionHealth+newDescribeOrganizationResourceCollectionHealth+  pOrganizationResourceCollectionType_ =+    DescribeOrganizationResourceCollectionHealth'+      { accountIds =+          Prelude.Nothing,+        maxResults = Prelude.Nothing,+        nextToken = Prelude.Nothing,+        organizationalUnitIds =+          Prelude.Nothing,+        organizationResourceCollectionType =+          pOrganizationResourceCollectionType_+      }++-- | The ID of the Amazon Web Services account.+describeOrganizationResourceCollectionHealth_accountIds :: Lens.Lens' DescribeOrganizationResourceCollectionHealth (Prelude.Maybe [Prelude.Text])+describeOrganizationResourceCollectionHealth_accountIds = Lens.lens (\DescribeOrganizationResourceCollectionHealth' {accountIds} -> accountIds) (\s@DescribeOrganizationResourceCollectionHealth' {} a -> s {accountIds = a} :: DescribeOrganizationResourceCollectionHealth) Prelude.. Lens.mapping Lens.coerced++-- | The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+describeOrganizationResourceCollectionHealth_maxResults :: Lens.Lens' DescribeOrganizationResourceCollectionHealth (Prelude.Maybe Prelude.Natural)+describeOrganizationResourceCollectionHealth_maxResults = Lens.lens (\DescribeOrganizationResourceCollectionHealth' {maxResults} -> maxResults) (\s@DescribeOrganizationResourceCollectionHealth' {} a -> s {maxResults = a} :: DescribeOrganizationResourceCollectionHealth)++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+describeOrganizationResourceCollectionHealth_nextToken :: Lens.Lens' DescribeOrganizationResourceCollectionHealth (Prelude.Maybe Prelude.Text)+describeOrganizationResourceCollectionHealth_nextToken = Lens.lens (\DescribeOrganizationResourceCollectionHealth' {nextToken} -> nextToken) (\s@DescribeOrganizationResourceCollectionHealth' {} a -> s {nextToken = a} :: DescribeOrganizationResourceCollectionHealth)++-- | The ID of the organizational unit.+describeOrganizationResourceCollectionHealth_organizationalUnitIds :: Lens.Lens' DescribeOrganizationResourceCollectionHealth (Prelude.Maybe [Prelude.Text])+describeOrganizationResourceCollectionHealth_organizationalUnitIds = Lens.lens (\DescribeOrganizationResourceCollectionHealth' {organizationalUnitIds} -> organizationalUnitIds) (\s@DescribeOrganizationResourceCollectionHealth' {} a -> s {organizationalUnitIds = a} :: DescribeOrganizationResourceCollectionHealth) Prelude.. Lens.mapping Lens.coerced++-- | An Amazon Web Services resource collection type. This type specifies how+-- analyzed Amazon Web Services resources are defined. The two types of+-- Amazon Web Services resource collections supported are Amazon Web+-- Services CloudFormation stacks and Amazon Web Services resources that+-- contain the same Amazon Web Services tag. DevOps Guru can be configured+-- to analyze the Amazon Web Services resources that are defined in the+-- stacks or that are tagged using the same tag /key/. You can specify up+-- to 500 Amazon Web Services CloudFormation stacks.+describeOrganizationResourceCollectionHealth_organizationResourceCollectionType :: Lens.Lens' DescribeOrganizationResourceCollectionHealth OrganizationResourceCollectionType+describeOrganizationResourceCollectionHealth_organizationResourceCollectionType = Lens.lens (\DescribeOrganizationResourceCollectionHealth' {organizationResourceCollectionType} -> organizationResourceCollectionType) (\s@DescribeOrganizationResourceCollectionHealth' {} a -> s {organizationResourceCollectionType = a} :: DescribeOrganizationResourceCollectionHealth)++instance+  Core.AWSPager+    DescribeOrganizationResourceCollectionHealth+  where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeOrganizationResourceCollectionHealthResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeOrganizationResourceCollectionHealthResponse_cloudFormation+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeOrganizationResourceCollectionHealthResponse_account+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeOrganizationResourceCollectionHealthResponse_service+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeOrganizationResourceCollectionHealthResponse_tags+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeOrganizationResourceCollectionHealth_nextToken+          Lens..~ rs+          Lens.^? describeOrganizationResourceCollectionHealthResponse_nextToken+          Prelude.. Lens._Just++instance+  Core.AWSRequest+    DescribeOrganizationResourceCollectionHealth+  where+  type+    AWSResponse+      DescribeOrganizationResourceCollectionHealth =+      DescribeOrganizationResourceCollectionHealthResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeOrganizationResourceCollectionHealthResponse'+            Prelude.<$> (x Data..?> "Account" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "CloudFormation" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "Service" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DescribeOrganizationResourceCollectionHealth+  where+  hashWithSalt+    _salt+    DescribeOrganizationResourceCollectionHealth' {..} =+      _salt+        `Prelude.hashWithSalt` accountIds+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` nextToken+        `Prelude.hashWithSalt` organizationalUnitIds+        `Prelude.hashWithSalt` organizationResourceCollectionType++instance+  Prelude.NFData+    DescribeOrganizationResourceCollectionHealth+  where+  rnf DescribeOrganizationResourceCollectionHealth' {..} =+    Prelude.rnf accountIds+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf organizationalUnitIds+      `Prelude.seq` Prelude.rnf organizationResourceCollectionType++instance+  Data.ToHeaders+    DescribeOrganizationResourceCollectionHealth+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    DescribeOrganizationResourceCollectionHealth+  where+  toJSON+    DescribeOrganizationResourceCollectionHealth' {..} =+      Data.object+        ( Prelude.catMaybes+            [ ("AccountIds" Data..=) Prelude.<$> accountIds,+              ("MaxResults" Data..=) Prelude.<$> maxResults,+              ("NextToken" Data..=) Prelude.<$> nextToken,+              ("OrganizationalUnitIds" Data..=)+                Prelude.<$> organizationalUnitIds,+              Prelude.Just+                ( "OrganizationResourceCollectionType"+                    Data..= organizationResourceCollectionType+                )+            ]+        )++instance+  Data.ToPath+    DescribeOrganizationResourceCollectionHealth+  where+  toPath =+    Prelude.const+      "/organization/health/resource-collection"++instance+  Data.ToQuery+    DescribeOrganizationResourceCollectionHealth+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeOrganizationResourceCollectionHealthResponse' smart constructor.+data DescribeOrganizationResourceCollectionHealthResponse = DescribeOrganizationResourceCollectionHealthResponse'+  { -- | The name of the organization\'s account.+    account :: Prelude.Maybe [AccountHealth],+    -- | The returned @CloudFormationHealthOverview@ object that contains an+    -- @InsightHealthOverview@ object with the requested system health+    -- information.+    cloudFormation :: Prelude.Maybe [CloudFormationHealth],+    -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If there are no more pages, this value is null.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | An array of @ServiceHealth@ objects that describes the health of the+    -- Amazon Web Services services associated with the resources in the+    -- collection.+    service :: Prelude.Maybe [ServiceHealth],+    -- | Tags help you identify and organize your Amazon Web Services resources.+    -- Many Amazon Web Services services support tagging, so you can assign the+    -- same tag to resources from different services to indicate that the+    -- resources are related. For example, you can assign the same tag to an+    -- Amazon DynamoDB table resource that you assign to an Lambda function.+    -- For more information about using tags, see the+    -- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+    -- whitepaper.+    --+    -- Each Amazon Web Services tag has two parts.+    --+    -- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+    --     @Secret@). Tag /keys/ are case-sensitive.+    --+    -- -   An optional field known as a tag /value/ (for example,+    --     @111122223333@, @Production@, or a team name). Omitting the tag+    --     /value/ is the same as using an empty string. Like tag /keys/, tag+    --     /values/ are case-sensitive.+    --+    -- Together these are known as /key/-/value/ pairs.+    --+    -- The string used for a /key/ in a tag that you use to define your+    -- resource coverage must begin with the prefix @Devops-guru-@. The tag+    -- /key/ might be @DevOps-Guru-deployment-application@ or+    -- @devops-guru-rds-application@. When you create a /key/, the case of+    -- characters in the /key/ can be whatever you choose. After you create a+    -- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+    -- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+    -- act as two different /keys/. Possible /key/\//value/ pairs in your+    -- application might be @Devops-Guru-production-application\/RDS@ or+    -- @Devops-Guru-production-application\/containers@.+    tags :: Prelude.Maybe [TagHealth],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeOrganizationResourceCollectionHealthResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'account', 'describeOrganizationResourceCollectionHealthResponse_account' - The name of the organization\'s account.+--+-- 'cloudFormation', 'describeOrganizationResourceCollectionHealthResponse_cloudFormation' - The returned @CloudFormationHealthOverview@ object that contains an+-- @InsightHealthOverview@ object with the requested system health+-- information.+--+-- 'nextToken', 'describeOrganizationResourceCollectionHealthResponse_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+--+-- 'service', 'describeOrganizationResourceCollectionHealthResponse_service' - An array of @ServiceHealth@ objects that describes the health of the+-- Amazon Web Services services associated with the resources in the+-- collection.+--+-- 'tags', 'describeOrganizationResourceCollectionHealthResponse_tags' - Tags help you identify and organize your Amazon Web Services resources.+-- Many Amazon Web Services services support tagging, so you can assign the+-- same tag to resources from different services to indicate that the+-- resources are related. For example, you can assign the same tag to an+-- Amazon DynamoDB table resource that you assign to an Lambda function.+-- For more information about using tags, see the+-- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+-- whitepaper.+--+-- Each Amazon Web Services tag has two parts.+--+-- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+--     @Secret@). Tag /keys/ are case-sensitive.+--+-- -   An optional field known as a tag /value/ (for example,+--     @111122223333@, @Production@, or a team name). Omitting the tag+--     /value/ is the same as using an empty string. Like tag /keys/, tag+--     /values/ are case-sensitive.+--+-- Together these are known as /key/-/value/ pairs.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+--+-- 'httpStatus', 'describeOrganizationResourceCollectionHealthResponse_httpStatus' - The response's http status code.+newDescribeOrganizationResourceCollectionHealthResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeOrganizationResourceCollectionHealthResponse+newDescribeOrganizationResourceCollectionHealthResponse+  pHttpStatus_ =+    DescribeOrganizationResourceCollectionHealthResponse'+      { account =+          Prelude.Nothing,+        cloudFormation =+          Prelude.Nothing,+        nextToken =+          Prelude.Nothing,+        service =+          Prelude.Nothing,+        tags =+          Prelude.Nothing,+        httpStatus =+          pHttpStatus_+      }++-- | The name of the organization\'s account.+describeOrganizationResourceCollectionHealthResponse_account :: Lens.Lens' DescribeOrganizationResourceCollectionHealthResponse (Prelude.Maybe [AccountHealth])+describeOrganizationResourceCollectionHealthResponse_account = Lens.lens (\DescribeOrganizationResourceCollectionHealthResponse' {account} -> account) (\s@DescribeOrganizationResourceCollectionHealthResponse' {} a -> s {account = a} :: DescribeOrganizationResourceCollectionHealthResponse) Prelude.. Lens.mapping Lens.coerced++-- | The returned @CloudFormationHealthOverview@ object that contains an+-- @InsightHealthOverview@ object with the requested system health+-- information.+describeOrganizationResourceCollectionHealthResponse_cloudFormation :: Lens.Lens' DescribeOrganizationResourceCollectionHealthResponse (Prelude.Maybe [CloudFormationHealth])+describeOrganizationResourceCollectionHealthResponse_cloudFormation = Lens.lens (\DescribeOrganizationResourceCollectionHealthResponse' {cloudFormation} -> cloudFormation) (\s@DescribeOrganizationResourceCollectionHealthResponse' {} a -> s {cloudFormation = a} :: DescribeOrganizationResourceCollectionHealthResponse) Prelude.. Lens.mapping Lens.coerced++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+describeOrganizationResourceCollectionHealthResponse_nextToken :: Lens.Lens' DescribeOrganizationResourceCollectionHealthResponse (Prelude.Maybe Prelude.Text)+describeOrganizationResourceCollectionHealthResponse_nextToken = Lens.lens (\DescribeOrganizationResourceCollectionHealthResponse' {nextToken} -> nextToken) (\s@DescribeOrganizationResourceCollectionHealthResponse' {} a -> s {nextToken = a} :: DescribeOrganizationResourceCollectionHealthResponse)++-- | An array of @ServiceHealth@ objects that describes the health of the+-- Amazon Web Services services associated with the resources in the+-- collection.+describeOrganizationResourceCollectionHealthResponse_service :: Lens.Lens' DescribeOrganizationResourceCollectionHealthResponse (Prelude.Maybe [ServiceHealth])+describeOrganizationResourceCollectionHealthResponse_service = Lens.lens (\DescribeOrganizationResourceCollectionHealthResponse' {service} -> service) (\s@DescribeOrganizationResourceCollectionHealthResponse' {} a -> s {service = a} :: DescribeOrganizationResourceCollectionHealthResponse) Prelude.. Lens.mapping Lens.coerced++-- | Tags help you identify and organize your Amazon Web Services resources.+-- Many Amazon Web Services services support tagging, so you can assign the+-- same tag to resources from different services to indicate that the+-- resources are related. For example, you can assign the same tag to an+-- Amazon DynamoDB table resource that you assign to an Lambda function.+-- For more information about using tags, see the+-- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+-- whitepaper.+--+-- Each Amazon Web Services tag has two parts.+--+-- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+--     @Secret@). Tag /keys/ are case-sensitive.+--+-- -   An optional field known as a tag /value/ (for example,+--     @111122223333@, @Production@, or a team name). Omitting the tag+--     /value/ is the same as using an empty string. Like tag /keys/, tag+--     /values/ are case-sensitive.+--+-- Together these are known as /key/-/value/ pairs.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+describeOrganizationResourceCollectionHealthResponse_tags :: Lens.Lens' DescribeOrganizationResourceCollectionHealthResponse (Prelude.Maybe [TagHealth])+describeOrganizationResourceCollectionHealthResponse_tags = Lens.lens (\DescribeOrganizationResourceCollectionHealthResponse' {tags} -> tags) (\s@DescribeOrganizationResourceCollectionHealthResponse' {} a -> s {tags = a} :: DescribeOrganizationResourceCollectionHealthResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeOrganizationResourceCollectionHealthResponse_httpStatus :: Lens.Lens' DescribeOrganizationResourceCollectionHealthResponse Prelude.Int+describeOrganizationResourceCollectionHealthResponse_httpStatus = Lens.lens (\DescribeOrganizationResourceCollectionHealthResponse' {httpStatus} -> httpStatus) (\s@DescribeOrganizationResourceCollectionHealthResponse' {} a -> s {httpStatus = a} :: DescribeOrganizationResourceCollectionHealthResponse)++instance+  Prelude.NFData+    DescribeOrganizationResourceCollectionHealthResponse+  where+  rnf+    DescribeOrganizationResourceCollectionHealthResponse' {..} =+      Prelude.rnf account+        `Prelude.seq` Prelude.rnf cloudFormation+        `Prelude.seq` Prelude.rnf nextToken+        `Prelude.seq` Prelude.rnf service+        `Prelude.seq` Prelude.rnf tags+        `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/DescribeResourceCollectionHealth.hs view
@@ -0,0 +1,424 @@+{-# 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.DevOpsGuru.DescribeResourceCollectionHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the number of open proactive insights, open reactive insights,+-- and the Mean Time to Recover (MTTR) for all closed insights in resource+-- collections in your account. You specify the type of Amazon Web Services+-- resources collection. The two types of Amazon Web Services resource+-- collections supported are Amazon Web Services CloudFormation stacks and+-- Amazon Web Services resources that contain the same Amazon Web Services+-- tag. DevOps Guru can be configured to analyze the Amazon Web Services+-- resources that are defined in the stacks or that are tagged using the+-- same tag /key/. You can specify up to 500 Amazon Web Services+-- CloudFormation stacks.+--+-- This operation returns paginated results.+module Amazonka.DevOpsGuru.DescribeResourceCollectionHealth+  ( -- * Creating a Request+    DescribeResourceCollectionHealth (..),+    newDescribeResourceCollectionHealth,++    -- * Request Lenses+    describeResourceCollectionHealth_nextToken,+    describeResourceCollectionHealth_resourceCollectionType,++    -- * Destructuring the Response+    DescribeResourceCollectionHealthResponse (..),+    newDescribeResourceCollectionHealthResponse,++    -- * Response Lenses+    describeResourceCollectionHealthResponse_cloudFormation,+    describeResourceCollectionHealthResponse_nextToken,+    describeResourceCollectionHealthResponse_service,+    describeResourceCollectionHealthResponse_tags,+    describeResourceCollectionHealthResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeResourceCollectionHealth' smart constructor.+data DescribeResourceCollectionHealth = DescribeResourceCollectionHealth'+  { -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If this value is null, it retrieves the first page.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | An Amazon Web Services resource collection type. This type specifies how+    -- analyzed Amazon Web Services resources are defined. The two types of+    -- Amazon Web Services resource collections supported are Amazon Web+    -- Services CloudFormation stacks and Amazon Web Services resources that+    -- contain the same Amazon Web Services tag. DevOps Guru can be configured+    -- to analyze the Amazon Web Services resources that are defined in the+    -- stacks or that are tagged using the same tag /key/. You can specify up+    -- to 500 Amazon Web Services CloudFormation stacks.+    resourceCollectionType :: ResourceCollectionType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeResourceCollectionHealth' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeResourceCollectionHealth_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+--+-- 'resourceCollectionType', 'describeResourceCollectionHealth_resourceCollectionType' - An Amazon Web Services resource collection type. This type specifies how+-- analyzed Amazon Web Services resources are defined. The two types of+-- Amazon Web Services resource collections supported are Amazon Web+-- Services CloudFormation stacks and Amazon Web Services resources that+-- contain the same Amazon Web Services tag. DevOps Guru can be configured+-- to analyze the Amazon Web Services resources that are defined in the+-- stacks or that are tagged using the same tag /key/. You can specify up+-- to 500 Amazon Web Services CloudFormation stacks.+newDescribeResourceCollectionHealth ::+  -- | 'resourceCollectionType'+  ResourceCollectionType ->+  DescribeResourceCollectionHealth+newDescribeResourceCollectionHealth+  pResourceCollectionType_ =+    DescribeResourceCollectionHealth'+      { nextToken =+          Prelude.Nothing,+        resourceCollectionType =+          pResourceCollectionType_+      }++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+describeResourceCollectionHealth_nextToken :: Lens.Lens' DescribeResourceCollectionHealth (Prelude.Maybe Prelude.Text)+describeResourceCollectionHealth_nextToken = Lens.lens (\DescribeResourceCollectionHealth' {nextToken} -> nextToken) (\s@DescribeResourceCollectionHealth' {} a -> s {nextToken = a} :: DescribeResourceCollectionHealth)++-- | An Amazon Web Services resource collection type. This type specifies how+-- analyzed Amazon Web Services resources are defined. The two types of+-- Amazon Web Services resource collections supported are Amazon Web+-- Services CloudFormation stacks and Amazon Web Services resources that+-- contain the same Amazon Web Services tag. DevOps Guru can be configured+-- to analyze the Amazon Web Services resources that are defined in the+-- stacks or that are tagged using the same tag /key/. You can specify up+-- to 500 Amazon Web Services CloudFormation stacks.+describeResourceCollectionHealth_resourceCollectionType :: Lens.Lens' DescribeResourceCollectionHealth ResourceCollectionType+describeResourceCollectionHealth_resourceCollectionType = Lens.lens (\DescribeResourceCollectionHealth' {resourceCollectionType} -> resourceCollectionType) (\s@DescribeResourceCollectionHealth' {} a -> s {resourceCollectionType = a} :: DescribeResourceCollectionHealth)++instance+  Core.AWSPager+    DescribeResourceCollectionHealth+  where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeResourceCollectionHealthResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeResourceCollectionHealthResponse_cloudFormation+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeResourceCollectionHealthResponse_service+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeResourceCollectionHealthResponse_tags+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeResourceCollectionHealth_nextToken+          Lens..~ rs+          Lens.^? describeResourceCollectionHealthResponse_nextToken+          Prelude.. Lens._Just++instance+  Core.AWSRequest+    DescribeResourceCollectionHealth+  where+  type+    AWSResponse DescribeResourceCollectionHealth =+      DescribeResourceCollectionHealthResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeResourceCollectionHealthResponse'+            Prelude.<$> (x Data..?> "CloudFormation" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "Service" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DescribeResourceCollectionHealth+  where+  hashWithSalt+    _salt+    DescribeResourceCollectionHealth' {..} =+      _salt+        `Prelude.hashWithSalt` nextToken+        `Prelude.hashWithSalt` resourceCollectionType++instance+  Prelude.NFData+    DescribeResourceCollectionHealth+  where+  rnf DescribeResourceCollectionHealth' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf resourceCollectionType++instance+  Data.ToHeaders+    DescribeResourceCollectionHealth+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeResourceCollectionHealth where+  toPath DescribeResourceCollectionHealth' {..} =+    Prelude.mconcat+      [ "/accounts/health/resource-collection/",+        Data.toBS resourceCollectionType+      ]++instance+  Data.ToQuery+    DescribeResourceCollectionHealth+  where+  toQuery DescribeResourceCollectionHealth' {..} =+    Prelude.mconcat ["NextToken" Data.=: nextToken]++-- | /See:/ 'newDescribeResourceCollectionHealthResponse' smart constructor.+data DescribeResourceCollectionHealthResponse = DescribeResourceCollectionHealthResponse'+  { -- | The returned @CloudFormationHealthOverview@ object that contains an+    -- @InsightHealthOverview@ object with the requested system health+    -- information.+    cloudFormation :: Prelude.Maybe [CloudFormationHealth],+    -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If there are no more pages, this value is null.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | An array of @ServiceHealth@ objects that describes the health of the+    -- Amazon Web Services services associated with the resources in the+    -- collection.+    service :: Prelude.Maybe [ServiceHealth],+    -- | The Amazon Web Services tags that are used by resources in the resource+    -- collection.+    --+    -- Tags help you identify and organize your Amazon Web Services resources.+    -- Many Amazon Web Services services support tagging, so you can assign the+    -- same tag to resources from different services to indicate that the+    -- resources are related. For example, you can assign the same tag to an+    -- Amazon DynamoDB table resource that you assign to an Lambda function.+    -- For more information about using tags, see the+    -- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+    -- whitepaper.+    --+    -- Each Amazon Web Services tag has two parts.+    --+    -- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+    --     @Secret@). Tag /keys/ are case-sensitive.+    --+    -- -   An optional field known as a tag /value/ (for example,+    --     @111122223333@, @Production@, or a team name). Omitting the tag+    --     /value/ is the same as using an empty string. Like tag /keys/, tag+    --     /values/ are case-sensitive.+    --+    -- Together these are known as /key/-/value/ pairs.+    --+    -- The string used for a /key/ in a tag that you use to define your+    -- resource coverage must begin with the prefix @Devops-guru-@. The tag+    -- /key/ might be @DevOps-Guru-deployment-application@ or+    -- @devops-guru-rds-application@. When you create a /key/, the case of+    -- characters in the /key/ can be whatever you choose. After you create a+    -- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+    -- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+    -- act as two different /keys/. Possible /key/\//value/ pairs in your+    -- application might be @Devops-Guru-production-application\/RDS@ or+    -- @Devops-Guru-production-application\/containers@.+    tags :: Prelude.Maybe [TagHealth],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeResourceCollectionHealthResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cloudFormation', 'describeResourceCollectionHealthResponse_cloudFormation' - The returned @CloudFormationHealthOverview@ object that contains an+-- @InsightHealthOverview@ object with the requested system health+-- information.+--+-- 'nextToken', 'describeResourceCollectionHealthResponse_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+--+-- 'service', 'describeResourceCollectionHealthResponse_service' - An array of @ServiceHealth@ objects that describes the health of the+-- Amazon Web Services services associated with the resources in the+-- collection.+--+-- 'tags', 'describeResourceCollectionHealthResponse_tags' - The Amazon Web Services tags that are used by resources in the resource+-- collection.+--+-- Tags help you identify and organize your Amazon Web Services resources.+-- Many Amazon Web Services services support tagging, so you can assign the+-- same tag to resources from different services to indicate that the+-- resources are related. For example, you can assign the same tag to an+-- Amazon DynamoDB table resource that you assign to an Lambda function.+-- For more information about using tags, see the+-- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+-- whitepaper.+--+-- Each Amazon Web Services tag has two parts.+--+-- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+--     @Secret@). Tag /keys/ are case-sensitive.+--+-- -   An optional field known as a tag /value/ (for example,+--     @111122223333@, @Production@, or a team name). Omitting the tag+--     /value/ is the same as using an empty string. Like tag /keys/, tag+--     /values/ are case-sensitive.+--+-- Together these are known as /key/-/value/ pairs.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+--+-- 'httpStatus', 'describeResourceCollectionHealthResponse_httpStatus' - The response's http status code.+newDescribeResourceCollectionHealthResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeResourceCollectionHealthResponse+newDescribeResourceCollectionHealthResponse+  pHttpStatus_ =+    DescribeResourceCollectionHealthResponse'+      { cloudFormation =+          Prelude.Nothing,+        nextToken = Prelude.Nothing,+        service = Prelude.Nothing,+        tags = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The returned @CloudFormationHealthOverview@ object that contains an+-- @InsightHealthOverview@ object with the requested system health+-- information.+describeResourceCollectionHealthResponse_cloudFormation :: Lens.Lens' DescribeResourceCollectionHealthResponse (Prelude.Maybe [CloudFormationHealth])+describeResourceCollectionHealthResponse_cloudFormation = Lens.lens (\DescribeResourceCollectionHealthResponse' {cloudFormation} -> cloudFormation) (\s@DescribeResourceCollectionHealthResponse' {} a -> s {cloudFormation = a} :: DescribeResourceCollectionHealthResponse) Prelude.. Lens.mapping Lens.coerced++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+describeResourceCollectionHealthResponse_nextToken :: Lens.Lens' DescribeResourceCollectionHealthResponse (Prelude.Maybe Prelude.Text)+describeResourceCollectionHealthResponse_nextToken = Lens.lens (\DescribeResourceCollectionHealthResponse' {nextToken} -> nextToken) (\s@DescribeResourceCollectionHealthResponse' {} a -> s {nextToken = a} :: DescribeResourceCollectionHealthResponse)++-- | An array of @ServiceHealth@ objects that describes the health of the+-- Amazon Web Services services associated with the resources in the+-- collection.+describeResourceCollectionHealthResponse_service :: Lens.Lens' DescribeResourceCollectionHealthResponse (Prelude.Maybe [ServiceHealth])+describeResourceCollectionHealthResponse_service = Lens.lens (\DescribeResourceCollectionHealthResponse' {service} -> service) (\s@DescribeResourceCollectionHealthResponse' {} a -> s {service = a} :: DescribeResourceCollectionHealthResponse) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Web Services tags that are used by resources in the resource+-- collection.+--+-- Tags help you identify and organize your Amazon Web Services resources.+-- Many Amazon Web Services services support tagging, so you can assign the+-- same tag to resources from different services to indicate that the+-- resources are related. For example, you can assign the same tag to an+-- Amazon DynamoDB table resource that you assign to an Lambda function.+-- For more information about using tags, see the+-- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+-- whitepaper.+--+-- Each Amazon Web Services tag has two parts.+--+-- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+--     @Secret@). Tag /keys/ are case-sensitive.+--+-- -   An optional field known as a tag /value/ (for example,+--     @111122223333@, @Production@, or a team name). Omitting the tag+--     /value/ is the same as using an empty string. Like tag /keys/, tag+--     /values/ are case-sensitive.+--+-- Together these are known as /key/-/value/ pairs.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+describeResourceCollectionHealthResponse_tags :: Lens.Lens' DescribeResourceCollectionHealthResponse (Prelude.Maybe [TagHealth])+describeResourceCollectionHealthResponse_tags = Lens.lens (\DescribeResourceCollectionHealthResponse' {tags} -> tags) (\s@DescribeResourceCollectionHealthResponse' {} a -> s {tags = a} :: DescribeResourceCollectionHealthResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeResourceCollectionHealthResponse_httpStatus :: Lens.Lens' DescribeResourceCollectionHealthResponse Prelude.Int+describeResourceCollectionHealthResponse_httpStatus = Lens.lens (\DescribeResourceCollectionHealthResponse' {httpStatus} -> httpStatus) (\s@DescribeResourceCollectionHealthResponse' {} a -> s {httpStatus = a} :: DescribeResourceCollectionHealthResponse)++instance+  Prelude.NFData+    DescribeResourceCollectionHealthResponse+  where+  rnf DescribeResourceCollectionHealthResponse' {..} =+    Prelude.rnf cloudFormation+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf service+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/DescribeServiceIntegration.hs view
@@ -0,0 +1,147 @@+{-# 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.DevOpsGuru.DescribeServiceIntegration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the integration status of services that are integrated with+-- DevOps Guru. The one service that can be integrated with DevOps Guru is+-- Amazon Web Services Systems Manager, which can be used to create an+-- OpsItem for each generated insight.+module Amazonka.DevOpsGuru.DescribeServiceIntegration+  ( -- * Creating a Request+    DescribeServiceIntegration (..),+    newDescribeServiceIntegration,++    -- * Destructuring the Response+    DescribeServiceIntegrationResponse (..),+    newDescribeServiceIntegrationResponse,++    -- * Response Lenses+    describeServiceIntegrationResponse_serviceIntegration,+    describeServiceIntegrationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeServiceIntegration' smart constructor.+data DescribeServiceIntegration = DescribeServiceIntegration'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeServiceIntegration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDescribeServiceIntegration ::+  DescribeServiceIntegration+newDescribeServiceIntegration =+  DescribeServiceIntegration'++instance Core.AWSRequest DescribeServiceIntegration where+  type+    AWSResponse DescribeServiceIntegration =+      DescribeServiceIntegrationResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeServiceIntegrationResponse'+            Prelude.<$> (x Data..?> "ServiceIntegration")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeServiceIntegration where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance Prelude.NFData DescribeServiceIntegration where+  rnf _ = ()++instance Data.ToHeaders DescribeServiceIntegration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeServiceIntegration where+  toPath = Prelude.const "/service-integrations"++instance Data.ToQuery DescribeServiceIntegration where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeServiceIntegrationResponse' smart constructor.+data DescribeServiceIntegrationResponse = DescribeServiceIntegrationResponse'+  { serviceIntegration :: Prelude.Maybe ServiceIntegrationConfig,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeServiceIntegrationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'serviceIntegration', 'describeServiceIntegrationResponse_serviceIntegration' - Undocumented member.+--+-- 'httpStatus', 'describeServiceIntegrationResponse_httpStatus' - The response's http status code.+newDescribeServiceIntegrationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeServiceIntegrationResponse+newDescribeServiceIntegrationResponse pHttpStatus_ =+  DescribeServiceIntegrationResponse'+    { serviceIntegration =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+describeServiceIntegrationResponse_serviceIntegration :: Lens.Lens' DescribeServiceIntegrationResponse (Prelude.Maybe ServiceIntegrationConfig)+describeServiceIntegrationResponse_serviceIntegration = Lens.lens (\DescribeServiceIntegrationResponse' {serviceIntegration} -> serviceIntegration) (\s@DescribeServiceIntegrationResponse' {} a -> s {serviceIntegration = a} :: DescribeServiceIntegrationResponse)++-- | The response's http status code.+describeServiceIntegrationResponse_httpStatus :: Lens.Lens' DescribeServiceIntegrationResponse Prelude.Int+describeServiceIntegrationResponse_httpStatus = Lens.lens (\DescribeServiceIntegrationResponse' {httpStatus} -> httpStatus) (\s@DescribeServiceIntegrationResponse' {} a -> s {httpStatus = a} :: DescribeServiceIntegrationResponse)++instance+  Prelude.NFData+    DescribeServiceIntegrationResponse+  where+  rnf DescribeServiceIntegrationResponse' {..} =+    Prelude.rnf serviceIntegration+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/GetCostEstimation.hs view
@@ -0,0 +1,270 @@+{-# 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.DevOpsGuru.GetCostEstimation+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns an estimate of the monthly cost for DevOps Guru to analyze your+-- Amazon Web Services resources. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/cost-estimate.html Estimate your Amazon DevOps Guru costs>+-- and+-- <http://aws.amazon.com/devops-guru/pricing/ Amazon DevOps Guru pricing>.+--+-- This operation returns paginated results.+module Amazonka.DevOpsGuru.GetCostEstimation+  ( -- * Creating a Request+    GetCostEstimation (..),+    newGetCostEstimation,++    -- * Request Lenses+    getCostEstimation_nextToken,++    -- * Destructuring the Response+    GetCostEstimationResponse (..),+    newGetCostEstimationResponse,++    -- * Response Lenses+    getCostEstimationResponse_costs,+    getCostEstimationResponse_nextToken,+    getCostEstimationResponse_resourceCollection,+    getCostEstimationResponse_status,+    getCostEstimationResponse_timeRange,+    getCostEstimationResponse_totalCost,+    getCostEstimationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetCostEstimation' smart constructor.+data GetCostEstimation = GetCostEstimation'+  { -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If this value is null, it retrieves the first page.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetCostEstimation' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getCostEstimation_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+newGetCostEstimation ::+  GetCostEstimation+newGetCostEstimation =+  GetCostEstimation' {nextToken = Prelude.Nothing}++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+getCostEstimation_nextToken :: Lens.Lens' GetCostEstimation (Prelude.Maybe Prelude.Text)+getCostEstimation_nextToken = Lens.lens (\GetCostEstimation' {nextToken} -> nextToken) (\s@GetCostEstimation' {} a -> s {nextToken = a} :: GetCostEstimation)++instance Core.AWSPager GetCostEstimation where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? getCostEstimationResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? getCostEstimationResponse_costs+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& getCostEstimation_nextToken+          Lens..~ rs+          Lens.^? getCostEstimationResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest GetCostEstimation where+  type+    AWSResponse GetCostEstimation =+      GetCostEstimationResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetCostEstimationResponse'+            Prelude.<$> (x Data..?> "Costs" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "ResourceCollection")+            Prelude.<*> (x Data..?> "Status")+            Prelude.<*> (x Data..?> "TimeRange")+            Prelude.<*> (x Data..?> "TotalCost")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetCostEstimation where+  hashWithSalt _salt GetCostEstimation' {..} =+    _salt `Prelude.hashWithSalt` nextToken++instance Prelude.NFData GetCostEstimation where+  rnf GetCostEstimation' {..} = Prelude.rnf nextToken++instance Data.ToHeaders GetCostEstimation where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetCostEstimation where+  toPath = Prelude.const "/cost-estimation"++instance Data.ToQuery GetCostEstimation where+  toQuery GetCostEstimation' {..} =+    Prelude.mconcat ["NextToken" Data.=: nextToken]++-- | /See:/ 'newGetCostEstimationResponse' smart constructor.+data GetCostEstimationResponse = GetCostEstimationResponse'+  { -- | An array of @ResourceCost@ objects that each contains details about the+    -- monthly cost estimate to analyze one of your Amazon Web Services+    -- resources.+    costs :: Prelude.Maybe [ServiceResourceCost],+    -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If there are no more pages, this value is null.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The collection of the Amazon Web Services resources used to create your+    -- monthly DevOps Guru cost estimate.+    resourceCollection :: Prelude.Maybe CostEstimationResourceCollectionFilter,+    -- | The status of creating this cost estimate. If it\'s still in progress,+    -- the status @ONGOING@ is returned. If it is finished, the status+    -- @COMPLETED@ is returned.+    status :: Prelude.Maybe CostEstimationStatus,+    -- | The start and end time of the cost estimation.+    timeRange :: Prelude.Maybe CostEstimationTimeRange,+    -- | The estimated monthly cost to analyze the Amazon Web Services resources.+    -- This value is the sum of the estimated costs to analyze each resource in+    -- the @Costs@ object in this response.+    totalCost :: Prelude.Maybe Prelude.Double,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetCostEstimationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'costs', 'getCostEstimationResponse_costs' - An array of @ResourceCost@ objects that each contains details about the+-- monthly cost estimate to analyze one of your Amazon Web Services+-- resources.+--+-- 'nextToken', 'getCostEstimationResponse_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+--+-- 'resourceCollection', 'getCostEstimationResponse_resourceCollection' - The collection of the Amazon Web Services resources used to create your+-- monthly DevOps Guru cost estimate.+--+-- 'status', 'getCostEstimationResponse_status' - The status of creating this cost estimate. If it\'s still in progress,+-- the status @ONGOING@ is returned. If it is finished, the status+-- @COMPLETED@ is returned.+--+-- 'timeRange', 'getCostEstimationResponse_timeRange' - The start and end time of the cost estimation.+--+-- 'totalCost', 'getCostEstimationResponse_totalCost' - The estimated monthly cost to analyze the Amazon Web Services resources.+-- This value is the sum of the estimated costs to analyze each resource in+-- the @Costs@ object in this response.+--+-- 'httpStatus', 'getCostEstimationResponse_httpStatus' - The response's http status code.+newGetCostEstimationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetCostEstimationResponse+newGetCostEstimationResponse pHttpStatus_ =+  GetCostEstimationResponse'+    { costs = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      resourceCollection = Prelude.Nothing,+      status = Prelude.Nothing,+      timeRange = Prelude.Nothing,+      totalCost = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An array of @ResourceCost@ objects that each contains details about the+-- monthly cost estimate to analyze one of your Amazon Web Services+-- resources.+getCostEstimationResponse_costs :: Lens.Lens' GetCostEstimationResponse (Prelude.Maybe [ServiceResourceCost])+getCostEstimationResponse_costs = Lens.lens (\GetCostEstimationResponse' {costs} -> costs) (\s@GetCostEstimationResponse' {} a -> s {costs = a} :: GetCostEstimationResponse) Prelude.. Lens.mapping Lens.coerced++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+getCostEstimationResponse_nextToken :: Lens.Lens' GetCostEstimationResponse (Prelude.Maybe Prelude.Text)+getCostEstimationResponse_nextToken = Lens.lens (\GetCostEstimationResponse' {nextToken} -> nextToken) (\s@GetCostEstimationResponse' {} a -> s {nextToken = a} :: GetCostEstimationResponse)++-- | The collection of the Amazon Web Services resources used to create your+-- monthly DevOps Guru cost estimate.+getCostEstimationResponse_resourceCollection :: Lens.Lens' GetCostEstimationResponse (Prelude.Maybe CostEstimationResourceCollectionFilter)+getCostEstimationResponse_resourceCollection = Lens.lens (\GetCostEstimationResponse' {resourceCollection} -> resourceCollection) (\s@GetCostEstimationResponse' {} a -> s {resourceCollection = a} :: GetCostEstimationResponse)++-- | The status of creating this cost estimate. If it\'s still in progress,+-- the status @ONGOING@ is returned. If it is finished, the status+-- @COMPLETED@ is returned.+getCostEstimationResponse_status :: Lens.Lens' GetCostEstimationResponse (Prelude.Maybe CostEstimationStatus)+getCostEstimationResponse_status = Lens.lens (\GetCostEstimationResponse' {status} -> status) (\s@GetCostEstimationResponse' {} a -> s {status = a} :: GetCostEstimationResponse)++-- | The start and end time of the cost estimation.+getCostEstimationResponse_timeRange :: Lens.Lens' GetCostEstimationResponse (Prelude.Maybe CostEstimationTimeRange)+getCostEstimationResponse_timeRange = Lens.lens (\GetCostEstimationResponse' {timeRange} -> timeRange) (\s@GetCostEstimationResponse' {} a -> s {timeRange = a} :: GetCostEstimationResponse)++-- | The estimated monthly cost to analyze the Amazon Web Services resources.+-- This value is the sum of the estimated costs to analyze each resource in+-- the @Costs@ object in this response.+getCostEstimationResponse_totalCost :: Lens.Lens' GetCostEstimationResponse (Prelude.Maybe Prelude.Double)+getCostEstimationResponse_totalCost = Lens.lens (\GetCostEstimationResponse' {totalCost} -> totalCost) (\s@GetCostEstimationResponse' {} a -> s {totalCost = a} :: GetCostEstimationResponse)++-- | The response's http status code.+getCostEstimationResponse_httpStatus :: Lens.Lens' GetCostEstimationResponse Prelude.Int+getCostEstimationResponse_httpStatus = Lens.lens (\GetCostEstimationResponse' {httpStatus} -> httpStatus) (\s@GetCostEstimationResponse' {} a -> s {httpStatus = a} :: GetCostEstimationResponse)++instance Prelude.NFData GetCostEstimationResponse where+  rnf GetCostEstimationResponse' {..} =+    Prelude.rnf costs+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf timeRange+      `Prelude.seq` Prelude.rnf totalCost+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/GetResourceCollection.hs view
@@ -0,0 +1,263 @@+{-# 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.DevOpsGuru.GetResourceCollection+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns lists Amazon Web Services resources that are of the specified+-- resource collection type. The two types of Amazon Web Services resource+-- collections supported are Amazon Web Services CloudFormation stacks and+-- Amazon Web Services resources that contain the same Amazon Web Services+-- tag. DevOps Guru can be configured to analyze the Amazon Web Services+-- resources that are defined in the stacks or that are tagged using the+-- same tag /key/. You can specify up to 500 Amazon Web Services+-- CloudFormation stacks.+--+-- This operation returns paginated results.+module Amazonka.DevOpsGuru.GetResourceCollection+  ( -- * Creating a Request+    GetResourceCollection (..),+    newGetResourceCollection,++    -- * Request Lenses+    getResourceCollection_nextToken,+    getResourceCollection_resourceCollectionType,++    -- * Destructuring the Response+    GetResourceCollectionResponse (..),+    newGetResourceCollectionResponse,++    -- * Response Lenses+    getResourceCollectionResponse_nextToken,+    getResourceCollectionResponse_resourceCollection,+    getResourceCollectionResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetResourceCollection' smart constructor.+data GetResourceCollection = GetResourceCollection'+  { -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If this value is null, it retrieves the first page.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The type of Amazon Web Services resource collections to return. The one+    -- valid value is @CLOUD_FORMATION@ for Amazon Web Services CloudFormation+    -- stacks.+    resourceCollectionType :: ResourceCollectionType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetResourceCollection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getResourceCollection_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+--+-- 'resourceCollectionType', 'getResourceCollection_resourceCollectionType' - The type of Amazon Web Services resource collections to return. The one+-- valid value is @CLOUD_FORMATION@ for Amazon Web Services CloudFormation+-- stacks.+newGetResourceCollection ::+  -- | 'resourceCollectionType'+  ResourceCollectionType ->+  GetResourceCollection+newGetResourceCollection pResourceCollectionType_ =+  GetResourceCollection'+    { nextToken = Prelude.Nothing,+      resourceCollectionType = pResourceCollectionType_+    }++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+getResourceCollection_nextToken :: Lens.Lens' GetResourceCollection (Prelude.Maybe Prelude.Text)+getResourceCollection_nextToken = Lens.lens (\GetResourceCollection' {nextToken} -> nextToken) (\s@GetResourceCollection' {} a -> s {nextToken = a} :: GetResourceCollection)++-- | The type of Amazon Web Services resource collections to return. The one+-- valid value is @CLOUD_FORMATION@ for Amazon Web Services CloudFormation+-- stacks.+getResourceCollection_resourceCollectionType :: Lens.Lens' GetResourceCollection ResourceCollectionType+getResourceCollection_resourceCollectionType = Lens.lens (\GetResourceCollection' {resourceCollectionType} -> resourceCollectionType) (\s@GetResourceCollection' {} a -> s {resourceCollectionType = a} :: GetResourceCollection)++instance Core.AWSPager GetResourceCollection where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? getResourceCollectionResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? getResourceCollectionResponse_resourceCollection+            Prelude.. Lens._Just+            Prelude.. resourceCollectionFilter_cloudFormation+            Prelude.. Lens._Just+            Prelude.. cloudFormationCollectionFilter_stackNames+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? getResourceCollectionResponse_resourceCollection+            Prelude.. Lens._Just+            Prelude.. resourceCollectionFilter_tags+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& getResourceCollection_nextToken+          Lens..~ rs+          Lens.^? getResourceCollectionResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest GetResourceCollection where+  type+    AWSResponse GetResourceCollection =+      GetResourceCollectionResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetResourceCollectionResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "ResourceCollection")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetResourceCollection where+  hashWithSalt _salt GetResourceCollection' {..} =+    _salt+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` resourceCollectionType++instance Prelude.NFData GetResourceCollection where+  rnf GetResourceCollection' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf resourceCollectionType++instance Data.ToHeaders GetResourceCollection where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetResourceCollection where+  toPath GetResourceCollection' {..} =+    Prelude.mconcat+      [ "/resource-collections/",+        Data.toBS resourceCollectionType+      ]++instance Data.ToQuery GetResourceCollection where+  toQuery GetResourceCollection' {..} =+    Prelude.mconcat ["NextToken" Data.=: nextToken]++-- | /See:/ 'newGetResourceCollectionResponse' smart constructor.+data GetResourceCollectionResponse = GetResourceCollectionResponse'+  { -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If there are no more pages, this value is null.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The requested list of Amazon Web Services resource collections. The two+    -- types of Amazon Web Services resource collections supported are Amazon+    -- Web Services CloudFormation stacks and Amazon Web Services resources+    -- that contain the same Amazon Web Services tag. DevOps Guru can be+    -- configured to analyze the Amazon Web Services resources that are defined+    -- in the stacks or that are tagged using the same tag /key/. You can+    -- specify up to 500 Amazon Web Services CloudFormation stacks.+    resourceCollection :: Prelude.Maybe ResourceCollectionFilter,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetResourceCollectionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getResourceCollectionResponse_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+--+-- 'resourceCollection', 'getResourceCollectionResponse_resourceCollection' - The requested list of Amazon Web Services resource collections. The two+-- types of Amazon Web Services resource collections supported are Amazon+-- Web Services CloudFormation stacks and Amazon Web Services resources+-- that contain the same Amazon Web Services tag. DevOps Guru can be+-- configured to analyze the Amazon Web Services resources that are defined+-- in the stacks or that are tagged using the same tag /key/. You can+-- specify up to 500 Amazon Web Services CloudFormation stacks.+--+-- 'httpStatus', 'getResourceCollectionResponse_httpStatus' - The response's http status code.+newGetResourceCollectionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetResourceCollectionResponse+newGetResourceCollectionResponse pHttpStatus_ =+  GetResourceCollectionResponse'+    { nextToken =+        Prelude.Nothing,+      resourceCollection = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+getResourceCollectionResponse_nextToken :: Lens.Lens' GetResourceCollectionResponse (Prelude.Maybe Prelude.Text)+getResourceCollectionResponse_nextToken = Lens.lens (\GetResourceCollectionResponse' {nextToken} -> nextToken) (\s@GetResourceCollectionResponse' {} a -> s {nextToken = a} :: GetResourceCollectionResponse)++-- | The requested list of Amazon Web Services resource collections. The two+-- types of Amazon Web Services resource collections supported are Amazon+-- Web Services CloudFormation stacks and Amazon Web Services resources+-- that contain the same Amazon Web Services tag. DevOps Guru can be+-- configured to analyze the Amazon Web Services resources that are defined+-- in the stacks or that are tagged using the same tag /key/. You can+-- specify up to 500 Amazon Web Services CloudFormation stacks.+getResourceCollectionResponse_resourceCollection :: Lens.Lens' GetResourceCollectionResponse (Prelude.Maybe ResourceCollectionFilter)+getResourceCollectionResponse_resourceCollection = Lens.lens (\GetResourceCollectionResponse' {resourceCollection} -> resourceCollection) (\s@GetResourceCollectionResponse' {} a -> s {resourceCollection = a} :: GetResourceCollectionResponse)++-- | The response's http status code.+getResourceCollectionResponse_httpStatus :: Lens.Lens' GetResourceCollectionResponse Prelude.Int+getResourceCollectionResponse_httpStatus = Lens.lens (\GetResourceCollectionResponse' {httpStatus} -> httpStatus) (\s@GetResourceCollectionResponse' {} a -> s {httpStatus = a} :: GetResourceCollectionResponse)++instance Prelude.NFData GetResourceCollectionResponse where+  rnf GetResourceCollectionResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/Lens.hs view
@@ -0,0 +1,842 @@+{-# 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.DevOpsGuru.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.DevOpsGuru.Lens+  ( -- * Operations++    -- ** AddNotificationChannel+    addNotificationChannel_config,+    addNotificationChannelResponse_httpStatus,+    addNotificationChannelResponse_id,++    -- ** DeleteInsight+    deleteInsight_id,+    deleteInsightResponse_httpStatus,++    -- ** DescribeAccountHealth+    describeAccountHealthResponse_analyzedResourceCount,+    describeAccountHealthResponse_httpStatus,+    describeAccountHealthResponse_openReactiveInsights,+    describeAccountHealthResponse_openProactiveInsights,+    describeAccountHealthResponse_metricsAnalyzed,+    describeAccountHealthResponse_resourceHours,++    -- ** DescribeAccountOverview+    describeAccountOverview_toTime,+    describeAccountOverview_fromTime,+    describeAccountOverviewResponse_httpStatus,+    describeAccountOverviewResponse_reactiveInsights,+    describeAccountOverviewResponse_proactiveInsights,+    describeAccountOverviewResponse_meanTimeToRecoverInMilliseconds,++    -- ** DescribeAnomaly+    describeAnomaly_accountId,+    describeAnomaly_id,+    describeAnomalyResponse_proactiveAnomaly,+    describeAnomalyResponse_reactiveAnomaly,+    describeAnomalyResponse_httpStatus,++    -- ** DescribeEventSourcesConfig+    describeEventSourcesConfigResponse_eventSources,+    describeEventSourcesConfigResponse_httpStatus,++    -- ** DescribeFeedback+    describeFeedback_insightId,+    describeFeedbackResponse_insightFeedback,+    describeFeedbackResponse_httpStatus,++    -- ** DescribeInsight+    describeInsight_accountId,+    describeInsight_id,+    describeInsightResponse_proactiveInsight,+    describeInsightResponse_reactiveInsight,+    describeInsightResponse_httpStatus,++    -- ** DescribeOrganizationHealth+    describeOrganizationHealth_accountIds,+    describeOrganizationHealth_organizationalUnitIds,+    describeOrganizationHealthResponse_httpStatus,+    describeOrganizationHealthResponse_openReactiveInsights,+    describeOrganizationHealthResponse_openProactiveInsights,+    describeOrganizationHealthResponse_metricsAnalyzed,+    describeOrganizationHealthResponse_resourceHours,++    -- ** DescribeOrganizationOverview+    describeOrganizationOverview_accountIds,+    describeOrganizationOverview_organizationalUnitIds,+    describeOrganizationOverview_toTime,+    describeOrganizationOverview_fromTime,+    describeOrganizationOverviewResponse_httpStatus,+    describeOrganizationOverviewResponse_reactiveInsights,+    describeOrganizationOverviewResponse_proactiveInsights,++    -- ** DescribeOrganizationResourceCollectionHealth+    describeOrganizationResourceCollectionHealth_accountIds,+    describeOrganizationResourceCollectionHealth_maxResults,+    describeOrganizationResourceCollectionHealth_nextToken,+    describeOrganizationResourceCollectionHealth_organizationalUnitIds,+    describeOrganizationResourceCollectionHealth_organizationResourceCollectionType,+    describeOrganizationResourceCollectionHealthResponse_account,+    describeOrganizationResourceCollectionHealthResponse_cloudFormation,+    describeOrganizationResourceCollectionHealthResponse_nextToken,+    describeOrganizationResourceCollectionHealthResponse_service,+    describeOrganizationResourceCollectionHealthResponse_tags,+    describeOrganizationResourceCollectionHealthResponse_httpStatus,++    -- ** DescribeResourceCollectionHealth+    describeResourceCollectionHealth_nextToken,+    describeResourceCollectionHealth_resourceCollectionType,+    describeResourceCollectionHealthResponse_cloudFormation,+    describeResourceCollectionHealthResponse_nextToken,+    describeResourceCollectionHealthResponse_service,+    describeResourceCollectionHealthResponse_tags,+    describeResourceCollectionHealthResponse_httpStatus,++    -- ** DescribeServiceIntegration+    describeServiceIntegrationResponse_serviceIntegration,+    describeServiceIntegrationResponse_httpStatus,++    -- ** GetCostEstimation+    getCostEstimation_nextToken,+    getCostEstimationResponse_costs,+    getCostEstimationResponse_nextToken,+    getCostEstimationResponse_resourceCollection,+    getCostEstimationResponse_status,+    getCostEstimationResponse_timeRange,+    getCostEstimationResponse_totalCost,+    getCostEstimationResponse_httpStatus,++    -- ** GetResourceCollection+    getResourceCollection_nextToken,+    getResourceCollection_resourceCollectionType,+    getResourceCollectionResponse_nextToken,+    getResourceCollectionResponse_resourceCollection,+    getResourceCollectionResponse_httpStatus,++    -- ** ListAnomaliesForInsight+    listAnomaliesForInsight_accountId,+    listAnomaliesForInsight_maxResults,+    listAnomaliesForInsight_nextToken,+    listAnomaliesForInsight_startTimeRange,+    listAnomaliesForInsight_insightId,+    listAnomaliesForInsightResponse_nextToken,+    listAnomaliesForInsightResponse_proactiveAnomalies,+    listAnomaliesForInsightResponse_reactiveAnomalies,+    listAnomaliesForInsightResponse_httpStatus,++    -- ** ListAnomalousLogGroups+    listAnomalousLogGroups_maxResults,+    listAnomalousLogGroups_nextToken,+    listAnomalousLogGroups_insightId,+    listAnomalousLogGroupsResponse_nextToken,+    listAnomalousLogGroupsResponse_httpStatus,+    listAnomalousLogGroupsResponse_insightId,+    listAnomalousLogGroupsResponse_anomalousLogGroups,++    -- ** ListEvents+    listEvents_accountId,+    listEvents_maxResults,+    listEvents_nextToken,+    listEvents_filters,+    listEventsResponse_nextToken,+    listEventsResponse_httpStatus,+    listEventsResponse_events,++    -- ** ListInsights+    listInsights_maxResults,+    listInsights_nextToken,+    listInsights_statusFilter,+    listInsightsResponse_nextToken,+    listInsightsResponse_proactiveInsights,+    listInsightsResponse_reactiveInsights,+    listInsightsResponse_httpStatus,++    -- ** ListMonitoredResources+    listMonitoredResources_filters,+    listMonitoredResources_maxResults,+    listMonitoredResources_nextToken,+    listMonitoredResourcesResponse_nextToken,+    listMonitoredResourcesResponse_httpStatus,+    listMonitoredResourcesResponse_monitoredResourceIdentifiers,++    -- ** ListNotificationChannels+    listNotificationChannels_nextToken,+    listNotificationChannelsResponse_channels,+    listNotificationChannelsResponse_nextToken,+    listNotificationChannelsResponse_httpStatus,++    -- ** ListOrganizationInsights+    listOrganizationInsights_accountIds,+    listOrganizationInsights_maxResults,+    listOrganizationInsights_nextToken,+    listOrganizationInsights_organizationalUnitIds,+    listOrganizationInsights_statusFilter,+    listOrganizationInsightsResponse_nextToken,+    listOrganizationInsightsResponse_proactiveInsights,+    listOrganizationInsightsResponse_reactiveInsights,+    listOrganizationInsightsResponse_httpStatus,++    -- ** ListRecommendations+    listRecommendations_accountId,+    listRecommendations_locale,+    listRecommendations_nextToken,+    listRecommendations_insightId,+    listRecommendationsResponse_nextToken,+    listRecommendationsResponse_recommendations,+    listRecommendationsResponse_httpStatus,++    -- ** PutFeedback+    putFeedback_insightFeedback,+    putFeedbackResponse_httpStatus,++    -- ** RemoveNotificationChannel+    removeNotificationChannel_id,+    removeNotificationChannelResponse_httpStatus,++    -- ** SearchInsights+    searchInsights_filters,+    searchInsights_maxResults,+    searchInsights_nextToken,+    searchInsights_startTimeRange,+    searchInsights_type,+    searchInsightsResponse_nextToken,+    searchInsightsResponse_proactiveInsights,+    searchInsightsResponse_reactiveInsights,+    searchInsightsResponse_httpStatus,++    -- ** SearchOrganizationInsights+    searchOrganizationInsights_filters,+    searchOrganizationInsights_maxResults,+    searchOrganizationInsights_nextToken,+    searchOrganizationInsights_accountIds,+    searchOrganizationInsights_startTimeRange,+    searchOrganizationInsights_type,+    searchOrganizationInsightsResponse_nextToken,+    searchOrganizationInsightsResponse_proactiveInsights,+    searchOrganizationInsightsResponse_reactiveInsights,+    searchOrganizationInsightsResponse_httpStatus,++    -- ** StartCostEstimation+    startCostEstimation_clientToken,+    startCostEstimation_resourceCollection,+    startCostEstimationResponse_httpStatus,++    -- ** UpdateEventSourcesConfig+    updateEventSourcesConfig_eventSources,+    updateEventSourcesConfigResponse_httpStatus,++    -- ** UpdateResourceCollection+    updateResourceCollection_action,+    updateResourceCollection_resourceCollection,+    updateResourceCollectionResponse_httpStatus,++    -- ** UpdateServiceIntegration+    updateServiceIntegration_serviceIntegration,+    updateServiceIntegrationResponse_httpStatus,++    -- * Types++    -- ** AccountHealth+    accountHealth_accountId,+    accountHealth_insight,++    -- ** AccountInsightHealth+    accountInsightHealth_openProactiveInsights,+    accountInsightHealth_openReactiveInsights,++    -- ** AmazonCodeGuruProfilerIntegration+    amazonCodeGuruProfilerIntegration_status,++    -- ** AnomalousLogGroup+    anomalousLogGroup_impactEndTime,+    anomalousLogGroup_impactStartTime,+    anomalousLogGroup_logAnomalyShowcases,+    anomalousLogGroup_logGroupName,+    anomalousLogGroup_numberOfLogLinesScanned,++    -- ** AnomalyReportedTimeRange+    anomalyReportedTimeRange_closeTime,+    anomalyReportedTimeRange_openTime,++    -- ** AnomalyResource+    anomalyResource_name,+    anomalyResource_type,++    -- ** AnomalySourceDetails+    anomalySourceDetails_cloudWatchMetrics,+    anomalySourceDetails_performanceInsightsMetrics,++    -- ** AnomalySourceMetadata+    anomalySourceMetadata_source,+    anomalySourceMetadata_sourceResourceName,+    anomalySourceMetadata_sourceResourceType,++    -- ** AnomalyTimeRange+    anomalyTimeRange_endTime,+    anomalyTimeRange_startTime,++    -- ** CloudFormationCollection+    cloudFormationCollection_stackNames,++    -- ** CloudFormationCollectionFilter+    cloudFormationCollectionFilter_stackNames,++    -- ** CloudFormationCostEstimationResourceCollectionFilter+    cloudFormationCostEstimationResourceCollectionFilter_stackNames,++    -- ** CloudFormationHealth+    cloudFormationHealth_analyzedResourceCount,+    cloudFormationHealth_insight,+    cloudFormationHealth_stackName,++    -- ** CloudWatchMetricsDataSummary+    cloudWatchMetricsDataSummary_statusCode,+    cloudWatchMetricsDataSummary_timestampMetricValuePairList,++    -- ** CloudWatchMetricsDetail+    cloudWatchMetricsDetail_dimensions,+    cloudWatchMetricsDetail_metricDataSummary,+    cloudWatchMetricsDetail_metricName,+    cloudWatchMetricsDetail_namespace,+    cloudWatchMetricsDetail_period,+    cloudWatchMetricsDetail_stat,+    cloudWatchMetricsDetail_unit,++    -- ** CloudWatchMetricsDimension+    cloudWatchMetricsDimension_name,+    cloudWatchMetricsDimension_value,++    -- ** CostEstimationResourceCollectionFilter+    costEstimationResourceCollectionFilter_cloudFormation,+    costEstimationResourceCollectionFilter_tags,++    -- ** CostEstimationTimeRange+    costEstimationTimeRange_endTime,+    costEstimationTimeRange_startTime,++    -- ** EndTimeRange+    endTimeRange_fromTime,+    endTimeRange_toTime,++    -- ** Event+    event_dataSource,+    event_eventClass,+    event_eventSource,+    event_id,+    event_name,+    event_resourceCollection,+    event_resources,+    event_time,++    -- ** EventResource+    eventResource_arn,+    eventResource_name,+    eventResource_type,++    -- ** EventSourcesConfig+    eventSourcesConfig_amazonCodeGuruProfiler,++    -- ** EventTimeRange+    eventTimeRange_fromTime,+    eventTimeRange_toTime,++    -- ** InsightFeedback+    insightFeedback_feedback,+    insightFeedback_id,++    -- ** InsightHealth+    insightHealth_meanTimeToRecoverInMilliseconds,+    insightHealth_openProactiveInsights,+    insightHealth_openReactiveInsights,++    -- ** InsightTimeRange+    insightTimeRange_endTime,+    insightTimeRange_startTime,++    -- ** ListEventsFilters+    listEventsFilters_dataSource,+    listEventsFilters_eventClass,+    listEventsFilters_eventSource,+    listEventsFilters_eventTimeRange,+    listEventsFilters_insightId,+    listEventsFilters_resourceCollection,++    -- ** ListInsightsAnyStatusFilter+    listInsightsAnyStatusFilter_type,+    listInsightsAnyStatusFilter_startTimeRange,++    -- ** ListInsightsClosedStatusFilter+    listInsightsClosedStatusFilter_type,+    listInsightsClosedStatusFilter_endTimeRange,++    -- ** ListInsightsOngoingStatusFilter+    listInsightsOngoingStatusFilter_type,++    -- ** ListInsightsStatusFilter+    listInsightsStatusFilter_any,+    listInsightsStatusFilter_closed,+    listInsightsStatusFilter_ongoing,++    -- ** ListMonitoredResourcesFilters+    listMonitoredResourcesFilters_resourcePermission,+    listMonitoredResourcesFilters_resourceTypeFilters,++    -- ** LogAnomalyClass+    logAnomalyClass_explanation,+    logAnomalyClass_logAnomalyToken,+    logAnomalyClass_logAnomalyType,+    logAnomalyClass_logEventId,+    logAnomalyClass_logEventTimestamp,+    logAnomalyClass_logStreamName,+    logAnomalyClass_numberOfLogLinesOccurrences,++    -- ** LogAnomalyShowcase+    logAnomalyShowcase_logAnomalyClasses,++    -- ** LogsAnomalyDetectionIntegration+    logsAnomalyDetectionIntegration_optInStatus,++    -- ** LogsAnomalyDetectionIntegrationConfig+    logsAnomalyDetectionIntegrationConfig_optInStatus,++    -- ** MonitoredResourceIdentifier+    monitoredResourceIdentifier_lastUpdated,+    monitoredResourceIdentifier_monitoredResourceName,+    monitoredResourceIdentifier_resourceCollection,+    monitoredResourceIdentifier_resourcePermission,+    monitoredResourceIdentifier_type,++    -- ** NotificationChannel+    notificationChannel_config,+    notificationChannel_id,++    -- ** NotificationChannelConfig+    notificationChannelConfig_filters,+    notificationChannelConfig_sns,++    -- ** NotificationFilterConfig+    notificationFilterConfig_messageTypes,+    notificationFilterConfig_severities,++    -- ** OpsCenterIntegration+    opsCenterIntegration_optInStatus,++    -- ** OpsCenterIntegrationConfig+    opsCenterIntegrationConfig_optInStatus,++    -- ** PerformanceInsightsMetricDimensionGroup+    performanceInsightsMetricDimensionGroup_dimensions,+    performanceInsightsMetricDimensionGroup_group,+    performanceInsightsMetricDimensionGroup_limit,++    -- ** PerformanceInsightsMetricQuery+    performanceInsightsMetricQuery_filter,+    performanceInsightsMetricQuery_groupBy,+    performanceInsightsMetricQuery_metric,++    -- ** PerformanceInsightsMetricsDetail+    performanceInsightsMetricsDetail_metricDisplayName,+    performanceInsightsMetricsDetail_metricQuery,+    performanceInsightsMetricsDetail_referenceData,+    performanceInsightsMetricsDetail_statsAtAnomaly,+    performanceInsightsMetricsDetail_statsAtBaseline,+    performanceInsightsMetricsDetail_unit,++    -- ** PerformanceInsightsReferenceComparisonValues+    performanceInsightsReferenceComparisonValues_referenceMetric,+    performanceInsightsReferenceComparisonValues_referenceScalar,++    -- ** PerformanceInsightsReferenceData+    performanceInsightsReferenceData_comparisonValues,+    performanceInsightsReferenceData_name,++    -- ** PerformanceInsightsReferenceMetric+    performanceInsightsReferenceMetric_metricQuery,++    -- ** PerformanceInsightsReferenceScalar+    performanceInsightsReferenceScalar_value,++    -- ** PerformanceInsightsStat+    performanceInsightsStat_type,+    performanceInsightsStat_value,++    -- ** PredictionTimeRange+    predictionTimeRange_endTime,+    predictionTimeRange_startTime,++    -- ** ProactiveAnomaly+    proactiveAnomaly_anomalyReportedTimeRange,+    proactiveAnomaly_anomalyResources,+    proactiveAnomaly_anomalyTimeRange,+    proactiveAnomaly_associatedInsightId,+    proactiveAnomaly_id,+    proactiveAnomaly_limit,+    proactiveAnomaly_predictionTimeRange,+    proactiveAnomaly_resourceCollection,+    proactiveAnomaly_severity,+    proactiveAnomaly_sourceDetails,+    proactiveAnomaly_sourceMetadata,+    proactiveAnomaly_status,+    proactiveAnomaly_updateTime,++    -- ** ProactiveAnomalySummary+    proactiveAnomalySummary_anomalyReportedTimeRange,+    proactiveAnomalySummary_anomalyResources,+    proactiveAnomalySummary_anomalyTimeRange,+    proactiveAnomalySummary_associatedInsightId,+    proactiveAnomalySummary_id,+    proactiveAnomalySummary_limit,+    proactiveAnomalySummary_predictionTimeRange,+    proactiveAnomalySummary_resourceCollection,+    proactiveAnomalySummary_severity,+    proactiveAnomalySummary_sourceDetails,+    proactiveAnomalySummary_sourceMetadata,+    proactiveAnomalySummary_status,+    proactiveAnomalySummary_updateTime,++    -- ** ProactiveInsight+    proactiveInsight_description,+    proactiveInsight_id,+    proactiveInsight_insightTimeRange,+    proactiveInsight_name,+    proactiveInsight_predictionTimeRange,+    proactiveInsight_resourceCollection,+    proactiveInsight_severity,+    proactiveInsight_ssmOpsItemId,+    proactiveInsight_status,++    -- ** ProactiveInsightSummary+    proactiveInsightSummary_associatedResourceArns,+    proactiveInsightSummary_id,+    proactiveInsightSummary_insightTimeRange,+    proactiveInsightSummary_name,+    proactiveInsightSummary_predictionTimeRange,+    proactiveInsightSummary_resourceCollection,+    proactiveInsightSummary_serviceCollection,+    proactiveInsightSummary_severity,+    proactiveInsightSummary_status,++    -- ** ProactiveOrganizationInsightSummary+    proactiveOrganizationInsightSummary_accountId,+    proactiveOrganizationInsightSummary_id,+    proactiveOrganizationInsightSummary_insightTimeRange,+    proactiveOrganizationInsightSummary_name,+    proactiveOrganizationInsightSummary_organizationalUnitId,+    proactiveOrganizationInsightSummary_predictionTimeRange,+    proactiveOrganizationInsightSummary_resourceCollection,+    proactiveOrganizationInsightSummary_serviceCollection,+    proactiveOrganizationInsightSummary_severity,+    proactiveOrganizationInsightSummary_status,++    -- ** ReactiveAnomaly+    reactiveAnomaly_anomalyReportedTimeRange,+    reactiveAnomaly_anomalyResources,+    reactiveAnomaly_anomalyTimeRange,+    reactiveAnomaly_associatedInsightId,+    reactiveAnomaly_causalAnomalyId,+    reactiveAnomaly_description,+    reactiveAnomaly_id,+    reactiveAnomaly_name,+    reactiveAnomaly_resourceCollection,+    reactiveAnomaly_severity,+    reactiveAnomaly_sourceDetails,+    reactiveAnomaly_status,+    reactiveAnomaly_type,++    -- ** ReactiveAnomalySummary+    reactiveAnomalySummary_anomalyReportedTimeRange,+    reactiveAnomalySummary_anomalyResources,+    reactiveAnomalySummary_anomalyTimeRange,+    reactiveAnomalySummary_associatedInsightId,+    reactiveAnomalySummary_causalAnomalyId,+    reactiveAnomalySummary_description,+    reactiveAnomalySummary_id,+    reactiveAnomalySummary_name,+    reactiveAnomalySummary_resourceCollection,+    reactiveAnomalySummary_severity,+    reactiveAnomalySummary_sourceDetails,+    reactiveAnomalySummary_status,+    reactiveAnomalySummary_type,++    -- ** ReactiveInsight+    reactiveInsight_description,+    reactiveInsight_id,+    reactiveInsight_insightTimeRange,+    reactiveInsight_name,+    reactiveInsight_resourceCollection,+    reactiveInsight_severity,+    reactiveInsight_ssmOpsItemId,+    reactiveInsight_status,++    -- ** ReactiveInsightSummary+    reactiveInsightSummary_associatedResourceArns,+    reactiveInsightSummary_id,+    reactiveInsightSummary_insightTimeRange,+    reactiveInsightSummary_name,+    reactiveInsightSummary_resourceCollection,+    reactiveInsightSummary_serviceCollection,+    reactiveInsightSummary_severity,+    reactiveInsightSummary_status,++    -- ** ReactiveOrganizationInsightSummary+    reactiveOrganizationInsightSummary_accountId,+    reactiveOrganizationInsightSummary_id,+    reactiveOrganizationInsightSummary_insightTimeRange,+    reactiveOrganizationInsightSummary_name,+    reactiveOrganizationInsightSummary_organizationalUnitId,+    reactiveOrganizationInsightSummary_resourceCollection,+    reactiveOrganizationInsightSummary_serviceCollection,+    reactiveOrganizationInsightSummary_severity,+    reactiveOrganizationInsightSummary_status,++    -- ** Recommendation+    recommendation_category,+    recommendation_description,+    recommendation_link,+    recommendation_name,+    recommendation_reason,+    recommendation_relatedAnomalies,+    recommendation_relatedEvents,++    -- ** RecommendationRelatedAnomaly+    recommendationRelatedAnomaly_anomalyId,+    recommendationRelatedAnomaly_resources,+    recommendationRelatedAnomaly_sourceDetails,++    -- ** RecommendationRelatedAnomalyResource+    recommendationRelatedAnomalyResource_name,+    recommendationRelatedAnomalyResource_type,++    -- ** RecommendationRelatedAnomalySourceDetail+    recommendationRelatedAnomalySourceDetail_cloudWatchMetrics,++    -- ** RecommendationRelatedCloudWatchMetricsSourceDetail+    recommendationRelatedCloudWatchMetricsSourceDetail_metricName,+    recommendationRelatedCloudWatchMetricsSourceDetail_namespace,++    -- ** RecommendationRelatedEvent+    recommendationRelatedEvent_name,+    recommendationRelatedEvent_resources,++    -- ** RecommendationRelatedEventResource+    recommendationRelatedEventResource_name,+    recommendationRelatedEventResource_type,++    -- ** ResourceCollection+    resourceCollection_cloudFormation,+    resourceCollection_tags,++    -- ** ResourceCollectionFilter+    resourceCollectionFilter_cloudFormation,+    resourceCollectionFilter_tags,++    -- ** SearchInsightsFilters+    searchInsightsFilters_resourceCollection,+    searchInsightsFilters_serviceCollection,+    searchInsightsFilters_severities,+    searchInsightsFilters_statuses,++    -- ** SearchOrganizationInsightsFilters+    searchOrganizationInsightsFilters_resourceCollection,+    searchOrganizationInsightsFilters_serviceCollection,+    searchOrganizationInsightsFilters_severities,+    searchOrganizationInsightsFilters_statuses,++    -- ** ServiceCollection+    serviceCollection_serviceNames,++    -- ** ServiceHealth+    serviceHealth_analyzedResourceCount,+    serviceHealth_insight,+    serviceHealth_serviceName,++    -- ** ServiceInsightHealth+    serviceInsightHealth_openProactiveInsights,+    serviceInsightHealth_openReactiveInsights,++    -- ** ServiceIntegrationConfig+    serviceIntegrationConfig_logsAnomalyDetection,+    serviceIntegrationConfig_opsCenter,++    -- ** ServiceResourceCost+    serviceResourceCost_cost,+    serviceResourceCost_count,+    serviceResourceCost_state,+    serviceResourceCost_type,+    serviceResourceCost_unitCost,++    -- ** SnsChannelConfig+    snsChannelConfig_topicArn,++    -- ** StartTimeRange+    startTimeRange_fromTime,+    startTimeRange_toTime,++    -- ** TagCollection+    tagCollection_appBoundaryKey,+    tagCollection_tagValues,++    -- ** TagCollectionFilter+    tagCollectionFilter_appBoundaryKey,+    tagCollectionFilter_tagValues,++    -- ** TagCostEstimationResourceCollectionFilter+    tagCostEstimationResourceCollectionFilter_appBoundaryKey,+    tagCostEstimationResourceCollectionFilter_tagValues,++    -- ** TagHealth+    tagHealth_analyzedResourceCount,+    tagHealth_appBoundaryKey,+    tagHealth_insight,+    tagHealth_tagValue,++    -- ** TimestampMetricValuePair+    timestampMetricValuePair_metricValue,+    timestampMetricValuePair_timestamp,++    -- ** UpdateCloudFormationCollectionFilter+    updateCloudFormationCollectionFilter_stackNames,++    -- ** UpdateResourceCollectionFilter+    updateResourceCollectionFilter_cloudFormation,+    updateResourceCollectionFilter_tags,++    -- ** UpdateServiceIntegrationConfig+    updateServiceIntegrationConfig_logsAnomalyDetection,+    updateServiceIntegrationConfig_opsCenter,++    -- ** UpdateTagCollectionFilter+    updateTagCollectionFilter_appBoundaryKey,+    updateTagCollectionFilter_tagValues,+  )+where++import Amazonka.DevOpsGuru.AddNotificationChannel+import Amazonka.DevOpsGuru.DeleteInsight+import Amazonka.DevOpsGuru.DescribeAccountHealth+import Amazonka.DevOpsGuru.DescribeAccountOverview+import Amazonka.DevOpsGuru.DescribeAnomaly+import Amazonka.DevOpsGuru.DescribeEventSourcesConfig+import Amazonka.DevOpsGuru.DescribeFeedback+import Amazonka.DevOpsGuru.DescribeInsight+import Amazonka.DevOpsGuru.DescribeOrganizationHealth+import Amazonka.DevOpsGuru.DescribeOrganizationOverview+import Amazonka.DevOpsGuru.DescribeOrganizationResourceCollectionHealth+import Amazonka.DevOpsGuru.DescribeResourceCollectionHealth+import Amazonka.DevOpsGuru.DescribeServiceIntegration+import Amazonka.DevOpsGuru.GetCostEstimation+import Amazonka.DevOpsGuru.GetResourceCollection+import Amazonka.DevOpsGuru.ListAnomaliesForInsight+import Amazonka.DevOpsGuru.ListAnomalousLogGroups+import Amazonka.DevOpsGuru.ListEvents+import Amazonka.DevOpsGuru.ListInsights+import Amazonka.DevOpsGuru.ListMonitoredResources+import Amazonka.DevOpsGuru.ListNotificationChannels+import Amazonka.DevOpsGuru.ListOrganizationInsights+import Amazonka.DevOpsGuru.ListRecommendations+import Amazonka.DevOpsGuru.PutFeedback+import Amazonka.DevOpsGuru.RemoveNotificationChannel+import Amazonka.DevOpsGuru.SearchInsights+import Amazonka.DevOpsGuru.SearchOrganizationInsights+import Amazonka.DevOpsGuru.StartCostEstimation+import Amazonka.DevOpsGuru.Types.AccountHealth+import Amazonka.DevOpsGuru.Types.AccountInsightHealth+import Amazonka.DevOpsGuru.Types.AmazonCodeGuruProfilerIntegration+import Amazonka.DevOpsGuru.Types.AnomalousLogGroup+import Amazonka.DevOpsGuru.Types.AnomalyReportedTimeRange+import Amazonka.DevOpsGuru.Types.AnomalyResource+import Amazonka.DevOpsGuru.Types.AnomalySourceDetails+import Amazonka.DevOpsGuru.Types.AnomalySourceMetadata+import Amazonka.DevOpsGuru.Types.AnomalyTimeRange+import Amazonka.DevOpsGuru.Types.CloudFormationCollection+import Amazonka.DevOpsGuru.Types.CloudFormationCollectionFilter+import Amazonka.DevOpsGuru.Types.CloudFormationCostEstimationResourceCollectionFilter+import Amazonka.DevOpsGuru.Types.CloudFormationHealth+import Amazonka.DevOpsGuru.Types.CloudWatchMetricsDataSummary+import Amazonka.DevOpsGuru.Types.CloudWatchMetricsDetail+import Amazonka.DevOpsGuru.Types.CloudWatchMetricsDimension+import Amazonka.DevOpsGuru.Types.CostEstimationResourceCollectionFilter+import Amazonka.DevOpsGuru.Types.CostEstimationTimeRange+import Amazonka.DevOpsGuru.Types.EndTimeRange+import Amazonka.DevOpsGuru.Types.Event+import Amazonka.DevOpsGuru.Types.EventResource+import Amazonka.DevOpsGuru.Types.EventSourcesConfig+import Amazonka.DevOpsGuru.Types.EventTimeRange+import Amazonka.DevOpsGuru.Types.InsightFeedback+import Amazonka.DevOpsGuru.Types.InsightHealth+import Amazonka.DevOpsGuru.Types.InsightTimeRange+import Amazonka.DevOpsGuru.Types.ListEventsFilters+import Amazonka.DevOpsGuru.Types.ListInsightsAnyStatusFilter+import Amazonka.DevOpsGuru.Types.ListInsightsClosedStatusFilter+import Amazonka.DevOpsGuru.Types.ListInsightsOngoingStatusFilter+import Amazonka.DevOpsGuru.Types.ListInsightsStatusFilter+import Amazonka.DevOpsGuru.Types.ListMonitoredResourcesFilters+import Amazonka.DevOpsGuru.Types.LogAnomalyClass+import Amazonka.DevOpsGuru.Types.LogAnomalyShowcase+import Amazonka.DevOpsGuru.Types.LogsAnomalyDetectionIntegration+import Amazonka.DevOpsGuru.Types.LogsAnomalyDetectionIntegrationConfig+import Amazonka.DevOpsGuru.Types.MonitoredResourceIdentifier+import Amazonka.DevOpsGuru.Types.NotificationChannel+import Amazonka.DevOpsGuru.Types.NotificationChannelConfig+import Amazonka.DevOpsGuru.Types.NotificationFilterConfig+import Amazonka.DevOpsGuru.Types.OpsCenterIntegration+import Amazonka.DevOpsGuru.Types.OpsCenterIntegrationConfig+import Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricDimensionGroup+import Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricQuery+import Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricsDetail+import Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceComparisonValues+import Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceData+import Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceMetric+import Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceScalar+import Amazonka.DevOpsGuru.Types.PerformanceInsightsStat+import Amazonka.DevOpsGuru.Types.PredictionTimeRange+import Amazonka.DevOpsGuru.Types.ProactiveAnomaly+import Amazonka.DevOpsGuru.Types.ProactiveAnomalySummary+import Amazonka.DevOpsGuru.Types.ProactiveInsight+import Amazonka.DevOpsGuru.Types.ProactiveInsightSummary+import Amazonka.DevOpsGuru.Types.ProactiveOrganizationInsightSummary+import Amazonka.DevOpsGuru.Types.ReactiveAnomaly+import Amazonka.DevOpsGuru.Types.ReactiveAnomalySummary+import Amazonka.DevOpsGuru.Types.ReactiveInsight+import Amazonka.DevOpsGuru.Types.ReactiveInsightSummary+import Amazonka.DevOpsGuru.Types.ReactiveOrganizationInsightSummary+import Amazonka.DevOpsGuru.Types.Recommendation+import Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomaly+import Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomalyResource+import Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomalySourceDetail+import Amazonka.DevOpsGuru.Types.RecommendationRelatedCloudWatchMetricsSourceDetail+import Amazonka.DevOpsGuru.Types.RecommendationRelatedEvent+import Amazonka.DevOpsGuru.Types.RecommendationRelatedEventResource+import Amazonka.DevOpsGuru.Types.ResourceCollection+import Amazonka.DevOpsGuru.Types.ResourceCollectionFilter+import Amazonka.DevOpsGuru.Types.SearchInsightsFilters+import Amazonka.DevOpsGuru.Types.SearchOrganizationInsightsFilters+import Amazonka.DevOpsGuru.Types.ServiceCollection+import Amazonka.DevOpsGuru.Types.ServiceHealth+import Amazonka.DevOpsGuru.Types.ServiceInsightHealth+import Amazonka.DevOpsGuru.Types.ServiceIntegrationConfig+import Amazonka.DevOpsGuru.Types.ServiceResourceCost+import Amazonka.DevOpsGuru.Types.SnsChannelConfig+import Amazonka.DevOpsGuru.Types.StartTimeRange+import Amazonka.DevOpsGuru.Types.TagCollection+import Amazonka.DevOpsGuru.Types.TagCollectionFilter+import Amazonka.DevOpsGuru.Types.TagCostEstimationResourceCollectionFilter+import Amazonka.DevOpsGuru.Types.TagHealth+import Amazonka.DevOpsGuru.Types.TimestampMetricValuePair+import Amazonka.DevOpsGuru.Types.UpdateCloudFormationCollectionFilter+import Amazonka.DevOpsGuru.Types.UpdateResourceCollectionFilter+import Amazonka.DevOpsGuru.Types.UpdateServiceIntegrationConfig+import Amazonka.DevOpsGuru.Types.UpdateTagCollectionFilter+import Amazonka.DevOpsGuru.UpdateEventSourcesConfig+import Amazonka.DevOpsGuru.UpdateResourceCollection+import Amazonka.DevOpsGuru.UpdateServiceIntegration
+ gen/Amazonka/DevOpsGuru/ListAnomaliesForInsight.hs view
@@ -0,0 +1,309 @@+{-# 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.DevOpsGuru.ListAnomaliesForInsight+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of the anomalies that belong to an insight that you+-- specify using its ID.+--+-- This operation returns paginated results.+module Amazonka.DevOpsGuru.ListAnomaliesForInsight+  ( -- * Creating a Request+    ListAnomaliesForInsight (..),+    newListAnomaliesForInsight,++    -- * Request Lenses+    listAnomaliesForInsight_accountId,+    listAnomaliesForInsight_maxResults,+    listAnomaliesForInsight_nextToken,+    listAnomaliesForInsight_startTimeRange,+    listAnomaliesForInsight_insightId,++    -- * Destructuring the Response+    ListAnomaliesForInsightResponse (..),+    newListAnomaliesForInsightResponse,++    -- * Response Lenses+    listAnomaliesForInsightResponse_nextToken,+    listAnomaliesForInsightResponse_proactiveAnomalies,+    listAnomaliesForInsightResponse_reactiveAnomalies,+    listAnomaliesForInsightResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListAnomaliesForInsight' smart constructor.+data ListAnomaliesForInsight = ListAnomaliesForInsight'+  { -- | The ID of the Amazon Web Services account.+    accountId :: Prelude.Maybe Prelude.Text,+    -- | 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 pagination token to use to retrieve the next page of results for+    -- this operation. If this value is null, it retrieves the first page.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A time range used to specify when the requested anomalies started. All+    -- returned anomalies started during this time range.+    startTimeRange :: Prelude.Maybe StartTimeRange,+    -- | The ID of the insight. The returned anomalies belong to this insight.+    insightId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAnomaliesForInsight' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountId', 'listAnomaliesForInsight_accountId' - The ID of the Amazon Web Services account.+--+-- 'maxResults', 'listAnomaliesForInsight_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', 'listAnomaliesForInsight_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+--+-- 'startTimeRange', 'listAnomaliesForInsight_startTimeRange' - A time range used to specify when the requested anomalies started. All+-- returned anomalies started during this time range.+--+-- 'insightId', 'listAnomaliesForInsight_insightId' - The ID of the insight. The returned anomalies belong to this insight.+newListAnomaliesForInsight ::+  -- | 'insightId'+  Prelude.Text ->+  ListAnomaliesForInsight+newListAnomaliesForInsight pInsightId_ =+  ListAnomaliesForInsight'+    { accountId =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      startTimeRange = Prelude.Nothing,+      insightId = pInsightId_+    }++-- | The ID of the Amazon Web Services account.+listAnomaliesForInsight_accountId :: Lens.Lens' ListAnomaliesForInsight (Prelude.Maybe Prelude.Text)+listAnomaliesForInsight_accountId = Lens.lens (\ListAnomaliesForInsight' {accountId} -> accountId) (\s@ListAnomaliesForInsight' {} a -> s {accountId = a} :: ListAnomaliesForInsight)++-- | The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+listAnomaliesForInsight_maxResults :: Lens.Lens' ListAnomaliesForInsight (Prelude.Maybe Prelude.Natural)+listAnomaliesForInsight_maxResults = Lens.lens (\ListAnomaliesForInsight' {maxResults} -> maxResults) (\s@ListAnomaliesForInsight' {} a -> s {maxResults = a} :: ListAnomaliesForInsight)++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+listAnomaliesForInsight_nextToken :: Lens.Lens' ListAnomaliesForInsight (Prelude.Maybe Prelude.Text)+listAnomaliesForInsight_nextToken = Lens.lens (\ListAnomaliesForInsight' {nextToken} -> nextToken) (\s@ListAnomaliesForInsight' {} a -> s {nextToken = a} :: ListAnomaliesForInsight)++-- | A time range used to specify when the requested anomalies started. All+-- returned anomalies started during this time range.+listAnomaliesForInsight_startTimeRange :: Lens.Lens' ListAnomaliesForInsight (Prelude.Maybe StartTimeRange)+listAnomaliesForInsight_startTimeRange = Lens.lens (\ListAnomaliesForInsight' {startTimeRange} -> startTimeRange) (\s@ListAnomaliesForInsight' {} a -> s {startTimeRange = a} :: ListAnomaliesForInsight)++-- | The ID of the insight. The returned anomalies belong to this insight.+listAnomaliesForInsight_insightId :: Lens.Lens' ListAnomaliesForInsight Prelude.Text+listAnomaliesForInsight_insightId = Lens.lens (\ListAnomaliesForInsight' {insightId} -> insightId) (\s@ListAnomaliesForInsight' {} a -> s {insightId = a} :: ListAnomaliesForInsight)++instance Core.AWSPager ListAnomaliesForInsight where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listAnomaliesForInsightResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listAnomaliesForInsightResponse_reactiveAnomalies+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listAnomaliesForInsightResponse_proactiveAnomalies+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listAnomaliesForInsight_nextToken+          Lens..~ rs+          Lens.^? listAnomaliesForInsightResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListAnomaliesForInsight where+  type+    AWSResponse ListAnomaliesForInsight =+      ListAnomaliesForInsightResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListAnomaliesForInsightResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "ProactiveAnomalies"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..?> "ReactiveAnomalies"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListAnomaliesForInsight where+  hashWithSalt _salt ListAnomaliesForInsight' {..} =+    _salt+      `Prelude.hashWithSalt` accountId+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` startTimeRange+      `Prelude.hashWithSalt` insightId++instance Prelude.NFData ListAnomaliesForInsight where+  rnf ListAnomaliesForInsight' {..} =+    Prelude.rnf accountId+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf startTimeRange+      `Prelude.seq` Prelude.rnf insightId++instance Data.ToHeaders ListAnomaliesForInsight where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListAnomaliesForInsight where+  toJSON ListAnomaliesForInsight' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AccountId" Data..=) Prelude.<$> accountId,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("StartTimeRange" Data..=)+              Prelude.<$> startTimeRange+          ]+      )++instance Data.ToPath ListAnomaliesForInsight where+  toPath ListAnomaliesForInsight' {..} =+    Prelude.mconcat+      ["/anomalies/insight/", Data.toBS insightId]++instance Data.ToQuery ListAnomaliesForInsight where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListAnomaliesForInsightResponse' smart constructor.+data ListAnomaliesForInsightResponse = ListAnomaliesForInsightResponse'+  { -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If there are no more pages, this value is null.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | An array of @ProactiveAnomalySummary@ objects that represent the+    -- requested anomalies+    proactiveAnomalies :: Prelude.Maybe [ProactiveAnomalySummary],+    -- | An array of @ReactiveAnomalySummary@ objects that represent the+    -- requested anomalies+    reactiveAnomalies :: Prelude.Maybe [ReactiveAnomalySummary],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAnomaliesForInsightResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAnomaliesForInsightResponse_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+--+-- 'proactiveAnomalies', 'listAnomaliesForInsightResponse_proactiveAnomalies' - An array of @ProactiveAnomalySummary@ objects that represent the+-- requested anomalies+--+-- 'reactiveAnomalies', 'listAnomaliesForInsightResponse_reactiveAnomalies' - An array of @ReactiveAnomalySummary@ objects that represent the+-- requested anomalies+--+-- 'httpStatus', 'listAnomaliesForInsightResponse_httpStatus' - The response's http status code.+newListAnomaliesForInsightResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListAnomaliesForInsightResponse+newListAnomaliesForInsightResponse pHttpStatus_ =+  ListAnomaliesForInsightResponse'+    { nextToken =+        Prelude.Nothing,+      proactiveAnomalies = Prelude.Nothing,+      reactiveAnomalies = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+listAnomaliesForInsightResponse_nextToken :: Lens.Lens' ListAnomaliesForInsightResponse (Prelude.Maybe Prelude.Text)+listAnomaliesForInsightResponse_nextToken = Lens.lens (\ListAnomaliesForInsightResponse' {nextToken} -> nextToken) (\s@ListAnomaliesForInsightResponse' {} a -> s {nextToken = a} :: ListAnomaliesForInsightResponse)++-- | An array of @ProactiveAnomalySummary@ objects that represent the+-- requested anomalies+listAnomaliesForInsightResponse_proactiveAnomalies :: Lens.Lens' ListAnomaliesForInsightResponse (Prelude.Maybe [ProactiveAnomalySummary])+listAnomaliesForInsightResponse_proactiveAnomalies = Lens.lens (\ListAnomaliesForInsightResponse' {proactiveAnomalies} -> proactiveAnomalies) (\s@ListAnomaliesForInsightResponse' {} a -> s {proactiveAnomalies = a} :: ListAnomaliesForInsightResponse) Prelude.. Lens.mapping Lens.coerced++-- | An array of @ReactiveAnomalySummary@ objects that represent the+-- requested anomalies+listAnomaliesForInsightResponse_reactiveAnomalies :: Lens.Lens' ListAnomaliesForInsightResponse (Prelude.Maybe [ReactiveAnomalySummary])+listAnomaliesForInsightResponse_reactiveAnomalies = Lens.lens (\ListAnomaliesForInsightResponse' {reactiveAnomalies} -> reactiveAnomalies) (\s@ListAnomaliesForInsightResponse' {} a -> s {reactiveAnomalies = a} :: ListAnomaliesForInsightResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listAnomaliesForInsightResponse_httpStatus :: Lens.Lens' ListAnomaliesForInsightResponse Prelude.Int+listAnomaliesForInsightResponse_httpStatus = Lens.lens (\ListAnomaliesForInsightResponse' {httpStatus} -> httpStatus) (\s@ListAnomaliesForInsightResponse' {} a -> s {httpStatus = a} :: ListAnomaliesForInsightResponse)++instance+  Prelude.NFData+    ListAnomaliesForInsightResponse+  where+  rnf ListAnomaliesForInsightResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf proactiveAnomalies+      `Prelude.seq` Prelude.rnf reactiveAnomalies+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/ListAnomalousLogGroups.hs view
@@ -0,0 +1,265 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.ListAnomalousLogGroups+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the list of log groups that contain log anomalies.+--+-- This operation returns paginated results.+module Amazonka.DevOpsGuru.ListAnomalousLogGroups+  ( -- * Creating a Request+    ListAnomalousLogGroups (..),+    newListAnomalousLogGroups,++    -- * Request Lenses+    listAnomalousLogGroups_maxResults,+    listAnomalousLogGroups_nextToken,+    listAnomalousLogGroups_insightId,++    -- * Destructuring the Response+    ListAnomalousLogGroupsResponse (..),+    newListAnomalousLogGroupsResponse,++    -- * Response Lenses+    listAnomalousLogGroupsResponse_nextToken,+    listAnomalousLogGroupsResponse_httpStatus,+    listAnomalousLogGroupsResponse_insightId,+    listAnomalousLogGroupsResponse_anomalousLogGroups,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListAnomalousLogGroups' smart constructor.+data ListAnomalousLogGroups = ListAnomalousLogGroups'+  { -- | 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 pagination token to use to retrieve the next page of results for+    -- this operation. If this value is null, it retrieves the first page.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the insight containing the log groups.+    insightId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAnomalousLogGroups' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAnomalousLogGroups_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', 'listAnomalousLogGroups_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+--+-- 'insightId', 'listAnomalousLogGroups_insightId' - The ID of the insight containing the log groups.+newListAnomalousLogGroups ::+  -- | 'insightId'+  Prelude.Text ->+  ListAnomalousLogGroups+newListAnomalousLogGroups pInsightId_ =+  ListAnomalousLogGroups'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      insightId = pInsightId_+    }++-- | The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+listAnomalousLogGroups_maxResults :: Lens.Lens' ListAnomalousLogGroups (Prelude.Maybe Prelude.Natural)+listAnomalousLogGroups_maxResults = Lens.lens (\ListAnomalousLogGroups' {maxResults} -> maxResults) (\s@ListAnomalousLogGroups' {} a -> s {maxResults = a} :: ListAnomalousLogGroups)++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+listAnomalousLogGroups_nextToken :: Lens.Lens' ListAnomalousLogGroups (Prelude.Maybe Prelude.Text)+listAnomalousLogGroups_nextToken = Lens.lens (\ListAnomalousLogGroups' {nextToken} -> nextToken) (\s@ListAnomalousLogGroups' {} a -> s {nextToken = a} :: ListAnomalousLogGroups)++-- | The ID of the insight containing the log groups.+listAnomalousLogGroups_insightId :: Lens.Lens' ListAnomalousLogGroups Prelude.Text+listAnomalousLogGroups_insightId = Lens.lens (\ListAnomalousLogGroups' {insightId} -> insightId) (\s@ListAnomalousLogGroups' {} a -> s {insightId = a} :: ListAnomalousLogGroups)++instance Core.AWSPager ListAnomalousLogGroups where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listAnomalousLogGroupsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listAnomalousLogGroupsResponse_anomalousLogGroups+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listAnomalousLogGroups_nextToken+          Lens..~ rs+          Lens.^? listAnomalousLogGroupsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListAnomalousLogGroups where+  type+    AWSResponse ListAnomalousLogGroups =+      ListAnomalousLogGroupsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListAnomalousLogGroupsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "InsightId")+            Prelude.<*> ( x+                            Data..?> "AnomalousLogGroups"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListAnomalousLogGroups where+  hashWithSalt _salt ListAnomalousLogGroups' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` insightId++instance Prelude.NFData ListAnomalousLogGroups where+  rnf ListAnomalousLogGroups' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf insightId++instance Data.ToHeaders ListAnomalousLogGroups where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListAnomalousLogGroups where+  toJSON ListAnomalousLogGroups' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("InsightId" Data..= insightId)+          ]+      )++instance Data.ToPath ListAnomalousLogGroups where+  toPath = Prelude.const "/list-log-anomalies"++instance Data.ToQuery ListAnomalousLogGroups where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListAnomalousLogGroupsResponse' smart constructor.+data ListAnomalousLogGroupsResponse = ListAnomalousLogGroupsResponse'+  { -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If there are no more pages, this value is null.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the insight containing the log groups.+    insightId :: Prelude.Text,+    -- | The list of Amazon CloudWatch log groups that are related to an insight.+    anomalousLogGroups :: [AnomalousLogGroup]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAnomalousLogGroupsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAnomalousLogGroupsResponse_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+--+-- 'httpStatus', 'listAnomalousLogGroupsResponse_httpStatus' - The response's http status code.+--+-- 'insightId', 'listAnomalousLogGroupsResponse_insightId' - The ID of the insight containing the log groups.+--+-- 'anomalousLogGroups', 'listAnomalousLogGroupsResponse_anomalousLogGroups' - The list of Amazon CloudWatch log groups that are related to an insight.+newListAnomalousLogGroupsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'insightId'+  Prelude.Text ->+  ListAnomalousLogGroupsResponse+newListAnomalousLogGroupsResponse+  pHttpStatus_+  pInsightId_ =+    ListAnomalousLogGroupsResponse'+      { nextToken =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        insightId = pInsightId_,+        anomalousLogGroups = Prelude.mempty+      }++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+listAnomalousLogGroupsResponse_nextToken :: Lens.Lens' ListAnomalousLogGroupsResponse (Prelude.Maybe Prelude.Text)+listAnomalousLogGroupsResponse_nextToken = Lens.lens (\ListAnomalousLogGroupsResponse' {nextToken} -> nextToken) (\s@ListAnomalousLogGroupsResponse' {} a -> s {nextToken = a} :: ListAnomalousLogGroupsResponse)++-- | The response's http status code.+listAnomalousLogGroupsResponse_httpStatus :: Lens.Lens' ListAnomalousLogGroupsResponse Prelude.Int+listAnomalousLogGroupsResponse_httpStatus = Lens.lens (\ListAnomalousLogGroupsResponse' {httpStatus} -> httpStatus) (\s@ListAnomalousLogGroupsResponse' {} a -> s {httpStatus = a} :: ListAnomalousLogGroupsResponse)++-- | The ID of the insight containing the log groups.+listAnomalousLogGroupsResponse_insightId :: Lens.Lens' ListAnomalousLogGroupsResponse Prelude.Text+listAnomalousLogGroupsResponse_insightId = Lens.lens (\ListAnomalousLogGroupsResponse' {insightId} -> insightId) (\s@ListAnomalousLogGroupsResponse' {} a -> s {insightId = a} :: ListAnomalousLogGroupsResponse)++-- | The list of Amazon CloudWatch log groups that are related to an insight.+listAnomalousLogGroupsResponse_anomalousLogGroups :: Lens.Lens' ListAnomalousLogGroupsResponse [AnomalousLogGroup]+listAnomalousLogGroupsResponse_anomalousLogGroups = Lens.lens (\ListAnomalousLogGroupsResponse' {anomalousLogGroups} -> anomalousLogGroups) (\s@ListAnomalousLogGroupsResponse' {} a -> s {anomalousLogGroups = a} :: ListAnomalousLogGroupsResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    ListAnomalousLogGroupsResponse+  where+  rnf ListAnomalousLogGroupsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf insightId+      `Prelude.seq` Prelude.rnf anomalousLogGroups
+ gen/Amazonka/DevOpsGuru/ListEvents.hs view
@@ -0,0 +1,251 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.ListEvents+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of the events emitted by the resources that are evaluated+-- by DevOps Guru. You can use filters to specify which events are+-- returned.+--+-- This operation returns paginated results.+module Amazonka.DevOpsGuru.ListEvents+  ( -- * Creating a Request+    ListEvents (..),+    newListEvents,++    -- * Request Lenses+    listEvents_accountId,+    listEvents_maxResults,+    listEvents_nextToken,+    listEvents_filters,++    -- * Destructuring the Response+    ListEventsResponse (..),+    newListEventsResponse,++    -- * Response Lenses+    listEventsResponse_nextToken,+    listEventsResponse_httpStatus,+    listEventsResponse_events,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListEvents' smart constructor.+data ListEvents = ListEvents'+  { -- | The ID of the Amazon Web Services account.+    accountId :: Prelude.Maybe Prelude.Text,+    -- | 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 pagination token to use to retrieve the next page of results for+    -- this operation. If this value is null, it retrieves the first page.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A @ListEventsFilters@ object used to specify which events to return.+    filters :: ListEventsFilters+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListEvents' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountId', 'listEvents_accountId' - The ID of the Amazon Web Services account.+--+-- 'maxResults', 'listEvents_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', 'listEvents_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+--+-- 'filters', 'listEvents_filters' - A @ListEventsFilters@ object used to specify which events to return.+newListEvents ::+  -- | 'filters'+  ListEventsFilters ->+  ListEvents+newListEvents pFilters_ =+  ListEvents'+    { accountId = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      filters = pFilters_+    }++-- | The ID of the Amazon Web Services account.+listEvents_accountId :: Lens.Lens' ListEvents (Prelude.Maybe Prelude.Text)+listEvents_accountId = Lens.lens (\ListEvents' {accountId} -> accountId) (\s@ListEvents' {} a -> s {accountId = a} :: ListEvents)++-- | The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+listEvents_maxResults :: Lens.Lens' ListEvents (Prelude.Maybe Prelude.Natural)+listEvents_maxResults = Lens.lens (\ListEvents' {maxResults} -> maxResults) (\s@ListEvents' {} a -> s {maxResults = a} :: ListEvents)++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+listEvents_nextToken :: Lens.Lens' ListEvents (Prelude.Maybe Prelude.Text)+listEvents_nextToken = Lens.lens (\ListEvents' {nextToken} -> nextToken) (\s@ListEvents' {} a -> s {nextToken = a} :: ListEvents)++-- | A @ListEventsFilters@ object used to specify which events to return.+listEvents_filters :: Lens.Lens' ListEvents ListEventsFilters+listEvents_filters = Lens.lens (\ListEvents' {filters} -> filters) (\s@ListEvents' {} a -> s {filters = a} :: ListEvents)++instance Core.AWSPager ListEvents where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listEventsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop (rs Lens.^. listEventsResponse_events) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listEvents_nextToken+          Lens..~ rs+          Lens.^? listEventsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListEvents where+  type AWSResponse ListEvents = ListEventsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListEventsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Events" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListEvents where+  hashWithSalt _salt ListEvents' {..} =+    _salt+      `Prelude.hashWithSalt` accountId+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` filters++instance Prelude.NFData ListEvents where+  rnf ListEvents' {..} =+    Prelude.rnf accountId+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf filters++instance Data.ToHeaders ListEvents where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListEvents where+  toJSON ListEvents' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AccountId" Data..=) Prelude.<$> accountId,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("Filters" Data..= filters)+          ]+      )++instance Data.ToPath ListEvents where+  toPath = Prelude.const "/events"++instance Data.ToQuery ListEvents where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListEventsResponse' smart constructor.+data ListEventsResponse = ListEventsResponse'+  { -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If there are no more pages, this value is null.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list of the requested events.+    events :: [Event]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListEventsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listEventsResponse_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+--+-- 'httpStatus', 'listEventsResponse_httpStatus' - The response's http status code.+--+-- 'events', 'listEventsResponse_events' - A list of the requested events.+newListEventsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListEventsResponse+newListEventsResponse pHttpStatus_ =+  ListEventsResponse'+    { nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_,+      events = Prelude.mempty+    }++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+listEventsResponse_nextToken :: Lens.Lens' ListEventsResponse (Prelude.Maybe Prelude.Text)+listEventsResponse_nextToken = Lens.lens (\ListEventsResponse' {nextToken} -> nextToken) (\s@ListEventsResponse' {} a -> s {nextToken = a} :: ListEventsResponse)++-- | The response's http status code.+listEventsResponse_httpStatus :: Lens.Lens' ListEventsResponse Prelude.Int+listEventsResponse_httpStatus = Lens.lens (\ListEventsResponse' {httpStatus} -> httpStatus) (\s@ListEventsResponse' {} a -> s {httpStatus = a} :: ListEventsResponse)++-- | A list of the requested events.+listEventsResponse_events :: Lens.Lens' ListEventsResponse [Event]+listEventsResponse_events = Lens.lens (\ListEventsResponse' {events} -> events) (\s@ListEventsResponse' {} a -> s {events = a} :: ListEventsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListEventsResponse where+  rnf ListEventsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf events
+ gen/Amazonka/DevOpsGuru/ListInsights.hs view
@@ -0,0 +1,269 @@+{-# 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.DevOpsGuru.ListInsights+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of insights in your Amazon Web Services account. You can+-- specify which insights are returned by their start time and status+-- (@ONGOING@, @CLOSED@, or @ANY@).+--+-- This operation returns paginated results.+module Amazonka.DevOpsGuru.ListInsights+  ( -- * Creating a Request+    ListInsights (..),+    newListInsights,++    -- * Request Lenses+    listInsights_maxResults,+    listInsights_nextToken,+    listInsights_statusFilter,++    -- * Destructuring the Response+    ListInsightsResponse (..),+    newListInsightsResponse,++    -- * Response Lenses+    listInsightsResponse_nextToken,+    listInsightsResponse_proactiveInsights,+    listInsightsResponse_reactiveInsights,+    listInsightsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListInsights' smart constructor.+data ListInsights = ListInsights'+  { -- | 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 pagination token to use to retrieve the next page of results for+    -- this operation. If this value is null, it retrieves the first page.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A filter used to filter the returned insights by their status. You can+    -- specify one status filter.+    statusFilter :: ListInsightsStatusFilter+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListInsights' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listInsights_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', 'listInsights_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+--+-- 'statusFilter', 'listInsights_statusFilter' - A filter used to filter the returned insights by their status. You can+-- specify one status filter.+newListInsights ::+  -- | 'statusFilter'+  ListInsightsStatusFilter ->+  ListInsights+newListInsights pStatusFilter_ =+  ListInsights'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      statusFilter = pStatusFilter_+    }++-- | The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+listInsights_maxResults :: Lens.Lens' ListInsights (Prelude.Maybe Prelude.Natural)+listInsights_maxResults = Lens.lens (\ListInsights' {maxResults} -> maxResults) (\s@ListInsights' {} a -> s {maxResults = a} :: ListInsights)++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+listInsights_nextToken :: Lens.Lens' ListInsights (Prelude.Maybe Prelude.Text)+listInsights_nextToken = Lens.lens (\ListInsights' {nextToken} -> nextToken) (\s@ListInsights' {} a -> s {nextToken = a} :: ListInsights)++-- | A filter used to filter the returned insights by their status. You can+-- specify one status filter.+listInsights_statusFilter :: Lens.Lens' ListInsights ListInsightsStatusFilter+listInsights_statusFilter = Lens.lens (\ListInsights' {statusFilter} -> statusFilter) (\s@ListInsights' {} a -> s {statusFilter = a} :: ListInsights)++instance Core.AWSPager ListInsights where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listInsightsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listInsightsResponse_proactiveInsights+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listInsightsResponse_reactiveInsights+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listInsights_nextToken+          Lens..~ rs+          Lens.^? listInsightsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListInsights where+  type AWSResponse ListInsights = ListInsightsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListInsightsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "ProactiveInsights"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..?> "ReactiveInsights"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListInsights where+  hashWithSalt _salt ListInsights' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` statusFilter++instance Prelude.NFData ListInsights where+  rnf ListInsights' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf statusFilter++instance Data.ToHeaders ListInsights where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListInsights where+  toJSON ListInsights' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("StatusFilter" Data..= statusFilter)+          ]+      )++instance Data.ToPath ListInsights where+  toPath = Prelude.const "/insights"++instance Data.ToQuery ListInsights where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListInsightsResponse' smart constructor.+data ListInsightsResponse = ListInsightsResponse'+  { -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If there are no more pages, this value is null.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The returned list of proactive insights.+    proactiveInsights :: Prelude.Maybe [ProactiveInsightSummary],+    -- | The returned list of reactive insights.+    reactiveInsights :: Prelude.Maybe [ReactiveInsightSummary],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListInsightsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listInsightsResponse_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+--+-- 'proactiveInsights', 'listInsightsResponse_proactiveInsights' - The returned list of proactive insights.+--+-- 'reactiveInsights', 'listInsightsResponse_reactiveInsights' - The returned list of reactive insights.+--+-- 'httpStatus', 'listInsightsResponse_httpStatus' - The response's http status code.+newListInsightsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListInsightsResponse+newListInsightsResponse pHttpStatus_ =+  ListInsightsResponse'+    { nextToken = Prelude.Nothing,+      proactiveInsights = Prelude.Nothing,+      reactiveInsights = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+listInsightsResponse_nextToken :: Lens.Lens' ListInsightsResponse (Prelude.Maybe Prelude.Text)+listInsightsResponse_nextToken = Lens.lens (\ListInsightsResponse' {nextToken} -> nextToken) (\s@ListInsightsResponse' {} a -> s {nextToken = a} :: ListInsightsResponse)++-- | The returned list of proactive insights.+listInsightsResponse_proactiveInsights :: Lens.Lens' ListInsightsResponse (Prelude.Maybe [ProactiveInsightSummary])+listInsightsResponse_proactiveInsights = Lens.lens (\ListInsightsResponse' {proactiveInsights} -> proactiveInsights) (\s@ListInsightsResponse' {} a -> s {proactiveInsights = a} :: ListInsightsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The returned list of reactive insights.+listInsightsResponse_reactiveInsights :: Lens.Lens' ListInsightsResponse (Prelude.Maybe [ReactiveInsightSummary])+listInsightsResponse_reactiveInsights = Lens.lens (\ListInsightsResponse' {reactiveInsights} -> reactiveInsights) (\s@ListInsightsResponse' {} a -> s {reactiveInsights = a} :: ListInsightsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listInsightsResponse_httpStatus :: Lens.Lens' ListInsightsResponse Prelude.Int+listInsightsResponse_httpStatus = Lens.lens (\ListInsightsResponse' {httpStatus} -> httpStatus) (\s@ListInsightsResponse' {} a -> s {httpStatus = a} :: ListInsightsResponse)++instance Prelude.NFData ListInsightsResponse where+  rnf ListInsightsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf proactiveInsights+      `Prelude.seq` Prelude.rnf reactiveInsights+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/ListMonitoredResources.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.DevOpsGuru.ListMonitoredResources+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the list of all log groups that are being monitored and tagged+-- by DevOps Guru.+--+-- This operation returns paginated results.+module Amazonka.DevOpsGuru.ListMonitoredResources+  ( -- * Creating a Request+    ListMonitoredResources (..),+    newListMonitoredResources,++    -- * Request Lenses+    listMonitoredResources_filters,+    listMonitoredResources_maxResults,+    listMonitoredResources_nextToken,++    -- * Destructuring the Response+    ListMonitoredResourcesResponse (..),+    newListMonitoredResourcesResponse,++    -- * Response Lenses+    listMonitoredResourcesResponse_nextToken,+    listMonitoredResourcesResponse_httpStatus,+    listMonitoredResourcesResponse_monitoredResourceIdentifiers,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListMonitoredResources' smart constructor.+data ListMonitoredResources = ListMonitoredResources'+  { -- | Filters to determine which monitored resources you want to retrieve. You+    -- can filter by resource type or resource permission status.+    filters :: Prelude.Maybe ListMonitoredResourcesFilters,+    -- | 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 pagination token to use to retrieve the next page of results for+    -- this operation. If this value is null, it retrieves the first page.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListMonitoredResources' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listMonitoredResources_filters' - Filters to determine which monitored resources you want to retrieve. You+-- can filter by resource type or resource permission status.+--+-- 'maxResults', 'listMonitoredResources_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', 'listMonitoredResources_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+newListMonitoredResources ::+  ListMonitoredResources+newListMonitoredResources =+  ListMonitoredResources'+    { filters = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | Filters to determine which monitored resources you want to retrieve. You+-- can filter by resource type or resource permission status.+listMonitoredResources_filters :: Lens.Lens' ListMonitoredResources (Prelude.Maybe ListMonitoredResourcesFilters)+listMonitoredResources_filters = Lens.lens (\ListMonitoredResources' {filters} -> filters) (\s@ListMonitoredResources' {} a -> s {filters = a} :: ListMonitoredResources)++-- | The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+listMonitoredResources_maxResults :: Lens.Lens' ListMonitoredResources (Prelude.Maybe Prelude.Natural)+listMonitoredResources_maxResults = Lens.lens (\ListMonitoredResources' {maxResults} -> maxResults) (\s@ListMonitoredResources' {} a -> s {maxResults = a} :: ListMonitoredResources)++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+listMonitoredResources_nextToken :: Lens.Lens' ListMonitoredResources (Prelude.Maybe Prelude.Text)+listMonitoredResources_nextToken = Lens.lens (\ListMonitoredResources' {nextToken} -> nextToken) (\s@ListMonitoredResources' {} a -> s {nextToken = a} :: ListMonitoredResources)++instance Core.AWSPager ListMonitoredResources where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listMonitoredResourcesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listMonitoredResourcesResponse_monitoredResourceIdentifiers+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listMonitoredResources_nextToken+          Lens..~ rs+          Lens.^? listMonitoredResourcesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListMonitoredResources where+  type+    AWSResponse ListMonitoredResources =+      ListMonitoredResourcesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListMonitoredResourcesResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "MonitoredResourceIdentifiers"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListMonitoredResources where+  hashWithSalt _salt ListMonitoredResources' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListMonitoredResources where+  rnf ListMonitoredResources' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListMonitoredResources where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListMonitoredResources where+  toJSON ListMonitoredResources' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Filters" Data..=) Prelude.<$> filters,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListMonitoredResources where+  toPath = Prelude.const "/monitoredResources"++instance Data.ToQuery ListMonitoredResources where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListMonitoredResourcesResponse' smart constructor.+data ListMonitoredResourcesResponse = ListMonitoredResourcesResponse'+  { -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If there are no more pages, this value is null.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Information about the resource that is being monitored, including the+    -- name of the resource, the type of resource, and whether or not+    -- permission is given to DevOps Guru to access that resource.+    monitoredResourceIdentifiers :: [MonitoredResourceIdentifier]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListMonitoredResourcesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listMonitoredResourcesResponse_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+--+-- 'httpStatus', 'listMonitoredResourcesResponse_httpStatus' - The response's http status code.+--+-- 'monitoredResourceIdentifiers', 'listMonitoredResourcesResponse_monitoredResourceIdentifiers' - Information about the resource that is being monitored, including the+-- name of the resource, the type of resource, and whether or not+-- permission is given to DevOps Guru to access that resource.+newListMonitoredResourcesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListMonitoredResourcesResponse+newListMonitoredResourcesResponse pHttpStatus_ =+  ListMonitoredResourcesResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      monitoredResourceIdentifiers =+        Prelude.mempty+    }++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+listMonitoredResourcesResponse_nextToken :: Lens.Lens' ListMonitoredResourcesResponse (Prelude.Maybe Prelude.Text)+listMonitoredResourcesResponse_nextToken = Lens.lens (\ListMonitoredResourcesResponse' {nextToken} -> nextToken) (\s@ListMonitoredResourcesResponse' {} a -> s {nextToken = a} :: ListMonitoredResourcesResponse)++-- | The response's http status code.+listMonitoredResourcesResponse_httpStatus :: Lens.Lens' ListMonitoredResourcesResponse Prelude.Int+listMonitoredResourcesResponse_httpStatus = Lens.lens (\ListMonitoredResourcesResponse' {httpStatus} -> httpStatus) (\s@ListMonitoredResourcesResponse' {} a -> s {httpStatus = a} :: ListMonitoredResourcesResponse)++-- | Information about the resource that is being monitored, including the+-- name of the resource, the type of resource, and whether or not+-- permission is given to DevOps Guru to access that resource.+listMonitoredResourcesResponse_monitoredResourceIdentifiers :: Lens.Lens' ListMonitoredResourcesResponse [MonitoredResourceIdentifier]+listMonitoredResourcesResponse_monitoredResourceIdentifiers = Lens.lens (\ListMonitoredResourcesResponse' {monitoredResourceIdentifiers} -> monitoredResourceIdentifiers) (\s@ListMonitoredResourcesResponse' {} a -> s {monitoredResourceIdentifiers = a} :: ListMonitoredResourcesResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    ListMonitoredResourcesResponse+  where+  rnf ListMonitoredResourcesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf monitoredResourceIdentifiers
+ gen/Amazonka/DevOpsGuru/ListNotificationChannels.hs view
@@ -0,0 +1,215 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.ListNotificationChannels+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of notification channels configured for DevOps Guru. Each+-- notification channel is used to notify you when DevOps Guru generates an+-- insight that contains information about how to improve your operations.+-- The one supported notification channel is Amazon Simple Notification+-- Service (Amazon SNS).+--+-- This operation returns paginated results.+module Amazonka.DevOpsGuru.ListNotificationChannels+  ( -- * Creating a Request+    ListNotificationChannels (..),+    newListNotificationChannels,++    -- * Request Lenses+    listNotificationChannels_nextToken,++    -- * Destructuring the Response+    ListNotificationChannelsResponse (..),+    newListNotificationChannelsResponse,++    -- * Response Lenses+    listNotificationChannelsResponse_channels,+    listNotificationChannelsResponse_nextToken,+    listNotificationChannelsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListNotificationChannels' smart constructor.+data ListNotificationChannels = ListNotificationChannels'+  { -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If this value is null, it retrieves the first page.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListNotificationChannels' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listNotificationChannels_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+newListNotificationChannels ::+  ListNotificationChannels+newListNotificationChannels =+  ListNotificationChannels'+    { nextToken =+        Prelude.Nothing+    }++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+listNotificationChannels_nextToken :: Lens.Lens' ListNotificationChannels (Prelude.Maybe Prelude.Text)+listNotificationChannels_nextToken = Lens.lens (\ListNotificationChannels' {nextToken} -> nextToken) (\s@ListNotificationChannels' {} a -> s {nextToken = a} :: ListNotificationChannels)++instance Core.AWSPager ListNotificationChannels where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listNotificationChannelsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listNotificationChannelsResponse_channels+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listNotificationChannels_nextToken+          Lens..~ rs+          Lens.^? listNotificationChannelsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListNotificationChannels where+  type+    AWSResponse ListNotificationChannels =+      ListNotificationChannelsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListNotificationChannelsResponse'+            Prelude.<$> (x Data..?> "Channels" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListNotificationChannels where+  hashWithSalt _salt ListNotificationChannels' {..} =+    _salt `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListNotificationChannels where+  rnf ListNotificationChannels' {..} =+    Prelude.rnf nextToken++instance Data.ToHeaders ListNotificationChannels where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListNotificationChannels where+  toJSON ListNotificationChannels' {..} =+    Data.object+      ( Prelude.catMaybes+          [("NextToken" Data..=) Prelude.<$> nextToken]+      )++instance Data.ToPath ListNotificationChannels where+  toPath = Prelude.const "/channels"++instance Data.ToQuery ListNotificationChannels where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListNotificationChannelsResponse' smart constructor.+data ListNotificationChannelsResponse = ListNotificationChannelsResponse'+  { -- | An array that contains the requested notification channels.+    channels :: Prelude.Maybe [NotificationChannel],+    -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If there are no more pages, this value is null.+    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 'ListNotificationChannelsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'channels', 'listNotificationChannelsResponse_channels' - An array that contains the requested notification channels.+--+-- 'nextToken', 'listNotificationChannelsResponse_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+--+-- 'httpStatus', 'listNotificationChannelsResponse_httpStatus' - The response's http status code.+newListNotificationChannelsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListNotificationChannelsResponse+newListNotificationChannelsResponse pHttpStatus_ =+  ListNotificationChannelsResponse'+    { channels =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An array that contains the requested notification channels.+listNotificationChannelsResponse_channels :: Lens.Lens' ListNotificationChannelsResponse (Prelude.Maybe [NotificationChannel])+listNotificationChannelsResponse_channels = Lens.lens (\ListNotificationChannelsResponse' {channels} -> channels) (\s@ListNotificationChannelsResponse' {} a -> s {channels = a} :: ListNotificationChannelsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+listNotificationChannelsResponse_nextToken :: Lens.Lens' ListNotificationChannelsResponse (Prelude.Maybe Prelude.Text)+listNotificationChannelsResponse_nextToken = Lens.lens (\ListNotificationChannelsResponse' {nextToken} -> nextToken) (\s@ListNotificationChannelsResponse' {} a -> s {nextToken = a} :: ListNotificationChannelsResponse)++-- | The response's http status code.+listNotificationChannelsResponse_httpStatus :: Lens.Lens' ListNotificationChannelsResponse Prelude.Int+listNotificationChannelsResponse_httpStatus = Lens.lens (\ListNotificationChannelsResponse' {httpStatus} -> httpStatus) (\s@ListNotificationChannelsResponse' {} a -> s {httpStatus = a} :: ListNotificationChannelsResponse)++instance+  Prelude.NFData+    ListNotificationChannelsResponse+  where+  rnf ListNotificationChannelsResponse' {..} =+    Prelude.rnf channels+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/ListOrganizationInsights.hs view
@@ -0,0 +1,303 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.ListOrganizationInsights+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of insights associated with the account or OU Id.+--+-- This operation returns paginated results.+module Amazonka.DevOpsGuru.ListOrganizationInsights+  ( -- * Creating a Request+    ListOrganizationInsights (..),+    newListOrganizationInsights,++    -- * Request Lenses+    listOrganizationInsights_accountIds,+    listOrganizationInsights_maxResults,+    listOrganizationInsights_nextToken,+    listOrganizationInsights_organizationalUnitIds,+    listOrganizationInsights_statusFilter,++    -- * Destructuring the Response+    ListOrganizationInsightsResponse (..),+    newListOrganizationInsightsResponse,++    -- * Response Lenses+    listOrganizationInsightsResponse_nextToken,+    listOrganizationInsightsResponse_proactiveInsights,+    listOrganizationInsightsResponse_reactiveInsights,+    listOrganizationInsightsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListOrganizationInsights' smart constructor.+data ListOrganizationInsights = ListOrganizationInsights'+  { -- | The ID of the Amazon Web Services account.+    accountIds :: Prelude.Maybe [Prelude.Text],+    -- | 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 pagination token to use to retrieve the next page of results for+    -- this operation. If this value is null, it retrieves the first page.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the organizational unit.+    organizationalUnitIds :: Prelude.Maybe [Prelude.Text],+    statusFilter :: ListInsightsStatusFilter+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListOrganizationInsights' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountIds', 'listOrganizationInsights_accountIds' - The ID of the Amazon Web Services account.+--+-- 'maxResults', 'listOrganizationInsights_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', 'listOrganizationInsights_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+--+-- 'organizationalUnitIds', 'listOrganizationInsights_organizationalUnitIds' - The ID of the organizational unit.+--+-- 'statusFilter', 'listOrganizationInsights_statusFilter' - Undocumented member.+newListOrganizationInsights ::+  -- | 'statusFilter'+  ListInsightsStatusFilter ->+  ListOrganizationInsights+newListOrganizationInsights pStatusFilter_ =+  ListOrganizationInsights'+    { accountIds =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      organizationalUnitIds = Prelude.Nothing,+      statusFilter = pStatusFilter_+    }++-- | The ID of the Amazon Web Services account.+listOrganizationInsights_accountIds :: Lens.Lens' ListOrganizationInsights (Prelude.Maybe [Prelude.Text])+listOrganizationInsights_accountIds = Lens.lens (\ListOrganizationInsights' {accountIds} -> accountIds) (\s@ListOrganizationInsights' {} a -> s {accountIds = a} :: ListOrganizationInsights) Prelude.. Lens.mapping Lens.coerced++-- | The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+listOrganizationInsights_maxResults :: Lens.Lens' ListOrganizationInsights (Prelude.Maybe Prelude.Natural)+listOrganizationInsights_maxResults = Lens.lens (\ListOrganizationInsights' {maxResults} -> maxResults) (\s@ListOrganizationInsights' {} a -> s {maxResults = a} :: ListOrganizationInsights)++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+listOrganizationInsights_nextToken :: Lens.Lens' ListOrganizationInsights (Prelude.Maybe Prelude.Text)+listOrganizationInsights_nextToken = Lens.lens (\ListOrganizationInsights' {nextToken} -> nextToken) (\s@ListOrganizationInsights' {} a -> s {nextToken = a} :: ListOrganizationInsights)++-- | The ID of the organizational unit.+listOrganizationInsights_organizationalUnitIds :: Lens.Lens' ListOrganizationInsights (Prelude.Maybe [Prelude.Text])+listOrganizationInsights_organizationalUnitIds = Lens.lens (\ListOrganizationInsights' {organizationalUnitIds} -> organizationalUnitIds) (\s@ListOrganizationInsights' {} a -> s {organizationalUnitIds = a} :: ListOrganizationInsights) Prelude.. Lens.mapping Lens.coerced++-- | Undocumented member.+listOrganizationInsights_statusFilter :: Lens.Lens' ListOrganizationInsights ListInsightsStatusFilter+listOrganizationInsights_statusFilter = Lens.lens (\ListOrganizationInsights' {statusFilter} -> statusFilter) (\s@ListOrganizationInsights' {} a -> s {statusFilter = a} :: ListOrganizationInsights)++instance Core.AWSPager ListOrganizationInsights where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listOrganizationInsightsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listOrganizationInsightsResponse_proactiveInsights+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listOrganizationInsightsResponse_reactiveInsights+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listOrganizationInsights_nextToken+          Lens..~ rs+          Lens.^? listOrganizationInsightsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListOrganizationInsights where+  type+    AWSResponse ListOrganizationInsights =+      ListOrganizationInsightsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListOrganizationInsightsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "ProactiveInsights"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..?> "ReactiveInsights"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListOrganizationInsights where+  hashWithSalt _salt ListOrganizationInsights' {..} =+    _salt+      `Prelude.hashWithSalt` accountIds+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` organizationalUnitIds+      `Prelude.hashWithSalt` statusFilter++instance Prelude.NFData ListOrganizationInsights where+  rnf ListOrganizationInsights' {..} =+    Prelude.rnf accountIds+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf organizationalUnitIds+      `Prelude.seq` Prelude.rnf statusFilter++instance Data.ToHeaders ListOrganizationInsights where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListOrganizationInsights where+  toJSON ListOrganizationInsights' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AccountIds" Data..=) Prelude.<$> accountIds,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("OrganizationalUnitIds" Data..=)+              Prelude.<$> organizationalUnitIds,+            Prelude.Just ("StatusFilter" Data..= statusFilter)+          ]+      )++instance Data.ToPath ListOrganizationInsights where+  toPath = Prelude.const "/organization/insights"++instance Data.ToQuery ListOrganizationInsights where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListOrganizationInsightsResponse' smart constructor.+data ListOrganizationInsightsResponse = ListOrganizationInsightsResponse'+  { -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If there are no more pages, this value is null.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | An integer that specifies the number of open proactive insights in your+    -- Amazon Web Services account.+    proactiveInsights :: Prelude.Maybe [ProactiveOrganizationInsightSummary],+    -- | An integer that specifies the number of open reactive insights in your+    -- Amazon Web Services account.+    reactiveInsights :: Prelude.Maybe [ReactiveOrganizationInsightSummary],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListOrganizationInsightsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listOrganizationInsightsResponse_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+--+-- 'proactiveInsights', 'listOrganizationInsightsResponse_proactiveInsights' - An integer that specifies the number of open proactive insights in your+-- Amazon Web Services account.+--+-- 'reactiveInsights', 'listOrganizationInsightsResponse_reactiveInsights' - An integer that specifies the number of open reactive insights in your+-- Amazon Web Services account.+--+-- 'httpStatus', 'listOrganizationInsightsResponse_httpStatus' - The response's http status code.+newListOrganizationInsightsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListOrganizationInsightsResponse+newListOrganizationInsightsResponse pHttpStatus_ =+  ListOrganizationInsightsResponse'+    { nextToken =+        Prelude.Nothing,+      proactiveInsights = Prelude.Nothing,+      reactiveInsights = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+listOrganizationInsightsResponse_nextToken :: Lens.Lens' ListOrganizationInsightsResponse (Prelude.Maybe Prelude.Text)+listOrganizationInsightsResponse_nextToken = Lens.lens (\ListOrganizationInsightsResponse' {nextToken} -> nextToken) (\s@ListOrganizationInsightsResponse' {} a -> s {nextToken = a} :: ListOrganizationInsightsResponse)++-- | An integer that specifies the number of open proactive insights in your+-- Amazon Web Services account.+listOrganizationInsightsResponse_proactiveInsights :: Lens.Lens' ListOrganizationInsightsResponse (Prelude.Maybe [ProactiveOrganizationInsightSummary])+listOrganizationInsightsResponse_proactiveInsights = Lens.lens (\ListOrganizationInsightsResponse' {proactiveInsights} -> proactiveInsights) (\s@ListOrganizationInsightsResponse' {} a -> s {proactiveInsights = a} :: ListOrganizationInsightsResponse) Prelude.. Lens.mapping Lens.coerced++-- | An integer that specifies the number of open reactive insights in your+-- Amazon Web Services account.+listOrganizationInsightsResponse_reactiveInsights :: Lens.Lens' ListOrganizationInsightsResponse (Prelude.Maybe [ReactiveOrganizationInsightSummary])+listOrganizationInsightsResponse_reactiveInsights = Lens.lens (\ListOrganizationInsightsResponse' {reactiveInsights} -> reactiveInsights) (\s@ListOrganizationInsightsResponse' {} a -> s {reactiveInsights = a} :: ListOrganizationInsightsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listOrganizationInsightsResponse_httpStatus :: Lens.Lens' ListOrganizationInsightsResponse Prelude.Int+listOrganizationInsightsResponse_httpStatus = Lens.lens (\ListOrganizationInsightsResponse' {httpStatus} -> httpStatus) (\s@ListOrganizationInsightsResponse' {} a -> s {httpStatus = a} :: ListOrganizationInsightsResponse)++instance+  Prelude.NFData+    ListOrganizationInsightsResponse+  where+  rnf ListOrganizationInsightsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf proactiveInsights+      `Prelude.seq` Prelude.rnf reactiveInsights+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/ListRecommendations.hs view
@@ -0,0 +1,255 @@+{-# 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.DevOpsGuru.ListRecommendations+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of a specified insight\'s recommendations. Each+-- recommendation includes a list of related metrics and a list of related+-- events.+--+-- This operation returns paginated results.+module Amazonka.DevOpsGuru.ListRecommendations+  ( -- * Creating a Request+    ListRecommendations (..),+    newListRecommendations,++    -- * Request Lenses+    listRecommendations_accountId,+    listRecommendations_locale,+    listRecommendations_nextToken,+    listRecommendations_insightId,++    -- * Destructuring the Response+    ListRecommendationsResponse (..),+    newListRecommendationsResponse,++    -- * Response Lenses+    listRecommendationsResponse_nextToken,+    listRecommendationsResponse_recommendations,+    listRecommendationsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListRecommendations' smart constructor.+data ListRecommendations = ListRecommendations'+  { -- | The ID of the Amazon Web Services account.+    accountId :: Prelude.Maybe Prelude.Text,+    -- | A locale that specifies the language to use for recommendations.+    locale :: Prelude.Maybe Locale,+    -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If this value is null, it retrieves the first page.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the requested insight.+    insightId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListRecommendations' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountId', 'listRecommendations_accountId' - The ID of the Amazon Web Services account.+--+-- 'locale', 'listRecommendations_locale' - A locale that specifies the language to use for recommendations.+--+-- 'nextToken', 'listRecommendations_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+--+-- 'insightId', 'listRecommendations_insightId' - The ID of the requested insight.+newListRecommendations ::+  -- | 'insightId'+  Prelude.Text ->+  ListRecommendations+newListRecommendations pInsightId_ =+  ListRecommendations'+    { accountId = Prelude.Nothing,+      locale = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      insightId = pInsightId_+    }++-- | The ID of the Amazon Web Services account.+listRecommendations_accountId :: Lens.Lens' ListRecommendations (Prelude.Maybe Prelude.Text)+listRecommendations_accountId = Lens.lens (\ListRecommendations' {accountId} -> accountId) (\s@ListRecommendations' {} a -> s {accountId = a} :: ListRecommendations)++-- | A locale that specifies the language to use for recommendations.+listRecommendations_locale :: Lens.Lens' ListRecommendations (Prelude.Maybe Locale)+listRecommendations_locale = Lens.lens (\ListRecommendations' {locale} -> locale) (\s@ListRecommendations' {} a -> s {locale = a} :: ListRecommendations)++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+listRecommendations_nextToken :: Lens.Lens' ListRecommendations (Prelude.Maybe Prelude.Text)+listRecommendations_nextToken = Lens.lens (\ListRecommendations' {nextToken} -> nextToken) (\s@ListRecommendations' {} a -> s {nextToken = a} :: ListRecommendations)++-- | The ID of the requested insight.+listRecommendations_insightId :: Lens.Lens' ListRecommendations Prelude.Text+listRecommendations_insightId = Lens.lens (\ListRecommendations' {insightId} -> insightId) (\s@ListRecommendations' {} a -> s {insightId = a} :: ListRecommendations)++instance Core.AWSPager ListRecommendations where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listRecommendationsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listRecommendationsResponse_recommendations+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listRecommendations_nextToken+          Lens..~ rs+          Lens.^? listRecommendationsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListRecommendations where+  type+    AWSResponse ListRecommendations =+      ListRecommendationsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListRecommendationsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "Recommendations"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListRecommendations where+  hashWithSalt _salt ListRecommendations' {..} =+    _salt+      `Prelude.hashWithSalt` accountId+      `Prelude.hashWithSalt` locale+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` insightId++instance Prelude.NFData ListRecommendations where+  rnf ListRecommendations' {..} =+    Prelude.rnf accountId+      `Prelude.seq` Prelude.rnf locale+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf insightId++instance Data.ToHeaders ListRecommendations where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListRecommendations where+  toJSON ListRecommendations' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AccountId" Data..=) Prelude.<$> accountId,+            ("Locale" Data..=) Prelude.<$> locale,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("InsightId" Data..= insightId)+          ]+      )++instance Data.ToPath ListRecommendations where+  toPath = Prelude.const "/recommendations"++instance Data.ToQuery ListRecommendations where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListRecommendationsResponse' smart constructor.+data ListRecommendationsResponse = ListRecommendationsResponse'+  { -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If there are no more pages, this value is null.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | An array of the requested recommendations.+    recommendations :: Prelude.Maybe [Recommendation],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListRecommendationsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'listRecommendationsResponse_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+--+-- 'recommendations', 'listRecommendationsResponse_recommendations' - An array of the requested recommendations.+--+-- 'httpStatus', 'listRecommendationsResponse_httpStatus' - The response's http status code.+newListRecommendationsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListRecommendationsResponse+newListRecommendationsResponse pHttpStatus_ =+  ListRecommendationsResponse'+    { nextToken =+        Prelude.Nothing,+      recommendations = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+listRecommendationsResponse_nextToken :: Lens.Lens' ListRecommendationsResponse (Prelude.Maybe Prelude.Text)+listRecommendationsResponse_nextToken = Lens.lens (\ListRecommendationsResponse' {nextToken} -> nextToken) (\s@ListRecommendationsResponse' {} a -> s {nextToken = a} :: ListRecommendationsResponse)++-- | An array of the requested recommendations.+listRecommendationsResponse_recommendations :: Lens.Lens' ListRecommendationsResponse (Prelude.Maybe [Recommendation])+listRecommendationsResponse_recommendations = Lens.lens (\ListRecommendationsResponse' {recommendations} -> recommendations) (\s@ListRecommendationsResponse' {} a -> s {recommendations = a} :: ListRecommendationsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listRecommendationsResponse_httpStatus :: Lens.Lens' ListRecommendationsResponse Prelude.Int+listRecommendationsResponse_httpStatus = Lens.lens (\ListRecommendationsResponse' {httpStatus} -> httpStatus) (\s@ListRecommendationsResponse' {} a -> s {httpStatus = a} :: ListRecommendationsResponse)++instance Prelude.NFData ListRecommendationsResponse where+  rnf ListRecommendationsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf recommendations+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/PutFeedback.hs view
@@ -0,0 +1,149 @@+{-# 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.DevOpsGuru.PutFeedback+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Collects customer feedback about the specified insight.+module Amazonka.DevOpsGuru.PutFeedback+  ( -- * Creating a Request+    PutFeedback (..),+    newPutFeedback,++    -- * Request Lenses+    putFeedback_insightFeedback,++    -- * Destructuring the Response+    PutFeedbackResponse (..),+    newPutFeedbackResponse,++    -- * Response Lenses+    putFeedbackResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutFeedback' smart constructor.+data PutFeedback = PutFeedback'+  { -- | The feedback from customers is about the recommendations in this+    -- insight.+    insightFeedback :: Prelude.Maybe InsightFeedback+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutFeedback' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'insightFeedback', 'putFeedback_insightFeedback' - The feedback from customers is about the recommendations in this+-- insight.+newPutFeedback ::+  PutFeedback+newPutFeedback =+  PutFeedback' {insightFeedback = Prelude.Nothing}++-- | The feedback from customers is about the recommendations in this+-- insight.+putFeedback_insightFeedback :: Lens.Lens' PutFeedback (Prelude.Maybe InsightFeedback)+putFeedback_insightFeedback = Lens.lens (\PutFeedback' {insightFeedback} -> insightFeedback) (\s@PutFeedback' {} a -> s {insightFeedback = a} :: PutFeedback)++instance Core.AWSRequest PutFeedback where+  type AWSResponse PutFeedback = PutFeedbackResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutFeedbackResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutFeedback where+  hashWithSalt _salt PutFeedback' {..} =+    _salt `Prelude.hashWithSalt` insightFeedback++instance Prelude.NFData PutFeedback where+  rnf PutFeedback' {..} = Prelude.rnf insightFeedback++instance Data.ToHeaders PutFeedback where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutFeedback where+  toJSON PutFeedback' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("InsightFeedback" Data..=)+              Prelude.<$> insightFeedback+          ]+      )++instance Data.ToPath PutFeedback where+  toPath = Prelude.const "/feedback"++instance Data.ToQuery PutFeedback where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutFeedbackResponse' smart constructor.+data PutFeedbackResponse = PutFeedbackResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutFeedbackResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'putFeedbackResponse_httpStatus' - The response's http status code.+newPutFeedbackResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutFeedbackResponse+newPutFeedbackResponse pHttpStatus_ =+  PutFeedbackResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+putFeedbackResponse_httpStatus :: Lens.Lens' PutFeedbackResponse Prelude.Int+putFeedbackResponse_httpStatus = Lens.lens (\PutFeedbackResponse' {httpStatus} -> httpStatus) (\s@PutFeedbackResponse' {} a -> s {httpStatus = a} :: PutFeedbackResponse)++instance Prelude.NFData PutFeedbackResponse where+  rnf PutFeedbackResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/RemoveNotificationChannel.hs view
@@ -0,0 +1,151 @@+{-# 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.DevOpsGuru.RemoveNotificationChannel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Removes a notification channel from DevOps Guru. A notification channel+-- is used to notify you when DevOps Guru generates an insight that+-- contains information about how to improve your operations.+module Amazonka.DevOpsGuru.RemoveNotificationChannel+  ( -- * Creating a Request+    RemoveNotificationChannel (..),+    newRemoveNotificationChannel,++    -- * Request Lenses+    removeNotificationChannel_id,++    -- * Destructuring the Response+    RemoveNotificationChannelResponse (..),+    newRemoveNotificationChannelResponse,++    -- * Response Lenses+    removeNotificationChannelResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newRemoveNotificationChannel' smart constructor.+data RemoveNotificationChannel = RemoveNotificationChannel'+  { -- | The ID of the notification channel to be removed.+    id :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RemoveNotificationChannel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'removeNotificationChannel_id' - The ID of the notification channel to be removed.+newRemoveNotificationChannel ::+  -- | 'id'+  Prelude.Text ->+  RemoveNotificationChannel+newRemoveNotificationChannel pId_ =+  RemoveNotificationChannel' {id = pId_}++-- | The ID of the notification channel to be removed.+removeNotificationChannel_id :: Lens.Lens' RemoveNotificationChannel Prelude.Text+removeNotificationChannel_id = Lens.lens (\RemoveNotificationChannel' {id} -> id) (\s@RemoveNotificationChannel' {} a -> s {id = a} :: RemoveNotificationChannel)++instance Core.AWSRequest RemoveNotificationChannel where+  type+    AWSResponse RemoveNotificationChannel =+      RemoveNotificationChannelResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          RemoveNotificationChannelResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable RemoveNotificationChannel where+  hashWithSalt _salt RemoveNotificationChannel' {..} =+    _salt `Prelude.hashWithSalt` id++instance Prelude.NFData RemoveNotificationChannel where+  rnf RemoveNotificationChannel' {..} = Prelude.rnf id++instance Data.ToHeaders RemoveNotificationChannel where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath RemoveNotificationChannel where+  toPath RemoveNotificationChannel' {..} =+    Prelude.mconcat ["/channels/", Data.toBS id]++instance Data.ToQuery RemoveNotificationChannel where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newRemoveNotificationChannelResponse' smart constructor.+data RemoveNotificationChannelResponse = RemoveNotificationChannelResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RemoveNotificationChannelResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'removeNotificationChannelResponse_httpStatus' - The response's http status code.+newRemoveNotificationChannelResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  RemoveNotificationChannelResponse+newRemoveNotificationChannelResponse pHttpStatus_ =+  RemoveNotificationChannelResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+removeNotificationChannelResponse_httpStatus :: Lens.Lens' RemoveNotificationChannelResponse Prelude.Int+removeNotificationChannelResponse_httpStatus = Lens.lens (\RemoveNotificationChannelResponse' {httpStatus} -> httpStatus) (\s@RemoveNotificationChannelResponse' {} a -> s {httpStatus = a} :: RemoveNotificationChannelResponse)++instance+  Prelude.NFData+    RemoveNotificationChannelResponse+  where+  rnf RemoveNotificationChannelResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/SearchInsights.hs view
@@ -0,0 +1,309 @@+{-# 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.DevOpsGuru.SearchInsights+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of insights in your Amazon Web Services account. You can+-- specify which insights are returned by their start time, one or more+-- statuses (@ONGOING@ or @CLOSED@), one or more severities (@LOW@,+-- @MEDIUM@, and @HIGH@), and type (@REACTIVE@ or @PROACTIVE@).+--+-- Use the @Filters@ parameter to specify status and severity search+-- parameters. Use the @Type@ parameter to specify @REACTIVE@ or+-- @PROACTIVE@ in your search.+--+-- This operation returns paginated results.+module Amazonka.DevOpsGuru.SearchInsights+  ( -- * Creating a Request+    SearchInsights (..),+    newSearchInsights,++    -- * Request Lenses+    searchInsights_filters,+    searchInsights_maxResults,+    searchInsights_nextToken,+    searchInsights_startTimeRange,+    searchInsights_type,++    -- * Destructuring the Response+    SearchInsightsResponse (..),+    newSearchInsightsResponse,++    -- * Response Lenses+    searchInsightsResponse_nextToken,+    searchInsightsResponse_proactiveInsights,+    searchInsightsResponse_reactiveInsights,+    searchInsightsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newSearchInsights' smart constructor.+data SearchInsights = SearchInsights'+  { -- | A @SearchInsightsFilters@ object that is used to set the severity and+    -- status filters on your insight search.+    filters :: Prelude.Maybe SearchInsightsFilters,+    -- | 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 pagination token to use to retrieve the next page of results for+    -- this operation. If this value is null, it retrieves the first page.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The start of the time range passed in. Returned insights occurred after+    -- this time.+    startTimeRange :: StartTimeRange,+    -- | The type of insights you are searching for (@REACTIVE@ or @PROACTIVE@).+    type' :: InsightType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchInsights' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchInsights_filters' - A @SearchInsightsFilters@ object that is used to set the severity and+-- status filters on your insight search.+--+-- 'maxResults', 'searchInsights_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', 'searchInsights_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+--+-- 'startTimeRange', 'searchInsights_startTimeRange' - The start of the time range passed in. Returned insights occurred after+-- this time.+--+-- 'type'', 'searchInsights_type' - The type of insights you are searching for (@REACTIVE@ or @PROACTIVE@).+newSearchInsights ::+  -- | 'startTimeRange'+  StartTimeRange ->+  -- | 'type''+  InsightType ->+  SearchInsights+newSearchInsights pStartTimeRange_ pType_ =+  SearchInsights'+    { filters = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      startTimeRange = pStartTimeRange_,+      type' = pType_+    }++-- | A @SearchInsightsFilters@ object that is used to set the severity and+-- status filters on your insight search.+searchInsights_filters :: Lens.Lens' SearchInsights (Prelude.Maybe SearchInsightsFilters)+searchInsights_filters = Lens.lens (\SearchInsights' {filters} -> filters) (\s@SearchInsights' {} a -> s {filters = a} :: SearchInsights)++-- | The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+searchInsights_maxResults :: Lens.Lens' SearchInsights (Prelude.Maybe Prelude.Natural)+searchInsights_maxResults = Lens.lens (\SearchInsights' {maxResults} -> maxResults) (\s@SearchInsights' {} a -> s {maxResults = a} :: SearchInsights)++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+searchInsights_nextToken :: Lens.Lens' SearchInsights (Prelude.Maybe Prelude.Text)+searchInsights_nextToken = Lens.lens (\SearchInsights' {nextToken} -> nextToken) (\s@SearchInsights' {} a -> s {nextToken = a} :: SearchInsights)++-- | The start of the time range passed in. Returned insights occurred after+-- this time.+searchInsights_startTimeRange :: Lens.Lens' SearchInsights StartTimeRange+searchInsights_startTimeRange = Lens.lens (\SearchInsights' {startTimeRange} -> startTimeRange) (\s@SearchInsights' {} a -> s {startTimeRange = a} :: SearchInsights)++-- | The type of insights you are searching for (@REACTIVE@ or @PROACTIVE@).+searchInsights_type :: Lens.Lens' SearchInsights InsightType+searchInsights_type = Lens.lens (\SearchInsights' {type'} -> type') (\s@SearchInsights' {} a -> s {type' = a} :: SearchInsights)++instance Core.AWSPager SearchInsights where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? searchInsightsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? searchInsightsResponse_proactiveInsights+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? searchInsightsResponse_reactiveInsights+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& searchInsights_nextToken+          Lens..~ rs+          Lens.^? searchInsightsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest SearchInsights where+  type+    AWSResponse SearchInsights =+      SearchInsightsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          SearchInsightsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "ProactiveInsights"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..?> "ReactiveInsights"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable SearchInsights where+  hashWithSalt _salt SearchInsights' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` startTimeRange+      `Prelude.hashWithSalt` type'++instance Prelude.NFData SearchInsights where+  rnf SearchInsights' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf startTimeRange+      `Prelude.seq` Prelude.rnf type'++instance Data.ToHeaders SearchInsights where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON SearchInsights where+  toJSON SearchInsights' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Filters" Data..=) Prelude.<$> filters,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just+              ("StartTimeRange" Data..= startTimeRange),+            Prelude.Just ("Type" Data..= type')+          ]+      )++instance Data.ToPath SearchInsights where+  toPath = Prelude.const "/insights/search"++instance Data.ToQuery SearchInsights where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newSearchInsightsResponse' smart constructor.+data SearchInsightsResponse = SearchInsightsResponse'+  { -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If there are no more pages, this value is null.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The returned proactive insights.+    proactiveInsights :: Prelude.Maybe [ProactiveInsightSummary],+    -- | The returned reactive insights.+    reactiveInsights :: Prelude.Maybe [ReactiveInsightSummary],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchInsightsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchInsightsResponse_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+--+-- 'proactiveInsights', 'searchInsightsResponse_proactiveInsights' - The returned proactive insights.+--+-- 'reactiveInsights', 'searchInsightsResponse_reactiveInsights' - The returned reactive insights.+--+-- 'httpStatus', 'searchInsightsResponse_httpStatus' - The response's http status code.+newSearchInsightsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  SearchInsightsResponse+newSearchInsightsResponse pHttpStatus_ =+  SearchInsightsResponse'+    { nextToken =+        Prelude.Nothing,+      proactiveInsights = Prelude.Nothing,+      reactiveInsights = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+searchInsightsResponse_nextToken :: Lens.Lens' SearchInsightsResponse (Prelude.Maybe Prelude.Text)+searchInsightsResponse_nextToken = Lens.lens (\SearchInsightsResponse' {nextToken} -> nextToken) (\s@SearchInsightsResponse' {} a -> s {nextToken = a} :: SearchInsightsResponse)++-- | The returned proactive insights.+searchInsightsResponse_proactiveInsights :: Lens.Lens' SearchInsightsResponse (Prelude.Maybe [ProactiveInsightSummary])+searchInsightsResponse_proactiveInsights = Lens.lens (\SearchInsightsResponse' {proactiveInsights} -> proactiveInsights) (\s@SearchInsightsResponse' {} a -> s {proactiveInsights = a} :: SearchInsightsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The returned reactive insights.+searchInsightsResponse_reactiveInsights :: Lens.Lens' SearchInsightsResponse (Prelude.Maybe [ReactiveInsightSummary])+searchInsightsResponse_reactiveInsights = Lens.lens (\SearchInsightsResponse' {reactiveInsights} -> reactiveInsights) (\s@SearchInsightsResponse' {} a -> s {reactiveInsights = a} :: SearchInsightsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+searchInsightsResponse_httpStatus :: Lens.Lens' SearchInsightsResponse Prelude.Int+searchInsightsResponse_httpStatus = Lens.lens (\SearchInsightsResponse' {httpStatus} -> httpStatus) (\s@SearchInsightsResponse' {} a -> s {httpStatus = a} :: SearchInsightsResponse)++instance Prelude.NFData SearchInsightsResponse where+  rnf SearchInsightsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf proactiveInsights+      `Prelude.seq` Prelude.rnf reactiveInsights+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/SearchOrganizationInsights.hs view
@@ -0,0 +1,334 @@+{-# 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.DevOpsGuru.SearchOrganizationInsights+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of insights in your organization. You can specify which+-- insights are returned by their start time, one or more statuses+-- (@ONGOING@, @CLOSED@, and @CLOSED@), one or more severities (@LOW@,+-- @MEDIUM@, and @HIGH@), and type (@REACTIVE@ or @PROACTIVE@).+--+-- Use the @Filters@ parameter to specify status and severity search+-- parameters. Use the @Type@ parameter to specify @REACTIVE@ or+-- @PROACTIVE@ in your search.+--+-- This operation returns paginated results.+module Amazonka.DevOpsGuru.SearchOrganizationInsights+  ( -- * Creating a Request+    SearchOrganizationInsights (..),+    newSearchOrganizationInsights,++    -- * Request Lenses+    searchOrganizationInsights_filters,+    searchOrganizationInsights_maxResults,+    searchOrganizationInsights_nextToken,+    searchOrganizationInsights_accountIds,+    searchOrganizationInsights_startTimeRange,+    searchOrganizationInsights_type,++    -- * Destructuring the Response+    SearchOrganizationInsightsResponse (..),+    newSearchOrganizationInsightsResponse,++    -- * Response Lenses+    searchOrganizationInsightsResponse_nextToken,+    searchOrganizationInsightsResponse_proactiveInsights,+    searchOrganizationInsightsResponse_reactiveInsights,+    searchOrganizationInsightsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newSearchOrganizationInsights' smart constructor.+data SearchOrganizationInsights = SearchOrganizationInsights'+  { -- | A @SearchOrganizationInsightsFilters@ object that is used to set the+    -- severity and status filters on your insight search.+    filters :: Prelude.Maybe SearchOrganizationInsightsFilters,+    -- | 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 pagination token to use to retrieve the next page of results for+    -- this operation. If this value is null, it retrieves the first page.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the Amazon Web Services account.+    accountIds :: Prelude.NonEmpty Prelude.Text,+    startTimeRange :: StartTimeRange,+    -- | The type of insights you are searching for (@REACTIVE@ or @PROACTIVE@).+    type' :: InsightType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchOrganizationInsights' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchOrganizationInsights_filters' - A @SearchOrganizationInsightsFilters@ object that is used to set the+-- severity and status filters on your insight search.+--+-- 'maxResults', 'searchOrganizationInsights_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', 'searchOrganizationInsights_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+--+-- 'accountIds', 'searchOrganizationInsights_accountIds' - The ID of the Amazon Web Services account.+--+-- 'startTimeRange', 'searchOrganizationInsights_startTimeRange' - Undocumented member.+--+-- 'type'', 'searchOrganizationInsights_type' - The type of insights you are searching for (@REACTIVE@ or @PROACTIVE@).+newSearchOrganizationInsights ::+  -- | 'accountIds'+  Prelude.NonEmpty Prelude.Text ->+  -- | 'startTimeRange'+  StartTimeRange ->+  -- | 'type''+  InsightType ->+  SearchOrganizationInsights+newSearchOrganizationInsights+  pAccountIds_+  pStartTimeRange_+  pType_ =+    SearchOrganizationInsights'+      { filters =+          Prelude.Nothing,+        maxResults = Prelude.Nothing,+        nextToken = Prelude.Nothing,+        accountIds = Lens.coerced Lens.# pAccountIds_,+        startTimeRange = pStartTimeRange_,+        type' = pType_+      }++-- | A @SearchOrganizationInsightsFilters@ object that is used to set the+-- severity and status filters on your insight search.+searchOrganizationInsights_filters :: Lens.Lens' SearchOrganizationInsights (Prelude.Maybe SearchOrganizationInsightsFilters)+searchOrganizationInsights_filters = Lens.lens (\SearchOrganizationInsights' {filters} -> filters) (\s@SearchOrganizationInsights' {} a -> s {filters = a} :: SearchOrganizationInsights)++-- | The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+searchOrganizationInsights_maxResults :: Lens.Lens' SearchOrganizationInsights (Prelude.Maybe Prelude.Natural)+searchOrganizationInsights_maxResults = Lens.lens (\SearchOrganizationInsights' {maxResults} -> maxResults) (\s@SearchOrganizationInsights' {} a -> s {maxResults = a} :: SearchOrganizationInsights)++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If this value is null, it retrieves the first page.+searchOrganizationInsights_nextToken :: Lens.Lens' SearchOrganizationInsights (Prelude.Maybe Prelude.Text)+searchOrganizationInsights_nextToken = Lens.lens (\SearchOrganizationInsights' {nextToken} -> nextToken) (\s@SearchOrganizationInsights' {} a -> s {nextToken = a} :: SearchOrganizationInsights)++-- | The ID of the Amazon Web Services account.+searchOrganizationInsights_accountIds :: Lens.Lens' SearchOrganizationInsights (Prelude.NonEmpty Prelude.Text)+searchOrganizationInsights_accountIds = Lens.lens (\SearchOrganizationInsights' {accountIds} -> accountIds) (\s@SearchOrganizationInsights' {} a -> s {accountIds = a} :: SearchOrganizationInsights) Prelude.. Lens.coerced++-- | Undocumented member.+searchOrganizationInsights_startTimeRange :: Lens.Lens' SearchOrganizationInsights StartTimeRange+searchOrganizationInsights_startTimeRange = Lens.lens (\SearchOrganizationInsights' {startTimeRange} -> startTimeRange) (\s@SearchOrganizationInsights' {} a -> s {startTimeRange = a} :: SearchOrganizationInsights)++-- | The type of insights you are searching for (@REACTIVE@ or @PROACTIVE@).+searchOrganizationInsights_type :: Lens.Lens' SearchOrganizationInsights InsightType+searchOrganizationInsights_type = Lens.lens (\SearchOrganizationInsights' {type'} -> type') (\s@SearchOrganizationInsights' {} a -> s {type' = a} :: SearchOrganizationInsights)++instance Core.AWSPager SearchOrganizationInsights where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? searchOrganizationInsightsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? searchOrganizationInsightsResponse_proactiveInsights+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? searchOrganizationInsightsResponse_reactiveInsights+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& searchOrganizationInsights_nextToken+          Lens..~ rs+          Lens.^? searchOrganizationInsightsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest SearchOrganizationInsights where+  type+    AWSResponse SearchOrganizationInsights =+      SearchOrganizationInsightsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          SearchOrganizationInsightsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "ProactiveInsights"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..?> "ReactiveInsights"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable SearchOrganizationInsights where+  hashWithSalt _salt SearchOrganizationInsights' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` accountIds+      `Prelude.hashWithSalt` startTimeRange+      `Prelude.hashWithSalt` type'++instance Prelude.NFData SearchOrganizationInsights where+  rnf SearchOrganizationInsights' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf accountIds+      `Prelude.seq` Prelude.rnf startTimeRange+      `Prelude.seq` Prelude.rnf type'++instance Data.ToHeaders SearchOrganizationInsights where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON SearchOrganizationInsights where+  toJSON SearchOrganizationInsights' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Filters" Data..=) Prelude.<$> filters,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("AccountIds" Data..= accountIds),+            Prelude.Just+              ("StartTimeRange" Data..= startTimeRange),+            Prelude.Just ("Type" Data..= type')+          ]+      )++instance Data.ToPath SearchOrganizationInsights where+  toPath =+    Prelude.const "/organization/insights/search"++instance Data.ToQuery SearchOrganizationInsights where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newSearchOrganizationInsightsResponse' smart constructor.+data SearchOrganizationInsightsResponse = SearchOrganizationInsightsResponse'+  { -- | The pagination token to use to retrieve the next page of results for+    -- this operation. If there are no more pages, this value is null.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | An integer that specifies the number of open proactive insights in your+    -- Amazon Web Services account.+    proactiveInsights :: Prelude.Maybe [ProactiveInsightSummary],+    -- | An integer that specifies the number of open reactive insights in your+    -- Amazon Web Services account.+    reactiveInsights :: Prelude.Maybe [ReactiveInsightSummary],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchOrganizationInsightsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchOrganizationInsightsResponse_nextToken' - The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+--+-- 'proactiveInsights', 'searchOrganizationInsightsResponse_proactiveInsights' - An integer that specifies the number of open proactive insights in your+-- Amazon Web Services account.+--+-- 'reactiveInsights', 'searchOrganizationInsightsResponse_reactiveInsights' - An integer that specifies the number of open reactive insights in your+-- Amazon Web Services account.+--+-- 'httpStatus', 'searchOrganizationInsightsResponse_httpStatus' - The response's http status code.+newSearchOrganizationInsightsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  SearchOrganizationInsightsResponse+newSearchOrganizationInsightsResponse pHttpStatus_ =+  SearchOrganizationInsightsResponse'+    { nextToken =+        Prelude.Nothing,+      proactiveInsights = Prelude.Nothing,+      reactiveInsights = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The pagination token to use to retrieve the next page of results for+-- this operation. If there are no more pages, this value is null.+searchOrganizationInsightsResponse_nextToken :: Lens.Lens' SearchOrganizationInsightsResponse (Prelude.Maybe Prelude.Text)+searchOrganizationInsightsResponse_nextToken = Lens.lens (\SearchOrganizationInsightsResponse' {nextToken} -> nextToken) (\s@SearchOrganizationInsightsResponse' {} a -> s {nextToken = a} :: SearchOrganizationInsightsResponse)++-- | An integer that specifies the number of open proactive insights in your+-- Amazon Web Services account.+searchOrganizationInsightsResponse_proactiveInsights :: Lens.Lens' SearchOrganizationInsightsResponse (Prelude.Maybe [ProactiveInsightSummary])+searchOrganizationInsightsResponse_proactiveInsights = Lens.lens (\SearchOrganizationInsightsResponse' {proactiveInsights} -> proactiveInsights) (\s@SearchOrganizationInsightsResponse' {} a -> s {proactiveInsights = a} :: SearchOrganizationInsightsResponse) Prelude.. Lens.mapping Lens.coerced++-- | An integer that specifies the number of open reactive insights in your+-- Amazon Web Services account.+searchOrganizationInsightsResponse_reactiveInsights :: Lens.Lens' SearchOrganizationInsightsResponse (Prelude.Maybe [ReactiveInsightSummary])+searchOrganizationInsightsResponse_reactiveInsights = Lens.lens (\SearchOrganizationInsightsResponse' {reactiveInsights} -> reactiveInsights) (\s@SearchOrganizationInsightsResponse' {} a -> s {reactiveInsights = a} :: SearchOrganizationInsightsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+searchOrganizationInsightsResponse_httpStatus :: Lens.Lens' SearchOrganizationInsightsResponse Prelude.Int+searchOrganizationInsightsResponse_httpStatus = Lens.lens (\SearchOrganizationInsightsResponse' {httpStatus} -> httpStatus) (\s@SearchOrganizationInsightsResponse' {} a -> s {httpStatus = a} :: SearchOrganizationInsightsResponse)++instance+  Prelude.NFData+    SearchOrganizationInsightsResponse+  where+  rnf SearchOrganizationInsightsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf proactiveInsights+      `Prelude.seq` Prelude.rnf reactiveInsights+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/StartCostEstimation.hs view
@@ -0,0 +1,175 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.StartCostEstimation+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Starts the creation of an estimate of the monthly cost to analyze your+-- Amazon Web Services resources.+module Amazonka.DevOpsGuru.StartCostEstimation+  ( -- * Creating a Request+    StartCostEstimation (..),+    newStartCostEstimation,++    -- * Request Lenses+    startCostEstimation_clientToken,+    startCostEstimation_resourceCollection,++    -- * Destructuring the Response+    StartCostEstimationResponse (..),+    newStartCostEstimationResponse,++    -- * Response Lenses+    startCostEstimationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newStartCostEstimation' smart constructor.+data StartCostEstimation = StartCostEstimation'+  { -- | The idempotency token used to identify each cost estimate request.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The collection of Amazon Web Services resources used to create a monthly+    -- DevOps Guru cost estimate.+    resourceCollection :: CostEstimationResourceCollectionFilter+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartCostEstimation' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'startCostEstimation_clientToken' - The idempotency token used to identify each cost estimate request.+--+-- 'resourceCollection', 'startCostEstimation_resourceCollection' - The collection of Amazon Web Services resources used to create a monthly+-- DevOps Guru cost estimate.+newStartCostEstimation ::+  -- | 'resourceCollection'+  CostEstimationResourceCollectionFilter ->+  StartCostEstimation+newStartCostEstimation pResourceCollection_ =+  StartCostEstimation'+    { clientToken = Prelude.Nothing,+      resourceCollection = pResourceCollection_+    }++-- | The idempotency token used to identify each cost estimate request.+startCostEstimation_clientToken :: Lens.Lens' StartCostEstimation (Prelude.Maybe Prelude.Text)+startCostEstimation_clientToken = Lens.lens (\StartCostEstimation' {clientToken} -> clientToken) (\s@StartCostEstimation' {} a -> s {clientToken = a} :: StartCostEstimation)++-- | The collection of Amazon Web Services resources used to create a monthly+-- DevOps Guru cost estimate.+startCostEstimation_resourceCollection :: Lens.Lens' StartCostEstimation CostEstimationResourceCollectionFilter+startCostEstimation_resourceCollection = Lens.lens (\StartCostEstimation' {resourceCollection} -> resourceCollection) (\s@StartCostEstimation' {} a -> s {resourceCollection = a} :: StartCostEstimation)++instance Core.AWSRequest StartCostEstimation where+  type+    AWSResponse StartCostEstimation =+      StartCostEstimationResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          StartCostEstimationResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StartCostEstimation where+  hashWithSalt _salt StartCostEstimation' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` resourceCollection++instance Prelude.NFData StartCostEstimation where+  rnf StartCostEstimation' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf resourceCollection++instance Data.ToHeaders StartCostEstimation where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartCostEstimation where+  toJSON StartCostEstimation' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,+            Prelude.Just+              ("ResourceCollection" Data..= resourceCollection)+          ]+      )++instance Data.ToPath StartCostEstimation where+  toPath = Prelude.const "/cost-estimation"++instance Data.ToQuery StartCostEstimation where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartCostEstimationResponse' smart constructor.+data StartCostEstimationResponse = StartCostEstimationResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartCostEstimationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'startCostEstimationResponse_httpStatus' - The response's http status code.+newStartCostEstimationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StartCostEstimationResponse+newStartCostEstimationResponse pHttpStatus_ =+  StartCostEstimationResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+startCostEstimationResponse_httpStatus :: Lens.Lens' StartCostEstimationResponse Prelude.Int+startCostEstimationResponse_httpStatus = Lens.lens (\StartCostEstimationResponse' {httpStatus} -> httpStatus) (\s@StartCostEstimationResponse' {} a -> s {httpStatus = a} :: StartCostEstimationResponse)++instance Prelude.NFData StartCostEstimationResponse where+  rnf StartCostEstimationResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/Types.hs view
@@ -0,0 +1,999 @@+{-# 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.DevOpsGuru.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.DevOpsGuru.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _AccessDeniedException,+    _ConflictException,+    _InternalServerException,+    _ResourceNotFoundException,+    _ServiceQuotaExceededException,+    _ThrottlingException,+    _ValidationException,++    -- * AnomalySeverity+    AnomalySeverity (..),++    -- * AnomalyStatus+    AnomalyStatus (..),++    -- * AnomalyType+    AnomalyType (..),++    -- * CloudWatchMetricDataStatusCode+    CloudWatchMetricDataStatusCode (..),++    -- * CloudWatchMetricsStat+    CloudWatchMetricsStat (..),++    -- * CostEstimationServiceResourceState+    CostEstimationServiceResourceState (..),++    -- * CostEstimationStatus+    CostEstimationStatus (..),++    -- * EventClass+    EventClass (..),++    -- * EventDataSource+    EventDataSource (..),++    -- * EventSourceOptInStatus+    EventSourceOptInStatus (..),++    -- * InsightFeedbackOption+    InsightFeedbackOption (..),++    -- * InsightSeverity+    InsightSeverity (..),++    -- * InsightStatus+    InsightStatus (..),++    -- * InsightType+    InsightType (..),++    -- * Locale+    Locale (..),++    -- * LogAnomalyType+    LogAnomalyType (..),++    -- * NotificationMessageType+    NotificationMessageType (..),++    -- * OptInStatus+    OptInStatus (..),++    -- * OrganizationResourceCollectionType+    OrganizationResourceCollectionType (..),++    -- * ResourceCollectionType+    ResourceCollectionType (..),++    -- * ResourcePermission+    ResourcePermission (..),++    -- * ResourceTypeFilter+    ResourceTypeFilter (..),++    -- * ServiceName+    ServiceName (..),++    -- * UpdateResourceCollectionAction+    UpdateResourceCollectionAction (..),++    -- * AccountHealth+    AccountHealth (..),+    newAccountHealth,+    accountHealth_accountId,+    accountHealth_insight,++    -- * AccountInsightHealth+    AccountInsightHealth (..),+    newAccountInsightHealth,+    accountInsightHealth_openProactiveInsights,+    accountInsightHealth_openReactiveInsights,++    -- * AmazonCodeGuruProfilerIntegration+    AmazonCodeGuruProfilerIntegration (..),+    newAmazonCodeGuruProfilerIntegration,+    amazonCodeGuruProfilerIntegration_status,++    -- * AnomalousLogGroup+    AnomalousLogGroup (..),+    newAnomalousLogGroup,+    anomalousLogGroup_impactEndTime,+    anomalousLogGroup_impactStartTime,+    anomalousLogGroup_logAnomalyShowcases,+    anomalousLogGroup_logGroupName,+    anomalousLogGroup_numberOfLogLinesScanned,++    -- * AnomalyReportedTimeRange+    AnomalyReportedTimeRange (..),+    newAnomalyReportedTimeRange,+    anomalyReportedTimeRange_closeTime,+    anomalyReportedTimeRange_openTime,++    -- * AnomalyResource+    AnomalyResource (..),+    newAnomalyResource,+    anomalyResource_name,+    anomalyResource_type,++    -- * AnomalySourceDetails+    AnomalySourceDetails (..),+    newAnomalySourceDetails,+    anomalySourceDetails_cloudWatchMetrics,+    anomalySourceDetails_performanceInsightsMetrics,++    -- * AnomalySourceMetadata+    AnomalySourceMetadata (..),+    newAnomalySourceMetadata,+    anomalySourceMetadata_source,+    anomalySourceMetadata_sourceResourceName,+    anomalySourceMetadata_sourceResourceType,++    -- * AnomalyTimeRange+    AnomalyTimeRange (..),+    newAnomalyTimeRange,+    anomalyTimeRange_endTime,+    anomalyTimeRange_startTime,++    -- * CloudFormationCollection+    CloudFormationCollection (..),+    newCloudFormationCollection,+    cloudFormationCollection_stackNames,++    -- * CloudFormationCollectionFilter+    CloudFormationCollectionFilter (..),+    newCloudFormationCollectionFilter,+    cloudFormationCollectionFilter_stackNames,++    -- * CloudFormationCostEstimationResourceCollectionFilter+    CloudFormationCostEstimationResourceCollectionFilter (..),+    newCloudFormationCostEstimationResourceCollectionFilter,+    cloudFormationCostEstimationResourceCollectionFilter_stackNames,++    -- * CloudFormationHealth+    CloudFormationHealth (..),+    newCloudFormationHealth,+    cloudFormationHealth_analyzedResourceCount,+    cloudFormationHealth_insight,+    cloudFormationHealth_stackName,++    -- * CloudWatchMetricsDataSummary+    CloudWatchMetricsDataSummary (..),+    newCloudWatchMetricsDataSummary,+    cloudWatchMetricsDataSummary_statusCode,+    cloudWatchMetricsDataSummary_timestampMetricValuePairList,++    -- * CloudWatchMetricsDetail+    CloudWatchMetricsDetail (..),+    newCloudWatchMetricsDetail,+    cloudWatchMetricsDetail_dimensions,+    cloudWatchMetricsDetail_metricDataSummary,+    cloudWatchMetricsDetail_metricName,+    cloudWatchMetricsDetail_namespace,+    cloudWatchMetricsDetail_period,+    cloudWatchMetricsDetail_stat,+    cloudWatchMetricsDetail_unit,++    -- * CloudWatchMetricsDimension+    CloudWatchMetricsDimension (..),+    newCloudWatchMetricsDimension,+    cloudWatchMetricsDimension_name,+    cloudWatchMetricsDimension_value,++    -- * CostEstimationResourceCollectionFilter+    CostEstimationResourceCollectionFilter (..),+    newCostEstimationResourceCollectionFilter,+    costEstimationResourceCollectionFilter_cloudFormation,+    costEstimationResourceCollectionFilter_tags,++    -- * CostEstimationTimeRange+    CostEstimationTimeRange (..),+    newCostEstimationTimeRange,+    costEstimationTimeRange_endTime,+    costEstimationTimeRange_startTime,++    -- * EndTimeRange+    EndTimeRange (..),+    newEndTimeRange,+    endTimeRange_fromTime,+    endTimeRange_toTime,++    -- * Event+    Event (..),+    newEvent,+    event_dataSource,+    event_eventClass,+    event_eventSource,+    event_id,+    event_name,+    event_resourceCollection,+    event_resources,+    event_time,++    -- * EventResource+    EventResource (..),+    newEventResource,+    eventResource_arn,+    eventResource_name,+    eventResource_type,++    -- * EventSourcesConfig+    EventSourcesConfig (..),+    newEventSourcesConfig,+    eventSourcesConfig_amazonCodeGuruProfiler,++    -- * EventTimeRange+    EventTimeRange (..),+    newEventTimeRange,+    eventTimeRange_fromTime,+    eventTimeRange_toTime,++    -- * InsightFeedback+    InsightFeedback (..),+    newInsightFeedback,+    insightFeedback_feedback,+    insightFeedback_id,++    -- * InsightHealth+    InsightHealth (..),+    newInsightHealth,+    insightHealth_meanTimeToRecoverInMilliseconds,+    insightHealth_openProactiveInsights,+    insightHealth_openReactiveInsights,++    -- * InsightTimeRange+    InsightTimeRange (..),+    newInsightTimeRange,+    insightTimeRange_endTime,+    insightTimeRange_startTime,++    -- * ListEventsFilters+    ListEventsFilters (..),+    newListEventsFilters,+    listEventsFilters_dataSource,+    listEventsFilters_eventClass,+    listEventsFilters_eventSource,+    listEventsFilters_eventTimeRange,+    listEventsFilters_insightId,+    listEventsFilters_resourceCollection,++    -- * ListInsightsAnyStatusFilter+    ListInsightsAnyStatusFilter (..),+    newListInsightsAnyStatusFilter,+    listInsightsAnyStatusFilter_type,+    listInsightsAnyStatusFilter_startTimeRange,++    -- * ListInsightsClosedStatusFilter+    ListInsightsClosedStatusFilter (..),+    newListInsightsClosedStatusFilter,+    listInsightsClosedStatusFilter_type,+    listInsightsClosedStatusFilter_endTimeRange,++    -- * ListInsightsOngoingStatusFilter+    ListInsightsOngoingStatusFilter (..),+    newListInsightsOngoingStatusFilter,+    listInsightsOngoingStatusFilter_type,++    -- * ListInsightsStatusFilter+    ListInsightsStatusFilter (..),+    newListInsightsStatusFilter,+    listInsightsStatusFilter_any,+    listInsightsStatusFilter_closed,+    listInsightsStatusFilter_ongoing,++    -- * ListMonitoredResourcesFilters+    ListMonitoredResourcesFilters (..),+    newListMonitoredResourcesFilters,+    listMonitoredResourcesFilters_resourcePermission,+    listMonitoredResourcesFilters_resourceTypeFilters,++    -- * LogAnomalyClass+    LogAnomalyClass (..),+    newLogAnomalyClass,+    logAnomalyClass_explanation,+    logAnomalyClass_logAnomalyToken,+    logAnomalyClass_logAnomalyType,+    logAnomalyClass_logEventId,+    logAnomalyClass_logEventTimestamp,+    logAnomalyClass_logStreamName,+    logAnomalyClass_numberOfLogLinesOccurrences,++    -- * LogAnomalyShowcase+    LogAnomalyShowcase (..),+    newLogAnomalyShowcase,+    logAnomalyShowcase_logAnomalyClasses,++    -- * LogsAnomalyDetectionIntegration+    LogsAnomalyDetectionIntegration (..),+    newLogsAnomalyDetectionIntegration,+    logsAnomalyDetectionIntegration_optInStatus,++    -- * LogsAnomalyDetectionIntegrationConfig+    LogsAnomalyDetectionIntegrationConfig (..),+    newLogsAnomalyDetectionIntegrationConfig,+    logsAnomalyDetectionIntegrationConfig_optInStatus,++    -- * MonitoredResourceIdentifier+    MonitoredResourceIdentifier (..),+    newMonitoredResourceIdentifier,+    monitoredResourceIdentifier_lastUpdated,+    monitoredResourceIdentifier_monitoredResourceName,+    monitoredResourceIdentifier_resourceCollection,+    monitoredResourceIdentifier_resourcePermission,+    monitoredResourceIdentifier_type,++    -- * NotificationChannel+    NotificationChannel (..),+    newNotificationChannel,+    notificationChannel_config,+    notificationChannel_id,++    -- * NotificationChannelConfig+    NotificationChannelConfig (..),+    newNotificationChannelConfig,+    notificationChannelConfig_filters,+    notificationChannelConfig_sns,++    -- * NotificationFilterConfig+    NotificationFilterConfig (..),+    newNotificationFilterConfig,+    notificationFilterConfig_messageTypes,+    notificationFilterConfig_severities,++    -- * OpsCenterIntegration+    OpsCenterIntegration (..),+    newOpsCenterIntegration,+    opsCenterIntegration_optInStatus,++    -- * OpsCenterIntegrationConfig+    OpsCenterIntegrationConfig (..),+    newOpsCenterIntegrationConfig,+    opsCenterIntegrationConfig_optInStatus,++    -- * PerformanceInsightsMetricDimensionGroup+    PerformanceInsightsMetricDimensionGroup (..),+    newPerformanceInsightsMetricDimensionGroup,+    performanceInsightsMetricDimensionGroup_dimensions,+    performanceInsightsMetricDimensionGroup_group,+    performanceInsightsMetricDimensionGroup_limit,++    -- * PerformanceInsightsMetricQuery+    PerformanceInsightsMetricQuery (..),+    newPerformanceInsightsMetricQuery,+    performanceInsightsMetricQuery_filter,+    performanceInsightsMetricQuery_groupBy,+    performanceInsightsMetricQuery_metric,++    -- * PerformanceInsightsMetricsDetail+    PerformanceInsightsMetricsDetail (..),+    newPerformanceInsightsMetricsDetail,+    performanceInsightsMetricsDetail_metricDisplayName,+    performanceInsightsMetricsDetail_metricQuery,+    performanceInsightsMetricsDetail_referenceData,+    performanceInsightsMetricsDetail_statsAtAnomaly,+    performanceInsightsMetricsDetail_statsAtBaseline,+    performanceInsightsMetricsDetail_unit,++    -- * PerformanceInsightsReferenceComparisonValues+    PerformanceInsightsReferenceComparisonValues (..),+    newPerformanceInsightsReferenceComparisonValues,+    performanceInsightsReferenceComparisonValues_referenceMetric,+    performanceInsightsReferenceComparisonValues_referenceScalar,++    -- * PerformanceInsightsReferenceData+    PerformanceInsightsReferenceData (..),+    newPerformanceInsightsReferenceData,+    performanceInsightsReferenceData_comparisonValues,+    performanceInsightsReferenceData_name,++    -- * PerformanceInsightsReferenceMetric+    PerformanceInsightsReferenceMetric (..),+    newPerformanceInsightsReferenceMetric,+    performanceInsightsReferenceMetric_metricQuery,++    -- * PerformanceInsightsReferenceScalar+    PerformanceInsightsReferenceScalar (..),+    newPerformanceInsightsReferenceScalar,+    performanceInsightsReferenceScalar_value,++    -- * PerformanceInsightsStat+    PerformanceInsightsStat (..),+    newPerformanceInsightsStat,+    performanceInsightsStat_type,+    performanceInsightsStat_value,++    -- * PredictionTimeRange+    PredictionTimeRange (..),+    newPredictionTimeRange,+    predictionTimeRange_endTime,+    predictionTimeRange_startTime,++    -- * ProactiveAnomaly+    ProactiveAnomaly (..),+    newProactiveAnomaly,+    proactiveAnomaly_anomalyReportedTimeRange,+    proactiveAnomaly_anomalyResources,+    proactiveAnomaly_anomalyTimeRange,+    proactiveAnomaly_associatedInsightId,+    proactiveAnomaly_id,+    proactiveAnomaly_limit,+    proactiveAnomaly_predictionTimeRange,+    proactiveAnomaly_resourceCollection,+    proactiveAnomaly_severity,+    proactiveAnomaly_sourceDetails,+    proactiveAnomaly_sourceMetadata,+    proactiveAnomaly_status,+    proactiveAnomaly_updateTime,++    -- * ProactiveAnomalySummary+    ProactiveAnomalySummary (..),+    newProactiveAnomalySummary,+    proactiveAnomalySummary_anomalyReportedTimeRange,+    proactiveAnomalySummary_anomalyResources,+    proactiveAnomalySummary_anomalyTimeRange,+    proactiveAnomalySummary_associatedInsightId,+    proactiveAnomalySummary_id,+    proactiveAnomalySummary_limit,+    proactiveAnomalySummary_predictionTimeRange,+    proactiveAnomalySummary_resourceCollection,+    proactiveAnomalySummary_severity,+    proactiveAnomalySummary_sourceDetails,+    proactiveAnomalySummary_sourceMetadata,+    proactiveAnomalySummary_status,+    proactiveAnomalySummary_updateTime,++    -- * ProactiveInsight+    ProactiveInsight (..),+    newProactiveInsight,+    proactiveInsight_description,+    proactiveInsight_id,+    proactiveInsight_insightTimeRange,+    proactiveInsight_name,+    proactiveInsight_predictionTimeRange,+    proactiveInsight_resourceCollection,+    proactiveInsight_severity,+    proactiveInsight_ssmOpsItemId,+    proactiveInsight_status,++    -- * ProactiveInsightSummary+    ProactiveInsightSummary (..),+    newProactiveInsightSummary,+    proactiveInsightSummary_associatedResourceArns,+    proactiveInsightSummary_id,+    proactiveInsightSummary_insightTimeRange,+    proactiveInsightSummary_name,+    proactiveInsightSummary_predictionTimeRange,+    proactiveInsightSummary_resourceCollection,+    proactiveInsightSummary_serviceCollection,+    proactiveInsightSummary_severity,+    proactiveInsightSummary_status,++    -- * ProactiveOrganizationInsightSummary+    ProactiveOrganizationInsightSummary (..),+    newProactiveOrganizationInsightSummary,+    proactiveOrganizationInsightSummary_accountId,+    proactiveOrganizationInsightSummary_id,+    proactiveOrganizationInsightSummary_insightTimeRange,+    proactiveOrganizationInsightSummary_name,+    proactiveOrganizationInsightSummary_organizationalUnitId,+    proactiveOrganizationInsightSummary_predictionTimeRange,+    proactiveOrganizationInsightSummary_resourceCollection,+    proactiveOrganizationInsightSummary_serviceCollection,+    proactiveOrganizationInsightSummary_severity,+    proactiveOrganizationInsightSummary_status,++    -- * ReactiveAnomaly+    ReactiveAnomaly (..),+    newReactiveAnomaly,+    reactiveAnomaly_anomalyReportedTimeRange,+    reactiveAnomaly_anomalyResources,+    reactiveAnomaly_anomalyTimeRange,+    reactiveAnomaly_associatedInsightId,+    reactiveAnomaly_causalAnomalyId,+    reactiveAnomaly_description,+    reactiveAnomaly_id,+    reactiveAnomaly_name,+    reactiveAnomaly_resourceCollection,+    reactiveAnomaly_severity,+    reactiveAnomaly_sourceDetails,+    reactiveAnomaly_status,+    reactiveAnomaly_type,++    -- * ReactiveAnomalySummary+    ReactiveAnomalySummary (..),+    newReactiveAnomalySummary,+    reactiveAnomalySummary_anomalyReportedTimeRange,+    reactiveAnomalySummary_anomalyResources,+    reactiveAnomalySummary_anomalyTimeRange,+    reactiveAnomalySummary_associatedInsightId,+    reactiveAnomalySummary_causalAnomalyId,+    reactiveAnomalySummary_description,+    reactiveAnomalySummary_id,+    reactiveAnomalySummary_name,+    reactiveAnomalySummary_resourceCollection,+    reactiveAnomalySummary_severity,+    reactiveAnomalySummary_sourceDetails,+    reactiveAnomalySummary_status,+    reactiveAnomalySummary_type,++    -- * ReactiveInsight+    ReactiveInsight (..),+    newReactiveInsight,+    reactiveInsight_description,+    reactiveInsight_id,+    reactiveInsight_insightTimeRange,+    reactiveInsight_name,+    reactiveInsight_resourceCollection,+    reactiveInsight_severity,+    reactiveInsight_ssmOpsItemId,+    reactiveInsight_status,++    -- * ReactiveInsightSummary+    ReactiveInsightSummary (..),+    newReactiveInsightSummary,+    reactiveInsightSummary_associatedResourceArns,+    reactiveInsightSummary_id,+    reactiveInsightSummary_insightTimeRange,+    reactiveInsightSummary_name,+    reactiveInsightSummary_resourceCollection,+    reactiveInsightSummary_serviceCollection,+    reactiveInsightSummary_severity,+    reactiveInsightSummary_status,++    -- * ReactiveOrganizationInsightSummary+    ReactiveOrganizationInsightSummary (..),+    newReactiveOrganizationInsightSummary,+    reactiveOrganizationInsightSummary_accountId,+    reactiveOrganizationInsightSummary_id,+    reactiveOrganizationInsightSummary_insightTimeRange,+    reactiveOrganizationInsightSummary_name,+    reactiveOrganizationInsightSummary_organizationalUnitId,+    reactiveOrganizationInsightSummary_resourceCollection,+    reactiveOrganizationInsightSummary_serviceCollection,+    reactiveOrganizationInsightSummary_severity,+    reactiveOrganizationInsightSummary_status,++    -- * Recommendation+    Recommendation (..),+    newRecommendation,+    recommendation_category,+    recommendation_description,+    recommendation_link,+    recommendation_name,+    recommendation_reason,+    recommendation_relatedAnomalies,+    recommendation_relatedEvents,++    -- * RecommendationRelatedAnomaly+    RecommendationRelatedAnomaly (..),+    newRecommendationRelatedAnomaly,+    recommendationRelatedAnomaly_anomalyId,+    recommendationRelatedAnomaly_resources,+    recommendationRelatedAnomaly_sourceDetails,++    -- * RecommendationRelatedAnomalyResource+    RecommendationRelatedAnomalyResource (..),+    newRecommendationRelatedAnomalyResource,+    recommendationRelatedAnomalyResource_name,+    recommendationRelatedAnomalyResource_type,++    -- * RecommendationRelatedAnomalySourceDetail+    RecommendationRelatedAnomalySourceDetail (..),+    newRecommendationRelatedAnomalySourceDetail,+    recommendationRelatedAnomalySourceDetail_cloudWatchMetrics,++    -- * RecommendationRelatedCloudWatchMetricsSourceDetail+    RecommendationRelatedCloudWatchMetricsSourceDetail (..),+    newRecommendationRelatedCloudWatchMetricsSourceDetail,+    recommendationRelatedCloudWatchMetricsSourceDetail_metricName,+    recommendationRelatedCloudWatchMetricsSourceDetail_namespace,++    -- * RecommendationRelatedEvent+    RecommendationRelatedEvent (..),+    newRecommendationRelatedEvent,+    recommendationRelatedEvent_name,+    recommendationRelatedEvent_resources,++    -- * RecommendationRelatedEventResource+    RecommendationRelatedEventResource (..),+    newRecommendationRelatedEventResource,+    recommendationRelatedEventResource_name,+    recommendationRelatedEventResource_type,++    -- * ResourceCollection+    ResourceCollection (..),+    newResourceCollection,+    resourceCollection_cloudFormation,+    resourceCollection_tags,++    -- * ResourceCollectionFilter+    ResourceCollectionFilter (..),+    newResourceCollectionFilter,+    resourceCollectionFilter_cloudFormation,+    resourceCollectionFilter_tags,++    -- * SearchInsightsFilters+    SearchInsightsFilters (..),+    newSearchInsightsFilters,+    searchInsightsFilters_resourceCollection,+    searchInsightsFilters_serviceCollection,+    searchInsightsFilters_severities,+    searchInsightsFilters_statuses,++    -- * SearchOrganizationInsightsFilters+    SearchOrganizationInsightsFilters (..),+    newSearchOrganizationInsightsFilters,+    searchOrganizationInsightsFilters_resourceCollection,+    searchOrganizationInsightsFilters_serviceCollection,+    searchOrganizationInsightsFilters_severities,+    searchOrganizationInsightsFilters_statuses,++    -- * ServiceCollection+    ServiceCollection (..),+    newServiceCollection,+    serviceCollection_serviceNames,++    -- * ServiceHealth+    ServiceHealth (..),+    newServiceHealth,+    serviceHealth_analyzedResourceCount,+    serviceHealth_insight,+    serviceHealth_serviceName,++    -- * ServiceInsightHealth+    ServiceInsightHealth (..),+    newServiceInsightHealth,+    serviceInsightHealth_openProactiveInsights,+    serviceInsightHealth_openReactiveInsights,++    -- * ServiceIntegrationConfig+    ServiceIntegrationConfig (..),+    newServiceIntegrationConfig,+    serviceIntegrationConfig_logsAnomalyDetection,+    serviceIntegrationConfig_opsCenter,++    -- * ServiceResourceCost+    ServiceResourceCost (..),+    newServiceResourceCost,+    serviceResourceCost_cost,+    serviceResourceCost_count,+    serviceResourceCost_state,+    serviceResourceCost_type,+    serviceResourceCost_unitCost,++    -- * SnsChannelConfig+    SnsChannelConfig (..),+    newSnsChannelConfig,+    snsChannelConfig_topicArn,++    -- * StartTimeRange+    StartTimeRange (..),+    newStartTimeRange,+    startTimeRange_fromTime,+    startTimeRange_toTime,++    -- * TagCollection+    TagCollection (..),+    newTagCollection,+    tagCollection_appBoundaryKey,+    tagCollection_tagValues,++    -- * TagCollectionFilter+    TagCollectionFilter (..),+    newTagCollectionFilter,+    tagCollectionFilter_appBoundaryKey,+    tagCollectionFilter_tagValues,++    -- * TagCostEstimationResourceCollectionFilter+    TagCostEstimationResourceCollectionFilter (..),+    newTagCostEstimationResourceCollectionFilter,+    tagCostEstimationResourceCollectionFilter_appBoundaryKey,+    tagCostEstimationResourceCollectionFilter_tagValues,++    -- * TagHealth+    TagHealth (..),+    newTagHealth,+    tagHealth_analyzedResourceCount,+    tagHealth_appBoundaryKey,+    tagHealth_insight,+    tagHealth_tagValue,++    -- * TimestampMetricValuePair+    TimestampMetricValuePair (..),+    newTimestampMetricValuePair,+    timestampMetricValuePair_metricValue,+    timestampMetricValuePair_timestamp,++    -- * UpdateCloudFormationCollectionFilter+    UpdateCloudFormationCollectionFilter (..),+    newUpdateCloudFormationCollectionFilter,+    updateCloudFormationCollectionFilter_stackNames,++    -- * UpdateResourceCollectionFilter+    UpdateResourceCollectionFilter (..),+    newUpdateResourceCollectionFilter,+    updateResourceCollectionFilter_cloudFormation,+    updateResourceCollectionFilter_tags,++    -- * UpdateServiceIntegrationConfig+    UpdateServiceIntegrationConfig (..),+    newUpdateServiceIntegrationConfig,+    updateServiceIntegrationConfig_logsAnomalyDetection,+    updateServiceIntegrationConfig_opsCenter,++    -- * UpdateTagCollectionFilter+    UpdateTagCollectionFilter (..),+    newUpdateTagCollectionFilter,+    updateTagCollectionFilter_appBoundaryKey,+    updateTagCollectionFilter_tagValues,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.DevOpsGuru.Types.AccountHealth+import Amazonka.DevOpsGuru.Types.AccountInsightHealth+import Amazonka.DevOpsGuru.Types.AmazonCodeGuruProfilerIntegration+import Amazonka.DevOpsGuru.Types.AnomalousLogGroup+import Amazonka.DevOpsGuru.Types.AnomalyReportedTimeRange+import Amazonka.DevOpsGuru.Types.AnomalyResource+import Amazonka.DevOpsGuru.Types.AnomalySeverity+import Amazonka.DevOpsGuru.Types.AnomalySourceDetails+import Amazonka.DevOpsGuru.Types.AnomalySourceMetadata+import Amazonka.DevOpsGuru.Types.AnomalyStatus+import Amazonka.DevOpsGuru.Types.AnomalyTimeRange+import Amazonka.DevOpsGuru.Types.AnomalyType+import Amazonka.DevOpsGuru.Types.CloudFormationCollection+import Amazonka.DevOpsGuru.Types.CloudFormationCollectionFilter+import Amazonka.DevOpsGuru.Types.CloudFormationCostEstimationResourceCollectionFilter+import Amazonka.DevOpsGuru.Types.CloudFormationHealth+import Amazonka.DevOpsGuru.Types.CloudWatchMetricDataStatusCode+import Amazonka.DevOpsGuru.Types.CloudWatchMetricsDataSummary+import Amazonka.DevOpsGuru.Types.CloudWatchMetricsDetail+import Amazonka.DevOpsGuru.Types.CloudWatchMetricsDimension+import Amazonka.DevOpsGuru.Types.CloudWatchMetricsStat+import Amazonka.DevOpsGuru.Types.CostEstimationResourceCollectionFilter+import Amazonka.DevOpsGuru.Types.CostEstimationServiceResourceState+import Amazonka.DevOpsGuru.Types.CostEstimationStatus+import Amazonka.DevOpsGuru.Types.CostEstimationTimeRange+import Amazonka.DevOpsGuru.Types.EndTimeRange+import Amazonka.DevOpsGuru.Types.Event+import Amazonka.DevOpsGuru.Types.EventClass+import Amazonka.DevOpsGuru.Types.EventDataSource+import Amazonka.DevOpsGuru.Types.EventResource+import Amazonka.DevOpsGuru.Types.EventSourceOptInStatus+import Amazonka.DevOpsGuru.Types.EventSourcesConfig+import Amazonka.DevOpsGuru.Types.EventTimeRange+import Amazonka.DevOpsGuru.Types.InsightFeedback+import Amazonka.DevOpsGuru.Types.InsightFeedbackOption+import Amazonka.DevOpsGuru.Types.InsightHealth+import Amazonka.DevOpsGuru.Types.InsightSeverity+import Amazonka.DevOpsGuru.Types.InsightStatus+import Amazonka.DevOpsGuru.Types.InsightTimeRange+import Amazonka.DevOpsGuru.Types.InsightType+import Amazonka.DevOpsGuru.Types.ListEventsFilters+import Amazonka.DevOpsGuru.Types.ListInsightsAnyStatusFilter+import Amazonka.DevOpsGuru.Types.ListInsightsClosedStatusFilter+import Amazonka.DevOpsGuru.Types.ListInsightsOngoingStatusFilter+import Amazonka.DevOpsGuru.Types.ListInsightsStatusFilter+import Amazonka.DevOpsGuru.Types.ListMonitoredResourcesFilters+import Amazonka.DevOpsGuru.Types.Locale+import Amazonka.DevOpsGuru.Types.LogAnomalyClass+import Amazonka.DevOpsGuru.Types.LogAnomalyShowcase+import Amazonka.DevOpsGuru.Types.LogAnomalyType+import Amazonka.DevOpsGuru.Types.LogsAnomalyDetectionIntegration+import Amazonka.DevOpsGuru.Types.LogsAnomalyDetectionIntegrationConfig+import Amazonka.DevOpsGuru.Types.MonitoredResourceIdentifier+import Amazonka.DevOpsGuru.Types.NotificationChannel+import Amazonka.DevOpsGuru.Types.NotificationChannelConfig+import Amazonka.DevOpsGuru.Types.NotificationFilterConfig+import Amazonka.DevOpsGuru.Types.NotificationMessageType+import Amazonka.DevOpsGuru.Types.OpsCenterIntegration+import Amazonka.DevOpsGuru.Types.OpsCenterIntegrationConfig+import Amazonka.DevOpsGuru.Types.OptInStatus+import Amazonka.DevOpsGuru.Types.OrganizationResourceCollectionType+import Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricDimensionGroup+import Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricQuery+import Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricsDetail+import Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceComparisonValues+import Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceData+import Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceMetric+import Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceScalar+import Amazonka.DevOpsGuru.Types.PerformanceInsightsStat+import Amazonka.DevOpsGuru.Types.PredictionTimeRange+import Amazonka.DevOpsGuru.Types.ProactiveAnomaly+import Amazonka.DevOpsGuru.Types.ProactiveAnomalySummary+import Amazonka.DevOpsGuru.Types.ProactiveInsight+import Amazonka.DevOpsGuru.Types.ProactiveInsightSummary+import Amazonka.DevOpsGuru.Types.ProactiveOrganizationInsightSummary+import Amazonka.DevOpsGuru.Types.ReactiveAnomaly+import Amazonka.DevOpsGuru.Types.ReactiveAnomalySummary+import Amazonka.DevOpsGuru.Types.ReactiveInsight+import Amazonka.DevOpsGuru.Types.ReactiveInsightSummary+import Amazonka.DevOpsGuru.Types.ReactiveOrganizationInsightSummary+import Amazonka.DevOpsGuru.Types.Recommendation+import Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomaly+import Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomalyResource+import Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomalySourceDetail+import Amazonka.DevOpsGuru.Types.RecommendationRelatedCloudWatchMetricsSourceDetail+import Amazonka.DevOpsGuru.Types.RecommendationRelatedEvent+import Amazonka.DevOpsGuru.Types.RecommendationRelatedEventResource+import Amazonka.DevOpsGuru.Types.ResourceCollection+import Amazonka.DevOpsGuru.Types.ResourceCollectionFilter+import Amazonka.DevOpsGuru.Types.ResourceCollectionType+import Amazonka.DevOpsGuru.Types.ResourcePermission+import Amazonka.DevOpsGuru.Types.ResourceTypeFilter+import Amazonka.DevOpsGuru.Types.SearchInsightsFilters+import Amazonka.DevOpsGuru.Types.SearchOrganizationInsightsFilters+import Amazonka.DevOpsGuru.Types.ServiceCollection+import Amazonka.DevOpsGuru.Types.ServiceHealth+import Amazonka.DevOpsGuru.Types.ServiceInsightHealth+import Amazonka.DevOpsGuru.Types.ServiceIntegrationConfig+import Amazonka.DevOpsGuru.Types.ServiceName+import Amazonka.DevOpsGuru.Types.ServiceResourceCost+import Amazonka.DevOpsGuru.Types.SnsChannelConfig+import Amazonka.DevOpsGuru.Types.StartTimeRange+import Amazonka.DevOpsGuru.Types.TagCollection+import Amazonka.DevOpsGuru.Types.TagCollectionFilter+import Amazonka.DevOpsGuru.Types.TagCostEstimationResourceCollectionFilter+import Amazonka.DevOpsGuru.Types.TagHealth+import Amazonka.DevOpsGuru.Types.TimestampMetricValuePair+import Amazonka.DevOpsGuru.Types.UpdateCloudFormationCollectionFilter+import Amazonka.DevOpsGuru.Types.UpdateResourceCollectionAction+import Amazonka.DevOpsGuru.Types.UpdateResourceCollectionFilter+import Amazonka.DevOpsGuru.Types.UpdateServiceIntegrationConfig+import Amazonka.DevOpsGuru.Types.UpdateTagCollectionFilter+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2020-12-01@ of the Amazon DevOps Guru SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "DevOpsGuru",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "devops-guru",+      Core.signingName = "devops-guru",+      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 "DevOpsGuru",+      Core.retry = retry+    }+  where+    retry =+      Core.Exponential+        { Core.base = 5.0e-2,+          Core.growth = 2,+          Core.attempts = 5,+          Core.check = check+        }+    check e+      | Lens.has (Core.hasStatus 502) e =+          Prelude.Just "bad_gateway"+      | Lens.has (Core.hasStatus 504) e =+          Prelude.Just "gateway_timeout"+      | Lens.has (Core.hasStatus 500) e =+          Prelude.Just "general_server_error"+      | Lens.has (Core.hasStatus 509) e =+          Prelude.Just "limit_exceeded"+      | Lens.has+          ( Core.hasCode "RequestThrottledException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "request_throttled_exception"+      | Lens.has (Core.hasStatus 503) e =+          Prelude.Just "service_unavailable"+      | Lens.has+          ( Core.hasCode "ThrottledException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttled_exception"+      | Lens.has+          ( Core.hasCode "Throttling"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttling"+      | Lens.has+          ( Core.hasCode "ThrottlingException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttling_exception"+      | Lens.has+          ( Core.hasCode+              "ProvisionedThroughputExceededException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throughput_exceeded"+      | Lens.has (Core.hasStatus 429) e =+          Prelude.Just "too_many_requests"+      | Prelude.otherwise = Prelude.Nothing++-- | You don\'t have permissions to perform the requested operation. The user+-- or role that is making the request must have at least one IAM+-- permissions policy attached that grants the required permissions. For+-- more information, see+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html Access Management>+-- in the /IAM User Guide/.+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AccessDeniedException =+  Core._MatchServiceError+    defaultService+    "AccessDeniedException"+    Prelude.. Core.hasStatus 403++-- | An exception that is thrown when a conflict occurs.+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConflictException =+  Core._MatchServiceError+    defaultService+    "ConflictException"+    Prelude.. Core.hasStatus 409++-- | An internal failure in an Amazon service occurred.+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalServerException =+  Core._MatchServiceError+    defaultService+    "InternalServerException"+    Prelude.. Core.hasStatus 500++-- | A requested resource could not be found+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceNotFoundException =+  Core._MatchServiceError+    defaultService+    "ResourceNotFoundException"+    Prelude.. Core.hasStatus 404++-- | The request contains a value that exceeds a maximum quota.+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceQuotaExceededException =+  Core._MatchServiceError+    defaultService+    "ServiceQuotaExceededException"+    Prelude.. Core.hasStatus 402++-- | The request was denied due to a request throttling.+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ThrottlingException =+  Core._MatchServiceError+    defaultService+    "ThrottlingException"+    Prelude.. Core.hasStatus 429++-- | Contains information about data passed in to a field during a request+-- that is not valid.+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ValidationException =+  Core._MatchServiceError+    defaultService+    "ValidationException"+    Prelude.. Core.hasStatus 400
+ gen/Amazonka/DevOpsGuru/Types/AccountHealth.hs view
@@ -0,0 +1,94 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.AccountHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.AccountHealth where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.AccountInsightHealth+import qualified Amazonka.Prelude as Prelude++-- | Returns the number of open reactive insights, the number of open+-- proactive insights, and the number of metrics analyzed in your Amazon+-- Web Services account. Use these numbers to gauge the health of+-- operations in your Amazon Web Services account.+--+-- /See:/ 'newAccountHealth' smart constructor.+data AccountHealth = AccountHealth'+  { -- | The ID of the Amazon Web Services account.+    accountId :: Prelude.Maybe Prelude.Text,+    -- | Information about the health of the Amazon Web Services resources in+    -- your account, including the number of open proactive, open reactive+    -- insights, and the Mean Time to Recover (MTTR) of closed insights.+    insight :: Prelude.Maybe AccountInsightHealth+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AccountHealth' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountId', 'accountHealth_accountId' - The ID of the Amazon Web Services account.+--+-- 'insight', 'accountHealth_insight' - Information about the health of the Amazon Web Services resources in+-- your account, including the number of open proactive, open reactive+-- insights, and the Mean Time to Recover (MTTR) of closed insights.+newAccountHealth ::+  AccountHealth+newAccountHealth =+  AccountHealth'+    { accountId = Prelude.Nothing,+      insight = Prelude.Nothing+    }++-- | The ID of the Amazon Web Services account.+accountHealth_accountId :: Lens.Lens' AccountHealth (Prelude.Maybe Prelude.Text)+accountHealth_accountId = Lens.lens (\AccountHealth' {accountId} -> accountId) (\s@AccountHealth' {} a -> s {accountId = a} :: AccountHealth)++-- | Information about the health of the Amazon Web Services resources in+-- your account, including the number of open proactive, open reactive+-- insights, and the Mean Time to Recover (MTTR) of closed insights.+accountHealth_insight :: Lens.Lens' AccountHealth (Prelude.Maybe AccountInsightHealth)+accountHealth_insight = Lens.lens (\AccountHealth' {insight} -> insight) (\s@AccountHealth' {} a -> s {insight = a} :: AccountHealth)++instance Data.FromJSON AccountHealth where+  parseJSON =+    Data.withObject+      "AccountHealth"+      ( \x ->+          AccountHealth'+            Prelude.<$> (x Data..:? "AccountId")+            Prelude.<*> (x Data..:? "Insight")+      )++instance Prelude.Hashable AccountHealth where+  hashWithSalt _salt AccountHealth' {..} =+    _salt+      `Prelude.hashWithSalt` accountId+      `Prelude.hashWithSalt` insight++instance Prelude.NFData AccountHealth where+  rnf AccountHealth' {..} =+    Prelude.rnf accountId+      `Prelude.seq` Prelude.rnf insight
+ gen/Amazonka/DevOpsGuru/Types/AccountInsightHealth.hs view
@@ -0,0 +1,92 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.AccountInsightHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.AccountInsightHealth where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Information about the number of open reactive and proactive insights+-- that can be used to gauge the health of your system.+--+-- /See:/ 'newAccountInsightHealth' smart constructor.+data AccountInsightHealth = AccountInsightHealth'+  { -- | An integer that specifies the number of open proactive insights in your+    -- Amazon Web Services account.+    openProactiveInsights :: Prelude.Maybe Prelude.Int,+    -- | An integer that specifies the number of open reactive insights in your+    -- Amazon Web Services account.+    openReactiveInsights :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AccountInsightHealth' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'openProactiveInsights', 'accountInsightHealth_openProactiveInsights' - An integer that specifies the number of open proactive insights in your+-- Amazon Web Services account.+--+-- 'openReactiveInsights', 'accountInsightHealth_openReactiveInsights' - An integer that specifies the number of open reactive insights in your+-- Amazon Web Services account.+newAccountInsightHealth ::+  AccountInsightHealth+newAccountInsightHealth =+  AccountInsightHealth'+    { openProactiveInsights =+        Prelude.Nothing,+      openReactiveInsights = Prelude.Nothing+    }++-- | An integer that specifies the number of open proactive insights in your+-- Amazon Web Services account.+accountInsightHealth_openProactiveInsights :: Lens.Lens' AccountInsightHealth (Prelude.Maybe Prelude.Int)+accountInsightHealth_openProactiveInsights = Lens.lens (\AccountInsightHealth' {openProactiveInsights} -> openProactiveInsights) (\s@AccountInsightHealth' {} a -> s {openProactiveInsights = a} :: AccountInsightHealth)++-- | An integer that specifies the number of open reactive insights in your+-- Amazon Web Services account.+accountInsightHealth_openReactiveInsights :: Lens.Lens' AccountInsightHealth (Prelude.Maybe Prelude.Int)+accountInsightHealth_openReactiveInsights = Lens.lens (\AccountInsightHealth' {openReactiveInsights} -> openReactiveInsights) (\s@AccountInsightHealth' {} a -> s {openReactiveInsights = a} :: AccountInsightHealth)++instance Data.FromJSON AccountInsightHealth where+  parseJSON =+    Data.withObject+      "AccountInsightHealth"+      ( \x ->+          AccountInsightHealth'+            Prelude.<$> (x Data..:? "OpenProactiveInsights")+            Prelude.<*> (x Data..:? "OpenReactiveInsights")+      )++instance Prelude.Hashable AccountInsightHealth where+  hashWithSalt _salt AccountInsightHealth' {..} =+    _salt+      `Prelude.hashWithSalt` openProactiveInsights+      `Prelude.hashWithSalt` openReactiveInsights++instance Prelude.NFData AccountInsightHealth where+  rnf AccountInsightHealth' {..} =+    Prelude.rnf openProactiveInsights+      `Prelude.seq` Prelude.rnf openReactiveInsights
+ gen/Amazonka/DevOpsGuru/Types/AmazonCodeGuruProfilerIntegration.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.AmazonCodeGuruProfilerIntegration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.AmazonCodeGuruProfilerIntegration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.EventSourceOptInStatus+import qualified Amazonka.Prelude as Prelude++-- | Information about your account\'s integration with Amazon CodeGuru+-- Profiler. This returns whether DevOps Guru is configured to consume+-- recommendations generated from Amazon CodeGuru Profiler.+--+-- /See:/ 'newAmazonCodeGuruProfilerIntegration' smart constructor.+data AmazonCodeGuruProfilerIntegration = AmazonCodeGuruProfilerIntegration'+  { -- | The status of the CodeGuru Profiler integration. Specifies if DevOps+    -- Guru is enabled to consume recommendations that are generated from+    -- Amazon CodeGuru Profiler.+    status :: Prelude.Maybe EventSourceOptInStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AmazonCodeGuruProfilerIntegration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'status', 'amazonCodeGuruProfilerIntegration_status' - The status of the CodeGuru Profiler integration. Specifies if DevOps+-- Guru is enabled to consume recommendations that are generated from+-- Amazon CodeGuru Profiler.+newAmazonCodeGuruProfilerIntegration ::+  AmazonCodeGuruProfilerIntegration+newAmazonCodeGuruProfilerIntegration =+  AmazonCodeGuruProfilerIntegration'+    { status =+        Prelude.Nothing+    }++-- | The status of the CodeGuru Profiler integration. Specifies if DevOps+-- Guru is enabled to consume recommendations that are generated from+-- Amazon CodeGuru Profiler.+amazonCodeGuruProfilerIntegration_status :: Lens.Lens' AmazonCodeGuruProfilerIntegration (Prelude.Maybe EventSourceOptInStatus)+amazonCodeGuruProfilerIntegration_status = Lens.lens (\AmazonCodeGuruProfilerIntegration' {status} -> status) (\s@AmazonCodeGuruProfilerIntegration' {} a -> s {status = a} :: AmazonCodeGuruProfilerIntegration)++instance+  Data.FromJSON+    AmazonCodeGuruProfilerIntegration+  where+  parseJSON =+    Data.withObject+      "AmazonCodeGuruProfilerIntegration"+      ( \x ->+          AmazonCodeGuruProfilerIntegration'+            Prelude.<$> (x Data..:? "Status")+      )++instance+  Prelude.Hashable+    AmazonCodeGuruProfilerIntegration+  where+  hashWithSalt+    _salt+    AmazonCodeGuruProfilerIntegration' {..} =+      _salt `Prelude.hashWithSalt` status++instance+  Prelude.NFData+    AmazonCodeGuruProfilerIntegration+  where+  rnf AmazonCodeGuruProfilerIntegration' {..} =+    Prelude.rnf status++instance+  Data.ToJSON+    AmazonCodeGuruProfilerIntegration+  where+  toJSON AmazonCodeGuruProfilerIntegration' {..} =+    Data.object+      ( Prelude.catMaybes+          [("Status" Data..=) Prelude.<$> status]+      )
+ gen/Amazonka/DevOpsGuru/Types/AnomalousLogGroup.hs view
@@ -0,0 +1,131 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.AnomalousLogGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.AnomalousLogGroup where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.LogAnomalyShowcase+import qualified Amazonka.Prelude as Prelude++-- | An Amazon CloudWatch log group that contains log anomalies and is used+-- to generate an insight.+--+-- /See:/ 'newAnomalousLogGroup' smart constructor.+data AnomalousLogGroup = AnomalousLogGroup'+  { -- | The time the anomalous log events stopped.+    impactEndTime :: Prelude.Maybe Data.POSIX,+    -- | The time the anomalous log events began. The impact start time indicates+    -- the time of the first log anomaly event that occurs.+    impactStartTime :: Prelude.Maybe Data.POSIX,+    -- | The log anomalies in the log group. Each log anomaly displayed+    -- represents a cluster of similar anomalous log events.+    logAnomalyShowcases :: Prelude.Maybe [LogAnomalyShowcase],+    -- | The name of the CloudWatch log group.+    logGroupName :: Prelude.Maybe Prelude.Text,+    -- | The number of log lines that were scanned for anomalous log events.+    numberOfLogLinesScanned :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AnomalousLogGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'impactEndTime', 'anomalousLogGroup_impactEndTime' - The time the anomalous log events stopped.+--+-- 'impactStartTime', 'anomalousLogGroup_impactStartTime' - The time the anomalous log events began. The impact start time indicates+-- the time of the first log anomaly event that occurs.+--+-- 'logAnomalyShowcases', 'anomalousLogGroup_logAnomalyShowcases' - The log anomalies in the log group. Each log anomaly displayed+-- represents a cluster of similar anomalous log events.+--+-- 'logGroupName', 'anomalousLogGroup_logGroupName' - The name of the CloudWatch log group.+--+-- 'numberOfLogLinesScanned', 'anomalousLogGroup_numberOfLogLinesScanned' - The number of log lines that were scanned for anomalous log events.+newAnomalousLogGroup ::+  AnomalousLogGroup+newAnomalousLogGroup =+  AnomalousLogGroup'+    { impactEndTime = Prelude.Nothing,+      impactStartTime = Prelude.Nothing,+      logAnomalyShowcases = Prelude.Nothing,+      logGroupName = Prelude.Nothing,+      numberOfLogLinesScanned = Prelude.Nothing+    }++-- | The time the anomalous log events stopped.+anomalousLogGroup_impactEndTime :: Lens.Lens' AnomalousLogGroup (Prelude.Maybe Prelude.UTCTime)+anomalousLogGroup_impactEndTime = Lens.lens (\AnomalousLogGroup' {impactEndTime} -> impactEndTime) (\s@AnomalousLogGroup' {} a -> s {impactEndTime = a} :: AnomalousLogGroup) Prelude.. Lens.mapping Data._Time++-- | The time the anomalous log events began. The impact start time indicates+-- the time of the first log anomaly event that occurs.+anomalousLogGroup_impactStartTime :: Lens.Lens' AnomalousLogGroup (Prelude.Maybe Prelude.UTCTime)+anomalousLogGroup_impactStartTime = Lens.lens (\AnomalousLogGroup' {impactStartTime} -> impactStartTime) (\s@AnomalousLogGroup' {} a -> s {impactStartTime = a} :: AnomalousLogGroup) Prelude.. Lens.mapping Data._Time++-- | The log anomalies in the log group. Each log anomaly displayed+-- represents a cluster of similar anomalous log events.+anomalousLogGroup_logAnomalyShowcases :: Lens.Lens' AnomalousLogGroup (Prelude.Maybe [LogAnomalyShowcase])+anomalousLogGroup_logAnomalyShowcases = Lens.lens (\AnomalousLogGroup' {logAnomalyShowcases} -> logAnomalyShowcases) (\s@AnomalousLogGroup' {} a -> s {logAnomalyShowcases = a} :: AnomalousLogGroup) Prelude.. Lens.mapping Lens.coerced++-- | The name of the CloudWatch log group.+anomalousLogGroup_logGroupName :: Lens.Lens' AnomalousLogGroup (Prelude.Maybe Prelude.Text)+anomalousLogGroup_logGroupName = Lens.lens (\AnomalousLogGroup' {logGroupName} -> logGroupName) (\s@AnomalousLogGroup' {} a -> s {logGroupName = a} :: AnomalousLogGroup)++-- | The number of log lines that were scanned for anomalous log events.+anomalousLogGroup_numberOfLogLinesScanned :: Lens.Lens' AnomalousLogGroup (Prelude.Maybe Prelude.Int)+anomalousLogGroup_numberOfLogLinesScanned = Lens.lens (\AnomalousLogGroup' {numberOfLogLinesScanned} -> numberOfLogLinesScanned) (\s@AnomalousLogGroup' {} a -> s {numberOfLogLinesScanned = a} :: AnomalousLogGroup)++instance Data.FromJSON AnomalousLogGroup where+  parseJSON =+    Data.withObject+      "AnomalousLogGroup"+      ( \x ->+          AnomalousLogGroup'+            Prelude.<$> (x Data..:? "ImpactEndTime")+            Prelude.<*> (x Data..:? "ImpactStartTime")+            Prelude.<*> ( x+                            Data..:? "LogAnomalyShowcases"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "LogGroupName")+            Prelude.<*> (x Data..:? "NumberOfLogLinesScanned")+      )++instance Prelude.Hashable AnomalousLogGroup where+  hashWithSalt _salt AnomalousLogGroup' {..} =+    _salt+      `Prelude.hashWithSalt` impactEndTime+      `Prelude.hashWithSalt` impactStartTime+      `Prelude.hashWithSalt` logAnomalyShowcases+      `Prelude.hashWithSalt` logGroupName+      `Prelude.hashWithSalt` numberOfLogLinesScanned++instance Prelude.NFData AnomalousLogGroup where+  rnf AnomalousLogGroup' {..} =+    Prelude.rnf impactEndTime+      `Prelude.seq` Prelude.rnf impactStartTime+      `Prelude.seq` Prelude.rnf logAnomalyShowcases+      `Prelude.seq` Prelude.rnf logGroupName+      `Prelude.seq` Prelude.rnf numberOfLogLinesScanned
+ gen/Amazonka/DevOpsGuru/Types/AnomalyReportedTimeRange.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.AnomalyReportedTimeRange+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.AnomalyReportedTimeRange where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A time range that specifies when DevOps Guru opens and then closes an+-- anomaly. This is different from @AnomalyTimeRange@, which specifies the+-- time range when DevOps Guru actually observes the anomalous behavior.+--+-- /See:/ 'newAnomalyReportedTimeRange' smart constructor.+data AnomalyReportedTimeRange = AnomalyReportedTimeRange'+  { -- | The time when an anomaly is closed.+    closeTime :: Prelude.Maybe Data.POSIX,+    -- | The time when an anomaly is opened.+    openTime :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AnomalyReportedTimeRange' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'closeTime', 'anomalyReportedTimeRange_closeTime' - The time when an anomaly is closed.+--+-- 'openTime', 'anomalyReportedTimeRange_openTime' - The time when an anomaly is opened.+newAnomalyReportedTimeRange ::+  -- | 'openTime'+  Prelude.UTCTime ->+  AnomalyReportedTimeRange+newAnomalyReportedTimeRange pOpenTime_ =+  AnomalyReportedTimeRange'+    { closeTime =+        Prelude.Nothing,+      openTime = Data._Time Lens.# pOpenTime_+    }++-- | The time when an anomaly is closed.+anomalyReportedTimeRange_closeTime :: Lens.Lens' AnomalyReportedTimeRange (Prelude.Maybe Prelude.UTCTime)+anomalyReportedTimeRange_closeTime = Lens.lens (\AnomalyReportedTimeRange' {closeTime} -> closeTime) (\s@AnomalyReportedTimeRange' {} a -> s {closeTime = a} :: AnomalyReportedTimeRange) Prelude.. Lens.mapping Data._Time++-- | The time when an anomaly is opened.+anomalyReportedTimeRange_openTime :: Lens.Lens' AnomalyReportedTimeRange Prelude.UTCTime+anomalyReportedTimeRange_openTime = Lens.lens (\AnomalyReportedTimeRange' {openTime} -> openTime) (\s@AnomalyReportedTimeRange' {} a -> s {openTime = a} :: AnomalyReportedTimeRange) Prelude.. Data._Time++instance Data.FromJSON AnomalyReportedTimeRange where+  parseJSON =+    Data.withObject+      "AnomalyReportedTimeRange"+      ( \x ->+          AnomalyReportedTimeRange'+            Prelude.<$> (x Data..:? "CloseTime")+            Prelude.<*> (x Data..: "OpenTime")+      )++instance Prelude.Hashable AnomalyReportedTimeRange where+  hashWithSalt _salt AnomalyReportedTimeRange' {..} =+    _salt+      `Prelude.hashWithSalt` closeTime+      `Prelude.hashWithSalt` openTime++instance Prelude.NFData AnomalyReportedTimeRange where+  rnf AnomalyReportedTimeRange' {..} =+    Prelude.rnf closeTime+      `Prelude.seq` Prelude.rnf openTime
+ gen/Amazonka/DevOpsGuru/Types/AnomalyResource.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.DevOpsGuru.Types.AnomalyResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.AnomalyResource where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The Amazon Web Services resources in which DevOps Guru detected unusual+-- behavior that resulted in the generation of an anomaly. When DevOps Guru+-- detects multiple related anomalies, it creates and insight with details+-- about the anomalous behavior and suggestions about how to correct the+-- problem.+--+-- /See:/ 'newAnomalyResource' smart constructor.+data AnomalyResource = AnomalyResource'+  { -- | The name of the Amazon Web Services resource.+    name :: Prelude.Maybe Prelude.Text,+    -- | The type of the Amazon Web Services resource.+    type' :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AnomalyResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'anomalyResource_name' - The name of the Amazon Web Services resource.+--+-- 'type'', 'anomalyResource_type' - The type of the Amazon Web Services resource.+newAnomalyResource ::+  AnomalyResource+newAnomalyResource =+  AnomalyResource'+    { name = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | The name of the Amazon Web Services resource.+anomalyResource_name :: Lens.Lens' AnomalyResource (Prelude.Maybe Prelude.Text)+anomalyResource_name = Lens.lens (\AnomalyResource' {name} -> name) (\s@AnomalyResource' {} a -> s {name = a} :: AnomalyResource)++-- | The type of the Amazon Web Services resource.+anomalyResource_type :: Lens.Lens' AnomalyResource (Prelude.Maybe Prelude.Text)+anomalyResource_type = Lens.lens (\AnomalyResource' {type'} -> type') (\s@AnomalyResource' {} a -> s {type' = a} :: AnomalyResource)++instance Data.FromJSON AnomalyResource where+  parseJSON =+    Data.withObject+      "AnomalyResource"+      ( \x ->+          AnomalyResource'+            Prelude.<$> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Type")+      )++instance Prelude.Hashable AnomalyResource where+  hashWithSalt _salt AnomalyResource' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` type'++instance Prelude.NFData AnomalyResource where+  rnf AnomalyResource' {..} =+    Prelude.rnf name `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/DevOpsGuru/Types/AnomalySeverity.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.AnomalySeverity+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.AnomalySeverity+  ( AnomalySeverity+      ( ..,+        AnomalySeverity_HIGH,+        AnomalySeverity_LOW,+        AnomalySeverity_MEDIUM+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AnomalySeverity = AnomalySeverity'+  { fromAnomalySeverity ::+      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 AnomalySeverity_HIGH :: AnomalySeverity+pattern AnomalySeverity_HIGH = AnomalySeverity' "HIGH"++pattern AnomalySeverity_LOW :: AnomalySeverity+pattern AnomalySeverity_LOW = AnomalySeverity' "LOW"++pattern AnomalySeverity_MEDIUM :: AnomalySeverity+pattern AnomalySeverity_MEDIUM = AnomalySeverity' "MEDIUM"++{-# COMPLETE+  AnomalySeverity_HIGH,+  AnomalySeverity_LOW,+  AnomalySeverity_MEDIUM,+  AnomalySeverity'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/AnomalySourceDetails.hs view
@@ -0,0 +1,103 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.AnomalySourceDetails+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.AnomalySourceDetails where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.CloudWatchMetricsDetail+import Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricsDetail+import qualified Amazonka.Prelude as Prelude++-- | Details about the source of the anomalous operational data that+-- triggered the anomaly.+--+-- /See:/ 'newAnomalySourceDetails' smart constructor.+data AnomalySourceDetails = AnomalySourceDetails'+  { -- | An array of @CloudWatchMetricsDetail@ objects that contain information+    -- about analyzed CloudWatch metrics that show anomalous behavior.+    cloudWatchMetrics :: Prelude.Maybe [CloudWatchMetricsDetail],+    -- | An array of @PerformanceInsightsMetricsDetail@ objects that contain+    -- information about analyzed Performance Insights metrics that show+    -- anomalous behavior.+    performanceInsightsMetrics :: Prelude.Maybe [PerformanceInsightsMetricsDetail]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AnomalySourceDetails' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cloudWatchMetrics', 'anomalySourceDetails_cloudWatchMetrics' - An array of @CloudWatchMetricsDetail@ objects that contain information+-- about analyzed CloudWatch metrics that show anomalous behavior.+--+-- 'performanceInsightsMetrics', 'anomalySourceDetails_performanceInsightsMetrics' - An array of @PerformanceInsightsMetricsDetail@ objects that contain+-- information about analyzed Performance Insights metrics that show+-- anomalous behavior.+newAnomalySourceDetails ::+  AnomalySourceDetails+newAnomalySourceDetails =+  AnomalySourceDetails'+    { cloudWatchMetrics =+        Prelude.Nothing,+      performanceInsightsMetrics = Prelude.Nothing+    }++-- | An array of @CloudWatchMetricsDetail@ objects that contain information+-- about analyzed CloudWatch metrics that show anomalous behavior.+anomalySourceDetails_cloudWatchMetrics :: Lens.Lens' AnomalySourceDetails (Prelude.Maybe [CloudWatchMetricsDetail])+anomalySourceDetails_cloudWatchMetrics = Lens.lens (\AnomalySourceDetails' {cloudWatchMetrics} -> cloudWatchMetrics) (\s@AnomalySourceDetails' {} a -> s {cloudWatchMetrics = a} :: AnomalySourceDetails) Prelude.. Lens.mapping Lens.coerced++-- | An array of @PerformanceInsightsMetricsDetail@ objects that contain+-- information about analyzed Performance Insights metrics that show+-- anomalous behavior.+anomalySourceDetails_performanceInsightsMetrics :: Lens.Lens' AnomalySourceDetails (Prelude.Maybe [PerformanceInsightsMetricsDetail])+anomalySourceDetails_performanceInsightsMetrics = Lens.lens (\AnomalySourceDetails' {performanceInsightsMetrics} -> performanceInsightsMetrics) (\s@AnomalySourceDetails' {} a -> s {performanceInsightsMetrics = a} :: AnomalySourceDetails) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON AnomalySourceDetails where+  parseJSON =+    Data.withObject+      "AnomalySourceDetails"+      ( \x ->+          AnomalySourceDetails'+            Prelude.<$> ( x+                            Data..:? "CloudWatchMetrics"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..:? "PerformanceInsightsMetrics"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable AnomalySourceDetails where+  hashWithSalt _salt AnomalySourceDetails' {..} =+    _salt+      `Prelude.hashWithSalt` cloudWatchMetrics+      `Prelude.hashWithSalt` performanceInsightsMetrics++instance Prelude.NFData AnomalySourceDetails where+  rnf AnomalySourceDetails' {..} =+    Prelude.rnf cloudWatchMetrics+      `Prelude.seq` Prelude.rnf performanceInsightsMetrics
+ gen/Amazonka/DevOpsGuru/Types/AnomalySourceMetadata.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.DevOpsGuru.Types.AnomalySourceMetadata+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.AnomalySourceMetadata where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Metadata about the detection source that generates proactive anomalies.+-- The anomaly is detected using analysis of the metric data
 over a period+-- of time+--+-- /See:/ 'newAnomalySourceMetadata' smart constructor.+data AnomalySourceMetadata = AnomalySourceMetadata'+  { -- | The source of the anomaly.+    source :: Prelude.Maybe Prelude.Text,+    -- | The name of the anomaly\'s resource.+    sourceResourceName :: Prelude.Maybe Prelude.Text,+    -- | The anomaly\'s resource type.+    sourceResourceType :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AnomalySourceMetadata' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'anomalySourceMetadata_source' - The source of the anomaly.+--+-- 'sourceResourceName', 'anomalySourceMetadata_sourceResourceName' - The name of the anomaly\'s resource.+--+-- 'sourceResourceType', 'anomalySourceMetadata_sourceResourceType' - The anomaly\'s resource type.+newAnomalySourceMetadata ::+  AnomalySourceMetadata+newAnomalySourceMetadata =+  AnomalySourceMetadata'+    { source = Prelude.Nothing,+      sourceResourceName = Prelude.Nothing,+      sourceResourceType = Prelude.Nothing+    }++-- | The source of the anomaly.+anomalySourceMetadata_source :: Lens.Lens' AnomalySourceMetadata (Prelude.Maybe Prelude.Text)+anomalySourceMetadata_source = Lens.lens (\AnomalySourceMetadata' {source} -> source) (\s@AnomalySourceMetadata' {} a -> s {source = a} :: AnomalySourceMetadata)++-- | The name of the anomaly\'s resource.+anomalySourceMetadata_sourceResourceName :: Lens.Lens' AnomalySourceMetadata (Prelude.Maybe Prelude.Text)+anomalySourceMetadata_sourceResourceName = Lens.lens (\AnomalySourceMetadata' {sourceResourceName} -> sourceResourceName) (\s@AnomalySourceMetadata' {} a -> s {sourceResourceName = a} :: AnomalySourceMetadata)++-- | The anomaly\'s resource type.+anomalySourceMetadata_sourceResourceType :: Lens.Lens' AnomalySourceMetadata (Prelude.Maybe Prelude.Text)+anomalySourceMetadata_sourceResourceType = Lens.lens (\AnomalySourceMetadata' {sourceResourceType} -> sourceResourceType) (\s@AnomalySourceMetadata' {} a -> s {sourceResourceType = a} :: AnomalySourceMetadata)++instance Data.FromJSON AnomalySourceMetadata where+  parseJSON =+    Data.withObject+      "AnomalySourceMetadata"+      ( \x ->+          AnomalySourceMetadata'+            Prelude.<$> (x Data..:? "Source")+            Prelude.<*> (x Data..:? "SourceResourceName")+            Prelude.<*> (x Data..:? "SourceResourceType")+      )++instance Prelude.Hashable AnomalySourceMetadata where+  hashWithSalt _salt AnomalySourceMetadata' {..} =+    _salt+      `Prelude.hashWithSalt` source+      `Prelude.hashWithSalt` sourceResourceName+      `Prelude.hashWithSalt` sourceResourceType++instance Prelude.NFData AnomalySourceMetadata where+  rnf AnomalySourceMetadata' {..} =+    Prelude.rnf source+      `Prelude.seq` Prelude.rnf sourceResourceName+      `Prelude.seq` Prelude.rnf sourceResourceType
+ gen/Amazonka/DevOpsGuru/Types/AnomalyStatus.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.AnomalyStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.AnomalyStatus+  ( AnomalyStatus+      ( ..,+        AnomalyStatus_CLOSED,+        AnomalyStatus_ONGOING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AnomalyStatus = AnomalyStatus'+  { fromAnomalyStatus ::+      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 AnomalyStatus_CLOSED :: AnomalyStatus+pattern AnomalyStatus_CLOSED = AnomalyStatus' "CLOSED"++pattern AnomalyStatus_ONGOING :: AnomalyStatus+pattern AnomalyStatus_ONGOING = AnomalyStatus' "ONGOING"++{-# COMPLETE+  AnomalyStatus_CLOSED,+  AnomalyStatus_ONGOING,+  AnomalyStatus'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/AnomalyTimeRange.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.AnomalyTimeRange+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.AnomalyTimeRange where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A time range that specifies when the observed unusual behavior in an+-- anomaly started and ended. This is different from+-- @AnomalyReportedTimeRange@, which specifies the time range when DevOps+-- Guru opens and then closes an anomaly.+--+-- /See:/ 'newAnomalyTimeRange' smart constructor.+data AnomalyTimeRange = AnomalyTimeRange'+  { -- | The time when the anomalous behavior ended.+    endTime :: Prelude.Maybe Data.POSIX,+    -- | The time when the anomalous behavior started.+    startTime :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AnomalyTimeRange' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endTime', 'anomalyTimeRange_endTime' - The time when the anomalous behavior ended.+--+-- 'startTime', 'anomalyTimeRange_startTime' - The time when the anomalous behavior started.+newAnomalyTimeRange ::+  -- | 'startTime'+  Prelude.UTCTime ->+  AnomalyTimeRange+newAnomalyTimeRange pStartTime_ =+  AnomalyTimeRange'+    { endTime = Prelude.Nothing,+      startTime = Data._Time Lens.# pStartTime_+    }++-- | The time when the anomalous behavior ended.+anomalyTimeRange_endTime :: Lens.Lens' AnomalyTimeRange (Prelude.Maybe Prelude.UTCTime)+anomalyTimeRange_endTime = Lens.lens (\AnomalyTimeRange' {endTime} -> endTime) (\s@AnomalyTimeRange' {} a -> s {endTime = a} :: AnomalyTimeRange) Prelude.. Lens.mapping Data._Time++-- | The time when the anomalous behavior started.+anomalyTimeRange_startTime :: Lens.Lens' AnomalyTimeRange Prelude.UTCTime+anomalyTimeRange_startTime = Lens.lens (\AnomalyTimeRange' {startTime} -> startTime) (\s@AnomalyTimeRange' {} a -> s {startTime = a} :: AnomalyTimeRange) Prelude.. Data._Time++instance Data.FromJSON AnomalyTimeRange where+  parseJSON =+    Data.withObject+      "AnomalyTimeRange"+      ( \x ->+          AnomalyTimeRange'+            Prelude.<$> (x Data..:? "EndTime")+            Prelude.<*> (x Data..: "StartTime")+      )++instance Prelude.Hashable AnomalyTimeRange where+  hashWithSalt _salt AnomalyTimeRange' {..} =+    _salt+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` startTime++instance Prelude.NFData AnomalyTimeRange where+  rnf AnomalyTimeRange' {..} =+    Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf startTime
+ gen/Amazonka/DevOpsGuru/Types/AnomalyType.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.AnomalyType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.AnomalyType+  ( AnomalyType+      ( ..,+        AnomalyType_CAUSAL,+        AnomalyType_CONTEXTUAL+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AnomalyType = AnomalyType'+  { fromAnomalyType ::+      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 AnomalyType_CAUSAL :: AnomalyType+pattern AnomalyType_CAUSAL = AnomalyType' "CAUSAL"++pattern AnomalyType_CONTEXTUAL :: AnomalyType+pattern AnomalyType_CONTEXTUAL = AnomalyType' "CONTEXTUAL"++{-# COMPLETE+  AnomalyType_CAUSAL,+  AnomalyType_CONTEXTUAL,+  AnomalyType'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/CloudFormationCollection.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.DevOpsGuru.Types.CloudFormationCollection+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.CloudFormationCollection where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Information about Amazon Web Services CloudFormation stacks. You can use+-- up to 500 stacks to specify which Amazon Web Services resources in your+-- account to analyze. For more information, see+-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html Stacks>+-- in the /Amazon Web Services CloudFormation User Guide/.+--+-- /See:/ 'newCloudFormationCollection' smart constructor.+data CloudFormationCollection = CloudFormationCollection'+  { -- | An array of CloudFormation stack names.+    stackNames :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CloudFormationCollection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'stackNames', 'cloudFormationCollection_stackNames' - An array of CloudFormation stack names.+newCloudFormationCollection ::+  CloudFormationCollection+newCloudFormationCollection =+  CloudFormationCollection'+    { stackNames =+        Prelude.Nothing+    }++-- | An array of CloudFormation stack names.+cloudFormationCollection_stackNames :: Lens.Lens' CloudFormationCollection (Prelude.Maybe [Prelude.Text])+cloudFormationCollection_stackNames = Lens.lens (\CloudFormationCollection' {stackNames} -> stackNames) (\s@CloudFormationCollection' {} a -> s {stackNames = a} :: CloudFormationCollection) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON CloudFormationCollection where+  parseJSON =+    Data.withObject+      "CloudFormationCollection"+      ( \x ->+          CloudFormationCollection'+            Prelude.<$> (x Data..:? "StackNames" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable CloudFormationCollection where+  hashWithSalt _salt CloudFormationCollection' {..} =+    _salt `Prelude.hashWithSalt` stackNames++instance Prelude.NFData CloudFormationCollection where+  rnf CloudFormationCollection' {..} =+    Prelude.rnf stackNames++instance Data.ToJSON CloudFormationCollection where+  toJSON CloudFormationCollection' {..} =+    Data.object+      ( Prelude.catMaybes+          [("StackNames" Data..=) Prelude.<$> stackNames]+      )
+ gen/Amazonka/DevOpsGuru/Types/CloudFormationCollectionFilter.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.DevOpsGuru.Types.CloudFormationCollectionFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.CloudFormationCollectionFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Information about Amazon Web Services CloudFormation stacks. You can use+-- up to 500 stacks to specify which Amazon Web Services resources in your+-- account to analyze. For more information, see+-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html Stacks>+-- in the /Amazon Web Services CloudFormation User Guide/.+--+-- /See:/ 'newCloudFormationCollectionFilter' smart constructor.+data CloudFormationCollectionFilter = CloudFormationCollectionFilter'+  { -- | An array of CloudFormation stack names.+    stackNames :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CloudFormationCollectionFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'stackNames', 'cloudFormationCollectionFilter_stackNames' - An array of CloudFormation stack names.+newCloudFormationCollectionFilter ::+  CloudFormationCollectionFilter+newCloudFormationCollectionFilter =+  CloudFormationCollectionFilter'+    { stackNames =+        Prelude.Nothing+    }++-- | An array of CloudFormation stack names.+cloudFormationCollectionFilter_stackNames :: Lens.Lens' CloudFormationCollectionFilter (Prelude.Maybe [Prelude.Text])+cloudFormationCollectionFilter_stackNames = Lens.lens (\CloudFormationCollectionFilter' {stackNames} -> stackNames) (\s@CloudFormationCollectionFilter' {} a -> s {stackNames = a} :: CloudFormationCollectionFilter) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON CloudFormationCollectionFilter where+  parseJSON =+    Data.withObject+      "CloudFormationCollectionFilter"+      ( \x ->+          CloudFormationCollectionFilter'+            Prelude.<$> (x Data..:? "StackNames" Data..!= Prelude.mempty)+      )++instance+  Prelude.Hashable+    CloudFormationCollectionFilter+  where+  hashWithSalt+    _salt+    CloudFormationCollectionFilter' {..} =+      _salt `Prelude.hashWithSalt` stackNames++instance+  Prelude.NFData+    CloudFormationCollectionFilter+  where+  rnf CloudFormationCollectionFilter' {..} =+    Prelude.rnf stackNames
+ gen/Amazonka/DevOpsGuru/Types/CloudFormationCostEstimationResourceCollectionFilter.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.CloudFormationCostEstimationResourceCollectionFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.CloudFormationCostEstimationResourceCollectionFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Information about an Amazon Web Services CloudFormation stack used to+-- create a monthly cost estimate for DevOps Guru to analyze Amazon Web+-- Services resources. The maximum number of stacks you can specify for a+-- cost estimate is one. The estimate created is for the cost to analyze+-- the Amazon Web Services resources defined by the stack. For more+-- information, see+-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html Stacks>+-- in the /Amazon Web Services CloudFormation User Guide/.+--+-- /See:/ 'newCloudFormationCostEstimationResourceCollectionFilter' smart constructor.+data CloudFormationCostEstimationResourceCollectionFilter = CloudFormationCostEstimationResourceCollectionFilter'+  { -- | An array of CloudFormation stack names. Its size is fixed at 1 item.+    stackNames :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CloudFormationCostEstimationResourceCollectionFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'stackNames', 'cloudFormationCostEstimationResourceCollectionFilter_stackNames' - An array of CloudFormation stack names. Its size is fixed at 1 item.+newCloudFormationCostEstimationResourceCollectionFilter ::+  CloudFormationCostEstimationResourceCollectionFilter+newCloudFormationCostEstimationResourceCollectionFilter =+  CloudFormationCostEstimationResourceCollectionFilter'+    { stackNames =+        Prelude.Nothing+    }++-- | An array of CloudFormation stack names. Its size is fixed at 1 item.+cloudFormationCostEstimationResourceCollectionFilter_stackNames :: Lens.Lens' CloudFormationCostEstimationResourceCollectionFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+cloudFormationCostEstimationResourceCollectionFilter_stackNames = Lens.lens (\CloudFormationCostEstimationResourceCollectionFilter' {stackNames} -> stackNames) (\s@CloudFormationCostEstimationResourceCollectionFilter' {} a -> s {stackNames = a} :: CloudFormationCostEstimationResourceCollectionFilter) Prelude.. Lens.mapping Lens.coerced++instance+  Data.FromJSON+    CloudFormationCostEstimationResourceCollectionFilter+  where+  parseJSON =+    Data.withObject+      "CloudFormationCostEstimationResourceCollectionFilter"+      ( \x ->+          CloudFormationCostEstimationResourceCollectionFilter'+            Prelude.<$> (x Data..:? "StackNames")+      )++instance+  Prelude.Hashable+    CloudFormationCostEstimationResourceCollectionFilter+  where+  hashWithSalt+    _salt+    CloudFormationCostEstimationResourceCollectionFilter' {..} =+      _salt `Prelude.hashWithSalt` stackNames++instance+  Prelude.NFData+    CloudFormationCostEstimationResourceCollectionFilter+  where+  rnf+    CloudFormationCostEstimationResourceCollectionFilter' {..} =+      Prelude.rnf stackNames++instance+  Data.ToJSON+    CloudFormationCostEstimationResourceCollectionFilter+  where+  toJSON+    CloudFormationCostEstimationResourceCollectionFilter' {..} =+      Data.object+        ( Prelude.catMaybes+            [("StackNames" Data..=) Prelude.<$> stackNames]+        )
+ gen/Amazonka/DevOpsGuru/Types/CloudFormationHealth.hs view
@@ -0,0 +1,112 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.CloudFormationHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.CloudFormationHealth where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.InsightHealth+import qualified Amazonka.Prelude as Prelude++-- | Information about the health of Amazon Web Services resources in your+-- account that are specified by an Amazon Web Services CloudFormation+-- stack.+--+-- /See:/ 'newCloudFormationHealth' smart constructor.+data CloudFormationHealth = CloudFormationHealth'+  { -- | Number of resources that DevOps Guru is monitoring in your account that+    -- are specified by an Amazon Web Services CloudFormation stack.+    analyzedResourceCount :: Prelude.Maybe Prelude.Integer,+    -- | Information about the health of the Amazon Web Services resources in+    -- your account that are specified by an Amazon Web Services CloudFormation+    -- stack, including the number of open proactive, open reactive insights,+    -- and the Mean Time to Recover (MTTR) of closed insights.+    insight :: Prelude.Maybe InsightHealth,+    -- | The name of the CloudFormation stack.+    stackName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CloudFormationHealth' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'analyzedResourceCount', 'cloudFormationHealth_analyzedResourceCount' - Number of resources that DevOps Guru is monitoring in your account that+-- are specified by an Amazon Web Services CloudFormation stack.+--+-- 'insight', 'cloudFormationHealth_insight' - Information about the health of the Amazon Web Services resources in+-- your account that are specified by an Amazon Web Services CloudFormation+-- stack, including the number of open proactive, open reactive insights,+-- and the Mean Time to Recover (MTTR) of closed insights.+--+-- 'stackName', 'cloudFormationHealth_stackName' - The name of the CloudFormation stack.+newCloudFormationHealth ::+  CloudFormationHealth+newCloudFormationHealth =+  CloudFormationHealth'+    { analyzedResourceCount =+        Prelude.Nothing,+      insight = Prelude.Nothing,+      stackName = Prelude.Nothing+    }++-- | Number of resources that DevOps Guru is monitoring in your account that+-- are specified by an Amazon Web Services CloudFormation stack.+cloudFormationHealth_analyzedResourceCount :: Lens.Lens' CloudFormationHealth (Prelude.Maybe Prelude.Integer)+cloudFormationHealth_analyzedResourceCount = Lens.lens (\CloudFormationHealth' {analyzedResourceCount} -> analyzedResourceCount) (\s@CloudFormationHealth' {} a -> s {analyzedResourceCount = a} :: CloudFormationHealth)++-- | Information about the health of the Amazon Web Services resources in+-- your account that are specified by an Amazon Web Services CloudFormation+-- stack, including the number of open proactive, open reactive insights,+-- and the Mean Time to Recover (MTTR) of closed insights.+cloudFormationHealth_insight :: Lens.Lens' CloudFormationHealth (Prelude.Maybe InsightHealth)+cloudFormationHealth_insight = Lens.lens (\CloudFormationHealth' {insight} -> insight) (\s@CloudFormationHealth' {} a -> s {insight = a} :: CloudFormationHealth)++-- | The name of the CloudFormation stack.+cloudFormationHealth_stackName :: Lens.Lens' CloudFormationHealth (Prelude.Maybe Prelude.Text)+cloudFormationHealth_stackName = Lens.lens (\CloudFormationHealth' {stackName} -> stackName) (\s@CloudFormationHealth' {} a -> s {stackName = a} :: CloudFormationHealth)++instance Data.FromJSON CloudFormationHealth where+  parseJSON =+    Data.withObject+      "CloudFormationHealth"+      ( \x ->+          CloudFormationHealth'+            Prelude.<$> (x Data..:? "AnalyzedResourceCount")+            Prelude.<*> (x Data..:? "Insight")+            Prelude.<*> (x Data..:? "StackName")+      )++instance Prelude.Hashable CloudFormationHealth where+  hashWithSalt _salt CloudFormationHealth' {..} =+    _salt+      `Prelude.hashWithSalt` analyzedResourceCount+      `Prelude.hashWithSalt` insight+      `Prelude.hashWithSalt` stackName++instance Prelude.NFData CloudFormationHealth where+  rnf CloudFormationHealth' {..} =+    Prelude.rnf analyzedResourceCount+      `Prelude.seq` Prelude.rnf insight+      `Prelude.seq` Prelude.rnf stackName
+ gen/Amazonka/DevOpsGuru/Types/CloudWatchMetricDataStatusCode.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.CloudWatchMetricDataStatusCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.CloudWatchMetricDataStatusCode+  ( CloudWatchMetricDataStatusCode+      ( ..,+        CloudWatchMetricDataStatusCode_Complete,+        CloudWatchMetricDataStatusCode_InternalError,+        CloudWatchMetricDataStatusCode_PartialData+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype CloudWatchMetricDataStatusCode = CloudWatchMetricDataStatusCode'+  { fromCloudWatchMetricDataStatusCode ::+      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 CloudWatchMetricDataStatusCode_Complete :: CloudWatchMetricDataStatusCode+pattern CloudWatchMetricDataStatusCode_Complete = CloudWatchMetricDataStatusCode' "Complete"++pattern CloudWatchMetricDataStatusCode_InternalError :: CloudWatchMetricDataStatusCode+pattern CloudWatchMetricDataStatusCode_InternalError = CloudWatchMetricDataStatusCode' "InternalError"++pattern CloudWatchMetricDataStatusCode_PartialData :: CloudWatchMetricDataStatusCode+pattern CloudWatchMetricDataStatusCode_PartialData = CloudWatchMetricDataStatusCode' "PartialData"++{-# COMPLETE+  CloudWatchMetricDataStatusCode_Complete,+  CloudWatchMetricDataStatusCode_InternalError,+  CloudWatchMetricDataStatusCode_PartialData,+  CloudWatchMetricDataStatusCode'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/CloudWatchMetricsDataSummary.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.DevOpsGuru.Types.CloudWatchMetricsDataSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.CloudWatchMetricsDataSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.CloudWatchMetricDataStatusCode+import Amazonka.DevOpsGuru.Types.TimestampMetricValuePair+import qualified Amazonka.Prelude as Prelude++-- | Contains information about the analyzed metrics that displayed anomalous+-- behavior.+--+-- /See:/ 'newCloudWatchMetricsDataSummary' smart constructor.+data CloudWatchMetricsDataSummary = CloudWatchMetricsDataSummary'+  { -- | This is an enum of the status showing whether the metric value pair list+    -- has partial or complete data, or if there was an error.+    statusCode :: Prelude.Maybe CloudWatchMetricDataStatusCode,+    -- | This is a list of Amazon CloudWatch metric values at given timestamp.+    timestampMetricValuePairList :: Prelude.Maybe [TimestampMetricValuePair]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CloudWatchMetricsDataSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'statusCode', 'cloudWatchMetricsDataSummary_statusCode' - This is an enum of the status showing whether the metric value pair list+-- has partial or complete data, or if there was an error.+--+-- 'timestampMetricValuePairList', 'cloudWatchMetricsDataSummary_timestampMetricValuePairList' - This is a list of Amazon CloudWatch metric values at given timestamp.+newCloudWatchMetricsDataSummary ::+  CloudWatchMetricsDataSummary+newCloudWatchMetricsDataSummary =+  CloudWatchMetricsDataSummary'+    { statusCode =+        Prelude.Nothing,+      timestampMetricValuePairList =+        Prelude.Nothing+    }++-- | This is an enum of the status showing whether the metric value pair list+-- has partial or complete data, or if there was an error.+cloudWatchMetricsDataSummary_statusCode :: Lens.Lens' CloudWatchMetricsDataSummary (Prelude.Maybe CloudWatchMetricDataStatusCode)+cloudWatchMetricsDataSummary_statusCode = Lens.lens (\CloudWatchMetricsDataSummary' {statusCode} -> statusCode) (\s@CloudWatchMetricsDataSummary' {} a -> s {statusCode = a} :: CloudWatchMetricsDataSummary)++-- | This is a list of Amazon CloudWatch metric values at given timestamp.+cloudWatchMetricsDataSummary_timestampMetricValuePairList :: Lens.Lens' CloudWatchMetricsDataSummary (Prelude.Maybe [TimestampMetricValuePair])+cloudWatchMetricsDataSummary_timestampMetricValuePairList = Lens.lens (\CloudWatchMetricsDataSummary' {timestampMetricValuePairList} -> timestampMetricValuePairList) (\s@CloudWatchMetricsDataSummary' {} a -> s {timestampMetricValuePairList = a} :: CloudWatchMetricsDataSummary) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON CloudWatchMetricsDataSummary where+  parseJSON =+    Data.withObject+      "CloudWatchMetricsDataSummary"+      ( \x ->+          CloudWatchMetricsDataSummary'+            Prelude.<$> (x Data..:? "StatusCode")+            Prelude.<*> ( x+                            Data..:? "TimestampMetricValuePairList"+                            Data..!= Prelude.mempty+                        )+      )++instance+  Prelude.Hashable+    CloudWatchMetricsDataSummary+  where+  hashWithSalt _salt CloudWatchMetricsDataSummary' {..} =+    _salt+      `Prelude.hashWithSalt` statusCode+      `Prelude.hashWithSalt` timestampMetricValuePairList++instance Prelude.NFData CloudWatchMetricsDataSummary where+  rnf CloudWatchMetricsDataSummary' {..} =+    Prelude.rnf statusCode+      `Prelude.seq` Prelude.rnf timestampMetricValuePairList
+ gen/Amazonka/DevOpsGuru/Types/CloudWatchMetricsDetail.hs view
@@ -0,0 +1,166 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.CloudWatchMetricsDetail+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.CloudWatchMetricsDetail where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.CloudWatchMetricsDataSummary+import Amazonka.DevOpsGuru.Types.CloudWatchMetricsDimension+import Amazonka.DevOpsGuru.Types.CloudWatchMetricsStat+import qualified Amazonka.Prelude as Prelude++-- | Information about an Amazon CloudWatch metric.+--+-- /See:/ 'newCloudWatchMetricsDetail' smart constructor.+data CloudWatchMetricsDetail = CloudWatchMetricsDetail'+  { -- | An array of CloudWatch dimensions associated with+    dimensions :: Prelude.Maybe [CloudWatchMetricsDimension],+    -- | This object returns anomaly metric data.+    metricDataSummary :: Prelude.Maybe CloudWatchMetricsDataSummary,+    -- | The name of the CloudWatch metric.+    metricName :: Prelude.Maybe Prelude.Text,+    -- | The namespace of the CloudWatch metric. A namespace is a container for+    -- CloudWatch metrics.+    namespace :: Prelude.Maybe Prelude.Text,+    -- | The length of time associated with the CloudWatch metric in number of+    -- seconds.+    period :: Prelude.Maybe Prelude.Int,+    -- | The type of statistic associated with the CloudWatch metric. For more+    -- information, see+    -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Statistic Statistics>+    -- in the /Amazon CloudWatch User Guide/.+    stat :: Prelude.Maybe CloudWatchMetricsStat,+    -- | The unit of measure used for the CloudWatch metric. For example,+    -- @Bytes@, @Seconds@, @Count@, and @Percent@.+    unit :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CloudWatchMetricsDetail' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dimensions', 'cloudWatchMetricsDetail_dimensions' - An array of CloudWatch dimensions associated with+--+-- 'metricDataSummary', 'cloudWatchMetricsDetail_metricDataSummary' - This object returns anomaly metric data.+--+-- 'metricName', 'cloudWatchMetricsDetail_metricName' - The name of the CloudWatch metric.+--+-- 'namespace', 'cloudWatchMetricsDetail_namespace' - The namespace of the CloudWatch metric. A namespace is a container for+-- CloudWatch metrics.+--+-- 'period', 'cloudWatchMetricsDetail_period' - The length of time associated with the CloudWatch metric in number of+-- seconds.+--+-- 'stat', 'cloudWatchMetricsDetail_stat' - The type of statistic associated with the CloudWatch metric. For more+-- information, see+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Statistic Statistics>+-- in the /Amazon CloudWatch User Guide/.+--+-- 'unit', 'cloudWatchMetricsDetail_unit' - The unit of measure used for the CloudWatch metric. For example,+-- @Bytes@, @Seconds@, @Count@, and @Percent@.+newCloudWatchMetricsDetail ::+  CloudWatchMetricsDetail+newCloudWatchMetricsDetail =+  CloudWatchMetricsDetail'+    { dimensions =+        Prelude.Nothing,+      metricDataSummary = Prelude.Nothing,+      metricName = Prelude.Nothing,+      namespace = Prelude.Nothing,+      period = Prelude.Nothing,+      stat = Prelude.Nothing,+      unit = Prelude.Nothing+    }++-- | An array of CloudWatch dimensions associated with+cloudWatchMetricsDetail_dimensions :: Lens.Lens' CloudWatchMetricsDetail (Prelude.Maybe [CloudWatchMetricsDimension])+cloudWatchMetricsDetail_dimensions = Lens.lens (\CloudWatchMetricsDetail' {dimensions} -> dimensions) (\s@CloudWatchMetricsDetail' {} a -> s {dimensions = a} :: CloudWatchMetricsDetail) Prelude.. Lens.mapping Lens.coerced++-- | This object returns anomaly metric data.+cloudWatchMetricsDetail_metricDataSummary :: Lens.Lens' CloudWatchMetricsDetail (Prelude.Maybe CloudWatchMetricsDataSummary)+cloudWatchMetricsDetail_metricDataSummary = Lens.lens (\CloudWatchMetricsDetail' {metricDataSummary} -> metricDataSummary) (\s@CloudWatchMetricsDetail' {} a -> s {metricDataSummary = a} :: CloudWatchMetricsDetail)++-- | The name of the CloudWatch metric.+cloudWatchMetricsDetail_metricName :: Lens.Lens' CloudWatchMetricsDetail (Prelude.Maybe Prelude.Text)+cloudWatchMetricsDetail_metricName = Lens.lens (\CloudWatchMetricsDetail' {metricName} -> metricName) (\s@CloudWatchMetricsDetail' {} a -> s {metricName = a} :: CloudWatchMetricsDetail)++-- | The namespace of the CloudWatch metric. A namespace is a container for+-- CloudWatch metrics.+cloudWatchMetricsDetail_namespace :: Lens.Lens' CloudWatchMetricsDetail (Prelude.Maybe Prelude.Text)+cloudWatchMetricsDetail_namespace = Lens.lens (\CloudWatchMetricsDetail' {namespace} -> namespace) (\s@CloudWatchMetricsDetail' {} a -> s {namespace = a} :: CloudWatchMetricsDetail)++-- | The length of time associated with the CloudWatch metric in number of+-- seconds.+cloudWatchMetricsDetail_period :: Lens.Lens' CloudWatchMetricsDetail (Prelude.Maybe Prelude.Int)+cloudWatchMetricsDetail_period = Lens.lens (\CloudWatchMetricsDetail' {period} -> period) (\s@CloudWatchMetricsDetail' {} a -> s {period = a} :: CloudWatchMetricsDetail)++-- | The type of statistic associated with the CloudWatch metric. For more+-- information, see+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Statistic Statistics>+-- in the /Amazon CloudWatch User Guide/.+cloudWatchMetricsDetail_stat :: Lens.Lens' CloudWatchMetricsDetail (Prelude.Maybe CloudWatchMetricsStat)+cloudWatchMetricsDetail_stat = Lens.lens (\CloudWatchMetricsDetail' {stat} -> stat) (\s@CloudWatchMetricsDetail' {} a -> s {stat = a} :: CloudWatchMetricsDetail)++-- | The unit of measure used for the CloudWatch metric. For example,+-- @Bytes@, @Seconds@, @Count@, and @Percent@.+cloudWatchMetricsDetail_unit :: Lens.Lens' CloudWatchMetricsDetail (Prelude.Maybe Prelude.Text)+cloudWatchMetricsDetail_unit = Lens.lens (\CloudWatchMetricsDetail' {unit} -> unit) (\s@CloudWatchMetricsDetail' {} a -> s {unit = a} :: CloudWatchMetricsDetail)++instance Data.FromJSON CloudWatchMetricsDetail where+  parseJSON =+    Data.withObject+      "CloudWatchMetricsDetail"+      ( \x ->+          CloudWatchMetricsDetail'+            Prelude.<$> (x Data..:? "Dimensions" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "MetricDataSummary")+            Prelude.<*> (x Data..:? "MetricName")+            Prelude.<*> (x Data..:? "Namespace")+            Prelude.<*> (x Data..:? "Period")+            Prelude.<*> (x Data..:? "Stat")+            Prelude.<*> (x Data..:? "Unit")+      )++instance Prelude.Hashable CloudWatchMetricsDetail where+  hashWithSalt _salt CloudWatchMetricsDetail' {..} =+    _salt+      `Prelude.hashWithSalt` dimensions+      `Prelude.hashWithSalt` metricDataSummary+      `Prelude.hashWithSalt` metricName+      `Prelude.hashWithSalt` namespace+      `Prelude.hashWithSalt` period+      `Prelude.hashWithSalt` stat+      `Prelude.hashWithSalt` unit++instance Prelude.NFData CloudWatchMetricsDetail where+  rnf CloudWatchMetricsDetail' {..} =+    Prelude.rnf dimensions+      `Prelude.seq` Prelude.rnf metricDataSummary+      `Prelude.seq` Prelude.rnf metricName+      `Prelude.seq` Prelude.rnf namespace+      `Prelude.seq` Prelude.rnf period+      `Prelude.seq` Prelude.rnf stat+      `Prelude.seq` Prelude.rnf unit
+ gen/Amazonka/DevOpsGuru/Types/CloudWatchMetricsDimension.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.CloudWatchMetricsDimension+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.CloudWatchMetricsDimension where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The dimension of an Amazon CloudWatch metric that is used when DevOps+-- Guru analyzes the resources in your account for operational problems and+-- anomalous behavior. A dimension is a name\/value pair that is part of+-- the identity of a metric. A metric can have up to 10 dimensions. For+-- more information, see+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension Dimensions>+-- in the /Amazon CloudWatch User Guide/.+--+-- /See:/ 'newCloudWatchMetricsDimension' smart constructor.+data CloudWatchMetricsDimension = CloudWatchMetricsDimension'+  { -- | The name of the CloudWatch dimension.+    name :: Prelude.Maybe Prelude.Text,+    -- | The value of the CloudWatch dimension.+    value :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CloudWatchMetricsDimension' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'cloudWatchMetricsDimension_name' - The name of the CloudWatch dimension.+--+-- 'value', 'cloudWatchMetricsDimension_value' - The value of the CloudWatch dimension.+newCloudWatchMetricsDimension ::+  CloudWatchMetricsDimension+newCloudWatchMetricsDimension =+  CloudWatchMetricsDimension'+    { name = Prelude.Nothing,+      value = Prelude.Nothing+    }++-- | The name of the CloudWatch dimension.+cloudWatchMetricsDimension_name :: Lens.Lens' CloudWatchMetricsDimension (Prelude.Maybe Prelude.Text)+cloudWatchMetricsDimension_name = Lens.lens (\CloudWatchMetricsDimension' {name} -> name) (\s@CloudWatchMetricsDimension' {} a -> s {name = a} :: CloudWatchMetricsDimension)++-- | The value of the CloudWatch dimension.+cloudWatchMetricsDimension_value :: Lens.Lens' CloudWatchMetricsDimension (Prelude.Maybe Prelude.Text)+cloudWatchMetricsDimension_value = Lens.lens (\CloudWatchMetricsDimension' {value} -> value) (\s@CloudWatchMetricsDimension' {} a -> s {value = a} :: CloudWatchMetricsDimension)++instance Data.FromJSON CloudWatchMetricsDimension where+  parseJSON =+    Data.withObject+      "CloudWatchMetricsDimension"+      ( \x ->+          CloudWatchMetricsDimension'+            Prelude.<$> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Value")+      )++instance Prelude.Hashable CloudWatchMetricsDimension where+  hashWithSalt _salt CloudWatchMetricsDimension' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` value++instance Prelude.NFData CloudWatchMetricsDimension where+  rnf CloudWatchMetricsDimension' {..} =+    Prelude.rnf name `Prelude.seq` Prelude.rnf value
+ gen/Amazonka/DevOpsGuru/Types/CloudWatchMetricsStat.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.DevOpsGuru.Types.CloudWatchMetricsStat+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.CloudWatchMetricsStat+  ( CloudWatchMetricsStat+      ( ..,+        CloudWatchMetricsStat_Average,+        CloudWatchMetricsStat_Maximum,+        CloudWatchMetricsStat_Minimum,+        CloudWatchMetricsStat_P50,+        CloudWatchMetricsStat_P90,+        CloudWatchMetricsStat_P99,+        CloudWatchMetricsStat_SampleCount,+        CloudWatchMetricsStat_Sum+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype CloudWatchMetricsStat = CloudWatchMetricsStat'+  { fromCloudWatchMetricsStat ::+      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 CloudWatchMetricsStat_Average :: CloudWatchMetricsStat+pattern CloudWatchMetricsStat_Average = CloudWatchMetricsStat' "Average"++pattern CloudWatchMetricsStat_Maximum :: CloudWatchMetricsStat+pattern CloudWatchMetricsStat_Maximum = CloudWatchMetricsStat' "Maximum"++pattern CloudWatchMetricsStat_Minimum :: CloudWatchMetricsStat+pattern CloudWatchMetricsStat_Minimum = CloudWatchMetricsStat' "Minimum"++pattern CloudWatchMetricsStat_P50 :: CloudWatchMetricsStat+pattern CloudWatchMetricsStat_P50 = CloudWatchMetricsStat' "p50"++pattern CloudWatchMetricsStat_P90 :: CloudWatchMetricsStat+pattern CloudWatchMetricsStat_P90 = CloudWatchMetricsStat' "p90"++pattern CloudWatchMetricsStat_P99 :: CloudWatchMetricsStat+pattern CloudWatchMetricsStat_P99 = CloudWatchMetricsStat' "p99"++pattern CloudWatchMetricsStat_SampleCount :: CloudWatchMetricsStat+pattern CloudWatchMetricsStat_SampleCount = CloudWatchMetricsStat' "SampleCount"++pattern CloudWatchMetricsStat_Sum :: CloudWatchMetricsStat+pattern CloudWatchMetricsStat_Sum = CloudWatchMetricsStat' "Sum"++{-# COMPLETE+  CloudWatchMetricsStat_Average,+  CloudWatchMetricsStat_Maximum,+  CloudWatchMetricsStat_Minimum,+  CloudWatchMetricsStat_P50,+  CloudWatchMetricsStat_P90,+  CloudWatchMetricsStat_P99,+  CloudWatchMetricsStat_SampleCount,+  CloudWatchMetricsStat_Sum,+  CloudWatchMetricsStat'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/CostEstimationResourceCollectionFilter.hs view
@@ -0,0 +1,221 @@+{-# 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.DevOpsGuru.Types.CostEstimationResourceCollectionFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.CostEstimationResourceCollectionFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.CloudFormationCostEstimationResourceCollectionFilter+import Amazonka.DevOpsGuru.Types.TagCostEstimationResourceCollectionFilter+import qualified Amazonka.Prelude as Prelude++-- | Information about a filter used to specify which Amazon Web Services+-- resources are analyzed to create a monthly DevOps Guru cost estimate.+-- For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/cost-estimate.html Estimate your Amazon DevOps Guru costs>+-- and+-- <http://aws.amazon.com/devops-guru/pricing/ Amazon DevOps Guru pricing>.+--+-- /See:/ 'newCostEstimationResourceCollectionFilter' smart constructor.+data CostEstimationResourceCollectionFilter = CostEstimationResourceCollectionFilter'+  { -- | An object that specifies the CloudFormation stack that defines the+    -- Amazon Web Services resources used to create a monthly estimate for+    -- DevOps Guru.+    cloudFormation :: Prelude.Maybe CloudFormationCostEstimationResourceCollectionFilter,+    -- | The Amazon Web Services tags used to filter the resource collection that+    -- is used for a cost estimate.+    --+    -- Tags help you identify and organize your Amazon Web Services resources.+    -- Many Amazon Web Services services support tagging, so you can assign the+    -- same tag to resources from different services to indicate that the+    -- resources are related. For example, you can assign the same tag to an+    -- Amazon DynamoDB table resource that you assign to an Lambda function.+    -- For more information about using tags, see the+    -- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+    -- whitepaper.+    --+    -- Each Amazon Web Services tag has two parts.+    --+    -- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+    --     @Secret@). Tag /keys/ are case-sensitive.+    --+    -- -   An optional field known as a tag /value/ (for example,+    --     @111122223333@, @Production@, or a team name). Omitting the tag+    --     /value/ is the same as using an empty string. Like tag /keys/, tag+    --     /values/ are case-sensitive.+    --+    -- Together these are known as /key/-/value/ pairs.+    --+    -- The string used for a /key/ in a tag that you use to define your+    -- resource coverage must begin with the prefix @Devops-guru-@. The tag+    -- /key/ might be @DevOps-Guru-deployment-application@ or+    -- @devops-guru-rds-application@. When you create a /key/, the case of+    -- characters in the /key/ can be whatever you choose. After you create a+    -- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+    -- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+    -- act as two different /keys/. Possible /key/\//value/ pairs in your+    -- application might be @Devops-Guru-production-application\/RDS@ or+    -- @Devops-Guru-production-application\/containers@.+    tags :: Prelude.Maybe [TagCostEstimationResourceCollectionFilter]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CostEstimationResourceCollectionFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cloudFormation', 'costEstimationResourceCollectionFilter_cloudFormation' - An object that specifies the CloudFormation stack that defines the+-- Amazon Web Services resources used to create a monthly estimate for+-- DevOps Guru.+--+-- 'tags', 'costEstimationResourceCollectionFilter_tags' - The Amazon Web Services tags used to filter the resource collection that+-- is used for a cost estimate.+--+-- Tags help you identify and organize your Amazon Web Services resources.+-- Many Amazon Web Services services support tagging, so you can assign the+-- same tag to resources from different services to indicate that the+-- resources are related. For example, you can assign the same tag to an+-- Amazon DynamoDB table resource that you assign to an Lambda function.+-- For more information about using tags, see the+-- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+-- whitepaper.+--+-- Each Amazon Web Services tag has two parts.+--+-- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+--     @Secret@). Tag /keys/ are case-sensitive.+--+-- -   An optional field known as a tag /value/ (for example,+--     @111122223333@, @Production@, or a team name). Omitting the tag+--     /value/ is the same as using an empty string. Like tag /keys/, tag+--     /values/ are case-sensitive.+--+-- Together these are known as /key/-/value/ pairs.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+newCostEstimationResourceCollectionFilter ::+  CostEstimationResourceCollectionFilter+newCostEstimationResourceCollectionFilter =+  CostEstimationResourceCollectionFilter'+    { cloudFormation =+        Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | An object that specifies the CloudFormation stack that defines the+-- Amazon Web Services resources used to create a monthly estimate for+-- DevOps Guru.+costEstimationResourceCollectionFilter_cloudFormation :: Lens.Lens' CostEstimationResourceCollectionFilter (Prelude.Maybe CloudFormationCostEstimationResourceCollectionFilter)+costEstimationResourceCollectionFilter_cloudFormation = Lens.lens (\CostEstimationResourceCollectionFilter' {cloudFormation} -> cloudFormation) (\s@CostEstimationResourceCollectionFilter' {} a -> s {cloudFormation = a} :: CostEstimationResourceCollectionFilter)++-- | The Amazon Web Services tags used to filter the resource collection that+-- is used for a cost estimate.+--+-- Tags help you identify and organize your Amazon Web Services resources.+-- Many Amazon Web Services services support tagging, so you can assign the+-- same tag to resources from different services to indicate that the+-- resources are related. For example, you can assign the same tag to an+-- Amazon DynamoDB table resource that you assign to an Lambda function.+-- For more information about using tags, see the+-- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+-- whitepaper.+--+-- Each Amazon Web Services tag has two parts.+--+-- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+--     @Secret@). Tag /keys/ are case-sensitive.+--+-- -   An optional field known as a tag /value/ (for example,+--     @111122223333@, @Production@, or a team name). Omitting the tag+--     /value/ is the same as using an empty string. Like tag /keys/, tag+--     /values/ are case-sensitive.+--+-- Together these are known as /key/-/value/ pairs.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+costEstimationResourceCollectionFilter_tags :: Lens.Lens' CostEstimationResourceCollectionFilter (Prelude.Maybe [TagCostEstimationResourceCollectionFilter])+costEstimationResourceCollectionFilter_tags = Lens.lens (\CostEstimationResourceCollectionFilter' {tags} -> tags) (\s@CostEstimationResourceCollectionFilter' {} a -> s {tags = a} :: CostEstimationResourceCollectionFilter) Prelude.. Lens.mapping Lens.coerced++instance+  Data.FromJSON+    CostEstimationResourceCollectionFilter+  where+  parseJSON =+    Data.withObject+      "CostEstimationResourceCollectionFilter"+      ( \x ->+          CostEstimationResourceCollectionFilter'+            Prelude.<$> (x Data..:? "CloudFormation")+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)+      )++instance+  Prelude.Hashable+    CostEstimationResourceCollectionFilter+  where+  hashWithSalt+    _salt+    CostEstimationResourceCollectionFilter' {..} =+      _salt+        `Prelude.hashWithSalt` cloudFormation+        `Prelude.hashWithSalt` tags++instance+  Prelude.NFData+    CostEstimationResourceCollectionFilter+  where+  rnf CostEstimationResourceCollectionFilter' {..} =+    Prelude.rnf cloudFormation+      `Prelude.seq` Prelude.rnf tags++instance+  Data.ToJSON+    CostEstimationResourceCollectionFilter+  where+  toJSON CostEstimationResourceCollectionFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CloudFormation" Data..=)+              Prelude.<$> cloudFormation,+            ("Tags" Data..=) Prelude.<$> tags+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/CostEstimationServiceResourceState.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.CostEstimationServiceResourceState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.CostEstimationServiceResourceState+  ( CostEstimationServiceResourceState+      ( ..,+        CostEstimationServiceResourceState_ACTIVE,+        CostEstimationServiceResourceState_INACTIVE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype CostEstimationServiceResourceState = CostEstimationServiceResourceState'+  { fromCostEstimationServiceResourceState ::+      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 CostEstimationServiceResourceState_ACTIVE :: CostEstimationServiceResourceState+pattern CostEstimationServiceResourceState_ACTIVE = CostEstimationServiceResourceState' "ACTIVE"++pattern CostEstimationServiceResourceState_INACTIVE :: CostEstimationServiceResourceState+pattern CostEstimationServiceResourceState_INACTIVE = CostEstimationServiceResourceState' "INACTIVE"++{-# COMPLETE+  CostEstimationServiceResourceState_ACTIVE,+  CostEstimationServiceResourceState_INACTIVE,+  CostEstimationServiceResourceState'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/CostEstimationStatus.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.CostEstimationStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.CostEstimationStatus+  ( CostEstimationStatus+      ( ..,+        CostEstimationStatus_COMPLETED,+        CostEstimationStatus_ONGOING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype CostEstimationStatus = CostEstimationStatus'+  { fromCostEstimationStatus ::+      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 CostEstimationStatus_COMPLETED :: CostEstimationStatus+pattern CostEstimationStatus_COMPLETED = CostEstimationStatus' "COMPLETED"++pattern CostEstimationStatus_ONGOING :: CostEstimationStatus+pattern CostEstimationStatus_ONGOING = CostEstimationStatus' "ONGOING"++{-# COMPLETE+  CostEstimationStatus_COMPLETED,+  CostEstimationStatus_ONGOING,+  CostEstimationStatus'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/CostEstimationTimeRange.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.DevOpsGuru.Types.CostEstimationTimeRange+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.CostEstimationTimeRange where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The time range of a cost estimation.+--+-- /See:/ 'newCostEstimationTimeRange' smart constructor.+data CostEstimationTimeRange = CostEstimationTimeRange'+  { -- | The end time of the cost estimation.+    endTime :: Prelude.Maybe Data.POSIX,+    -- | The start time of the cost estimation.+    startTime :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CostEstimationTimeRange' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endTime', 'costEstimationTimeRange_endTime' - The end time of the cost estimation.+--+-- 'startTime', 'costEstimationTimeRange_startTime' - The start time of the cost estimation.+newCostEstimationTimeRange ::+  CostEstimationTimeRange+newCostEstimationTimeRange =+  CostEstimationTimeRange'+    { endTime = Prelude.Nothing,+      startTime = Prelude.Nothing+    }++-- | The end time of the cost estimation.+costEstimationTimeRange_endTime :: Lens.Lens' CostEstimationTimeRange (Prelude.Maybe Prelude.UTCTime)+costEstimationTimeRange_endTime = Lens.lens (\CostEstimationTimeRange' {endTime} -> endTime) (\s@CostEstimationTimeRange' {} a -> s {endTime = a} :: CostEstimationTimeRange) Prelude.. Lens.mapping Data._Time++-- | The start time of the cost estimation.+costEstimationTimeRange_startTime :: Lens.Lens' CostEstimationTimeRange (Prelude.Maybe Prelude.UTCTime)+costEstimationTimeRange_startTime = Lens.lens (\CostEstimationTimeRange' {startTime} -> startTime) (\s@CostEstimationTimeRange' {} a -> s {startTime = a} :: CostEstimationTimeRange) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON CostEstimationTimeRange where+  parseJSON =+    Data.withObject+      "CostEstimationTimeRange"+      ( \x ->+          CostEstimationTimeRange'+            Prelude.<$> (x Data..:? "EndTime")+            Prelude.<*> (x Data..:? "StartTime")+      )++instance Prelude.Hashable CostEstimationTimeRange where+  hashWithSalt _salt CostEstimationTimeRange' {..} =+    _salt+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` startTime++instance Prelude.NFData CostEstimationTimeRange where+  rnf CostEstimationTimeRange' {..} =+    Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf startTime
+ gen/Amazonka/DevOpsGuru/Types/EndTimeRange.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.DevOpsGuru.Types.EndTimeRange+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.EndTimeRange where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A range of time that specifies when anomalous behavior in an anomaly or+-- insight ended.+--+-- /See:/ 'newEndTimeRange' smart constructor.+data EndTimeRange = EndTimeRange'+  { -- | The earliest end time in the time range.+    fromTime :: Prelude.Maybe Data.POSIX,+    -- | The latest end time in the time range.+    toTime :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EndTimeRange' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fromTime', 'endTimeRange_fromTime' - The earliest end time in the time range.+--+-- 'toTime', 'endTimeRange_toTime' - The latest end time in the time range.+newEndTimeRange ::+  EndTimeRange+newEndTimeRange =+  EndTimeRange'+    { fromTime = Prelude.Nothing,+      toTime = Prelude.Nothing+    }++-- | The earliest end time in the time range.+endTimeRange_fromTime :: Lens.Lens' EndTimeRange (Prelude.Maybe Prelude.UTCTime)+endTimeRange_fromTime = Lens.lens (\EndTimeRange' {fromTime} -> fromTime) (\s@EndTimeRange' {} a -> s {fromTime = a} :: EndTimeRange) Prelude.. Lens.mapping Data._Time++-- | The latest end time in the time range.+endTimeRange_toTime :: Lens.Lens' EndTimeRange (Prelude.Maybe Prelude.UTCTime)+endTimeRange_toTime = Lens.lens (\EndTimeRange' {toTime} -> toTime) (\s@EndTimeRange' {} a -> s {toTime = a} :: EndTimeRange) Prelude.. Lens.mapping Data._Time++instance Prelude.Hashable EndTimeRange where+  hashWithSalt _salt EndTimeRange' {..} =+    _salt+      `Prelude.hashWithSalt` fromTime+      `Prelude.hashWithSalt` toTime++instance Prelude.NFData EndTimeRange where+  rnf EndTimeRange' {..} =+    Prelude.rnf fromTime+      `Prelude.seq` Prelude.rnf toTime++instance Data.ToJSON EndTimeRange where+  toJSON EndTimeRange' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("FromTime" Data..=) Prelude.<$> fromTime,+            ("ToTime" Data..=) Prelude.<$> toTime+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/Event.hs view
@@ -0,0 +1,171 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.Event+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.Event where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.EventClass+import Amazonka.DevOpsGuru.Types.EventDataSource+import Amazonka.DevOpsGuru.Types.EventResource+import Amazonka.DevOpsGuru.Types.ResourceCollection+import qualified Amazonka.Prelude as Prelude++-- | An Amazon Web Services resource event. Amazon Web Services resource+-- events and metrics are analyzed by DevOps Guru to find anomalous+-- behavior and provide recommendations to improve your operational+-- solutions.+--+-- /See:/ 'newEvent' smart constructor.+data Event = Event'+  { -- | The source, @AWS_CLOUD_TRAIL@ or @AWS_CODE_DEPLOY@, where DevOps Guru+    -- analysis found the event.+    dataSource :: Prelude.Maybe EventDataSource,+    -- | The class of the event. The class specifies what the event is related+    -- to, such as an infrastructure change, a deployment, or a schema change.+    eventClass :: Prelude.Maybe EventClass,+    -- | The Amazon Web Services source that emitted the event.+    eventSource :: Prelude.Maybe Prelude.Text,+    -- | The ID of the event.+    id :: Prelude.Maybe Prelude.Text,+    -- | The name of the event.+    name :: Prelude.Maybe Prelude.Text,+    resourceCollection :: Prelude.Maybe ResourceCollection,+    -- | An @EventResource@ object that contains information about the resource+    -- that emitted the event.+    resources :: Prelude.Maybe [EventResource],+    -- | A @Timestamp@ that specifies the time the event occurred.+    time :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Event' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dataSource', 'event_dataSource' - The source, @AWS_CLOUD_TRAIL@ or @AWS_CODE_DEPLOY@, where DevOps Guru+-- analysis found the event.+--+-- 'eventClass', 'event_eventClass' - The class of the event. The class specifies what the event is related+-- to, such as an infrastructure change, a deployment, or a schema change.+--+-- 'eventSource', 'event_eventSource' - The Amazon Web Services source that emitted the event.+--+-- 'id', 'event_id' - The ID of the event.+--+-- 'name', 'event_name' - The name of the event.+--+-- 'resourceCollection', 'event_resourceCollection' - Undocumented member.+--+-- 'resources', 'event_resources' - An @EventResource@ object that contains information about the resource+-- that emitted the event.+--+-- 'time', 'event_time' - A @Timestamp@ that specifies the time the event occurred.+newEvent ::+  Event+newEvent =+  Event'+    { dataSource = Prelude.Nothing,+      eventClass = Prelude.Nothing,+      eventSource = Prelude.Nothing,+      id = Prelude.Nothing,+      name = Prelude.Nothing,+      resourceCollection = Prelude.Nothing,+      resources = Prelude.Nothing,+      time = Prelude.Nothing+    }++-- | The source, @AWS_CLOUD_TRAIL@ or @AWS_CODE_DEPLOY@, where DevOps Guru+-- analysis found the event.+event_dataSource :: Lens.Lens' Event (Prelude.Maybe EventDataSource)+event_dataSource = Lens.lens (\Event' {dataSource} -> dataSource) (\s@Event' {} a -> s {dataSource = a} :: Event)++-- | The class of the event. The class specifies what the event is related+-- to, such as an infrastructure change, a deployment, or a schema change.+event_eventClass :: Lens.Lens' Event (Prelude.Maybe EventClass)+event_eventClass = Lens.lens (\Event' {eventClass} -> eventClass) (\s@Event' {} a -> s {eventClass = a} :: Event)++-- | The Amazon Web Services source that emitted the event.+event_eventSource :: Lens.Lens' Event (Prelude.Maybe Prelude.Text)+event_eventSource = Lens.lens (\Event' {eventSource} -> eventSource) (\s@Event' {} a -> s {eventSource = a} :: Event)++-- | The ID of the event.+event_id :: Lens.Lens' Event (Prelude.Maybe Prelude.Text)+event_id = Lens.lens (\Event' {id} -> id) (\s@Event' {} a -> s {id = a} :: Event)++-- | The name of the event.+event_name :: Lens.Lens' Event (Prelude.Maybe Prelude.Text)+event_name = Lens.lens (\Event' {name} -> name) (\s@Event' {} a -> s {name = a} :: Event)++-- | Undocumented member.+event_resourceCollection :: Lens.Lens' Event (Prelude.Maybe ResourceCollection)+event_resourceCollection = Lens.lens (\Event' {resourceCollection} -> resourceCollection) (\s@Event' {} a -> s {resourceCollection = a} :: Event)++-- | An @EventResource@ object that contains information about the resource+-- that emitted the event.+event_resources :: Lens.Lens' Event (Prelude.Maybe [EventResource])+event_resources = Lens.lens (\Event' {resources} -> resources) (\s@Event' {} a -> s {resources = a} :: Event) Prelude.. Lens.mapping Lens.coerced++-- | A @Timestamp@ that specifies the time the event occurred.+event_time :: Lens.Lens' Event (Prelude.Maybe Prelude.UTCTime)+event_time = Lens.lens (\Event' {time} -> time) (\s@Event' {} a -> s {time = a} :: Event) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON Event where+  parseJSON =+    Data.withObject+      "Event"+      ( \x ->+          Event'+            Prelude.<$> (x Data..:? "DataSource")+            Prelude.<*> (x Data..:? "EventClass")+            Prelude.<*> (x Data..:? "EventSource")+            Prelude.<*> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "ResourceCollection")+            Prelude.<*> (x Data..:? "Resources" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "Time")+      )++instance Prelude.Hashable Event where+  hashWithSalt _salt Event' {..} =+    _salt+      `Prelude.hashWithSalt` dataSource+      `Prelude.hashWithSalt` eventClass+      `Prelude.hashWithSalt` eventSource+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` resourceCollection+      `Prelude.hashWithSalt` resources+      `Prelude.hashWithSalt` time++instance Prelude.NFData Event where+  rnf Event' {..} =+    Prelude.rnf dataSource+      `Prelude.seq` Prelude.rnf eventClass+      `Prelude.seq` Prelude.rnf eventSource+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf resources+      `Prelude.seq` Prelude.rnf time
+ gen/Amazonka/DevOpsGuru/Types/EventClass.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.EventClass+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.EventClass+  ( EventClass+      ( ..,+        EventClass_CONFIG_CHANGE,+        EventClass_DEPLOYMENT,+        EventClass_INFRASTRUCTURE,+        EventClass_SCHEMA_CHANGE,+        EventClass_SECURITY_CHANGE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype EventClass = EventClass'+  { fromEventClass ::+      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 EventClass_CONFIG_CHANGE :: EventClass+pattern EventClass_CONFIG_CHANGE = EventClass' "CONFIG_CHANGE"++pattern EventClass_DEPLOYMENT :: EventClass+pattern EventClass_DEPLOYMENT = EventClass' "DEPLOYMENT"++pattern EventClass_INFRASTRUCTURE :: EventClass+pattern EventClass_INFRASTRUCTURE = EventClass' "INFRASTRUCTURE"++pattern EventClass_SCHEMA_CHANGE :: EventClass+pattern EventClass_SCHEMA_CHANGE = EventClass' "SCHEMA_CHANGE"++pattern EventClass_SECURITY_CHANGE :: EventClass+pattern EventClass_SECURITY_CHANGE = EventClass' "SECURITY_CHANGE"++{-# COMPLETE+  EventClass_CONFIG_CHANGE,+  EventClass_DEPLOYMENT,+  EventClass_INFRASTRUCTURE,+  EventClass_SCHEMA_CHANGE,+  EventClass_SECURITY_CHANGE,+  EventClass'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/EventDataSource.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.EventDataSource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.EventDataSource+  ( EventDataSource+      ( ..,+        EventDataSource_AWS_CLOUD_TRAIL,+        EventDataSource_AWS_CODE_DEPLOY+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype EventDataSource = EventDataSource'+  { fromEventDataSource ::+      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 EventDataSource_AWS_CLOUD_TRAIL :: EventDataSource+pattern EventDataSource_AWS_CLOUD_TRAIL = EventDataSource' "AWS_CLOUD_TRAIL"++pattern EventDataSource_AWS_CODE_DEPLOY :: EventDataSource+pattern EventDataSource_AWS_CODE_DEPLOY = EventDataSource' "AWS_CODE_DEPLOY"++{-# COMPLETE+  EventDataSource_AWS_CLOUD_TRAIL,+  EventDataSource_AWS_CODE_DEPLOY,+  EventDataSource'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/EventResource.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.DevOpsGuru.Types.EventResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.EventResource where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The Amazon Web Services resource that emitted an event. Amazon Web+-- Services resource events and metrics are analyzed by DevOps Guru to find+-- anomalous behavior and provide recommendations to improve your+-- operational solutions.+--+-- /See:/ 'newEventResource' smart constructor.+data EventResource = EventResource'+  { -- | The Amazon Resource Name (ARN) of the resource that emitted an event.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The name of the resource that emitted an event.+    name :: Prelude.Maybe Prelude.Text,+    -- | The type of resource that emitted an event.+    type' :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EventResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'eventResource_arn' - The Amazon Resource Name (ARN) of the resource that emitted an event.+--+-- 'name', 'eventResource_name' - The name of the resource that emitted an event.+--+-- 'type'', 'eventResource_type' - The type of resource that emitted an event.+newEventResource ::+  EventResource+newEventResource =+  EventResource'+    { arn = Prelude.Nothing,+      name = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the resource that emitted an event.+eventResource_arn :: Lens.Lens' EventResource (Prelude.Maybe Prelude.Text)+eventResource_arn = Lens.lens (\EventResource' {arn} -> arn) (\s@EventResource' {} a -> s {arn = a} :: EventResource)++-- | The name of the resource that emitted an event.+eventResource_name :: Lens.Lens' EventResource (Prelude.Maybe Prelude.Text)+eventResource_name = Lens.lens (\EventResource' {name} -> name) (\s@EventResource' {} a -> s {name = a} :: EventResource)++-- | The type of resource that emitted an event.+eventResource_type :: Lens.Lens' EventResource (Prelude.Maybe Prelude.Text)+eventResource_type = Lens.lens (\EventResource' {type'} -> type') (\s@EventResource' {} a -> s {type' = a} :: EventResource)++instance Data.FromJSON EventResource where+  parseJSON =+    Data.withObject+      "EventResource"+      ( \x ->+          EventResource'+            Prelude.<$> (x Data..:? "Arn")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Type")+      )++instance Prelude.Hashable EventResource where+  hashWithSalt _salt EventResource' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` type'++instance Prelude.NFData EventResource where+  rnf EventResource' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/DevOpsGuru/Types/EventSourceOptInStatus.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.EventSourceOptInStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.EventSourceOptInStatus+  ( EventSourceOptInStatus+      ( ..,+        EventSourceOptInStatus_DISABLED,+        EventSourceOptInStatus_ENABLED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype EventSourceOptInStatus = EventSourceOptInStatus'+  { fromEventSourceOptInStatus ::+      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 EventSourceOptInStatus_DISABLED :: EventSourceOptInStatus+pattern EventSourceOptInStatus_DISABLED = EventSourceOptInStatus' "DISABLED"++pattern EventSourceOptInStatus_ENABLED :: EventSourceOptInStatus+pattern EventSourceOptInStatus_ENABLED = EventSourceOptInStatus' "ENABLED"++{-# COMPLETE+  EventSourceOptInStatus_DISABLED,+  EventSourceOptInStatus_ENABLED,+  EventSourceOptInStatus'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/EventSourcesConfig.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.DevOpsGuru.Types.EventSourcesConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.EventSourcesConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.AmazonCodeGuruProfilerIntegration+import qualified Amazonka.Prelude as Prelude++-- | Information about the integration of DevOps Guru as consumer with+-- another AWS service, such as AWS CodeGuru Profiler via EventBridge.+--+-- /See:/ 'newEventSourcesConfig' smart constructor.+data EventSourcesConfig = EventSourcesConfig'+  { -- | Information about whether DevOps Guru is configured to consume+    -- recommendations which are generated from AWS CodeGuru Profiler.+    amazonCodeGuruProfiler :: Prelude.Maybe AmazonCodeGuruProfilerIntegration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EventSourcesConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'amazonCodeGuruProfiler', 'eventSourcesConfig_amazonCodeGuruProfiler' - Information about whether DevOps Guru is configured to consume+-- recommendations which are generated from AWS CodeGuru Profiler.+newEventSourcesConfig ::+  EventSourcesConfig+newEventSourcesConfig =+  EventSourcesConfig'+    { amazonCodeGuruProfiler =+        Prelude.Nothing+    }++-- | Information about whether DevOps Guru is configured to consume+-- recommendations which are generated from AWS CodeGuru Profiler.+eventSourcesConfig_amazonCodeGuruProfiler :: Lens.Lens' EventSourcesConfig (Prelude.Maybe AmazonCodeGuruProfilerIntegration)+eventSourcesConfig_amazonCodeGuruProfiler = Lens.lens (\EventSourcesConfig' {amazonCodeGuruProfiler} -> amazonCodeGuruProfiler) (\s@EventSourcesConfig' {} a -> s {amazonCodeGuruProfiler = a} :: EventSourcesConfig)++instance Data.FromJSON EventSourcesConfig where+  parseJSON =+    Data.withObject+      "EventSourcesConfig"+      ( \x ->+          EventSourcesConfig'+            Prelude.<$> (x Data..:? "AmazonCodeGuruProfiler")+      )++instance Prelude.Hashable EventSourcesConfig where+  hashWithSalt _salt EventSourcesConfig' {..} =+    _salt `Prelude.hashWithSalt` amazonCodeGuruProfiler++instance Prelude.NFData EventSourcesConfig where+  rnf EventSourcesConfig' {..} =+    Prelude.rnf amazonCodeGuruProfiler++instance Data.ToJSON EventSourcesConfig where+  toJSON EventSourcesConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AmazonCodeGuruProfiler" Data..=)+              Prelude.<$> amazonCodeGuruProfiler+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/EventTimeRange.hs view
@@ -0,0 +1,91 @@+{-# 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.DevOpsGuru.Types.EventTimeRange+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.EventTimeRange where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The time range during which an Amazon Web Services event occurred.+-- Amazon Web Services resource events and metrics are analyzed by DevOps+-- Guru to find anomalous behavior and provide recommendations to improve+-- your operational solutions.+--+-- /See:/ 'newEventTimeRange' smart constructor.+data EventTimeRange = EventTimeRange'+  { -- | The time when the event started.+    fromTime :: Data.POSIX,+    -- | The time when the event ended.+    toTime :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EventTimeRange' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fromTime', 'eventTimeRange_fromTime' - The time when the event started.+--+-- 'toTime', 'eventTimeRange_toTime' - The time when the event ended.+newEventTimeRange ::+  -- | 'fromTime'+  Prelude.UTCTime ->+  -- | 'toTime'+  Prelude.UTCTime ->+  EventTimeRange+newEventTimeRange pFromTime_ pToTime_ =+  EventTimeRange'+    { fromTime =+        Data._Time Lens.# pFromTime_,+      toTime = Data._Time Lens.# pToTime_+    }++-- | The time when the event started.+eventTimeRange_fromTime :: Lens.Lens' EventTimeRange Prelude.UTCTime+eventTimeRange_fromTime = Lens.lens (\EventTimeRange' {fromTime} -> fromTime) (\s@EventTimeRange' {} a -> s {fromTime = a} :: EventTimeRange) Prelude.. Data._Time++-- | The time when the event ended.+eventTimeRange_toTime :: Lens.Lens' EventTimeRange Prelude.UTCTime+eventTimeRange_toTime = Lens.lens (\EventTimeRange' {toTime} -> toTime) (\s@EventTimeRange' {} a -> s {toTime = a} :: EventTimeRange) Prelude.. Data._Time++instance Prelude.Hashable EventTimeRange where+  hashWithSalt _salt EventTimeRange' {..} =+    _salt+      `Prelude.hashWithSalt` fromTime+      `Prelude.hashWithSalt` toTime++instance Prelude.NFData EventTimeRange where+  rnf EventTimeRange' {..} =+    Prelude.rnf fromTime+      `Prelude.seq` Prelude.rnf toTime++instance Data.ToJSON EventTimeRange where+  toJSON EventTimeRange' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("FromTime" Data..= fromTime),+            Prelude.Just ("ToTime" Data..= toTime)+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/InsightFeedback.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.DevOpsGuru.Types.InsightFeedback+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.InsightFeedback where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.InsightFeedbackOption+import qualified Amazonka.Prelude as Prelude++-- | Information about insight feedback received from a customer.+--+-- /See:/ 'newInsightFeedback' smart constructor.+data InsightFeedback = InsightFeedback'+  { -- | The feedback provided by the customer.+    feedback :: Prelude.Maybe InsightFeedbackOption,+    -- | The insight feedback ID.+    id :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InsightFeedback' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'feedback', 'insightFeedback_feedback' - The feedback provided by the customer.+--+-- 'id', 'insightFeedback_id' - The insight feedback ID.+newInsightFeedback ::+  InsightFeedback+newInsightFeedback =+  InsightFeedback'+    { feedback = Prelude.Nothing,+      id = Prelude.Nothing+    }++-- | The feedback provided by the customer.+insightFeedback_feedback :: Lens.Lens' InsightFeedback (Prelude.Maybe InsightFeedbackOption)+insightFeedback_feedback = Lens.lens (\InsightFeedback' {feedback} -> feedback) (\s@InsightFeedback' {} a -> s {feedback = a} :: InsightFeedback)++-- | The insight feedback ID.+insightFeedback_id :: Lens.Lens' InsightFeedback (Prelude.Maybe Prelude.Text)+insightFeedback_id = Lens.lens (\InsightFeedback' {id} -> id) (\s@InsightFeedback' {} a -> s {id = a} :: InsightFeedback)++instance Data.FromJSON InsightFeedback where+  parseJSON =+    Data.withObject+      "InsightFeedback"+      ( \x ->+          InsightFeedback'+            Prelude.<$> (x Data..:? "Feedback")+            Prelude.<*> (x Data..:? "Id")+      )++instance Prelude.Hashable InsightFeedback where+  hashWithSalt _salt InsightFeedback' {..} =+    _salt+      `Prelude.hashWithSalt` feedback+      `Prelude.hashWithSalt` id++instance Prelude.NFData InsightFeedback where+  rnf InsightFeedback' {..} =+    Prelude.rnf feedback `Prelude.seq` Prelude.rnf id++instance Data.ToJSON InsightFeedback where+  toJSON InsightFeedback' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Feedback" Data..=) Prelude.<$> feedback,+            ("Id" Data..=) Prelude.<$> id+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/InsightFeedbackOption.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.InsightFeedbackOption+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.InsightFeedbackOption+  ( InsightFeedbackOption+      ( ..,+        InsightFeedbackOption_ALERT_TOO_SENSITIVE,+        InsightFeedbackOption_DATA_INCORRECT,+        InsightFeedbackOption_DATA_NOISY_ANOMALY,+        InsightFeedbackOption_RECOMMENDATION_USEFUL,+        InsightFeedbackOption_VALID_COLLECTION+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype InsightFeedbackOption = InsightFeedbackOption'+  { fromInsightFeedbackOption ::+      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 InsightFeedbackOption_ALERT_TOO_SENSITIVE :: InsightFeedbackOption+pattern InsightFeedbackOption_ALERT_TOO_SENSITIVE = InsightFeedbackOption' "ALERT_TOO_SENSITIVE"++pattern InsightFeedbackOption_DATA_INCORRECT :: InsightFeedbackOption+pattern InsightFeedbackOption_DATA_INCORRECT = InsightFeedbackOption' "DATA_INCORRECT"++pattern InsightFeedbackOption_DATA_NOISY_ANOMALY :: InsightFeedbackOption+pattern InsightFeedbackOption_DATA_NOISY_ANOMALY = InsightFeedbackOption' "DATA_NOISY_ANOMALY"++pattern InsightFeedbackOption_RECOMMENDATION_USEFUL :: InsightFeedbackOption+pattern InsightFeedbackOption_RECOMMENDATION_USEFUL = InsightFeedbackOption' "RECOMMENDATION_USEFUL"++pattern InsightFeedbackOption_VALID_COLLECTION :: InsightFeedbackOption+pattern InsightFeedbackOption_VALID_COLLECTION = InsightFeedbackOption' "VALID_COLLECTION"++{-# COMPLETE+  InsightFeedbackOption_ALERT_TOO_SENSITIVE,+  InsightFeedbackOption_DATA_INCORRECT,+  InsightFeedbackOption_DATA_NOISY_ANOMALY,+  InsightFeedbackOption_RECOMMENDATION_USEFUL,+  InsightFeedbackOption_VALID_COLLECTION,+  InsightFeedbackOption'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/InsightHealth.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.DevOpsGuru.Types.InsightHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.InsightHealth where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Information about the number of open reactive and proactive insights+-- that can be used to gauge the health of your system.+--+-- /See:/ 'newInsightHealth' smart constructor.+data InsightHealth = InsightHealth'+  { -- | The Meant Time to Recover (MTTR) for the insight.+    meanTimeToRecoverInMilliseconds :: Prelude.Maybe Prelude.Integer,+    -- | The number of open proactive insights.+    openProactiveInsights :: Prelude.Maybe Prelude.Int,+    -- | The number of open reactive insights.+    openReactiveInsights :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InsightHealth' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meanTimeToRecoverInMilliseconds', 'insightHealth_meanTimeToRecoverInMilliseconds' - The Meant Time to Recover (MTTR) for the insight.+--+-- 'openProactiveInsights', 'insightHealth_openProactiveInsights' - The number of open proactive insights.+--+-- 'openReactiveInsights', 'insightHealth_openReactiveInsights' - The number of open reactive insights.+newInsightHealth ::+  InsightHealth+newInsightHealth =+  InsightHealth'+    { meanTimeToRecoverInMilliseconds =+        Prelude.Nothing,+      openProactiveInsights = Prelude.Nothing,+      openReactiveInsights = Prelude.Nothing+    }++-- | The Meant Time to Recover (MTTR) for the insight.+insightHealth_meanTimeToRecoverInMilliseconds :: Lens.Lens' InsightHealth (Prelude.Maybe Prelude.Integer)+insightHealth_meanTimeToRecoverInMilliseconds = Lens.lens (\InsightHealth' {meanTimeToRecoverInMilliseconds} -> meanTimeToRecoverInMilliseconds) (\s@InsightHealth' {} a -> s {meanTimeToRecoverInMilliseconds = a} :: InsightHealth)++-- | The number of open proactive insights.+insightHealth_openProactiveInsights :: Lens.Lens' InsightHealth (Prelude.Maybe Prelude.Int)+insightHealth_openProactiveInsights = Lens.lens (\InsightHealth' {openProactiveInsights} -> openProactiveInsights) (\s@InsightHealth' {} a -> s {openProactiveInsights = a} :: InsightHealth)++-- | The number of open reactive insights.+insightHealth_openReactiveInsights :: Lens.Lens' InsightHealth (Prelude.Maybe Prelude.Int)+insightHealth_openReactiveInsights = Lens.lens (\InsightHealth' {openReactiveInsights} -> openReactiveInsights) (\s@InsightHealth' {} a -> s {openReactiveInsights = a} :: InsightHealth)++instance Data.FromJSON InsightHealth where+  parseJSON =+    Data.withObject+      "InsightHealth"+      ( \x ->+          InsightHealth'+            Prelude.<$> (x Data..:? "MeanTimeToRecoverInMilliseconds")+            Prelude.<*> (x Data..:? "OpenProactiveInsights")+            Prelude.<*> (x Data..:? "OpenReactiveInsights")+      )++instance Prelude.Hashable InsightHealth where+  hashWithSalt _salt InsightHealth' {..} =+    _salt+      `Prelude.hashWithSalt` meanTimeToRecoverInMilliseconds+      `Prelude.hashWithSalt` openProactiveInsights+      `Prelude.hashWithSalt` openReactiveInsights++instance Prelude.NFData InsightHealth where+  rnf InsightHealth' {..} =+    Prelude.rnf meanTimeToRecoverInMilliseconds+      `Prelude.seq` Prelude.rnf openProactiveInsights+      `Prelude.seq` Prelude.rnf openReactiveInsights
+ gen/Amazonka/DevOpsGuru/Types/InsightSeverity.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.InsightSeverity+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.InsightSeverity+  ( InsightSeverity+      ( ..,+        InsightSeverity_HIGH,+        InsightSeverity_LOW,+        InsightSeverity_MEDIUM+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype InsightSeverity = InsightSeverity'+  { fromInsightSeverity ::+      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 InsightSeverity_HIGH :: InsightSeverity+pattern InsightSeverity_HIGH = InsightSeverity' "HIGH"++pattern InsightSeverity_LOW :: InsightSeverity+pattern InsightSeverity_LOW = InsightSeverity' "LOW"++pattern InsightSeverity_MEDIUM :: InsightSeverity+pattern InsightSeverity_MEDIUM = InsightSeverity' "MEDIUM"++{-# COMPLETE+  InsightSeverity_HIGH,+  InsightSeverity_LOW,+  InsightSeverity_MEDIUM,+  InsightSeverity'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/InsightStatus.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.InsightStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.InsightStatus+  ( InsightStatus+      ( ..,+        InsightStatus_CLOSED,+        InsightStatus_ONGOING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype InsightStatus = InsightStatus'+  { fromInsightStatus ::+      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 InsightStatus_CLOSED :: InsightStatus+pattern InsightStatus_CLOSED = InsightStatus' "CLOSED"++pattern InsightStatus_ONGOING :: InsightStatus+pattern InsightStatus_ONGOING = InsightStatus' "ONGOING"++{-# COMPLETE+  InsightStatus_CLOSED,+  InsightStatus_ONGOING,+  InsightStatus'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/InsightTimeRange.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.DevOpsGuru.Types.InsightTimeRange+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.InsightTimeRange where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A time ranged that specifies when the observed behavior in an insight+-- started and ended.+--+-- /See:/ 'newInsightTimeRange' smart constructor.+data InsightTimeRange = InsightTimeRange'+  { -- | The time when the behavior described in an insight ended.+    endTime :: Prelude.Maybe Data.POSIX,+    -- | The time when the behavior described in an insight started.+    startTime :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InsightTimeRange' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endTime', 'insightTimeRange_endTime' - The time when the behavior described in an insight ended.+--+-- 'startTime', 'insightTimeRange_startTime' - The time when the behavior described in an insight started.+newInsightTimeRange ::+  -- | 'startTime'+  Prelude.UTCTime ->+  InsightTimeRange+newInsightTimeRange pStartTime_ =+  InsightTimeRange'+    { endTime = Prelude.Nothing,+      startTime = Data._Time Lens.# pStartTime_+    }++-- | The time when the behavior described in an insight ended.+insightTimeRange_endTime :: Lens.Lens' InsightTimeRange (Prelude.Maybe Prelude.UTCTime)+insightTimeRange_endTime = Lens.lens (\InsightTimeRange' {endTime} -> endTime) (\s@InsightTimeRange' {} a -> s {endTime = a} :: InsightTimeRange) Prelude.. Lens.mapping Data._Time++-- | The time when the behavior described in an insight started.+insightTimeRange_startTime :: Lens.Lens' InsightTimeRange Prelude.UTCTime+insightTimeRange_startTime = Lens.lens (\InsightTimeRange' {startTime} -> startTime) (\s@InsightTimeRange' {} a -> s {startTime = a} :: InsightTimeRange) Prelude.. Data._Time++instance Data.FromJSON InsightTimeRange where+  parseJSON =+    Data.withObject+      "InsightTimeRange"+      ( \x ->+          InsightTimeRange'+            Prelude.<$> (x Data..:? "EndTime")+            Prelude.<*> (x Data..: "StartTime")+      )++instance Prelude.Hashable InsightTimeRange where+  hashWithSalt _salt InsightTimeRange' {..} =+    _salt+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` startTime++instance Prelude.NFData InsightTimeRange where+  rnf InsightTimeRange' {..} =+    Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf startTime
+ gen/Amazonka/DevOpsGuru/Types/InsightType.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.InsightType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.InsightType+  ( InsightType+      ( ..,+        InsightType_PROACTIVE,+        InsightType_REACTIVE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype InsightType = InsightType'+  { fromInsightType ::+      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 InsightType_PROACTIVE :: InsightType+pattern InsightType_PROACTIVE = InsightType' "PROACTIVE"++pattern InsightType_REACTIVE :: InsightType+pattern InsightType_REACTIVE = InsightType' "REACTIVE"++{-# COMPLETE+  InsightType_PROACTIVE,+  InsightType_REACTIVE,+  InsightType'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/ListEventsFilters.hs view
@@ -0,0 +1,149 @@+{-# 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.DevOpsGuru.Types.ListEventsFilters+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ListEventsFilters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.EventClass+import Amazonka.DevOpsGuru.Types.EventDataSource+import Amazonka.DevOpsGuru.Types.EventTimeRange+import Amazonka.DevOpsGuru.Types.ResourceCollection+import qualified Amazonka.Prelude as Prelude++-- | Filters you can use to specify which events are returned when+-- @ListEvents@ is called.+--+-- /See:/ 'newListEventsFilters' smart constructor.+data ListEventsFilters = ListEventsFilters'+  { -- | The source, @AWS_CLOUD_TRAIL@ or @AWS_CODE_DEPLOY@, of the events you+    -- want returned.+    dataSource :: Prelude.Maybe EventDataSource,+    -- | The class of the events you want to filter for, such as an+    -- infrastructure change, a deployment, or a schema change.+    eventClass :: Prelude.Maybe EventClass,+    -- | The Amazon Web Services source that emitted the events you want to+    -- filter for.+    eventSource :: Prelude.Maybe Prelude.Text,+    -- | A time range during which you want the filtered events to have occurred.+    eventTimeRange :: Prelude.Maybe EventTimeRange,+    -- | An ID of an insight that is related to the events you want to filter+    -- for.+    insightId :: Prelude.Maybe Prelude.Text,+    resourceCollection :: Prelude.Maybe ResourceCollection+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListEventsFilters' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dataSource', 'listEventsFilters_dataSource' - The source, @AWS_CLOUD_TRAIL@ or @AWS_CODE_DEPLOY@, of the events you+-- want returned.+--+-- 'eventClass', 'listEventsFilters_eventClass' - The class of the events you want to filter for, such as an+-- infrastructure change, a deployment, or a schema change.+--+-- 'eventSource', 'listEventsFilters_eventSource' - The Amazon Web Services source that emitted the events you want to+-- filter for.+--+-- 'eventTimeRange', 'listEventsFilters_eventTimeRange' - A time range during which you want the filtered events to have occurred.+--+-- 'insightId', 'listEventsFilters_insightId' - An ID of an insight that is related to the events you want to filter+-- for.+--+-- 'resourceCollection', 'listEventsFilters_resourceCollection' - Undocumented member.+newListEventsFilters ::+  ListEventsFilters+newListEventsFilters =+  ListEventsFilters'+    { dataSource = Prelude.Nothing,+      eventClass = Prelude.Nothing,+      eventSource = Prelude.Nothing,+      eventTimeRange = Prelude.Nothing,+      insightId = Prelude.Nothing,+      resourceCollection = Prelude.Nothing+    }++-- | The source, @AWS_CLOUD_TRAIL@ or @AWS_CODE_DEPLOY@, of the events you+-- want returned.+listEventsFilters_dataSource :: Lens.Lens' ListEventsFilters (Prelude.Maybe EventDataSource)+listEventsFilters_dataSource = Lens.lens (\ListEventsFilters' {dataSource} -> dataSource) (\s@ListEventsFilters' {} a -> s {dataSource = a} :: ListEventsFilters)++-- | The class of the events you want to filter for, such as an+-- infrastructure change, a deployment, or a schema change.+listEventsFilters_eventClass :: Lens.Lens' ListEventsFilters (Prelude.Maybe EventClass)+listEventsFilters_eventClass = Lens.lens (\ListEventsFilters' {eventClass} -> eventClass) (\s@ListEventsFilters' {} a -> s {eventClass = a} :: ListEventsFilters)++-- | The Amazon Web Services source that emitted the events you want to+-- filter for.+listEventsFilters_eventSource :: Lens.Lens' ListEventsFilters (Prelude.Maybe Prelude.Text)+listEventsFilters_eventSource = Lens.lens (\ListEventsFilters' {eventSource} -> eventSource) (\s@ListEventsFilters' {} a -> s {eventSource = a} :: ListEventsFilters)++-- | A time range during which you want the filtered events to have occurred.+listEventsFilters_eventTimeRange :: Lens.Lens' ListEventsFilters (Prelude.Maybe EventTimeRange)+listEventsFilters_eventTimeRange = Lens.lens (\ListEventsFilters' {eventTimeRange} -> eventTimeRange) (\s@ListEventsFilters' {} a -> s {eventTimeRange = a} :: ListEventsFilters)++-- | An ID of an insight that is related to the events you want to filter+-- for.+listEventsFilters_insightId :: Lens.Lens' ListEventsFilters (Prelude.Maybe Prelude.Text)+listEventsFilters_insightId = Lens.lens (\ListEventsFilters' {insightId} -> insightId) (\s@ListEventsFilters' {} a -> s {insightId = a} :: ListEventsFilters)++-- | Undocumented member.+listEventsFilters_resourceCollection :: Lens.Lens' ListEventsFilters (Prelude.Maybe ResourceCollection)+listEventsFilters_resourceCollection = Lens.lens (\ListEventsFilters' {resourceCollection} -> resourceCollection) (\s@ListEventsFilters' {} a -> s {resourceCollection = a} :: ListEventsFilters)++instance Prelude.Hashable ListEventsFilters where+  hashWithSalt _salt ListEventsFilters' {..} =+    _salt+      `Prelude.hashWithSalt` dataSource+      `Prelude.hashWithSalt` eventClass+      `Prelude.hashWithSalt` eventSource+      `Prelude.hashWithSalt` eventTimeRange+      `Prelude.hashWithSalt` insightId+      `Prelude.hashWithSalt` resourceCollection++instance Prelude.NFData ListEventsFilters where+  rnf ListEventsFilters' {..} =+    Prelude.rnf dataSource+      `Prelude.seq` Prelude.rnf eventClass+      `Prelude.seq` Prelude.rnf eventSource+      `Prelude.seq` Prelude.rnf eventTimeRange+      `Prelude.seq` Prelude.rnf insightId+      `Prelude.seq` Prelude.rnf resourceCollection++instance Data.ToJSON ListEventsFilters where+  toJSON ListEventsFilters' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DataSource" Data..=) Prelude.<$> dataSource,+            ("EventClass" Data..=) Prelude.<$> eventClass,+            ("EventSource" Data..=) Prelude.<$> eventSource,+            ("EventTimeRange" Data..=)+              Prelude.<$> eventTimeRange,+            ("InsightId" Data..=) Prelude.<$> insightId,+            ("ResourceCollection" Data..=)+              Prelude.<$> resourceCollection+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/ListInsightsAnyStatusFilter.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.DevOpsGuru.Types.ListInsightsAnyStatusFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ListInsightsAnyStatusFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.InsightType+import Amazonka.DevOpsGuru.Types.StartTimeRange+import qualified Amazonka.Prelude as Prelude++-- | Used to filter for insights that have any status.+--+-- /See:/ 'newListInsightsAnyStatusFilter' smart constructor.+data ListInsightsAnyStatusFilter = ListInsightsAnyStatusFilter'+  { -- | Use to filter for either @REACTIVE@ or @PROACTIVE@ insights.+    type' :: InsightType,+    -- | A time range used to specify when the behavior of the filtered insights+    -- started.+    startTimeRange :: StartTimeRange+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListInsightsAnyStatusFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'type'', 'listInsightsAnyStatusFilter_type' - Use to filter for either @REACTIVE@ or @PROACTIVE@ insights.+--+-- 'startTimeRange', 'listInsightsAnyStatusFilter_startTimeRange' - A time range used to specify when the behavior of the filtered insights+-- started.+newListInsightsAnyStatusFilter ::+  -- | 'type''+  InsightType ->+  -- | 'startTimeRange'+  StartTimeRange ->+  ListInsightsAnyStatusFilter+newListInsightsAnyStatusFilter+  pType_+  pStartTimeRange_ =+    ListInsightsAnyStatusFilter'+      { type' = pType_,+        startTimeRange = pStartTimeRange_+      }++-- | Use to filter for either @REACTIVE@ or @PROACTIVE@ insights.+listInsightsAnyStatusFilter_type :: Lens.Lens' ListInsightsAnyStatusFilter InsightType+listInsightsAnyStatusFilter_type = Lens.lens (\ListInsightsAnyStatusFilter' {type'} -> type') (\s@ListInsightsAnyStatusFilter' {} a -> s {type' = a} :: ListInsightsAnyStatusFilter)++-- | A time range used to specify when the behavior of the filtered insights+-- started.+listInsightsAnyStatusFilter_startTimeRange :: Lens.Lens' ListInsightsAnyStatusFilter StartTimeRange+listInsightsAnyStatusFilter_startTimeRange = Lens.lens (\ListInsightsAnyStatusFilter' {startTimeRange} -> startTimeRange) (\s@ListInsightsAnyStatusFilter' {} a -> s {startTimeRange = a} :: ListInsightsAnyStatusFilter)++instance Prelude.Hashable ListInsightsAnyStatusFilter where+  hashWithSalt _salt ListInsightsAnyStatusFilter' {..} =+    _salt+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` startTimeRange++instance Prelude.NFData ListInsightsAnyStatusFilter where+  rnf ListInsightsAnyStatusFilter' {..} =+    Prelude.rnf type'+      `Prelude.seq` Prelude.rnf startTimeRange++instance Data.ToJSON ListInsightsAnyStatusFilter where+  toJSON ListInsightsAnyStatusFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("Type" Data..= type'),+            Prelude.Just+              ("StartTimeRange" Data..= startTimeRange)+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/ListInsightsClosedStatusFilter.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.ListInsightsClosedStatusFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ListInsightsClosedStatusFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.EndTimeRange+import Amazonka.DevOpsGuru.Types.InsightType+import qualified Amazonka.Prelude as Prelude++-- | Used to filter for insights that have the status @CLOSED@.+--+-- /See:/ 'newListInsightsClosedStatusFilter' smart constructor.+data ListInsightsClosedStatusFilter = ListInsightsClosedStatusFilter'+  { -- | Use to filter for either @REACTIVE@ or @PROACTIVE@ insights.+    type' :: InsightType,+    -- | A time range used to specify when the behavior of the filtered insights+    -- ended.+    endTimeRange :: EndTimeRange+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListInsightsClosedStatusFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'type'', 'listInsightsClosedStatusFilter_type' - Use to filter for either @REACTIVE@ or @PROACTIVE@ insights.+--+-- 'endTimeRange', 'listInsightsClosedStatusFilter_endTimeRange' - A time range used to specify when the behavior of the filtered insights+-- ended.+newListInsightsClosedStatusFilter ::+  -- | 'type''+  InsightType ->+  -- | 'endTimeRange'+  EndTimeRange ->+  ListInsightsClosedStatusFilter+newListInsightsClosedStatusFilter+  pType_+  pEndTimeRange_ =+    ListInsightsClosedStatusFilter'+      { type' = pType_,+        endTimeRange = pEndTimeRange_+      }++-- | Use to filter for either @REACTIVE@ or @PROACTIVE@ insights.+listInsightsClosedStatusFilter_type :: Lens.Lens' ListInsightsClosedStatusFilter InsightType+listInsightsClosedStatusFilter_type = Lens.lens (\ListInsightsClosedStatusFilter' {type'} -> type') (\s@ListInsightsClosedStatusFilter' {} a -> s {type' = a} :: ListInsightsClosedStatusFilter)++-- | A time range used to specify when the behavior of the filtered insights+-- ended.+listInsightsClosedStatusFilter_endTimeRange :: Lens.Lens' ListInsightsClosedStatusFilter EndTimeRange+listInsightsClosedStatusFilter_endTimeRange = Lens.lens (\ListInsightsClosedStatusFilter' {endTimeRange} -> endTimeRange) (\s@ListInsightsClosedStatusFilter' {} a -> s {endTimeRange = a} :: ListInsightsClosedStatusFilter)++instance+  Prelude.Hashable+    ListInsightsClosedStatusFilter+  where+  hashWithSalt+    _salt+    ListInsightsClosedStatusFilter' {..} =+      _salt+        `Prelude.hashWithSalt` type'+        `Prelude.hashWithSalt` endTimeRange++instance+  Prelude.NFData+    ListInsightsClosedStatusFilter+  where+  rnf ListInsightsClosedStatusFilter' {..} =+    Prelude.rnf type'+      `Prelude.seq` Prelude.rnf endTimeRange++instance Data.ToJSON ListInsightsClosedStatusFilter where+  toJSON ListInsightsClosedStatusFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("Type" Data..= type'),+            Prelude.Just ("EndTimeRange" Data..= endTimeRange)+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/ListInsightsOngoingStatusFilter.hs view
@@ -0,0 +1,78 @@+{-# 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.DevOpsGuru.Types.ListInsightsOngoingStatusFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ListInsightsOngoingStatusFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.InsightType+import qualified Amazonka.Prelude as Prelude++-- | Used to filter for insights that have the status @ONGOING@.+--+-- /See:/ 'newListInsightsOngoingStatusFilter' smart constructor.+data ListInsightsOngoingStatusFilter = ListInsightsOngoingStatusFilter'+  { -- | Use to filter for either @REACTIVE@ or @PROACTIVE@ insights.+    type' :: InsightType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListInsightsOngoingStatusFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'type'', 'listInsightsOngoingStatusFilter_type' - Use to filter for either @REACTIVE@ or @PROACTIVE@ insights.+newListInsightsOngoingStatusFilter ::+  -- | 'type''+  InsightType ->+  ListInsightsOngoingStatusFilter+newListInsightsOngoingStatusFilter pType_ =+  ListInsightsOngoingStatusFilter' {type' = pType_}++-- | Use to filter for either @REACTIVE@ or @PROACTIVE@ insights.+listInsightsOngoingStatusFilter_type :: Lens.Lens' ListInsightsOngoingStatusFilter InsightType+listInsightsOngoingStatusFilter_type = Lens.lens (\ListInsightsOngoingStatusFilter' {type'} -> type') (\s@ListInsightsOngoingStatusFilter' {} a -> s {type' = a} :: ListInsightsOngoingStatusFilter)++instance+  Prelude.Hashable+    ListInsightsOngoingStatusFilter+  where+  hashWithSalt+    _salt+    ListInsightsOngoingStatusFilter' {..} =+      _salt `Prelude.hashWithSalt` type'++instance+  Prelude.NFData+    ListInsightsOngoingStatusFilter+  where+  rnf ListInsightsOngoingStatusFilter' {..} =+    Prelude.rnf type'++instance Data.ToJSON ListInsightsOngoingStatusFilter where+  toJSON ListInsightsOngoingStatusFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Type" Data..= type')]+      )
+ gen/Amazonka/DevOpsGuru/Types/ListInsightsStatusFilter.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.DevOpsGuru.Types.ListInsightsStatusFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ListInsightsStatusFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.ListInsightsAnyStatusFilter+import Amazonka.DevOpsGuru.Types.ListInsightsClosedStatusFilter+import Amazonka.DevOpsGuru.Types.ListInsightsOngoingStatusFilter+import qualified Amazonka.Prelude as Prelude++-- | A filter used by @ListInsights@ to specify which insights to return.+--+-- /See:/ 'newListInsightsStatusFilter' smart constructor.+data ListInsightsStatusFilter = ListInsightsStatusFilter'+  { -- | A @ListInsightsAnyStatusFilter@ that specifies insights of any status+    -- that are either @REACTIVE@ or @PROACTIVE@.+    any :: Prelude.Maybe ListInsightsAnyStatusFilter,+    -- | A @ListInsightsClosedStatusFilter@ that specifies closed insights that+    -- are either @REACTIVE@ or @PROACTIVE@.+    closed :: Prelude.Maybe ListInsightsClosedStatusFilter,+    -- | A @ListInsightsAnyStatusFilter@ that specifies ongoing insights that are+    -- either @REACTIVE@ or @PROACTIVE@.+    ongoing :: Prelude.Maybe ListInsightsOngoingStatusFilter+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListInsightsStatusFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'any', 'listInsightsStatusFilter_any' - A @ListInsightsAnyStatusFilter@ that specifies insights of any status+-- that are either @REACTIVE@ or @PROACTIVE@.+--+-- 'closed', 'listInsightsStatusFilter_closed' - A @ListInsightsClosedStatusFilter@ that specifies closed insights that+-- are either @REACTIVE@ or @PROACTIVE@.+--+-- 'ongoing', 'listInsightsStatusFilter_ongoing' - A @ListInsightsAnyStatusFilter@ that specifies ongoing insights that are+-- either @REACTIVE@ or @PROACTIVE@.+newListInsightsStatusFilter ::+  ListInsightsStatusFilter+newListInsightsStatusFilter =+  ListInsightsStatusFilter'+    { any = Prelude.Nothing,+      closed = Prelude.Nothing,+      ongoing = Prelude.Nothing+    }++-- | A @ListInsightsAnyStatusFilter@ that specifies insights of any status+-- that are either @REACTIVE@ or @PROACTIVE@.+listInsightsStatusFilter_any :: Lens.Lens' ListInsightsStatusFilter (Prelude.Maybe ListInsightsAnyStatusFilter)+listInsightsStatusFilter_any = Lens.lens (\ListInsightsStatusFilter' {any} -> any) (\s@ListInsightsStatusFilter' {} a -> s {any = a} :: ListInsightsStatusFilter)++-- | A @ListInsightsClosedStatusFilter@ that specifies closed insights that+-- are either @REACTIVE@ or @PROACTIVE@.+listInsightsStatusFilter_closed :: Lens.Lens' ListInsightsStatusFilter (Prelude.Maybe ListInsightsClosedStatusFilter)+listInsightsStatusFilter_closed = Lens.lens (\ListInsightsStatusFilter' {closed} -> closed) (\s@ListInsightsStatusFilter' {} a -> s {closed = a} :: ListInsightsStatusFilter)++-- | A @ListInsightsAnyStatusFilter@ that specifies ongoing insights that are+-- either @REACTIVE@ or @PROACTIVE@.+listInsightsStatusFilter_ongoing :: Lens.Lens' ListInsightsStatusFilter (Prelude.Maybe ListInsightsOngoingStatusFilter)+listInsightsStatusFilter_ongoing = Lens.lens (\ListInsightsStatusFilter' {ongoing} -> ongoing) (\s@ListInsightsStatusFilter' {} a -> s {ongoing = a} :: ListInsightsStatusFilter)++instance Prelude.Hashable ListInsightsStatusFilter where+  hashWithSalt _salt ListInsightsStatusFilter' {..} =+    _salt+      `Prelude.hashWithSalt` any+      `Prelude.hashWithSalt` closed+      `Prelude.hashWithSalt` ongoing++instance Prelude.NFData ListInsightsStatusFilter where+  rnf ListInsightsStatusFilter' {..} =+    Prelude.rnf any+      `Prelude.seq` Prelude.rnf closed+      `Prelude.seq` Prelude.rnf ongoing++instance Data.ToJSON ListInsightsStatusFilter where+  toJSON ListInsightsStatusFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Any" Data..=) Prelude.<$> any,+            ("Closed" Data..=) Prelude.<$> closed,+            ("Ongoing" Data..=) Prelude.<$> ongoing+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/ListMonitoredResourcesFilters.hs view
@@ -0,0 +1,94 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.ListMonitoredResourcesFilters+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ListMonitoredResourcesFilters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.ResourcePermission+import Amazonka.DevOpsGuru.Types.ResourceTypeFilter+import qualified Amazonka.Prelude as Prelude++-- | Filters to determine which monitored resources you want to retrieve. You+-- can filter by resource type or resource permission status.+--+-- /See:/ 'newListMonitoredResourcesFilters' smart constructor.+data ListMonitoredResourcesFilters = ListMonitoredResourcesFilters'+  { -- | The permission status of a resource.+    resourcePermission :: ResourcePermission,+    -- | The type of resource that you wish to retrieve, such as log groups.+    resourceTypeFilters :: [ResourceTypeFilter]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListMonitoredResourcesFilters' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourcePermission', 'listMonitoredResourcesFilters_resourcePermission' - The permission status of a resource.+--+-- 'resourceTypeFilters', 'listMonitoredResourcesFilters_resourceTypeFilters' - The type of resource that you wish to retrieve, such as log groups.+newListMonitoredResourcesFilters ::+  -- | 'resourcePermission'+  ResourcePermission ->+  ListMonitoredResourcesFilters+newListMonitoredResourcesFilters pResourcePermission_ =+  ListMonitoredResourcesFilters'+    { resourcePermission =+        pResourcePermission_,+      resourceTypeFilters = Prelude.mempty+    }++-- | The permission status of a resource.+listMonitoredResourcesFilters_resourcePermission :: Lens.Lens' ListMonitoredResourcesFilters ResourcePermission+listMonitoredResourcesFilters_resourcePermission = Lens.lens (\ListMonitoredResourcesFilters' {resourcePermission} -> resourcePermission) (\s@ListMonitoredResourcesFilters' {} a -> s {resourcePermission = a} :: ListMonitoredResourcesFilters)++-- | The type of resource that you wish to retrieve, such as log groups.+listMonitoredResourcesFilters_resourceTypeFilters :: Lens.Lens' ListMonitoredResourcesFilters [ResourceTypeFilter]+listMonitoredResourcesFilters_resourceTypeFilters = Lens.lens (\ListMonitoredResourcesFilters' {resourceTypeFilters} -> resourceTypeFilters) (\s@ListMonitoredResourcesFilters' {} a -> s {resourceTypeFilters = a} :: ListMonitoredResourcesFilters) Prelude.. Lens.coerced++instance+  Prelude.Hashable+    ListMonitoredResourcesFilters+  where+  hashWithSalt _salt ListMonitoredResourcesFilters' {..} =+    _salt+      `Prelude.hashWithSalt` resourcePermission+      `Prelude.hashWithSalt` resourceTypeFilters++instance Prelude.NFData ListMonitoredResourcesFilters where+  rnf ListMonitoredResourcesFilters' {..} =+    Prelude.rnf resourcePermission+      `Prelude.seq` Prelude.rnf resourceTypeFilters++instance Data.ToJSON ListMonitoredResourcesFilters where+  toJSON ListMonitoredResourcesFilters' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("ResourcePermission" Data..= resourcePermission),+            Prelude.Just+              ("ResourceTypeFilters" Data..= resourceTypeFilters)+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/Locale.hs view
@@ -0,0 +1,113 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.Locale+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.Locale+  ( Locale+      ( ..,+        Locale_DE_DE,+        Locale_EN_GB,+        Locale_EN_US,+        Locale_ES_ES,+        Locale_FR_FR,+        Locale_IT_IT,+        Locale_JA_JP,+        Locale_KO_KR,+        Locale_PT_BR,+        Locale_ZH_CN,+        Locale_ZH_TW+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype Locale = Locale' {fromLocale :: 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 Locale_DE_DE :: Locale+pattern Locale_DE_DE = Locale' "DE_DE"++pattern Locale_EN_GB :: Locale+pattern Locale_EN_GB = Locale' "EN_GB"++pattern Locale_EN_US :: Locale+pattern Locale_EN_US = Locale' "EN_US"++pattern Locale_ES_ES :: Locale+pattern Locale_ES_ES = Locale' "ES_ES"++pattern Locale_FR_FR :: Locale+pattern Locale_FR_FR = Locale' "FR_FR"++pattern Locale_IT_IT :: Locale+pattern Locale_IT_IT = Locale' "IT_IT"++pattern Locale_JA_JP :: Locale+pattern Locale_JA_JP = Locale' "JA_JP"++pattern Locale_KO_KR :: Locale+pattern Locale_KO_KR = Locale' "KO_KR"++pattern Locale_PT_BR :: Locale+pattern Locale_PT_BR = Locale' "PT_BR"++pattern Locale_ZH_CN :: Locale+pattern Locale_ZH_CN = Locale' "ZH_CN"++pattern Locale_ZH_TW :: Locale+pattern Locale_ZH_TW = Locale' "ZH_TW"++{-# COMPLETE+  Locale_DE_DE,+  Locale_EN_GB,+  Locale_EN_US,+  Locale_ES_ES,+  Locale_FR_FR,+  Locale_IT_IT,+  Locale_JA_JP,+  Locale_KO_KR,+  Locale_PT_BR,+  Locale_ZH_CN,+  Locale_ZH_TW,+  Locale'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/LogAnomalyClass.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.DevOpsGuru.Types.LogAnomalyClass+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.LogAnomalyClass where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.LogAnomalyType+import qualified Amazonka.Prelude as Prelude++-- | Information about an anomalous log event found within a log group.+--+-- /See:/ 'newLogAnomalyClass' smart constructor.+data LogAnomalyClass = LogAnomalyClass'+  { -- | The explanation for why the log event is considered an anomaly.+    explanation :: Prelude.Maybe Prelude.Text,+    -- | The token where the anomaly was detected. This may refer to an exception+    -- or another location, or it may be blank for log anomalies such as format+    -- anomalies.+    logAnomalyToken :: Prelude.Maybe Prelude.Text,+    -- | The type of log anomaly that has been detected.+    logAnomalyType :: Prelude.Maybe LogAnomalyType,+    -- | The ID of the log event.+    logEventId :: Prelude.Maybe Prelude.Text,+    -- | The time of the first occurrence of the anomalous log event.+    logEventTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The name of the Amazon CloudWatch log stream that the anomalous log+    -- event belongs to. A log stream is a sequence of log events that share+    -- the same source.+    logStreamName :: Prelude.Maybe Prelude.Text,+    -- | The number of log lines where this anomalous log event occurs.+    numberOfLogLinesOccurrences :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LogAnomalyClass' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'explanation', 'logAnomalyClass_explanation' - The explanation for why the log event is considered an anomaly.+--+-- 'logAnomalyToken', 'logAnomalyClass_logAnomalyToken' - The token where the anomaly was detected. This may refer to an exception+-- or another location, or it may be blank for log anomalies such as format+-- anomalies.+--+-- 'logAnomalyType', 'logAnomalyClass_logAnomalyType' - The type of log anomaly that has been detected.+--+-- 'logEventId', 'logAnomalyClass_logEventId' - The ID of the log event.+--+-- 'logEventTimestamp', 'logAnomalyClass_logEventTimestamp' - The time of the first occurrence of the anomalous log event.+--+-- 'logStreamName', 'logAnomalyClass_logStreamName' - The name of the Amazon CloudWatch log stream that the anomalous log+-- event belongs to. A log stream is a sequence of log events that share+-- the same source.+--+-- 'numberOfLogLinesOccurrences', 'logAnomalyClass_numberOfLogLinesOccurrences' - The number of log lines where this anomalous log event occurs.+newLogAnomalyClass ::+  LogAnomalyClass+newLogAnomalyClass =+  LogAnomalyClass'+    { explanation = Prelude.Nothing,+      logAnomalyToken = Prelude.Nothing,+      logAnomalyType = Prelude.Nothing,+      logEventId = Prelude.Nothing,+      logEventTimestamp = Prelude.Nothing,+      logStreamName = Prelude.Nothing,+      numberOfLogLinesOccurrences = Prelude.Nothing+    }++-- | The explanation for why the log event is considered an anomaly.+logAnomalyClass_explanation :: Lens.Lens' LogAnomalyClass (Prelude.Maybe Prelude.Text)+logAnomalyClass_explanation = Lens.lens (\LogAnomalyClass' {explanation} -> explanation) (\s@LogAnomalyClass' {} a -> s {explanation = a} :: LogAnomalyClass)++-- | The token where the anomaly was detected. This may refer to an exception+-- or another location, or it may be blank for log anomalies such as format+-- anomalies.+logAnomalyClass_logAnomalyToken :: Lens.Lens' LogAnomalyClass (Prelude.Maybe Prelude.Text)+logAnomalyClass_logAnomalyToken = Lens.lens (\LogAnomalyClass' {logAnomalyToken} -> logAnomalyToken) (\s@LogAnomalyClass' {} a -> s {logAnomalyToken = a} :: LogAnomalyClass)++-- | The type of log anomaly that has been detected.+logAnomalyClass_logAnomalyType :: Lens.Lens' LogAnomalyClass (Prelude.Maybe LogAnomalyType)+logAnomalyClass_logAnomalyType = Lens.lens (\LogAnomalyClass' {logAnomalyType} -> logAnomalyType) (\s@LogAnomalyClass' {} a -> s {logAnomalyType = a} :: LogAnomalyClass)++-- | The ID of the log event.+logAnomalyClass_logEventId :: Lens.Lens' LogAnomalyClass (Prelude.Maybe Prelude.Text)+logAnomalyClass_logEventId = Lens.lens (\LogAnomalyClass' {logEventId} -> logEventId) (\s@LogAnomalyClass' {} a -> s {logEventId = a} :: LogAnomalyClass)++-- | The time of the first occurrence of the anomalous log event.+logAnomalyClass_logEventTimestamp :: Lens.Lens' LogAnomalyClass (Prelude.Maybe Prelude.UTCTime)+logAnomalyClass_logEventTimestamp = Lens.lens (\LogAnomalyClass' {logEventTimestamp} -> logEventTimestamp) (\s@LogAnomalyClass' {} a -> s {logEventTimestamp = a} :: LogAnomalyClass) Prelude.. Lens.mapping Data._Time++-- | The name of the Amazon CloudWatch log stream that the anomalous log+-- event belongs to. A log stream is a sequence of log events that share+-- the same source.+logAnomalyClass_logStreamName :: Lens.Lens' LogAnomalyClass (Prelude.Maybe Prelude.Text)+logAnomalyClass_logStreamName = Lens.lens (\LogAnomalyClass' {logStreamName} -> logStreamName) (\s@LogAnomalyClass' {} a -> s {logStreamName = a} :: LogAnomalyClass)++-- | The number of log lines where this anomalous log event occurs.+logAnomalyClass_numberOfLogLinesOccurrences :: Lens.Lens' LogAnomalyClass (Prelude.Maybe Prelude.Int)+logAnomalyClass_numberOfLogLinesOccurrences = Lens.lens (\LogAnomalyClass' {numberOfLogLinesOccurrences} -> numberOfLogLinesOccurrences) (\s@LogAnomalyClass' {} a -> s {numberOfLogLinesOccurrences = a} :: LogAnomalyClass)++instance Data.FromJSON LogAnomalyClass where+  parseJSON =+    Data.withObject+      "LogAnomalyClass"+      ( \x ->+          LogAnomalyClass'+            Prelude.<$> (x Data..:? "Explanation")+            Prelude.<*> (x Data..:? "LogAnomalyToken")+            Prelude.<*> (x Data..:? "LogAnomalyType")+            Prelude.<*> (x Data..:? "LogEventId")+            Prelude.<*> (x Data..:? "LogEventTimestamp")+            Prelude.<*> (x Data..:? "LogStreamName")+            Prelude.<*> (x Data..:? "NumberOfLogLinesOccurrences")+      )++instance Prelude.Hashable LogAnomalyClass where+  hashWithSalt _salt LogAnomalyClass' {..} =+    _salt+      `Prelude.hashWithSalt` explanation+      `Prelude.hashWithSalt` logAnomalyToken+      `Prelude.hashWithSalt` logAnomalyType+      `Prelude.hashWithSalt` logEventId+      `Prelude.hashWithSalt` logEventTimestamp+      `Prelude.hashWithSalt` logStreamName+      `Prelude.hashWithSalt` numberOfLogLinesOccurrences++instance Prelude.NFData LogAnomalyClass where+  rnf LogAnomalyClass' {..} =+    Prelude.rnf explanation+      `Prelude.seq` Prelude.rnf logAnomalyToken+      `Prelude.seq` Prelude.rnf logAnomalyType+      `Prelude.seq` Prelude.rnf logEventId+      `Prelude.seq` Prelude.rnf logEventTimestamp+      `Prelude.seq` Prelude.rnf logStreamName+      `Prelude.seq` Prelude.rnf numberOfLogLinesOccurrences
+ gen/Amazonka/DevOpsGuru/Types/LogAnomalyShowcase.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.LogAnomalyShowcase+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.LogAnomalyShowcase where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.LogAnomalyClass+import qualified Amazonka.Prelude as Prelude++-- | A cluster of similar anomalous log events found within a log group.+--+-- /See:/ 'newLogAnomalyShowcase' smart constructor.+data LogAnomalyShowcase = LogAnomalyShowcase'+  { -- | A list of anomalous log events that may be related.+    logAnomalyClasses :: Prelude.Maybe [LogAnomalyClass]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LogAnomalyShowcase' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'logAnomalyClasses', 'logAnomalyShowcase_logAnomalyClasses' - A list of anomalous log events that may be related.+newLogAnomalyShowcase ::+  LogAnomalyShowcase+newLogAnomalyShowcase =+  LogAnomalyShowcase'+    { logAnomalyClasses =+        Prelude.Nothing+    }++-- | A list of anomalous log events that may be related.+logAnomalyShowcase_logAnomalyClasses :: Lens.Lens' LogAnomalyShowcase (Prelude.Maybe [LogAnomalyClass])+logAnomalyShowcase_logAnomalyClasses = Lens.lens (\LogAnomalyShowcase' {logAnomalyClasses} -> logAnomalyClasses) (\s@LogAnomalyShowcase' {} a -> s {logAnomalyClasses = a} :: LogAnomalyShowcase) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON LogAnomalyShowcase where+  parseJSON =+    Data.withObject+      "LogAnomalyShowcase"+      ( \x ->+          LogAnomalyShowcase'+            Prelude.<$> ( x+                            Data..:? "LogAnomalyClasses"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable LogAnomalyShowcase where+  hashWithSalt _salt LogAnomalyShowcase' {..} =+    _salt `Prelude.hashWithSalt` logAnomalyClasses++instance Prelude.NFData LogAnomalyShowcase where+  rnf LogAnomalyShowcase' {..} =+    Prelude.rnf logAnomalyClasses
+ gen/Amazonka/DevOpsGuru/Types/LogAnomalyType.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.DevOpsGuru.Types.LogAnomalyType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.LogAnomalyType+  ( LogAnomalyType+      ( ..,+        LogAnomalyType_BLOCK_FORMAT,+        LogAnomalyType_FORMAT,+        LogAnomalyType_HTTP_CODE,+        LogAnomalyType_KEYWORD,+        LogAnomalyType_KEYWORD_TOKEN,+        LogAnomalyType_NEW_FIELD_NAME,+        LogAnomalyType_NUMERICAL_NAN,+        LogAnomalyType_NUMERICAL_POINT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LogAnomalyType = LogAnomalyType'+  { fromLogAnomalyType ::+      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 LogAnomalyType_BLOCK_FORMAT :: LogAnomalyType+pattern LogAnomalyType_BLOCK_FORMAT = LogAnomalyType' "BLOCK_FORMAT"++pattern LogAnomalyType_FORMAT :: LogAnomalyType+pattern LogAnomalyType_FORMAT = LogAnomalyType' "FORMAT"++pattern LogAnomalyType_HTTP_CODE :: LogAnomalyType+pattern LogAnomalyType_HTTP_CODE = LogAnomalyType' "HTTP_CODE"++pattern LogAnomalyType_KEYWORD :: LogAnomalyType+pattern LogAnomalyType_KEYWORD = LogAnomalyType' "KEYWORD"++pattern LogAnomalyType_KEYWORD_TOKEN :: LogAnomalyType+pattern LogAnomalyType_KEYWORD_TOKEN = LogAnomalyType' "KEYWORD_TOKEN"++pattern LogAnomalyType_NEW_FIELD_NAME :: LogAnomalyType+pattern LogAnomalyType_NEW_FIELD_NAME = LogAnomalyType' "NEW_FIELD_NAME"++pattern LogAnomalyType_NUMERICAL_NAN :: LogAnomalyType+pattern LogAnomalyType_NUMERICAL_NAN = LogAnomalyType' "NUMERICAL_NAN"++pattern LogAnomalyType_NUMERICAL_POINT :: LogAnomalyType+pattern LogAnomalyType_NUMERICAL_POINT = LogAnomalyType' "NUMERICAL_POINT"++{-# COMPLETE+  LogAnomalyType_BLOCK_FORMAT,+  LogAnomalyType_FORMAT,+  LogAnomalyType_HTTP_CODE,+  LogAnomalyType_KEYWORD,+  LogAnomalyType_KEYWORD_TOKEN,+  LogAnomalyType_NEW_FIELD_NAME,+  LogAnomalyType_NUMERICAL_NAN,+  LogAnomalyType_NUMERICAL_POINT,+  LogAnomalyType'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/LogsAnomalyDetectionIntegration.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.DevOpsGuru.Types.LogsAnomalyDetectionIntegration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.LogsAnomalyDetectionIntegration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.OptInStatus+import qualified Amazonka.Prelude as Prelude++-- | Information about the integration of DevOps Guru with CloudWatch log+-- groups for log anomaly detection.+--+-- /See:/ 'newLogsAnomalyDetectionIntegration' smart constructor.+data LogsAnomalyDetectionIntegration = LogsAnomalyDetectionIntegration'+  { -- | Specifies if DevOps Guru is configured to perform log anomaly detection+    -- on CloudWatch log groups.+    optInStatus :: Prelude.Maybe OptInStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LogsAnomalyDetectionIntegration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'optInStatus', 'logsAnomalyDetectionIntegration_optInStatus' - Specifies if DevOps Guru is configured to perform log anomaly detection+-- on CloudWatch log groups.+newLogsAnomalyDetectionIntegration ::+  LogsAnomalyDetectionIntegration+newLogsAnomalyDetectionIntegration =+  LogsAnomalyDetectionIntegration'+    { optInStatus =+        Prelude.Nothing+    }++-- | Specifies if DevOps Guru is configured to perform log anomaly detection+-- on CloudWatch log groups.+logsAnomalyDetectionIntegration_optInStatus :: Lens.Lens' LogsAnomalyDetectionIntegration (Prelude.Maybe OptInStatus)+logsAnomalyDetectionIntegration_optInStatus = Lens.lens (\LogsAnomalyDetectionIntegration' {optInStatus} -> optInStatus) (\s@LogsAnomalyDetectionIntegration' {} a -> s {optInStatus = a} :: LogsAnomalyDetectionIntegration)++instance+  Data.FromJSON+    LogsAnomalyDetectionIntegration+  where+  parseJSON =+    Data.withObject+      "LogsAnomalyDetectionIntegration"+      ( \x ->+          LogsAnomalyDetectionIntegration'+            Prelude.<$> (x Data..:? "OptInStatus")+      )++instance+  Prelude.Hashable+    LogsAnomalyDetectionIntegration+  where+  hashWithSalt+    _salt+    LogsAnomalyDetectionIntegration' {..} =+      _salt `Prelude.hashWithSalt` optInStatus++instance+  Prelude.NFData+    LogsAnomalyDetectionIntegration+  where+  rnf LogsAnomalyDetectionIntegration' {..} =+    Prelude.rnf optInStatus
+ gen/Amazonka/DevOpsGuru/Types/LogsAnomalyDetectionIntegrationConfig.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.DevOpsGuru.Types.LogsAnomalyDetectionIntegrationConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.LogsAnomalyDetectionIntegrationConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.OptInStatus+import qualified Amazonka.Prelude as Prelude++-- | Information about the integration of DevOps Guru with CloudWatch log+-- groups for log anomaly detection. You can use this to update the+-- configuration.+--+-- /See:/ 'newLogsAnomalyDetectionIntegrationConfig' smart constructor.+data LogsAnomalyDetectionIntegrationConfig = LogsAnomalyDetectionIntegrationConfig'+  { -- | Specifies if DevOps Guru is configured to perform log anomaly detection+    -- on CloudWatch log groups.+    optInStatus :: Prelude.Maybe OptInStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LogsAnomalyDetectionIntegrationConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'optInStatus', 'logsAnomalyDetectionIntegrationConfig_optInStatus' - Specifies if DevOps Guru is configured to perform log anomaly detection+-- on CloudWatch log groups.+newLogsAnomalyDetectionIntegrationConfig ::+  LogsAnomalyDetectionIntegrationConfig+newLogsAnomalyDetectionIntegrationConfig =+  LogsAnomalyDetectionIntegrationConfig'+    { optInStatus =+        Prelude.Nothing+    }++-- | Specifies if DevOps Guru is configured to perform log anomaly detection+-- on CloudWatch log groups.+logsAnomalyDetectionIntegrationConfig_optInStatus :: Lens.Lens' LogsAnomalyDetectionIntegrationConfig (Prelude.Maybe OptInStatus)+logsAnomalyDetectionIntegrationConfig_optInStatus = Lens.lens (\LogsAnomalyDetectionIntegrationConfig' {optInStatus} -> optInStatus) (\s@LogsAnomalyDetectionIntegrationConfig' {} a -> s {optInStatus = a} :: LogsAnomalyDetectionIntegrationConfig)++instance+  Prelude.Hashable+    LogsAnomalyDetectionIntegrationConfig+  where+  hashWithSalt+    _salt+    LogsAnomalyDetectionIntegrationConfig' {..} =+      _salt `Prelude.hashWithSalt` optInStatus++instance+  Prelude.NFData+    LogsAnomalyDetectionIntegrationConfig+  where+  rnf LogsAnomalyDetectionIntegrationConfig' {..} =+    Prelude.rnf optInStatus++instance+  Data.ToJSON+    LogsAnomalyDetectionIntegrationConfig+  where+  toJSON LogsAnomalyDetectionIntegrationConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [("OptInStatus" Data..=) Prelude.<$> optInStatus]+      )
+ gen/Amazonka/DevOpsGuru/Types/MonitoredResourceIdentifier.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.DevOpsGuru.Types.MonitoredResourceIdentifier+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.MonitoredResourceIdentifier where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.ResourceCollection+import Amazonka.DevOpsGuru.Types.ResourcePermission+import qualified Amazonka.Prelude as Prelude++-- | Information about the resource that is being monitored, including the+-- name of the resource, the type of resource, and whether or not+-- permission is given to DevOps Guru to access that resource.+--+-- /See:/ 'newMonitoredResourceIdentifier' smart constructor.+data MonitoredResourceIdentifier = MonitoredResourceIdentifier'+  { -- | The time at which DevOps Guru last updated this resource.+    lastUpdated :: Prelude.Maybe Data.POSIX,+    -- | The name of the resource being monitored.+    monitoredResourceName :: Prelude.Maybe Prelude.Text,+    resourceCollection :: Prelude.Maybe ResourceCollection,+    -- | The permission status of a resource.+    resourcePermission :: Prelude.Maybe ResourcePermission,+    -- | The type of resource being monitored.+    type' :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MonitoredResourceIdentifier' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'lastUpdated', 'monitoredResourceIdentifier_lastUpdated' - The time at which DevOps Guru last updated this resource.+--+-- 'monitoredResourceName', 'monitoredResourceIdentifier_monitoredResourceName' - The name of the resource being monitored.+--+-- 'resourceCollection', 'monitoredResourceIdentifier_resourceCollection' - Undocumented member.+--+-- 'resourcePermission', 'monitoredResourceIdentifier_resourcePermission' - The permission status of a resource.+--+-- 'type'', 'monitoredResourceIdentifier_type' - The type of resource being monitored.+newMonitoredResourceIdentifier ::+  MonitoredResourceIdentifier+newMonitoredResourceIdentifier =+  MonitoredResourceIdentifier'+    { lastUpdated =+        Prelude.Nothing,+      monitoredResourceName = Prelude.Nothing,+      resourceCollection = Prelude.Nothing,+      resourcePermission = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | The time at which DevOps Guru last updated this resource.+monitoredResourceIdentifier_lastUpdated :: Lens.Lens' MonitoredResourceIdentifier (Prelude.Maybe Prelude.UTCTime)+monitoredResourceIdentifier_lastUpdated = Lens.lens (\MonitoredResourceIdentifier' {lastUpdated} -> lastUpdated) (\s@MonitoredResourceIdentifier' {} a -> s {lastUpdated = a} :: MonitoredResourceIdentifier) Prelude.. Lens.mapping Data._Time++-- | The name of the resource being monitored.+monitoredResourceIdentifier_monitoredResourceName :: Lens.Lens' MonitoredResourceIdentifier (Prelude.Maybe Prelude.Text)+monitoredResourceIdentifier_monitoredResourceName = Lens.lens (\MonitoredResourceIdentifier' {monitoredResourceName} -> monitoredResourceName) (\s@MonitoredResourceIdentifier' {} a -> s {monitoredResourceName = a} :: MonitoredResourceIdentifier)++-- | Undocumented member.+monitoredResourceIdentifier_resourceCollection :: Lens.Lens' MonitoredResourceIdentifier (Prelude.Maybe ResourceCollection)+monitoredResourceIdentifier_resourceCollection = Lens.lens (\MonitoredResourceIdentifier' {resourceCollection} -> resourceCollection) (\s@MonitoredResourceIdentifier' {} a -> s {resourceCollection = a} :: MonitoredResourceIdentifier)++-- | The permission status of a resource.+monitoredResourceIdentifier_resourcePermission :: Lens.Lens' MonitoredResourceIdentifier (Prelude.Maybe ResourcePermission)+monitoredResourceIdentifier_resourcePermission = Lens.lens (\MonitoredResourceIdentifier' {resourcePermission} -> resourcePermission) (\s@MonitoredResourceIdentifier' {} a -> s {resourcePermission = a} :: MonitoredResourceIdentifier)++-- | The type of resource being monitored.+monitoredResourceIdentifier_type :: Lens.Lens' MonitoredResourceIdentifier (Prelude.Maybe Prelude.Text)+monitoredResourceIdentifier_type = Lens.lens (\MonitoredResourceIdentifier' {type'} -> type') (\s@MonitoredResourceIdentifier' {} a -> s {type' = a} :: MonitoredResourceIdentifier)++instance Data.FromJSON MonitoredResourceIdentifier where+  parseJSON =+    Data.withObject+      "MonitoredResourceIdentifier"+      ( \x ->+          MonitoredResourceIdentifier'+            Prelude.<$> (x Data..:? "LastUpdated")+            Prelude.<*> (x Data..:? "MonitoredResourceName")+            Prelude.<*> (x Data..:? "ResourceCollection")+            Prelude.<*> (x Data..:? "ResourcePermission")+            Prelude.<*> (x Data..:? "Type")+      )++instance Prelude.Hashable MonitoredResourceIdentifier where+  hashWithSalt _salt MonitoredResourceIdentifier' {..} =+    _salt+      `Prelude.hashWithSalt` lastUpdated+      `Prelude.hashWithSalt` monitoredResourceName+      `Prelude.hashWithSalt` resourceCollection+      `Prelude.hashWithSalt` resourcePermission+      `Prelude.hashWithSalt` type'++instance Prelude.NFData MonitoredResourceIdentifier where+  rnf MonitoredResourceIdentifier' {..} =+    Prelude.rnf lastUpdated+      `Prelude.seq` Prelude.rnf monitoredResourceName+      `Prelude.seq` Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf resourcePermission+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/DevOpsGuru/Types/NotificationChannel.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.DevOpsGuru.Types.NotificationChannel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.NotificationChannel where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.NotificationChannelConfig+import qualified Amazonka.Prelude as Prelude++-- | Information about a notification channel. A notification channel is used+-- to notify you when DevOps Guru creates an insight. The one supported+-- notification channel is Amazon Simple Notification Service (Amazon SNS).+--+-- If you use an Amazon SNS topic in another account, you must attach a+-- policy to it that grants DevOps Guru permission to it notifications.+-- DevOps Guru adds the required policy on your behalf to send+-- notifications using Amazon SNS in your account. DevOps Guru only+-- supports standard SNS topics. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-required-permissions.html Permissions for cross account Amazon SNS topics>.+--+-- If you use an Amazon SNS topic in another account, you must attach a+-- policy to it that grants DevOps Guru permission to it notifications.+-- DevOps Guru adds the required policy on your behalf to send+-- notifications using Amazon SNS in your account. For more information,+-- see Permissions for cross account Amazon SNS topics.+--+-- If you use an Amazon SNS topic that is encrypted by an Amazon Web+-- Services Key Management Service customer-managed key (CMK), then you+-- must add permissions to the CMK. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-kms-permissions.html Permissions for Amazon Web Services KMS–encrypted Amazon SNS topics>.+--+-- /See:/ 'newNotificationChannel' smart constructor.+data NotificationChannel = NotificationChannel'+  { -- | A @NotificationChannelConfig@ object that contains information about+    -- configured notification channels.+    config :: Prelude.Maybe NotificationChannelConfig,+    -- | The ID of a notification channel.+    id :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'NotificationChannel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'config', 'notificationChannel_config' - A @NotificationChannelConfig@ object that contains information about+-- configured notification channels.+--+-- 'id', 'notificationChannel_id' - The ID of a notification channel.+newNotificationChannel ::+  NotificationChannel+newNotificationChannel =+  NotificationChannel'+    { config = Prelude.Nothing,+      id = Prelude.Nothing+    }++-- | A @NotificationChannelConfig@ object that contains information about+-- configured notification channels.+notificationChannel_config :: Lens.Lens' NotificationChannel (Prelude.Maybe NotificationChannelConfig)+notificationChannel_config = Lens.lens (\NotificationChannel' {config} -> config) (\s@NotificationChannel' {} a -> s {config = a} :: NotificationChannel)++-- | The ID of a notification channel.+notificationChannel_id :: Lens.Lens' NotificationChannel (Prelude.Maybe Prelude.Text)+notificationChannel_id = Lens.lens (\NotificationChannel' {id} -> id) (\s@NotificationChannel' {} a -> s {id = a} :: NotificationChannel)++instance Data.FromJSON NotificationChannel where+  parseJSON =+    Data.withObject+      "NotificationChannel"+      ( \x ->+          NotificationChannel'+            Prelude.<$> (x Data..:? "Config")+            Prelude.<*> (x Data..:? "Id")+      )++instance Prelude.Hashable NotificationChannel where+  hashWithSalt _salt NotificationChannel' {..} =+    _salt+      `Prelude.hashWithSalt` config+      `Prelude.hashWithSalt` id++instance Prelude.NFData NotificationChannel where+  rnf NotificationChannel' {..} =+    Prelude.rnf config `Prelude.seq` Prelude.rnf id
+ gen/Amazonka/DevOpsGuru/Types/NotificationChannelConfig.hs view
@@ -0,0 +1,165 @@+{-# 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.DevOpsGuru.Types.NotificationChannelConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.NotificationChannelConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.NotificationFilterConfig+import Amazonka.DevOpsGuru.Types.SnsChannelConfig+import qualified Amazonka.Prelude as Prelude++-- | Information about notification channels you have configured with DevOps+-- Guru. The one supported notification channel is Amazon Simple+-- Notification Service (Amazon SNS).+--+-- /See:/ 'newNotificationChannelConfig' smart constructor.+data NotificationChannelConfig = NotificationChannelConfig'+  { -- | The filter configurations for the Amazon SNS notification topic you use+    -- with DevOps Guru. If you do not provide filter configurations, the+    -- default configurations are to receive notifications for all message+    -- types of @High@ or @Medium@ severity.+    filters :: Prelude.Maybe NotificationFilterConfig,+    -- | Information about a notification channel configured in DevOps Guru to+    -- send notifications when insights are created.+    --+    -- If you use an Amazon SNS topic in another account, you must attach a+    -- policy to it that grants DevOps Guru permission to it notifications.+    -- DevOps Guru adds the required policy on your behalf to send+    -- notifications using Amazon SNS in your account. DevOps Guru only+    -- supports standard SNS topics. For more information, see+    -- <https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-required-permissions.html Permissions for cross account Amazon SNS topics>.+    --+    -- If you use an Amazon SNS topic in another account, you must attach a+    -- policy to it that grants DevOps Guru permission to it notifications.+    -- DevOps Guru adds the required policy on your behalf to send+    -- notifications using Amazon SNS in your account. For more information,+    -- see Permissions for cross account Amazon SNS topics.+    --+    -- If you use an Amazon SNS topic that is encrypted by an Amazon Web+    -- Services Key Management Service customer-managed key (CMK), then you+    -- must add permissions to the CMK. For more information, see+    -- <https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-kms-permissions.html Permissions for Amazon Web Services KMS–encrypted Amazon SNS topics>.+    sns :: SnsChannelConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'NotificationChannelConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'notificationChannelConfig_filters' - The filter configurations for the Amazon SNS notification topic you use+-- with DevOps Guru. If you do not provide filter configurations, the+-- default configurations are to receive notifications for all message+-- types of @High@ or @Medium@ severity.+--+-- 'sns', 'notificationChannelConfig_sns' - Information about a notification channel configured in DevOps Guru to+-- send notifications when insights are created.+--+-- If you use an Amazon SNS topic in another account, you must attach a+-- policy to it that grants DevOps Guru permission to it notifications.+-- DevOps Guru adds the required policy on your behalf to send+-- notifications using Amazon SNS in your account. DevOps Guru only+-- supports standard SNS topics. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-required-permissions.html Permissions for cross account Amazon SNS topics>.+--+-- If you use an Amazon SNS topic in another account, you must attach a+-- policy to it that grants DevOps Guru permission to it notifications.+-- DevOps Guru adds the required policy on your behalf to send+-- notifications using Amazon SNS in your account. For more information,+-- see Permissions for cross account Amazon SNS topics.+--+-- If you use an Amazon SNS topic that is encrypted by an Amazon Web+-- Services Key Management Service customer-managed key (CMK), then you+-- must add permissions to the CMK. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-kms-permissions.html Permissions for Amazon Web Services KMS–encrypted Amazon SNS topics>.+newNotificationChannelConfig ::+  -- | 'sns'+  SnsChannelConfig ->+  NotificationChannelConfig+newNotificationChannelConfig pSns_ =+  NotificationChannelConfig'+    { filters =+        Prelude.Nothing,+      sns = pSns_+    }++-- | The filter configurations for the Amazon SNS notification topic you use+-- with DevOps Guru. If you do not provide filter configurations, the+-- default configurations are to receive notifications for all message+-- types of @High@ or @Medium@ severity.+notificationChannelConfig_filters :: Lens.Lens' NotificationChannelConfig (Prelude.Maybe NotificationFilterConfig)+notificationChannelConfig_filters = Lens.lens (\NotificationChannelConfig' {filters} -> filters) (\s@NotificationChannelConfig' {} a -> s {filters = a} :: NotificationChannelConfig)++-- | Information about a notification channel configured in DevOps Guru to+-- send notifications when insights are created.+--+-- If you use an Amazon SNS topic in another account, you must attach a+-- policy to it that grants DevOps Guru permission to it notifications.+-- DevOps Guru adds the required policy on your behalf to send+-- notifications using Amazon SNS in your account. DevOps Guru only+-- supports standard SNS topics. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-required-permissions.html Permissions for cross account Amazon SNS topics>.+--+-- If you use an Amazon SNS topic in another account, you must attach a+-- policy to it that grants DevOps Guru permission to it notifications.+-- DevOps Guru adds the required policy on your behalf to send+-- notifications using Amazon SNS in your account. For more information,+-- see Permissions for cross account Amazon SNS topics.+--+-- If you use an Amazon SNS topic that is encrypted by an Amazon Web+-- Services Key Management Service customer-managed key (CMK), then you+-- must add permissions to the CMK. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-kms-permissions.html Permissions for Amazon Web Services KMS–encrypted Amazon SNS topics>.+notificationChannelConfig_sns :: Lens.Lens' NotificationChannelConfig SnsChannelConfig+notificationChannelConfig_sns = Lens.lens (\NotificationChannelConfig' {sns} -> sns) (\s@NotificationChannelConfig' {} a -> s {sns = a} :: NotificationChannelConfig)++instance Data.FromJSON NotificationChannelConfig where+  parseJSON =+    Data.withObject+      "NotificationChannelConfig"+      ( \x ->+          NotificationChannelConfig'+            Prelude.<$> (x Data..:? "Filters")+            Prelude.<*> (x Data..: "Sns")+      )++instance Prelude.Hashable NotificationChannelConfig where+  hashWithSalt _salt NotificationChannelConfig' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` sns++instance Prelude.NFData NotificationChannelConfig where+  rnf NotificationChannelConfig' {..} =+    Prelude.rnf filters `Prelude.seq` Prelude.rnf sns++instance Data.ToJSON NotificationChannelConfig where+  toJSON NotificationChannelConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Filters" Data..=) Prelude.<$> filters,+            Prelude.Just ("Sns" Data..= sns)+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/NotificationFilterConfig.hs view
@@ -0,0 +1,114 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.NotificationFilterConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.NotificationFilterConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.InsightSeverity+import Amazonka.DevOpsGuru.Types.NotificationMessageType+import qualified Amazonka.Prelude as Prelude++-- | The filter configurations for the Amazon SNS notification topic you use+-- with DevOps Guru. You can choose to specify which events or message+-- types to receive notifications for. You can also choose to specify which+-- severity levels to receive notifications for.+--+-- /See:/ 'newNotificationFilterConfig' smart constructor.+data NotificationFilterConfig = NotificationFilterConfig'+  { -- | The events that you want to receive notifications for. For example, you+    -- can choose to receive notifications only when the severity level is+    -- upgraded or a new insight is created.+    messageTypes :: Prelude.Maybe [NotificationMessageType],+    -- | The severity levels that you want to receive notifications for. For+    -- example, you can choose to receive notifications only for insights with+    -- @HIGH@ and @MEDIUM@ severity levels. For more information, see+    -- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>.+    severities :: Prelude.Maybe [InsightSeverity]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'NotificationFilterConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'messageTypes', 'notificationFilterConfig_messageTypes' - The events that you want to receive notifications for. For example, you+-- can choose to receive notifications only when the severity level is+-- upgraded or a new insight is created.+--+-- 'severities', 'notificationFilterConfig_severities' - The severity levels that you want to receive notifications for. For+-- example, you can choose to receive notifications only for insights with+-- @HIGH@ and @MEDIUM@ severity levels. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>.+newNotificationFilterConfig ::+  NotificationFilterConfig+newNotificationFilterConfig =+  NotificationFilterConfig'+    { messageTypes =+        Prelude.Nothing,+      severities = Prelude.Nothing+    }++-- | The events that you want to receive notifications for. For example, you+-- can choose to receive notifications only when the severity level is+-- upgraded or a new insight is created.+notificationFilterConfig_messageTypes :: Lens.Lens' NotificationFilterConfig (Prelude.Maybe [NotificationMessageType])+notificationFilterConfig_messageTypes = Lens.lens (\NotificationFilterConfig' {messageTypes} -> messageTypes) (\s@NotificationFilterConfig' {} a -> s {messageTypes = a} :: NotificationFilterConfig) Prelude.. Lens.mapping Lens.coerced++-- | The severity levels that you want to receive notifications for. For+-- example, you can choose to receive notifications only for insights with+-- @HIGH@ and @MEDIUM@ severity levels. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>.+notificationFilterConfig_severities :: Lens.Lens' NotificationFilterConfig (Prelude.Maybe [InsightSeverity])+notificationFilterConfig_severities = Lens.lens (\NotificationFilterConfig' {severities} -> severities) (\s@NotificationFilterConfig' {} a -> s {severities = a} :: NotificationFilterConfig) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON NotificationFilterConfig where+  parseJSON =+    Data.withObject+      "NotificationFilterConfig"+      ( \x ->+          NotificationFilterConfig'+            Prelude.<$> (x Data..:? "MessageTypes" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "Severities" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable NotificationFilterConfig where+  hashWithSalt _salt NotificationFilterConfig' {..} =+    _salt+      `Prelude.hashWithSalt` messageTypes+      `Prelude.hashWithSalt` severities++instance Prelude.NFData NotificationFilterConfig where+  rnf NotificationFilterConfig' {..} =+    Prelude.rnf messageTypes+      `Prelude.seq` Prelude.rnf severities++instance Data.ToJSON NotificationFilterConfig where+  toJSON NotificationFilterConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MessageTypes" Data..=) Prelude.<$> messageTypes,+            ("Severities" Data..=) Prelude.<$> severities+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/NotificationMessageType.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.NotificationMessageType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.NotificationMessageType+  ( NotificationMessageType+      ( ..,+        NotificationMessageType_CLOSED_INSIGHT,+        NotificationMessageType_NEW_ASSOCIATION,+        NotificationMessageType_NEW_INSIGHT,+        NotificationMessageType_NEW_RECOMMENDATION,+        NotificationMessageType_SEVERITY_UPGRADED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype NotificationMessageType = NotificationMessageType'+  { fromNotificationMessageType ::+      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 NotificationMessageType_CLOSED_INSIGHT :: NotificationMessageType+pattern NotificationMessageType_CLOSED_INSIGHT = NotificationMessageType' "CLOSED_INSIGHT"++pattern NotificationMessageType_NEW_ASSOCIATION :: NotificationMessageType+pattern NotificationMessageType_NEW_ASSOCIATION = NotificationMessageType' "NEW_ASSOCIATION"++pattern NotificationMessageType_NEW_INSIGHT :: NotificationMessageType+pattern NotificationMessageType_NEW_INSIGHT = NotificationMessageType' "NEW_INSIGHT"++pattern NotificationMessageType_NEW_RECOMMENDATION :: NotificationMessageType+pattern NotificationMessageType_NEW_RECOMMENDATION = NotificationMessageType' "NEW_RECOMMENDATION"++pattern NotificationMessageType_SEVERITY_UPGRADED :: NotificationMessageType+pattern NotificationMessageType_SEVERITY_UPGRADED = NotificationMessageType' "SEVERITY_UPGRADED"++{-# COMPLETE+  NotificationMessageType_CLOSED_INSIGHT,+  NotificationMessageType_NEW_ASSOCIATION,+  NotificationMessageType_NEW_INSIGHT,+  NotificationMessageType_NEW_RECOMMENDATION,+  NotificationMessageType_SEVERITY_UPGRADED,+  NotificationMessageType'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/OpsCenterIntegration.hs view
@@ -0,0 +1,78 @@+{-# 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.DevOpsGuru.Types.OpsCenterIntegration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.OpsCenterIntegration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.OptInStatus+import qualified Amazonka.Prelude as Prelude++-- | Information about whether DevOps Guru is configured to create an OpsItem+-- in Amazon Web Services Systems Manager OpsCenter for each created+-- insight.+--+-- /See:/ 'newOpsCenterIntegration' smart constructor.+data OpsCenterIntegration = OpsCenterIntegration'+  { -- | Specifies if DevOps Guru is enabled to create an Amazon Web Services+    -- Systems Manager OpsItem for each created insight.+    optInStatus :: Prelude.Maybe OptInStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OpsCenterIntegration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'optInStatus', 'opsCenterIntegration_optInStatus' - Specifies if DevOps Guru is enabled to create an Amazon Web Services+-- Systems Manager OpsItem for each created insight.+newOpsCenterIntegration ::+  OpsCenterIntegration+newOpsCenterIntegration =+  OpsCenterIntegration'+    { optInStatus =+        Prelude.Nothing+    }++-- | Specifies if DevOps Guru is enabled to create an Amazon Web Services+-- Systems Manager OpsItem for each created insight.+opsCenterIntegration_optInStatus :: Lens.Lens' OpsCenterIntegration (Prelude.Maybe OptInStatus)+opsCenterIntegration_optInStatus = Lens.lens (\OpsCenterIntegration' {optInStatus} -> optInStatus) (\s@OpsCenterIntegration' {} a -> s {optInStatus = a} :: OpsCenterIntegration)++instance Data.FromJSON OpsCenterIntegration where+  parseJSON =+    Data.withObject+      "OpsCenterIntegration"+      ( \x ->+          OpsCenterIntegration'+            Prelude.<$> (x Data..:? "OptInStatus")+      )++instance Prelude.Hashable OpsCenterIntegration where+  hashWithSalt _salt OpsCenterIntegration' {..} =+    _salt `Prelude.hashWithSalt` optInStatus++instance Prelude.NFData OpsCenterIntegration where+  rnf OpsCenterIntegration' {..} =+    Prelude.rnf optInStatus
+ gen/Amazonka/DevOpsGuru/Types/OpsCenterIntegrationConfig.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.OpsCenterIntegrationConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.OpsCenterIntegrationConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.OptInStatus+import qualified Amazonka.Prelude as Prelude++-- | Information about whether DevOps Guru is configured to create an OpsItem+-- in Amazon Web Services Systems Manager OpsCenter for each created+-- insight. You can use this to update the configuration.+--+-- /See:/ 'newOpsCenterIntegrationConfig' smart constructor.+data OpsCenterIntegrationConfig = OpsCenterIntegrationConfig'+  { -- | Specifies if DevOps Guru is enabled to create an Amazon Web Services+    -- Systems Manager OpsItem for each created insight.+    optInStatus :: Prelude.Maybe OptInStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OpsCenterIntegrationConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'optInStatus', 'opsCenterIntegrationConfig_optInStatus' - Specifies if DevOps Guru is enabled to create an Amazon Web Services+-- Systems Manager OpsItem for each created insight.+newOpsCenterIntegrationConfig ::+  OpsCenterIntegrationConfig+newOpsCenterIntegrationConfig =+  OpsCenterIntegrationConfig'+    { optInStatus =+        Prelude.Nothing+    }++-- | Specifies if DevOps Guru is enabled to create an Amazon Web Services+-- Systems Manager OpsItem for each created insight.+opsCenterIntegrationConfig_optInStatus :: Lens.Lens' OpsCenterIntegrationConfig (Prelude.Maybe OptInStatus)+opsCenterIntegrationConfig_optInStatus = Lens.lens (\OpsCenterIntegrationConfig' {optInStatus} -> optInStatus) (\s@OpsCenterIntegrationConfig' {} a -> s {optInStatus = a} :: OpsCenterIntegrationConfig)++instance Prelude.Hashable OpsCenterIntegrationConfig where+  hashWithSalt _salt OpsCenterIntegrationConfig' {..} =+    _salt `Prelude.hashWithSalt` optInStatus++instance Prelude.NFData OpsCenterIntegrationConfig where+  rnf OpsCenterIntegrationConfig' {..} =+    Prelude.rnf optInStatus++instance Data.ToJSON OpsCenterIntegrationConfig where+  toJSON OpsCenterIntegrationConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [("OptInStatus" Data..=) Prelude.<$> optInStatus]+      )
+ gen/Amazonka/DevOpsGuru/Types/OptInStatus.hs view
@@ -0,0 +1,73 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.OptInStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.OptInStatus+  ( OptInStatus+      ( ..,+        OptInStatus_DISABLED,+        OptInStatus_ENABLED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies if DevOps Guru is enabled to create an Amazon Web Services+-- Systems Manager OpsItem for each created insight.+newtype OptInStatus = OptInStatus'+  { fromOptInStatus ::+      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 OptInStatus_DISABLED :: OptInStatus+pattern OptInStatus_DISABLED = OptInStatus' "DISABLED"++pattern OptInStatus_ENABLED :: OptInStatus+pattern OptInStatus_ENABLED = OptInStatus' "ENABLED"++{-# COMPLETE+  OptInStatus_DISABLED,+  OptInStatus_ENABLED,+  OptInStatus'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/OrganizationResourceCollectionType.hs view
@@ -0,0 +1,81 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.OrganizationResourceCollectionType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.OrganizationResourceCollectionType+  ( OrganizationResourceCollectionType+      ( ..,+        OrganizationResourceCollectionType_AWS_ACCOUNT,+        OrganizationResourceCollectionType_AWS_CLOUD_FORMATION,+        OrganizationResourceCollectionType_AWS_SERVICE,+        OrganizationResourceCollectionType_AWS_TAGS+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype OrganizationResourceCollectionType = OrganizationResourceCollectionType'+  { fromOrganizationResourceCollectionType ::+      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 OrganizationResourceCollectionType_AWS_ACCOUNT :: OrganizationResourceCollectionType+pattern OrganizationResourceCollectionType_AWS_ACCOUNT = OrganizationResourceCollectionType' "AWS_ACCOUNT"++pattern OrganizationResourceCollectionType_AWS_CLOUD_FORMATION :: OrganizationResourceCollectionType+pattern OrganizationResourceCollectionType_AWS_CLOUD_FORMATION = OrganizationResourceCollectionType' "AWS_CLOUD_FORMATION"++pattern OrganizationResourceCollectionType_AWS_SERVICE :: OrganizationResourceCollectionType+pattern OrganizationResourceCollectionType_AWS_SERVICE = OrganizationResourceCollectionType' "AWS_SERVICE"++pattern OrganizationResourceCollectionType_AWS_TAGS :: OrganizationResourceCollectionType+pattern OrganizationResourceCollectionType_AWS_TAGS = OrganizationResourceCollectionType' "AWS_TAGS"++{-# COMPLETE+  OrganizationResourceCollectionType_AWS_ACCOUNT,+  OrganizationResourceCollectionType_AWS_CLOUD_FORMATION,+  OrganizationResourceCollectionType_AWS_SERVICE,+  OrganizationResourceCollectionType_AWS_TAGS,+  OrganizationResourceCollectionType'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/PerformanceInsightsMetricDimensionGroup.hs view
@@ -0,0 +1,360 @@+{-# 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.DevOpsGuru.Types.PerformanceInsightsMetricDimensionGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricDimensionGroup where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A logical grouping of Performance Insights metrics for a related subject+-- area. For example, the @db.sql@ dimension group consists of the+-- following dimensions: @db.sql.id@, @db.sql.db_id@, @db.sql.statement@,+-- and @db.sql.tokenized_id@.+--+-- Each response element returns a maximum of 500 bytes. For larger+-- elements, such as SQL statements, only the first 500 bytes are returned.+--+-- Amazon RDS Performance Insights enables you to monitor and explore+-- different dimensions of database load based on data captured from a+-- running DB instance. DB load is measured as average active sessions.+-- Performance Insights provides the data to API consumers as a+-- two-dimensional time-series dataset. The time dimension provides DB load+-- data for each time point in the queried time range. Each time point+-- decomposes overall load in relation to the requested dimensions,+-- measured at that time point. Examples include SQL, Wait event, User, and+-- Host.+--+-- -   To learn more about Performance Insights and Amazon Aurora DB+--     instances, go to the+--     <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.html Amazon Aurora User Guide>.+--+-- -   To learn more about Performance Insights and Amazon RDS DB+--     instances, go to the+--     <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html Amazon RDS User Guide>.+--+-- /See:/ 'newPerformanceInsightsMetricDimensionGroup' smart constructor.+data PerformanceInsightsMetricDimensionGroup = PerformanceInsightsMetricDimensionGroup'+  { -- | A list of specific dimensions from a dimension group. If this parameter+    -- is not present, then it signifies that all of the dimensions in the+    -- group were requested or are present in the response.+    --+    -- Valid values for elements in the @Dimensions@ array are:+    --+    -- -   @db.application.name@ - The name of the application that is+    --     connected to the database (only Aurora PostgreSQL and RDS+    --     PostgreSQL)+    --+    -- -   @db.host.id@ - The host ID of the connected client (all engines)+    --+    -- -   @db.host.name@ - The host name of the connected client (all engines)+    --+    -- -   @db.name@ - The name of the database to which the client is+    --     connected (only Aurora PostgreSQL, Amazon RDS PostgreSQL, Aurora+    --     MySQL, Amazon RDS MySQL, and MariaDB)+    --+    -- -   @db.session_type.name@ - The type of the current session (only+    --     Aurora PostgreSQL and RDS PostgreSQL)+    --+    -- -   @db.sql.id@ - The SQL ID generated by Performance Insights (all+    --     engines)+    --+    -- -   @db.sql.db_id@ - The SQL ID generated by the database (all engines)+    --+    -- -   @db.sql.statement@ - The SQL text that is being executed (all+    --     engines)+    --+    -- -   @db.sql.tokenized_id@+    --+    -- -   @db.sql_tokenized.id@ - The SQL digest ID generated by Performance+    --     Insights (all engines)+    --+    -- -   @db.sql_tokenized.db_id@ - SQL digest ID generated by the database+    --     (all engines)+    --+    -- -   @db.sql_tokenized.statement@ - The SQL digest text (all engines)+    --+    -- -   @db.user.id@ - The ID of the user logged in to the database (all+    --     engines)+    --+    -- -   @db.user.name@ - The name of the user logged in to the database (all+    --     engines)+    --+    -- -   @db.wait_event.name@ - The event for which the backend is waiting+    --     (all engines)+    --+    -- -   @db.wait_event.type@ - The type of event for which the backend is+    --     waiting (all engines)+    --+    -- -   @db.wait_event_type.name@ - The name of the event type for which the+    --     backend is waiting (all engines)+    dimensions :: Prelude.Maybe [Prelude.Text],+    -- | The name of the dimension group. Its valid values are:+    --+    -- -   @db@ - The name of the database to which the client is connected+    --     (only Aurora PostgreSQL, Amazon RDS PostgreSQL, Aurora MySQL, Amazon+    --     RDS MySQL, and MariaDB)+    --+    -- -   @db.application@ - The name of the application that is connected to+    --     the database (only Aurora PostgreSQL and RDS PostgreSQL)+    --+    -- -   @db.host@ - The host name of the connected client (all engines)+    --+    -- -   @db.session_type@ - The type of the current session (only Aurora+    --     PostgreSQL and RDS PostgreSQL)+    --+    -- -   @db.sql@ - The SQL that is currently executing (all engines)+    --+    -- -   @db.sql_tokenized@ - The SQL digest (all engines)+    --+    -- -   @db.wait_event@ - The event for which the database backend is+    --     waiting (all engines)+    --+    -- -   @db.wait_event_type@ - The type of event for which the database+    --     backend is waiting (all engines)+    --+    -- -   @db.user@ - The user logged in to the database (all engines)+    group' :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of items to fetch for this dimension group.+    limit :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PerformanceInsightsMetricDimensionGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dimensions', 'performanceInsightsMetricDimensionGroup_dimensions' - A list of specific dimensions from a dimension group. If this parameter+-- is not present, then it signifies that all of the dimensions in the+-- group were requested or are present in the response.+--+-- Valid values for elements in the @Dimensions@ array are:+--+-- -   @db.application.name@ - The name of the application that is+--     connected to the database (only Aurora PostgreSQL and RDS+--     PostgreSQL)+--+-- -   @db.host.id@ - The host ID of the connected client (all engines)+--+-- -   @db.host.name@ - The host name of the connected client (all engines)+--+-- -   @db.name@ - The name of the database to which the client is+--     connected (only Aurora PostgreSQL, Amazon RDS PostgreSQL, Aurora+--     MySQL, Amazon RDS MySQL, and MariaDB)+--+-- -   @db.session_type.name@ - The type of the current session (only+--     Aurora PostgreSQL and RDS PostgreSQL)+--+-- -   @db.sql.id@ - The SQL ID generated by Performance Insights (all+--     engines)+--+-- -   @db.sql.db_id@ - The SQL ID generated by the database (all engines)+--+-- -   @db.sql.statement@ - The SQL text that is being executed (all+--     engines)+--+-- -   @db.sql.tokenized_id@+--+-- -   @db.sql_tokenized.id@ - The SQL digest ID generated by Performance+--     Insights (all engines)+--+-- -   @db.sql_tokenized.db_id@ - SQL digest ID generated by the database+--     (all engines)+--+-- -   @db.sql_tokenized.statement@ - The SQL digest text (all engines)+--+-- -   @db.user.id@ - The ID of the user logged in to the database (all+--     engines)+--+-- -   @db.user.name@ - The name of the user logged in to the database (all+--     engines)+--+-- -   @db.wait_event.name@ - The event for which the backend is waiting+--     (all engines)+--+-- -   @db.wait_event.type@ - The type of event for which the backend is+--     waiting (all engines)+--+-- -   @db.wait_event_type.name@ - The name of the event type for which the+--     backend is waiting (all engines)+--+-- 'group'', 'performanceInsightsMetricDimensionGroup_group' - The name of the dimension group. Its valid values are:+--+-- -   @db@ - The name of the database to which the client is connected+--     (only Aurora PostgreSQL, Amazon RDS PostgreSQL, Aurora MySQL, Amazon+--     RDS MySQL, and MariaDB)+--+-- -   @db.application@ - The name of the application that is connected to+--     the database (only Aurora PostgreSQL and RDS PostgreSQL)+--+-- -   @db.host@ - The host name of the connected client (all engines)+--+-- -   @db.session_type@ - The type of the current session (only Aurora+--     PostgreSQL and RDS PostgreSQL)+--+-- -   @db.sql@ - The SQL that is currently executing (all engines)+--+-- -   @db.sql_tokenized@ - The SQL digest (all engines)+--+-- -   @db.wait_event@ - The event for which the database backend is+--     waiting (all engines)+--+-- -   @db.wait_event_type@ - The type of event for which the database+--     backend is waiting (all engines)+--+-- -   @db.user@ - The user logged in to the database (all engines)+--+-- 'limit', 'performanceInsightsMetricDimensionGroup_limit' - The maximum number of items to fetch for this dimension group.+newPerformanceInsightsMetricDimensionGroup ::+  PerformanceInsightsMetricDimensionGroup+newPerformanceInsightsMetricDimensionGroup =+  PerformanceInsightsMetricDimensionGroup'+    { dimensions =+        Prelude.Nothing,+      group' = Prelude.Nothing,+      limit = Prelude.Nothing+    }++-- | A list of specific dimensions from a dimension group. If this parameter+-- is not present, then it signifies that all of the dimensions in the+-- group were requested or are present in the response.+--+-- Valid values for elements in the @Dimensions@ array are:+--+-- -   @db.application.name@ - The name of the application that is+--     connected to the database (only Aurora PostgreSQL and RDS+--     PostgreSQL)+--+-- -   @db.host.id@ - The host ID of the connected client (all engines)+--+-- -   @db.host.name@ - The host name of the connected client (all engines)+--+-- -   @db.name@ - The name of the database to which the client is+--     connected (only Aurora PostgreSQL, Amazon RDS PostgreSQL, Aurora+--     MySQL, Amazon RDS MySQL, and MariaDB)+--+-- -   @db.session_type.name@ - The type of the current session (only+--     Aurora PostgreSQL and RDS PostgreSQL)+--+-- -   @db.sql.id@ - The SQL ID generated by Performance Insights (all+--     engines)+--+-- -   @db.sql.db_id@ - The SQL ID generated by the database (all engines)+--+-- -   @db.sql.statement@ - The SQL text that is being executed (all+--     engines)+--+-- -   @db.sql.tokenized_id@+--+-- -   @db.sql_tokenized.id@ - The SQL digest ID generated by Performance+--     Insights (all engines)+--+-- -   @db.sql_tokenized.db_id@ - SQL digest ID generated by the database+--     (all engines)+--+-- -   @db.sql_tokenized.statement@ - The SQL digest text (all engines)+--+-- -   @db.user.id@ - The ID of the user logged in to the database (all+--     engines)+--+-- -   @db.user.name@ - The name of the user logged in to the database (all+--     engines)+--+-- -   @db.wait_event.name@ - The event for which the backend is waiting+--     (all engines)+--+-- -   @db.wait_event.type@ - The type of event for which the backend is+--     waiting (all engines)+--+-- -   @db.wait_event_type.name@ - The name of the event type for which the+--     backend is waiting (all engines)+performanceInsightsMetricDimensionGroup_dimensions :: Lens.Lens' PerformanceInsightsMetricDimensionGroup (Prelude.Maybe [Prelude.Text])+performanceInsightsMetricDimensionGroup_dimensions = Lens.lens (\PerformanceInsightsMetricDimensionGroup' {dimensions} -> dimensions) (\s@PerformanceInsightsMetricDimensionGroup' {} a -> s {dimensions = a} :: PerformanceInsightsMetricDimensionGroup) Prelude.. Lens.mapping Lens.coerced++-- | The name of the dimension group. Its valid values are:+--+-- -   @db@ - The name of the database to which the client is connected+--     (only Aurora PostgreSQL, Amazon RDS PostgreSQL, Aurora MySQL, Amazon+--     RDS MySQL, and MariaDB)+--+-- -   @db.application@ - The name of the application that is connected to+--     the database (only Aurora PostgreSQL and RDS PostgreSQL)+--+-- -   @db.host@ - The host name of the connected client (all engines)+--+-- -   @db.session_type@ - The type of the current session (only Aurora+--     PostgreSQL and RDS PostgreSQL)+--+-- -   @db.sql@ - The SQL that is currently executing (all engines)+--+-- -   @db.sql_tokenized@ - The SQL digest (all engines)+--+-- -   @db.wait_event@ - The event for which the database backend is+--     waiting (all engines)+--+-- -   @db.wait_event_type@ - The type of event for which the database+--     backend is waiting (all engines)+--+-- -   @db.user@ - The user logged in to the database (all engines)+performanceInsightsMetricDimensionGroup_group :: Lens.Lens' PerformanceInsightsMetricDimensionGroup (Prelude.Maybe Prelude.Text)+performanceInsightsMetricDimensionGroup_group = Lens.lens (\PerformanceInsightsMetricDimensionGroup' {group'} -> group') (\s@PerformanceInsightsMetricDimensionGroup' {} a -> s {group' = a} :: PerformanceInsightsMetricDimensionGroup)++-- | The maximum number of items to fetch for this dimension group.+performanceInsightsMetricDimensionGroup_limit :: Lens.Lens' PerformanceInsightsMetricDimensionGroup (Prelude.Maybe Prelude.Natural)+performanceInsightsMetricDimensionGroup_limit = Lens.lens (\PerformanceInsightsMetricDimensionGroup' {limit} -> limit) (\s@PerformanceInsightsMetricDimensionGroup' {} a -> s {limit = a} :: PerformanceInsightsMetricDimensionGroup)++instance+  Data.FromJSON+    PerformanceInsightsMetricDimensionGroup+  where+  parseJSON =+    Data.withObject+      "PerformanceInsightsMetricDimensionGroup"+      ( \x ->+          PerformanceInsightsMetricDimensionGroup'+            Prelude.<$> (x Data..:? "Dimensions" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "Group")+            Prelude.<*> (x Data..:? "Limit")+      )++instance+  Prelude.Hashable+    PerformanceInsightsMetricDimensionGroup+  where+  hashWithSalt+    _salt+    PerformanceInsightsMetricDimensionGroup' {..} =+      _salt+        `Prelude.hashWithSalt` dimensions+        `Prelude.hashWithSalt` group'+        `Prelude.hashWithSalt` limit++instance+  Prelude.NFData+    PerformanceInsightsMetricDimensionGroup+  where+  rnf PerformanceInsightsMetricDimensionGroup' {..} =+    Prelude.rnf dimensions+      `Prelude.seq` Prelude.rnf group'+      `Prelude.seq` Prelude.rnf limit
+ gen/Amazonka/DevOpsGuru/Types/PerformanceInsightsMetricQuery.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.DevOpsGuru.Types.PerformanceInsightsMetricQuery+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricQuery where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricDimensionGroup+import qualified Amazonka.Prelude as Prelude++-- | A single query to be processed. Use these parameters to query the+-- Performance Insights @GetResourceMetrics@ API to retrieve the metrics+-- for an anomaly. For more information, see+-- @ @<https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_GetResourceMetrics.html GetResourceMetrics>@ @+-- in the /Amazon RDS Performance Insights API Reference/.+--+-- Amazon RDS Performance Insights enables you to monitor and explore+-- different dimensions of database load based on data captured from a+-- running DB instance. DB load is measured as average active sessions.+-- Performance Insights provides the data to API consumers as a+-- two-dimensional time-series dataset. The time dimension provides DB load+-- data for each time point in the queried time range. Each time point+-- decomposes overall load in relation to the requested dimensions,+-- measured at that time point. Examples include SQL, Wait event, User, and+-- Host.+--+-- -   To learn more about Performance Insights and Amazon Aurora DB+--     instances, go to the+--     <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.html Amazon Aurora User Guide>.+--+-- -   To learn more about Performance Insights and Amazon RDS DB+--     instances, go to the+--     <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html Amazon RDS User Guide>.+--+-- /See:/ 'newPerformanceInsightsMetricQuery' smart constructor.+data PerformanceInsightsMetricQuery = PerformanceInsightsMetricQuery'+  { -- | One or more filters to apply to a Performance Insights+    -- @GetResourceMetrics@ API query. Restrictions:+    --+    -- -   Any number of filters by the same dimension, as specified in the+    --     @GroupBy@ parameter.+    --+    -- -   A single filter for any other dimension in this dimension group.+    filter' :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The specification for how to aggregate the data points from a+    -- Performance Insights @GetResourceMetrics@ API query. The Performance+    -- Insights query returns all of the dimensions within that group, unless+    -- you provide the names of specific dimensions within that group. You can+    -- also request that Performance Insights return a limited number of values+    -- for a dimension.+    groupBy :: Prelude.Maybe PerformanceInsightsMetricDimensionGroup,+    -- | The name of the meteric used used when querying an Performance Insights+    -- @GetResourceMetrics@ API for anomaly metrics.+    --+    -- Valid values for @Metric@ are:+    --+    -- -   @db.load.avg@ - a scaled representation of the number of active+    --     sessions for the database engine.+    --+    -- -   @db.sampledload.avg@ - the raw number of active sessions for the+    --     database engine.+    --+    -- If the number of active sessions is less than an internal Performance+    -- Insights threshold, @db.load.avg@ and @db.sampledload.avg@ are the same+    -- value. If the number of active sessions is greater than the internal+    -- threshold, Performance Insights samples the active sessions, with+    -- @db.load.avg@ showing the scaled values, @db.sampledload.avg@ showing+    -- the raw values, and @db.sampledload.avg@ less than @db.load.avg@. For+    -- most use cases, you can query @db.load.avg@ only.+    metric :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PerformanceInsightsMetricQuery' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filter'', 'performanceInsightsMetricQuery_filter' - One or more filters to apply to a Performance Insights+-- @GetResourceMetrics@ API query. Restrictions:+--+-- -   Any number of filters by the same dimension, as specified in the+--     @GroupBy@ parameter.+--+-- -   A single filter for any other dimension in this dimension group.+--+-- 'groupBy', 'performanceInsightsMetricQuery_groupBy' - The specification for how to aggregate the data points from a+-- Performance Insights @GetResourceMetrics@ API query. The Performance+-- Insights query returns all of the dimensions within that group, unless+-- you provide the names of specific dimensions within that group. You can+-- also request that Performance Insights return a limited number of values+-- for a dimension.+--+-- 'metric', 'performanceInsightsMetricQuery_metric' - The name of the meteric used used when querying an Performance Insights+-- @GetResourceMetrics@ API for anomaly metrics.+--+-- Valid values for @Metric@ are:+--+-- -   @db.load.avg@ - a scaled representation of the number of active+--     sessions for the database engine.+--+-- -   @db.sampledload.avg@ - the raw number of active sessions for the+--     database engine.+--+-- If the number of active sessions is less than an internal Performance+-- Insights threshold, @db.load.avg@ and @db.sampledload.avg@ are the same+-- value. If the number of active sessions is greater than the internal+-- threshold, Performance Insights samples the active sessions, with+-- @db.load.avg@ showing the scaled values, @db.sampledload.avg@ showing+-- the raw values, and @db.sampledload.avg@ less than @db.load.avg@. For+-- most use cases, you can query @db.load.avg@ only.+newPerformanceInsightsMetricQuery ::+  PerformanceInsightsMetricQuery+newPerformanceInsightsMetricQuery =+  PerformanceInsightsMetricQuery'+    { filter' =+        Prelude.Nothing,+      groupBy = Prelude.Nothing,+      metric = Prelude.Nothing+    }++-- | One or more filters to apply to a Performance Insights+-- @GetResourceMetrics@ API query. Restrictions:+--+-- -   Any number of filters by the same dimension, as specified in the+--     @GroupBy@ parameter.+--+-- -   A single filter for any other dimension in this dimension group.+performanceInsightsMetricQuery_filter :: Lens.Lens' PerformanceInsightsMetricQuery (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+performanceInsightsMetricQuery_filter = Lens.lens (\PerformanceInsightsMetricQuery' {filter'} -> filter') (\s@PerformanceInsightsMetricQuery' {} a -> s {filter' = a} :: PerformanceInsightsMetricQuery) Prelude.. Lens.mapping Lens.coerced++-- | The specification for how to aggregate the data points from a+-- Performance Insights @GetResourceMetrics@ API query. The Performance+-- Insights query returns all of the dimensions within that group, unless+-- you provide the names of specific dimensions within that group. You can+-- also request that Performance Insights return a limited number of values+-- for a dimension.+performanceInsightsMetricQuery_groupBy :: Lens.Lens' PerformanceInsightsMetricQuery (Prelude.Maybe PerformanceInsightsMetricDimensionGroup)+performanceInsightsMetricQuery_groupBy = Lens.lens (\PerformanceInsightsMetricQuery' {groupBy} -> groupBy) (\s@PerformanceInsightsMetricQuery' {} a -> s {groupBy = a} :: PerformanceInsightsMetricQuery)++-- | The name of the meteric used used when querying an Performance Insights+-- @GetResourceMetrics@ API for anomaly metrics.+--+-- Valid values for @Metric@ are:+--+-- -   @db.load.avg@ - a scaled representation of the number of active+--     sessions for the database engine.+--+-- -   @db.sampledload.avg@ - the raw number of active sessions for the+--     database engine.+--+-- If the number of active sessions is less than an internal Performance+-- Insights threshold, @db.load.avg@ and @db.sampledload.avg@ are the same+-- value. If the number of active sessions is greater than the internal+-- threshold, Performance Insights samples the active sessions, with+-- @db.load.avg@ showing the scaled values, @db.sampledload.avg@ showing+-- the raw values, and @db.sampledload.avg@ less than @db.load.avg@. For+-- most use cases, you can query @db.load.avg@ only.+performanceInsightsMetricQuery_metric :: Lens.Lens' PerformanceInsightsMetricQuery (Prelude.Maybe Prelude.Text)+performanceInsightsMetricQuery_metric = Lens.lens (\PerformanceInsightsMetricQuery' {metric} -> metric) (\s@PerformanceInsightsMetricQuery' {} a -> s {metric = a} :: PerformanceInsightsMetricQuery)++instance Data.FromJSON PerformanceInsightsMetricQuery where+  parseJSON =+    Data.withObject+      "PerformanceInsightsMetricQuery"+      ( \x ->+          PerformanceInsightsMetricQuery'+            Prelude.<$> (x Data..:? "Filter" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "GroupBy")+            Prelude.<*> (x Data..:? "Metric")+      )++instance+  Prelude.Hashable+    PerformanceInsightsMetricQuery+  where+  hashWithSalt+    _salt+    PerformanceInsightsMetricQuery' {..} =+      _salt+        `Prelude.hashWithSalt` filter'+        `Prelude.hashWithSalt` groupBy+        `Prelude.hashWithSalt` metric++instance+  Prelude.NFData+    PerformanceInsightsMetricQuery+  where+  rnf PerformanceInsightsMetricQuery' {..} =+    Prelude.rnf filter'+      `Prelude.seq` Prelude.rnf groupBy+      `Prelude.seq` Prelude.rnf metric
+ gen/Amazonka/DevOpsGuru/Types/PerformanceInsightsMetricsDetail.hs view
@@ -0,0 +1,183 @@+{-# 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.DevOpsGuru.Types.PerformanceInsightsMetricsDetail+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricsDetail where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricQuery+import Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceData+import Amazonka.DevOpsGuru.Types.PerformanceInsightsStat+import qualified Amazonka.Prelude as Prelude++-- | Details about Performance Insights metrics.+--+-- Amazon RDS Performance Insights enables you to monitor and explore+-- different dimensions of database load based on data captured from a+-- running DB instance. DB load is measured as average active sessions.+-- Performance Insights provides the data to API consumers as a+-- two-dimensional time-series dataset. The time dimension provides DB load+-- data for each time point in the queried time range. Each time point+-- decomposes overall load in relation to the requested dimensions,+-- measured at that time point. Examples include SQL, Wait event, User, and+-- Host.+--+-- -   To learn more about Performance Insights and Amazon Aurora DB+--     instances, go to the+--     <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.html Amazon Aurora User Guide>.+--+-- -   To learn more about Performance Insights and Amazon RDS DB+--     instances, go to the+--     <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html Amazon RDS User Guide>.+--+-- /See:/ 'newPerformanceInsightsMetricsDetail' smart constructor.+data PerformanceInsightsMetricsDetail = PerformanceInsightsMetricsDetail'+  { -- | The name used for a specific Performance Insights metric.+    metricDisplayName :: Prelude.Maybe Prelude.Text,+    -- | A single query to be processed for the metric. For more information, see+    -- @ @<https://docs.aws.amazon.com/devops-guru/latest/APIReference/API_PerformanceInsightsMetricQuery.html PerformanceInsightsMetricQuery>@ @.+    metricQuery :: Prelude.Maybe PerformanceInsightsMetricQuery,+    -- | For more information, see+    -- @ @<https://docs.aws.amazon.com/devops-guru/latest/APIReference/API_PerformanceInsightsReferenceData.html PerformanceInsightsReferenceData>@ @.+    referenceData :: Prelude.Maybe [PerformanceInsightsReferenceData],+    -- | The metric statistics during the anomalous period detected by DevOps+    -- Guru;+    statsAtAnomaly :: Prelude.Maybe [PerformanceInsightsStat],+    -- | Typical metric statistics that are not considered anomalous. When DevOps+    -- Guru analyzes metrics, it compares them to @StatsAtBaseline@ to help+    -- determine if they are anomalous.+    statsAtBaseline :: Prelude.Maybe [PerformanceInsightsStat],+    -- | The unit of measure for a metric. For example, a session or a process.+    unit :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PerformanceInsightsMetricsDetail' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'metricDisplayName', 'performanceInsightsMetricsDetail_metricDisplayName' - The name used for a specific Performance Insights metric.+--+-- 'metricQuery', 'performanceInsightsMetricsDetail_metricQuery' - A single query to be processed for the metric. For more information, see+-- @ @<https://docs.aws.amazon.com/devops-guru/latest/APIReference/API_PerformanceInsightsMetricQuery.html PerformanceInsightsMetricQuery>@ @.+--+-- 'referenceData', 'performanceInsightsMetricsDetail_referenceData' - For more information, see+-- @ @<https://docs.aws.amazon.com/devops-guru/latest/APIReference/API_PerformanceInsightsReferenceData.html PerformanceInsightsReferenceData>@ @.+--+-- 'statsAtAnomaly', 'performanceInsightsMetricsDetail_statsAtAnomaly' - The metric statistics during the anomalous period detected by DevOps+-- Guru;+--+-- 'statsAtBaseline', 'performanceInsightsMetricsDetail_statsAtBaseline' - Typical metric statistics that are not considered anomalous. When DevOps+-- Guru analyzes metrics, it compares them to @StatsAtBaseline@ to help+-- determine if they are anomalous.+--+-- 'unit', 'performanceInsightsMetricsDetail_unit' - The unit of measure for a metric. For example, a session or a process.+newPerformanceInsightsMetricsDetail ::+  PerformanceInsightsMetricsDetail+newPerformanceInsightsMetricsDetail =+  PerformanceInsightsMetricsDetail'+    { metricDisplayName =+        Prelude.Nothing,+      metricQuery = Prelude.Nothing,+      referenceData = Prelude.Nothing,+      statsAtAnomaly = Prelude.Nothing,+      statsAtBaseline = Prelude.Nothing,+      unit = Prelude.Nothing+    }++-- | The name used for a specific Performance Insights metric.+performanceInsightsMetricsDetail_metricDisplayName :: Lens.Lens' PerformanceInsightsMetricsDetail (Prelude.Maybe Prelude.Text)+performanceInsightsMetricsDetail_metricDisplayName = Lens.lens (\PerformanceInsightsMetricsDetail' {metricDisplayName} -> metricDisplayName) (\s@PerformanceInsightsMetricsDetail' {} a -> s {metricDisplayName = a} :: PerformanceInsightsMetricsDetail)++-- | A single query to be processed for the metric. For more information, see+-- @ @<https://docs.aws.amazon.com/devops-guru/latest/APIReference/API_PerformanceInsightsMetricQuery.html PerformanceInsightsMetricQuery>@ @.+performanceInsightsMetricsDetail_metricQuery :: Lens.Lens' PerformanceInsightsMetricsDetail (Prelude.Maybe PerformanceInsightsMetricQuery)+performanceInsightsMetricsDetail_metricQuery = Lens.lens (\PerformanceInsightsMetricsDetail' {metricQuery} -> metricQuery) (\s@PerformanceInsightsMetricsDetail' {} a -> s {metricQuery = a} :: PerformanceInsightsMetricsDetail)++-- | For more information, see+-- @ @<https://docs.aws.amazon.com/devops-guru/latest/APIReference/API_PerformanceInsightsReferenceData.html PerformanceInsightsReferenceData>@ @.+performanceInsightsMetricsDetail_referenceData :: Lens.Lens' PerformanceInsightsMetricsDetail (Prelude.Maybe [PerformanceInsightsReferenceData])+performanceInsightsMetricsDetail_referenceData = Lens.lens (\PerformanceInsightsMetricsDetail' {referenceData} -> referenceData) (\s@PerformanceInsightsMetricsDetail' {} a -> s {referenceData = a} :: PerformanceInsightsMetricsDetail) Prelude.. Lens.mapping Lens.coerced++-- | The metric statistics during the anomalous period detected by DevOps+-- Guru;+performanceInsightsMetricsDetail_statsAtAnomaly :: Lens.Lens' PerformanceInsightsMetricsDetail (Prelude.Maybe [PerformanceInsightsStat])+performanceInsightsMetricsDetail_statsAtAnomaly = Lens.lens (\PerformanceInsightsMetricsDetail' {statsAtAnomaly} -> statsAtAnomaly) (\s@PerformanceInsightsMetricsDetail' {} a -> s {statsAtAnomaly = a} :: PerformanceInsightsMetricsDetail) Prelude.. Lens.mapping Lens.coerced++-- | Typical metric statistics that are not considered anomalous. When DevOps+-- Guru analyzes metrics, it compares them to @StatsAtBaseline@ to help+-- determine if they are anomalous.+performanceInsightsMetricsDetail_statsAtBaseline :: Lens.Lens' PerformanceInsightsMetricsDetail (Prelude.Maybe [PerformanceInsightsStat])+performanceInsightsMetricsDetail_statsAtBaseline = Lens.lens (\PerformanceInsightsMetricsDetail' {statsAtBaseline} -> statsAtBaseline) (\s@PerformanceInsightsMetricsDetail' {} a -> s {statsAtBaseline = a} :: PerformanceInsightsMetricsDetail) Prelude.. Lens.mapping Lens.coerced++-- | The unit of measure for a metric. For example, a session or a process.+performanceInsightsMetricsDetail_unit :: Lens.Lens' PerformanceInsightsMetricsDetail (Prelude.Maybe Prelude.Text)+performanceInsightsMetricsDetail_unit = Lens.lens (\PerformanceInsightsMetricsDetail' {unit} -> unit) (\s@PerformanceInsightsMetricsDetail' {} a -> s {unit = a} :: PerformanceInsightsMetricsDetail)++instance+  Data.FromJSON+    PerformanceInsightsMetricsDetail+  where+  parseJSON =+    Data.withObject+      "PerformanceInsightsMetricsDetail"+      ( \x ->+          PerformanceInsightsMetricsDetail'+            Prelude.<$> (x Data..:? "MetricDisplayName")+            Prelude.<*> (x Data..:? "MetricQuery")+            Prelude.<*> (x Data..:? "ReferenceData" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "StatsAtAnomaly" Data..!= Prelude.mempty)+            Prelude.<*> ( x+                            Data..:? "StatsAtBaseline"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "Unit")+      )++instance+  Prelude.Hashable+    PerformanceInsightsMetricsDetail+  where+  hashWithSalt+    _salt+    PerformanceInsightsMetricsDetail' {..} =+      _salt+        `Prelude.hashWithSalt` metricDisplayName+        `Prelude.hashWithSalt` metricQuery+        `Prelude.hashWithSalt` referenceData+        `Prelude.hashWithSalt` statsAtAnomaly+        `Prelude.hashWithSalt` statsAtBaseline+        `Prelude.hashWithSalt` unit++instance+  Prelude.NFData+    PerformanceInsightsMetricsDetail+  where+  rnf PerformanceInsightsMetricsDetail' {..} =+    Prelude.rnf metricDisplayName+      `Prelude.seq` Prelude.rnf metricQuery+      `Prelude.seq` Prelude.rnf referenceData+      `Prelude.seq` Prelude.rnf statsAtAnomaly+      `Prelude.seq` Prelude.rnf statsAtBaseline+      `Prelude.seq` Prelude.rnf unit
+ gen/Amazonka/DevOpsGuru/Types/PerformanceInsightsReferenceComparisonValues.hs view
@@ -0,0 +1,114 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceComparisonValues+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceComparisonValues where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceMetric+import Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceScalar+import qualified Amazonka.Prelude as Prelude++-- | Reference scalar values and other metrics that DevOps Guru displays on a+-- graph in its console along with the actual metrics it analyzed. Compare+-- these reference values to your actual metrics to help you understand+-- anomalous behavior that DevOps Guru detected.+--+-- /See:/ 'newPerformanceInsightsReferenceComparisonValues' smart constructor.+data PerformanceInsightsReferenceComparisonValues = PerformanceInsightsReferenceComparisonValues'+  { -- | A metric that DevOps Guru compares to actual metric values. This+    -- reference metric is used to determine if an actual metric should be+    -- considered anomalous.+    referenceMetric :: Prelude.Maybe PerformanceInsightsReferenceMetric,+    -- | A scalar value DevOps Guru for a metric that DevOps Guru compares to+    -- actual metric values. This reference value is used to determine if an+    -- actual metric value should be considered anomalous.+    referenceScalar :: Prelude.Maybe PerformanceInsightsReferenceScalar+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PerformanceInsightsReferenceComparisonValues' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'referenceMetric', 'performanceInsightsReferenceComparisonValues_referenceMetric' - A metric that DevOps Guru compares to actual metric values. This+-- reference metric is used to determine if an actual metric should be+-- considered anomalous.+--+-- 'referenceScalar', 'performanceInsightsReferenceComparisonValues_referenceScalar' - A scalar value DevOps Guru for a metric that DevOps Guru compares to+-- actual metric values. This reference value is used to determine if an+-- actual metric value should be considered anomalous.+newPerformanceInsightsReferenceComparisonValues ::+  PerformanceInsightsReferenceComparisonValues+newPerformanceInsightsReferenceComparisonValues =+  PerformanceInsightsReferenceComparisonValues'+    { referenceMetric =+        Prelude.Nothing,+      referenceScalar =+        Prelude.Nothing+    }++-- | A metric that DevOps Guru compares to actual metric values. This+-- reference metric is used to determine if an actual metric should be+-- considered anomalous.+performanceInsightsReferenceComparisonValues_referenceMetric :: Lens.Lens' PerformanceInsightsReferenceComparisonValues (Prelude.Maybe PerformanceInsightsReferenceMetric)+performanceInsightsReferenceComparisonValues_referenceMetric = Lens.lens (\PerformanceInsightsReferenceComparisonValues' {referenceMetric} -> referenceMetric) (\s@PerformanceInsightsReferenceComparisonValues' {} a -> s {referenceMetric = a} :: PerformanceInsightsReferenceComparisonValues)++-- | A scalar value DevOps Guru for a metric that DevOps Guru compares to+-- actual metric values. This reference value is used to determine if an+-- actual metric value should be considered anomalous.+performanceInsightsReferenceComparisonValues_referenceScalar :: Lens.Lens' PerformanceInsightsReferenceComparisonValues (Prelude.Maybe PerformanceInsightsReferenceScalar)+performanceInsightsReferenceComparisonValues_referenceScalar = Lens.lens (\PerformanceInsightsReferenceComparisonValues' {referenceScalar} -> referenceScalar) (\s@PerformanceInsightsReferenceComparisonValues' {} a -> s {referenceScalar = a} :: PerformanceInsightsReferenceComparisonValues)++instance+  Data.FromJSON+    PerformanceInsightsReferenceComparisonValues+  where+  parseJSON =+    Data.withObject+      "PerformanceInsightsReferenceComparisonValues"+      ( \x ->+          PerformanceInsightsReferenceComparisonValues'+            Prelude.<$> (x Data..:? "ReferenceMetric")+            Prelude.<*> (x Data..:? "ReferenceScalar")+      )++instance+  Prelude.Hashable+    PerformanceInsightsReferenceComparisonValues+  where+  hashWithSalt+    _salt+    PerformanceInsightsReferenceComparisonValues' {..} =+      _salt+        `Prelude.hashWithSalt` referenceMetric+        `Prelude.hashWithSalt` referenceScalar++instance+  Prelude.NFData+    PerformanceInsightsReferenceComparisonValues+  where+  rnf PerformanceInsightsReferenceComparisonValues' {..} =+    Prelude.rnf referenceMetric+      `Prelude.seq` Prelude.rnf referenceScalar
+ gen/Amazonka/DevOpsGuru/Types/PerformanceInsightsReferenceData.hs view
@@ -0,0 +1,104 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceData+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceData where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceComparisonValues+import qualified Amazonka.Prelude as Prelude++-- | Reference data used to evaluate Performance Insights to determine if its+-- performance is anomalous or not.+--+-- /See:/ 'newPerformanceInsightsReferenceData' smart constructor.+data PerformanceInsightsReferenceData = PerformanceInsightsReferenceData'+  { -- | The specific reference values used to evaluate the Performance Insights.+    -- For more information, see+    -- @ @<https://docs.aws.amazon.com/devops-guru/latest/APIReference/API_PerformanceInsightsReferenceComparisonValues.html PerformanceInsightsReferenceComparisonValues>@ @.+    comparisonValues :: Prelude.Maybe PerformanceInsightsReferenceComparisonValues,+    -- | The name of the reference data.+    name :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PerformanceInsightsReferenceData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'comparisonValues', 'performanceInsightsReferenceData_comparisonValues' - The specific reference values used to evaluate the Performance Insights.+-- For more information, see+-- @ @<https://docs.aws.amazon.com/devops-guru/latest/APIReference/API_PerformanceInsightsReferenceComparisonValues.html PerformanceInsightsReferenceComparisonValues>@ @.+--+-- 'name', 'performanceInsightsReferenceData_name' - The name of the reference data.+newPerformanceInsightsReferenceData ::+  PerformanceInsightsReferenceData+newPerformanceInsightsReferenceData =+  PerformanceInsightsReferenceData'+    { comparisonValues =+        Prelude.Nothing,+      name = Prelude.Nothing+    }++-- | The specific reference values used to evaluate the Performance Insights.+-- For more information, see+-- @ @<https://docs.aws.amazon.com/devops-guru/latest/APIReference/API_PerformanceInsightsReferenceComparisonValues.html PerformanceInsightsReferenceComparisonValues>@ @.+performanceInsightsReferenceData_comparisonValues :: Lens.Lens' PerformanceInsightsReferenceData (Prelude.Maybe PerformanceInsightsReferenceComparisonValues)+performanceInsightsReferenceData_comparisonValues = Lens.lens (\PerformanceInsightsReferenceData' {comparisonValues} -> comparisonValues) (\s@PerformanceInsightsReferenceData' {} a -> s {comparisonValues = a} :: PerformanceInsightsReferenceData)++-- | The name of the reference data.+performanceInsightsReferenceData_name :: Lens.Lens' PerformanceInsightsReferenceData (Prelude.Maybe Prelude.Text)+performanceInsightsReferenceData_name = Lens.lens (\PerformanceInsightsReferenceData' {name} -> name) (\s@PerformanceInsightsReferenceData' {} a -> s {name = a} :: PerformanceInsightsReferenceData)++instance+  Data.FromJSON+    PerformanceInsightsReferenceData+  where+  parseJSON =+    Data.withObject+      "PerformanceInsightsReferenceData"+      ( \x ->+          PerformanceInsightsReferenceData'+            Prelude.<$> (x Data..:? "ComparisonValues")+            Prelude.<*> (x Data..:? "Name")+      )++instance+  Prelude.Hashable+    PerformanceInsightsReferenceData+  where+  hashWithSalt+    _salt+    PerformanceInsightsReferenceData' {..} =+      _salt+        `Prelude.hashWithSalt` comparisonValues+        `Prelude.hashWithSalt` name++instance+  Prelude.NFData+    PerformanceInsightsReferenceData+  where+  rnf PerformanceInsightsReferenceData' {..} =+    Prelude.rnf comparisonValues+      `Prelude.seq` Prelude.rnf name
+ gen/Amazonka/DevOpsGuru/Types/PerformanceInsightsReferenceMetric.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.DevOpsGuru.Types.PerformanceInsightsReferenceMetric+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceMetric where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.PerformanceInsightsMetricQuery+import qualified Amazonka.Prelude as Prelude++-- | Information about a reference metric used to evaluate Performance+-- Insights.+--+-- /See:/ 'newPerformanceInsightsReferenceMetric' smart constructor.+data PerformanceInsightsReferenceMetric = PerformanceInsightsReferenceMetric'+  { -- | A query to be processed on the metric.+    metricQuery :: Prelude.Maybe PerformanceInsightsMetricQuery+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PerformanceInsightsReferenceMetric' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'metricQuery', 'performanceInsightsReferenceMetric_metricQuery' - A query to be processed on the metric.+newPerformanceInsightsReferenceMetric ::+  PerformanceInsightsReferenceMetric+newPerformanceInsightsReferenceMetric =+  PerformanceInsightsReferenceMetric'+    { metricQuery =+        Prelude.Nothing+    }++-- | A query to be processed on the metric.+performanceInsightsReferenceMetric_metricQuery :: Lens.Lens' PerformanceInsightsReferenceMetric (Prelude.Maybe PerformanceInsightsMetricQuery)+performanceInsightsReferenceMetric_metricQuery = Lens.lens (\PerformanceInsightsReferenceMetric' {metricQuery} -> metricQuery) (\s@PerformanceInsightsReferenceMetric' {} a -> s {metricQuery = a} :: PerformanceInsightsReferenceMetric)++instance+  Data.FromJSON+    PerformanceInsightsReferenceMetric+  where+  parseJSON =+    Data.withObject+      "PerformanceInsightsReferenceMetric"+      ( \x ->+          PerformanceInsightsReferenceMetric'+            Prelude.<$> (x Data..:? "MetricQuery")+      )++instance+  Prelude.Hashable+    PerformanceInsightsReferenceMetric+  where+  hashWithSalt+    _salt+    PerformanceInsightsReferenceMetric' {..} =+      _salt `Prelude.hashWithSalt` metricQuery++instance+  Prelude.NFData+    PerformanceInsightsReferenceMetric+  where+  rnf PerformanceInsightsReferenceMetric' {..} =+    Prelude.rnf metricQuery
+ gen/Amazonka/DevOpsGuru/Types/PerformanceInsightsReferenceScalar.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.DevOpsGuru.Types.PerformanceInsightsReferenceScalar+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.PerformanceInsightsReferenceScalar where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A reference value to compare Performance Insights metrics against to+-- determine if the metrics demonstrate anomalous behavior.+--+-- /See:/ 'newPerformanceInsightsReferenceScalar' smart constructor.+data PerformanceInsightsReferenceScalar = PerformanceInsightsReferenceScalar'+  { -- | The reference value.+    value :: Prelude.Maybe Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PerformanceInsightsReferenceScalar' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'performanceInsightsReferenceScalar_value' - The reference value.+newPerformanceInsightsReferenceScalar ::+  PerformanceInsightsReferenceScalar+newPerformanceInsightsReferenceScalar =+  PerformanceInsightsReferenceScalar'+    { value =+        Prelude.Nothing+    }++-- | The reference value.+performanceInsightsReferenceScalar_value :: Lens.Lens' PerformanceInsightsReferenceScalar (Prelude.Maybe Prelude.Double)+performanceInsightsReferenceScalar_value = Lens.lens (\PerformanceInsightsReferenceScalar' {value} -> value) (\s@PerformanceInsightsReferenceScalar' {} a -> s {value = a} :: PerformanceInsightsReferenceScalar)++instance+  Data.FromJSON+    PerformanceInsightsReferenceScalar+  where+  parseJSON =+    Data.withObject+      "PerformanceInsightsReferenceScalar"+      ( \x ->+          PerformanceInsightsReferenceScalar'+            Prelude.<$> (x Data..:? "Value")+      )++instance+  Prelude.Hashable+    PerformanceInsightsReferenceScalar+  where+  hashWithSalt+    _salt+    PerformanceInsightsReferenceScalar' {..} =+      _salt `Prelude.hashWithSalt` value++instance+  Prelude.NFData+    PerformanceInsightsReferenceScalar+  where+  rnf PerformanceInsightsReferenceScalar' {..} =+    Prelude.rnf value
+ gen/Amazonka/DevOpsGuru/Types/PerformanceInsightsStat.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.DevOpsGuru.Types.PerformanceInsightsStat+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.PerformanceInsightsStat where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A statistic in a Performance Insights collection.+--+-- /See:/ 'newPerformanceInsightsStat' smart constructor.+data PerformanceInsightsStat = PerformanceInsightsStat'+  { -- | The statistic type.+    type' :: Prelude.Maybe Prelude.Text,+    -- | The value of the statistic.+    value :: Prelude.Maybe Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PerformanceInsightsStat' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'type'', 'performanceInsightsStat_type' - The statistic type.+--+-- 'value', 'performanceInsightsStat_value' - The value of the statistic.+newPerformanceInsightsStat ::+  PerformanceInsightsStat+newPerformanceInsightsStat =+  PerformanceInsightsStat'+    { type' = Prelude.Nothing,+      value = Prelude.Nothing+    }++-- | The statistic type.+performanceInsightsStat_type :: Lens.Lens' PerformanceInsightsStat (Prelude.Maybe Prelude.Text)+performanceInsightsStat_type = Lens.lens (\PerformanceInsightsStat' {type'} -> type') (\s@PerformanceInsightsStat' {} a -> s {type' = a} :: PerformanceInsightsStat)++-- | The value of the statistic.+performanceInsightsStat_value :: Lens.Lens' PerformanceInsightsStat (Prelude.Maybe Prelude.Double)+performanceInsightsStat_value = Lens.lens (\PerformanceInsightsStat' {value} -> value) (\s@PerformanceInsightsStat' {} a -> s {value = a} :: PerformanceInsightsStat)++instance Data.FromJSON PerformanceInsightsStat where+  parseJSON =+    Data.withObject+      "PerformanceInsightsStat"+      ( \x ->+          PerformanceInsightsStat'+            Prelude.<$> (x Data..:? "Type")+            Prelude.<*> (x Data..:? "Value")+      )++instance Prelude.Hashable PerformanceInsightsStat where+  hashWithSalt _salt PerformanceInsightsStat' {..} =+    _salt+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` value++instance Prelude.NFData PerformanceInsightsStat where+  rnf PerformanceInsightsStat' {..} =+    Prelude.rnf type' `Prelude.seq` Prelude.rnf value
+ gen/Amazonka/DevOpsGuru/Types/PredictionTimeRange.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.DevOpsGuru.Types.PredictionTimeRange+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.PredictionTimeRange where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The time range during which anomalous behavior in a proactive anomaly or+-- an insight is expected to occur.+--+-- /See:/ 'newPredictionTimeRange' smart constructor.+data PredictionTimeRange = PredictionTimeRange'+  { -- | The time when the behavior in a proactive insight is expected to end.+    endTime :: Prelude.Maybe Data.POSIX,+    -- | The time range during which a metric limit is expected to be exceeded.+    -- This applies to proactive insights only.+    startTime :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PredictionTimeRange' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endTime', 'predictionTimeRange_endTime' - The time when the behavior in a proactive insight is expected to end.+--+-- 'startTime', 'predictionTimeRange_startTime' - The time range during which a metric limit is expected to be exceeded.+-- This applies to proactive insights only.+newPredictionTimeRange ::+  -- | 'startTime'+  Prelude.UTCTime ->+  PredictionTimeRange+newPredictionTimeRange pStartTime_ =+  PredictionTimeRange'+    { endTime = Prelude.Nothing,+      startTime = Data._Time Lens.# pStartTime_+    }++-- | The time when the behavior in a proactive insight is expected to end.+predictionTimeRange_endTime :: Lens.Lens' PredictionTimeRange (Prelude.Maybe Prelude.UTCTime)+predictionTimeRange_endTime = Lens.lens (\PredictionTimeRange' {endTime} -> endTime) (\s@PredictionTimeRange' {} a -> s {endTime = a} :: PredictionTimeRange) Prelude.. Lens.mapping Data._Time++-- | The time range during which a metric limit is expected to be exceeded.+-- This applies to proactive insights only.+predictionTimeRange_startTime :: Lens.Lens' PredictionTimeRange Prelude.UTCTime+predictionTimeRange_startTime = Lens.lens (\PredictionTimeRange' {startTime} -> startTime) (\s@PredictionTimeRange' {} a -> s {startTime = a} :: PredictionTimeRange) Prelude.. Data._Time++instance Data.FromJSON PredictionTimeRange where+  parseJSON =+    Data.withObject+      "PredictionTimeRange"+      ( \x ->+          PredictionTimeRange'+            Prelude.<$> (x Data..:? "EndTime")+            Prelude.<*> (x Data..: "StartTime")+      )++instance Prelude.Hashable PredictionTimeRange where+  hashWithSalt _salt PredictionTimeRange' {..} =+    _salt+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` startTime++instance Prelude.NFData PredictionTimeRange where+  rnf PredictionTimeRange' {..} =+    Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf startTime
+ gen/Amazonka/DevOpsGuru/Types/ProactiveAnomaly.hs view
@@ -0,0 +1,254 @@+{-# 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.DevOpsGuru.Types.ProactiveAnomaly+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ProactiveAnomaly where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.AnomalyReportedTimeRange+import Amazonka.DevOpsGuru.Types.AnomalyResource+import Amazonka.DevOpsGuru.Types.AnomalySeverity+import Amazonka.DevOpsGuru.Types.AnomalySourceDetails+import Amazonka.DevOpsGuru.Types.AnomalySourceMetadata+import Amazonka.DevOpsGuru.Types.AnomalyStatus+import Amazonka.DevOpsGuru.Types.AnomalyTimeRange+import Amazonka.DevOpsGuru.Types.PredictionTimeRange+import Amazonka.DevOpsGuru.Types.ResourceCollection+import qualified Amazonka.Prelude as Prelude++-- | Information about an anomaly. This object is returned by+-- @ListAnomalies@.+--+-- /See:/ 'newProactiveAnomaly' smart constructor.+data ProactiveAnomaly = ProactiveAnomaly'+  { -- | An @AnomalyReportedTimeRange@ object that specifies the time range+    -- between when the anomaly is opened and the time when it is closed.+    anomalyReportedTimeRange :: Prelude.Maybe AnomalyReportedTimeRange,+    -- | Information about a resource in which DevOps Guru detected anomalous+    -- behavior.+    anomalyResources :: Prelude.Maybe [AnomalyResource],+    anomalyTimeRange :: Prelude.Maybe AnomalyTimeRange,+    -- | The ID of the insight that contains this anomaly. An insight is composed+    -- of related anomalies.+    associatedInsightId :: Prelude.Maybe Prelude.Text,+    -- | The ID of a proactive anomaly.+    id :: Prelude.Maybe Prelude.Text,+    -- | A threshold that was exceeded by behavior in analyzed resources.+    -- Exceeding this threshold is related to the anomalous behavior that+    -- generated this anomaly.+    limit :: Prelude.Maybe Prelude.Double,+    predictionTimeRange :: Prelude.Maybe PredictionTimeRange,+    resourceCollection :: Prelude.Maybe ResourceCollection,+    -- | The severity of the anomaly. The severity of anomalies that generate an+    -- insight determine that insight\'s severity. For more information, see+    -- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+    -- in the /Amazon DevOps Guru User Guide/.+    severity :: Prelude.Maybe AnomalySeverity,+    -- | Details about the source of the analyzed operational data that triggered+    -- the anomaly. The one supported source is Amazon CloudWatch metrics.+    sourceDetails :: Prelude.Maybe AnomalySourceDetails,+    -- | The metadata for the anomaly.+    sourceMetadata :: Prelude.Maybe AnomalySourceMetadata,+    -- | The status of a proactive anomaly.+    status :: Prelude.Maybe AnomalyStatus,+    -- | The time of the anomaly\'s most recent update.+    updateTime :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProactiveAnomaly' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'anomalyReportedTimeRange', 'proactiveAnomaly_anomalyReportedTimeRange' - An @AnomalyReportedTimeRange@ object that specifies the time range+-- between when the anomaly is opened and the time when it is closed.+--+-- 'anomalyResources', 'proactiveAnomaly_anomalyResources' - Information about a resource in which DevOps Guru detected anomalous+-- behavior.+--+-- 'anomalyTimeRange', 'proactiveAnomaly_anomalyTimeRange' - Undocumented member.+--+-- 'associatedInsightId', 'proactiveAnomaly_associatedInsightId' - The ID of the insight that contains this anomaly. An insight is composed+-- of related anomalies.+--+-- 'id', 'proactiveAnomaly_id' - The ID of a proactive anomaly.+--+-- 'limit', 'proactiveAnomaly_limit' - A threshold that was exceeded by behavior in analyzed resources.+-- Exceeding this threshold is related to the anomalous behavior that+-- generated this anomaly.+--+-- 'predictionTimeRange', 'proactiveAnomaly_predictionTimeRange' - Undocumented member.+--+-- 'resourceCollection', 'proactiveAnomaly_resourceCollection' - Undocumented member.+--+-- 'severity', 'proactiveAnomaly_severity' - The severity of the anomaly. The severity of anomalies that generate an+-- insight determine that insight\'s severity. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+--+-- 'sourceDetails', 'proactiveAnomaly_sourceDetails' - Details about the source of the analyzed operational data that triggered+-- the anomaly. The one supported source is Amazon CloudWatch metrics.+--+-- 'sourceMetadata', 'proactiveAnomaly_sourceMetadata' - The metadata for the anomaly.+--+-- 'status', 'proactiveAnomaly_status' - The status of a proactive anomaly.+--+-- 'updateTime', 'proactiveAnomaly_updateTime' - The time of the anomaly\'s most recent update.+newProactiveAnomaly ::+  ProactiveAnomaly+newProactiveAnomaly =+  ProactiveAnomaly'+    { anomalyReportedTimeRange =+        Prelude.Nothing,+      anomalyResources = Prelude.Nothing,+      anomalyTimeRange = Prelude.Nothing,+      associatedInsightId = Prelude.Nothing,+      id = Prelude.Nothing,+      limit = Prelude.Nothing,+      predictionTimeRange = Prelude.Nothing,+      resourceCollection = Prelude.Nothing,+      severity = Prelude.Nothing,+      sourceDetails = Prelude.Nothing,+      sourceMetadata = Prelude.Nothing,+      status = Prelude.Nothing,+      updateTime = Prelude.Nothing+    }++-- | An @AnomalyReportedTimeRange@ object that specifies the time range+-- between when the anomaly is opened and the time when it is closed.+proactiveAnomaly_anomalyReportedTimeRange :: Lens.Lens' ProactiveAnomaly (Prelude.Maybe AnomalyReportedTimeRange)+proactiveAnomaly_anomalyReportedTimeRange = Lens.lens (\ProactiveAnomaly' {anomalyReportedTimeRange} -> anomalyReportedTimeRange) (\s@ProactiveAnomaly' {} a -> s {anomalyReportedTimeRange = a} :: ProactiveAnomaly)++-- | Information about a resource in which DevOps Guru detected anomalous+-- behavior.+proactiveAnomaly_anomalyResources :: Lens.Lens' ProactiveAnomaly (Prelude.Maybe [AnomalyResource])+proactiveAnomaly_anomalyResources = Lens.lens (\ProactiveAnomaly' {anomalyResources} -> anomalyResources) (\s@ProactiveAnomaly' {} a -> s {anomalyResources = a} :: ProactiveAnomaly) Prelude.. Lens.mapping Lens.coerced++-- | Undocumented member.+proactiveAnomaly_anomalyTimeRange :: Lens.Lens' ProactiveAnomaly (Prelude.Maybe AnomalyTimeRange)+proactiveAnomaly_anomalyTimeRange = Lens.lens (\ProactiveAnomaly' {anomalyTimeRange} -> anomalyTimeRange) (\s@ProactiveAnomaly' {} a -> s {anomalyTimeRange = a} :: ProactiveAnomaly)++-- | The ID of the insight that contains this anomaly. An insight is composed+-- of related anomalies.+proactiveAnomaly_associatedInsightId :: Lens.Lens' ProactiveAnomaly (Prelude.Maybe Prelude.Text)+proactiveAnomaly_associatedInsightId = Lens.lens (\ProactiveAnomaly' {associatedInsightId} -> associatedInsightId) (\s@ProactiveAnomaly' {} a -> s {associatedInsightId = a} :: ProactiveAnomaly)++-- | The ID of a proactive anomaly.+proactiveAnomaly_id :: Lens.Lens' ProactiveAnomaly (Prelude.Maybe Prelude.Text)+proactiveAnomaly_id = Lens.lens (\ProactiveAnomaly' {id} -> id) (\s@ProactiveAnomaly' {} a -> s {id = a} :: ProactiveAnomaly)++-- | A threshold that was exceeded by behavior in analyzed resources.+-- Exceeding this threshold is related to the anomalous behavior that+-- generated this anomaly.+proactiveAnomaly_limit :: Lens.Lens' ProactiveAnomaly (Prelude.Maybe Prelude.Double)+proactiveAnomaly_limit = Lens.lens (\ProactiveAnomaly' {limit} -> limit) (\s@ProactiveAnomaly' {} a -> s {limit = a} :: ProactiveAnomaly)++-- | Undocumented member.+proactiveAnomaly_predictionTimeRange :: Lens.Lens' ProactiveAnomaly (Prelude.Maybe PredictionTimeRange)+proactiveAnomaly_predictionTimeRange = Lens.lens (\ProactiveAnomaly' {predictionTimeRange} -> predictionTimeRange) (\s@ProactiveAnomaly' {} a -> s {predictionTimeRange = a} :: ProactiveAnomaly)++-- | Undocumented member.+proactiveAnomaly_resourceCollection :: Lens.Lens' ProactiveAnomaly (Prelude.Maybe ResourceCollection)+proactiveAnomaly_resourceCollection = Lens.lens (\ProactiveAnomaly' {resourceCollection} -> resourceCollection) (\s@ProactiveAnomaly' {} a -> s {resourceCollection = a} :: ProactiveAnomaly)++-- | The severity of the anomaly. The severity of anomalies that generate an+-- insight determine that insight\'s severity. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+proactiveAnomaly_severity :: Lens.Lens' ProactiveAnomaly (Prelude.Maybe AnomalySeverity)+proactiveAnomaly_severity = Lens.lens (\ProactiveAnomaly' {severity} -> severity) (\s@ProactiveAnomaly' {} a -> s {severity = a} :: ProactiveAnomaly)++-- | Details about the source of the analyzed operational data that triggered+-- the anomaly. The one supported source is Amazon CloudWatch metrics.+proactiveAnomaly_sourceDetails :: Lens.Lens' ProactiveAnomaly (Prelude.Maybe AnomalySourceDetails)+proactiveAnomaly_sourceDetails = Lens.lens (\ProactiveAnomaly' {sourceDetails} -> sourceDetails) (\s@ProactiveAnomaly' {} a -> s {sourceDetails = a} :: ProactiveAnomaly)++-- | The metadata for the anomaly.+proactiveAnomaly_sourceMetadata :: Lens.Lens' ProactiveAnomaly (Prelude.Maybe AnomalySourceMetadata)+proactiveAnomaly_sourceMetadata = Lens.lens (\ProactiveAnomaly' {sourceMetadata} -> sourceMetadata) (\s@ProactiveAnomaly' {} a -> s {sourceMetadata = a} :: ProactiveAnomaly)++-- | The status of a proactive anomaly.+proactiveAnomaly_status :: Lens.Lens' ProactiveAnomaly (Prelude.Maybe AnomalyStatus)+proactiveAnomaly_status = Lens.lens (\ProactiveAnomaly' {status} -> status) (\s@ProactiveAnomaly' {} a -> s {status = a} :: ProactiveAnomaly)++-- | The time of the anomaly\'s most recent update.+proactiveAnomaly_updateTime :: Lens.Lens' ProactiveAnomaly (Prelude.Maybe Prelude.UTCTime)+proactiveAnomaly_updateTime = Lens.lens (\ProactiveAnomaly' {updateTime} -> updateTime) (\s@ProactiveAnomaly' {} a -> s {updateTime = a} :: ProactiveAnomaly) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON ProactiveAnomaly where+  parseJSON =+    Data.withObject+      "ProactiveAnomaly"+      ( \x ->+          ProactiveAnomaly'+            Prelude.<$> (x Data..:? "AnomalyReportedTimeRange")+            Prelude.<*> ( x+                            Data..:? "AnomalyResources"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "AnomalyTimeRange")+            Prelude.<*> (x Data..:? "AssociatedInsightId")+            Prelude.<*> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "Limit")+            Prelude.<*> (x Data..:? "PredictionTimeRange")+            Prelude.<*> (x Data..:? "ResourceCollection")+            Prelude.<*> (x Data..:? "Severity")+            Prelude.<*> (x Data..:? "SourceDetails")+            Prelude.<*> (x Data..:? "SourceMetadata")+            Prelude.<*> (x Data..:? "Status")+            Prelude.<*> (x Data..:? "UpdateTime")+      )++instance Prelude.Hashable ProactiveAnomaly where+  hashWithSalt _salt ProactiveAnomaly' {..} =+    _salt+      `Prelude.hashWithSalt` anomalyReportedTimeRange+      `Prelude.hashWithSalt` anomalyResources+      `Prelude.hashWithSalt` anomalyTimeRange+      `Prelude.hashWithSalt` associatedInsightId+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` limit+      `Prelude.hashWithSalt` predictionTimeRange+      `Prelude.hashWithSalt` resourceCollection+      `Prelude.hashWithSalt` severity+      `Prelude.hashWithSalt` sourceDetails+      `Prelude.hashWithSalt` sourceMetadata+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` updateTime++instance Prelude.NFData ProactiveAnomaly where+  rnf ProactiveAnomaly' {..} =+    Prelude.rnf anomalyReportedTimeRange+      `Prelude.seq` Prelude.rnf anomalyResources+      `Prelude.seq` Prelude.rnf anomalyTimeRange+      `Prelude.seq` Prelude.rnf associatedInsightId+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf limit+      `Prelude.seq` Prelude.rnf predictionTimeRange+      `Prelude.seq` Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf severity+      `Prelude.seq` Prelude.rnf sourceDetails+      `Prelude.seq` Prelude.rnf sourceMetadata+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/DevOpsGuru/Types/ProactiveAnomalySummary.hs view
@@ -0,0 +1,254 @@+{-# 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.DevOpsGuru.Types.ProactiveAnomalySummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ProactiveAnomalySummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.AnomalyReportedTimeRange+import Amazonka.DevOpsGuru.Types.AnomalyResource+import Amazonka.DevOpsGuru.Types.AnomalySeverity+import Amazonka.DevOpsGuru.Types.AnomalySourceDetails+import Amazonka.DevOpsGuru.Types.AnomalySourceMetadata+import Amazonka.DevOpsGuru.Types.AnomalyStatus+import Amazonka.DevOpsGuru.Types.AnomalyTimeRange+import Amazonka.DevOpsGuru.Types.PredictionTimeRange+import Amazonka.DevOpsGuru.Types.ResourceCollection+import qualified Amazonka.Prelude as Prelude++-- | Details about a proactive anomaly. This object is returned by+-- @DescribeAnomaly.@+--+-- /See:/ 'newProactiveAnomalySummary' smart constructor.+data ProactiveAnomalySummary = ProactiveAnomalySummary'+  { -- | An @AnomalyReportedTimeRange@ object that specifies the time range+    -- between when the anomaly is opened and the time when it is closed.+    anomalyReportedTimeRange :: Prelude.Maybe AnomalyReportedTimeRange,+    -- | Information about a resource in which DevOps Guru detected anomalous+    -- behavior.+    anomalyResources :: Prelude.Maybe [AnomalyResource],+    anomalyTimeRange :: Prelude.Maybe AnomalyTimeRange,+    -- | The ID of the insight that contains this anomaly. An insight is composed+    -- of related anomalies.+    associatedInsightId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the anomaly.+    id :: Prelude.Maybe Prelude.Text,+    -- | A threshold that was exceeded by behavior in analyzed resources.+    -- Exceeding this threshold is related to the anomalous behavior that+    -- generated this anomaly.+    limit :: Prelude.Maybe Prelude.Double,+    predictionTimeRange :: Prelude.Maybe PredictionTimeRange,+    resourceCollection :: Prelude.Maybe ResourceCollection,+    -- | The severity of the anomaly. The severity of anomalies that generate an+    -- insight determine that insight\'s severity. For more information, see+    -- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+    -- in the /Amazon DevOps Guru User Guide/.+    severity :: Prelude.Maybe AnomalySeverity,+    -- | Details about the source of the analyzed operational data that triggered+    -- the anomaly. The one supported source is Amazon CloudWatch metrics.+    sourceDetails :: Prelude.Maybe AnomalySourceDetails,+    -- | The metadata of the source which detects proactive anomalies.+    sourceMetadata :: Prelude.Maybe AnomalySourceMetadata,+    -- | The status of the anomaly.+    status :: Prelude.Maybe AnomalyStatus,+    -- | The time of the anomaly\'s most recent update.+    updateTime :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProactiveAnomalySummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'anomalyReportedTimeRange', 'proactiveAnomalySummary_anomalyReportedTimeRange' - An @AnomalyReportedTimeRange@ object that specifies the time range+-- between when the anomaly is opened and the time when it is closed.+--+-- 'anomalyResources', 'proactiveAnomalySummary_anomalyResources' - Information about a resource in which DevOps Guru detected anomalous+-- behavior.+--+-- 'anomalyTimeRange', 'proactiveAnomalySummary_anomalyTimeRange' - Undocumented member.+--+-- 'associatedInsightId', 'proactiveAnomalySummary_associatedInsightId' - The ID of the insight that contains this anomaly. An insight is composed+-- of related anomalies.+--+-- 'id', 'proactiveAnomalySummary_id' - The ID of the anomaly.+--+-- 'limit', 'proactiveAnomalySummary_limit' - A threshold that was exceeded by behavior in analyzed resources.+-- Exceeding this threshold is related to the anomalous behavior that+-- generated this anomaly.+--+-- 'predictionTimeRange', 'proactiveAnomalySummary_predictionTimeRange' - Undocumented member.+--+-- 'resourceCollection', 'proactiveAnomalySummary_resourceCollection' - Undocumented member.+--+-- 'severity', 'proactiveAnomalySummary_severity' - The severity of the anomaly. The severity of anomalies that generate an+-- insight determine that insight\'s severity. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+--+-- 'sourceDetails', 'proactiveAnomalySummary_sourceDetails' - Details about the source of the analyzed operational data that triggered+-- the anomaly. The one supported source is Amazon CloudWatch metrics.+--+-- 'sourceMetadata', 'proactiveAnomalySummary_sourceMetadata' - The metadata of the source which detects proactive anomalies.+--+-- 'status', 'proactiveAnomalySummary_status' - The status of the anomaly.+--+-- 'updateTime', 'proactiveAnomalySummary_updateTime' - The time of the anomaly\'s most recent update.+newProactiveAnomalySummary ::+  ProactiveAnomalySummary+newProactiveAnomalySummary =+  ProactiveAnomalySummary'+    { anomalyReportedTimeRange =+        Prelude.Nothing,+      anomalyResources = Prelude.Nothing,+      anomalyTimeRange = Prelude.Nothing,+      associatedInsightId = Prelude.Nothing,+      id = Prelude.Nothing,+      limit = Prelude.Nothing,+      predictionTimeRange = Prelude.Nothing,+      resourceCollection = Prelude.Nothing,+      severity = Prelude.Nothing,+      sourceDetails = Prelude.Nothing,+      sourceMetadata = Prelude.Nothing,+      status = Prelude.Nothing,+      updateTime = Prelude.Nothing+    }++-- | An @AnomalyReportedTimeRange@ object that specifies the time range+-- between when the anomaly is opened and the time when it is closed.+proactiveAnomalySummary_anomalyReportedTimeRange :: Lens.Lens' ProactiveAnomalySummary (Prelude.Maybe AnomalyReportedTimeRange)+proactiveAnomalySummary_anomalyReportedTimeRange = Lens.lens (\ProactiveAnomalySummary' {anomalyReportedTimeRange} -> anomalyReportedTimeRange) (\s@ProactiveAnomalySummary' {} a -> s {anomalyReportedTimeRange = a} :: ProactiveAnomalySummary)++-- | Information about a resource in which DevOps Guru detected anomalous+-- behavior.+proactiveAnomalySummary_anomalyResources :: Lens.Lens' ProactiveAnomalySummary (Prelude.Maybe [AnomalyResource])+proactiveAnomalySummary_anomalyResources = Lens.lens (\ProactiveAnomalySummary' {anomalyResources} -> anomalyResources) (\s@ProactiveAnomalySummary' {} a -> s {anomalyResources = a} :: ProactiveAnomalySummary) Prelude.. Lens.mapping Lens.coerced++-- | Undocumented member.+proactiveAnomalySummary_anomalyTimeRange :: Lens.Lens' ProactiveAnomalySummary (Prelude.Maybe AnomalyTimeRange)+proactiveAnomalySummary_anomalyTimeRange = Lens.lens (\ProactiveAnomalySummary' {anomalyTimeRange} -> anomalyTimeRange) (\s@ProactiveAnomalySummary' {} a -> s {anomalyTimeRange = a} :: ProactiveAnomalySummary)++-- | The ID of the insight that contains this anomaly. An insight is composed+-- of related anomalies.+proactiveAnomalySummary_associatedInsightId :: Lens.Lens' ProactiveAnomalySummary (Prelude.Maybe Prelude.Text)+proactiveAnomalySummary_associatedInsightId = Lens.lens (\ProactiveAnomalySummary' {associatedInsightId} -> associatedInsightId) (\s@ProactiveAnomalySummary' {} a -> s {associatedInsightId = a} :: ProactiveAnomalySummary)++-- | The ID of the anomaly.+proactiveAnomalySummary_id :: Lens.Lens' ProactiveAnomalySummary (Prelude.Maybe Prelude.Text)+proactiveAnomalySummary_id = Lens.lens (\ProactiveAnomalySummary' {id} -> id) (\s@ProactiveAnomalySummary' {} a -> s {id = a} :: ProactiveAnomalySummary)++-- | A threshold that was exceeded by behavior in analyzed resources.+-- Exceeding this threshold is related to the anomalous behavior that+-- generated this anomaly.+proactiveAnomalySummary_limit :: Lens.Lens' ProactiveAnomalySummary (Prelude.Maybe Prelude.Double)+proactiveAnomalySummary_limit = Lens.lens (\ProactiveAnomalySummary' {limit} -> limit) (\s@ProactiveAnomalySummary' {} a -> s {limit = a} :: ProactiveAnomalySummary)++-- | Undocumented member.+proactiveAnomalySummary_predictionTimeRange :: Lens.Lens' ProactiveAnomalySummary (Prelude.Maybe PredictionTimeRange)+proactiveAnomalySummary_predictionTimeRange = Lens.lens (\ProactiveAnomalySummary' {predictionTimeRange} -> predictionTimeRange) (\s@ProactiveAnomalySummary' {} a -> s {predictionTimeRange = a} :: ProactiveAnomalySummary)++-- | Undocumented member.+proactiveAnomalySummary_resourceCollection :: Lens.Lens' ProactiveAnomalySummary (Prelude.Maybe ResourceCollection)+proactiveAnomalySummary_resourceCollection = Lens.lens (\ProactiveAnomalySummary' {resourceCollection} -> resourceCollection) (\s@ProactiveAnomalySummary' {} a -> s {resourceCollection = a} :: ProactiveAnomalySummary)++-- | The severity of the anomaly. The severity of anomalies that generate an+-- insight determine that insight\'s severity. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+proactiveAnomalySummary_severity :: Lens.Lens' ProactiveAnomalySummary (Prelude.Maybe AnomalySeverity)+proactiveAnomalySummary_severity = Lens.lens (\ProactiveAnomalySummary' {severity} -> severity) (\s@ProactiveAnomalySummary' {} a -> s {severity = a} :: ProactiveAnomalySummary)++-- | Details about the source of the analyzed operational data that triggered+-- the anomaly. The one supported source is Amazon CloudWatch metrics.+proactiveAnomalySummary_sourceDetails :: Lens.Lens' ProactiveAnomalySummary (Prelude.Maybe AnomalySourceDetails)+proactiveAnomalySummary_sourceDetails = Lens.lens (\ProactiveAnomalySummary' {sourceDetails} -> sourceDetails) (\s@ProactiveAnomalySummary' {} a -> s {sourceDetails = a} :: ProactiveAnomalySummary)++-- | The metadata of the source which detects proactive anomalies.+proactiveAnomalySummary_sourceMetadata :: Lens.Lens' ProactiveAnomalySummary (Prelude.Maybe AnomalySourceMetadata)+proactiveAnomalySummary_sourceMetadata = Lens.lens (\ProactiveAnomalySummary' {sourceMetadata} -> sourceMetadata) (\s@ProactiveAnomalySummary' {} a -> s {sourceMetadata = a} :: ProactiveAnomalySummary)++-- | The status of the anomaly.+proactiveAnomalySummary_status :: Lens.Lens' ProactiveAnomalySummary (Prelude.Maybe AnomalyStatus)+proactiveAnomalySummary_status = Lens.lens (\ProactiveAnomalySummary' {status} -> status) (\s@ProactiveAnomalySummary' {} a -> s {status = a} :: ProactiveAnomalySummary)++-- | The time of the anomaly\'s most recent update.+proactiveAnomalySummary_updateTime :: Lens.Lens' ProactiveAnomalySummary (Prelude.Maybe Prelude.UTCTime)+proactiveAnomalySummary_updateTime = Lens.lens (\ProactiveAnomalySummary' {updateTime} -> updateTime) (\s@ProactiveAnomalySummary' {} a -> s {updateTime = a} :: ProactiveAnomalySummary) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON ProactiveAnomalySummary where+  parseJSON =+    Data.withObject+      "ProactiveAnomalySummary"+      ( \x ->+          ProactiveAnomalySummary'+            Prelude.<$> (x Data..:? "AnomalyReportedTimeRange")+            Prelude.<*> ( x+                            Data..:? "AnomalyResources"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "AnomalyTimeRange")+            Prelude.<*> (x Data..:? "AssociatedInsightId")+            Prelude.<*> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "Limit")+            Prelude.<*> (x Data..:? "PredictionTimeRange")+            Prelude.<*> (x Data..:? "ResourceCollection")+            Prelude.<*> (x Data..:? "Severity")+            Prelude.<*> (x Data..:? "SourceDetails")+            Prelude.<*> (x Data..:? "SourceMetadata")+            Prelude.<*> (x Data..:? "Status")+            Prelude.<*> (x Data..:? "UpdateTime")+      )++instance Prelude.Hashable ProactiveAnomalySummary where+  hashWithSalt _salt ProactiveAnomalySummary' {..} =+    _salt+      `Prelude.hashWithSalt` anomalyReportedTimeRange+      `Prelude.hashWithSalt` anomalyResources+      `Prelude.hashWithSalt` anomalyTimeRange+      `Prelude.hashWithSalt` associatedInsightId+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` limit+      `Prelude.hashWithSalt` predictionTimeRange+      `Prelude.hashWithSalt` resourceCollection+      `Prelude.hashWithSalt` severity+      `Prelude.hashWithSalt` sourceDetails+      `Prelude.hashWithSalt` sourceMetadata+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` updateTime++instance Prelude.NFData ProactiveAnomalySummary where+  rnf ProactiveAnomalySummary' {..} =+    Prelude.rnf anomalyReportedTimeRange+      `Prelude.seq` Prelude.rnf anomalyResources+      `Prelude.seq` Prelude.rnf anomalyTimeRange+      `Prelude.seq` Prelude.rnf associatedInsightId+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf limit+      `Prelude.seq` Prelude.rnf predictionTimeRange+      `Prelude.seq` Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf severity+      `Prelude.seq` Prelude.rnf sourceDetails+      `Prelude.seq` Prelude.rnf sourceMetadata+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/DevOpsGuru/Types/ProactiveInsight.hs view
@@ -0,0 +1,183 @@+{-# 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.DevOpsGuru.Types.ProactiveInsight+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ProactiveInsight where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.InsightSeverity+import Amazonka.DevOpsGuru.Types.InsightStatus+import Amazonka.DevOpsGuru.Types.InsightTimeRange+import Amazonka.DevOpsGuru.Types.PredictionTimeRange+import Amazonka.DevOpsGuru.Types.ResourceCollection+import qualified Amazonka.Prelude as Prelude++-- | Details about a proactive insight. This object is returned by+-- @ListInsights@.+--+-- /See:/ 'newProactiveInsight' smart constructor.+data ProactiveInsight = ProactiveInsight'+  { -- | Describes the proactive insight.+    description :: Prelude.Maybe Prelude.Text,+    -- | The ID of the proactive insight.+    id :: Prelude.Maybe Prelude.Text,+    insightTimeRange :: Prelude.Maybe InsightTimeRange,+    -- | The name of the proactive insight.+    name :: Prelude.Maybe Prelude.Text,+    predictionTimeRange :: Prelude.Maybe PredictionTimeRange,+    resourceCollection :: Prelude.Maybe ResourceCollection,+    -- | The severity of the insight. For more information, see+    -- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+    -- in the /Amazon DevOps Guru User Guide/.+    severity :: Prelude.Maybe InsightSeverity,+    -- | The ID of the Amazon Web Services System Manager OpsItem created for+    -- this insight. You must enable the creation of OpstItems insights before+    -- they are created for each insight.+    ssmOpsItemId :: Prelude.Maybe Prelude.Text,+    -- | The status of the proactive insight.+    status :: Prelude.Maybe InsightStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProactiveInsight' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'proactiveInsight_description' - Describes the proactive insight.+--+-- 'id', 'proactiveInsight_id' - The ID of the proactive insight.+--+-- 'insightTimeRange', 'proactiveInsight_insightTimeRange' - Undocumented member.+--+-- 'name', 'proactiveInsight_name' - The name of the proactive insight.+--+-- 'predictionTimeRange', 'proactiveInsight_predictionTimeRange' - Undocumented member.+--+-- 'resourceCollection', 'proactiveInsight_resourceCollection' - Undocumented member.+--+-- 'severity', 'proactiveInsight_severity' - The severity of the insight. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+--+-- 'ssmOpsItemId', 'proactiveInsight_ssmOpsItemId' - The ID of the Amazon Web Services System Manager OpsItem created for+-- this insight. You must enable the creation of OpstItems insights before+-- they are created for each insight.+--+-- 'status', 'proactiveInsight_status' - The status of the proactive insight.+newProactiveInsight ::+  ProactiveInsight+newProactiveInsight =+  ProactiveInsight'+    { description = Prelude.Nothing,+      id = Prelude.Nothing,+      insightTimeRange = Prelude.Nothing,+      name = Prelude.Nothing,+      predictionTimeRange = Prelude.Nothing,+      resourceCollection = Prelude.Nothing,+      severity = Prelude.Nothing,+      ssmOpsItemId = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | Describes the proactive insight.+proactiveInsight_description :: Lens.Lens' ProactiveInsight (Prelude.Maybe Prelude.Text)+proactiveInsight_description = Lens.lens (\ProactiveInsight' {description} -> description) (\s@ProactiveInsight' {} a -> s {description = a} :: ProactiveInsight)++-- | The ID of the proactive insight.+proactiveInsight_id :: Lens.Lens' ProactiveInsight (Prelude.Maybe Prelude.Text)+proactiveInsight_id = Lens.lens (\ProactiveInsight' {id} -> id) (\s@ProactiveInsight' {} a -> s {id = a} :: ProactiveInsight)++-- | Undocumented member.+proactiveInsight_insightTimeRange :: Lens.Lens' ProactiveInsight (Prelude.Maybe InsightTimeRange)+proactiveInsight_insightTimeRange = Lens.lens (\ProactiveInsight' {insightTimeRange} -> insightTimeRange) (\s@ProactiveInsight' {} a -> s {insightTimeRange = a} :: ProactiveInsight)++-- | The name of the proactive insight.+proactiveInsight_name :: Lens.Lens' ProactiveInsight (Prelude.Maybe Prelude.Text)+proactiveInsight_name = Lens.lens (\ProactiveInsight' {name} -> name) (\s@ProactiveInsight' {} a -> s {name = a} :: ProactiveInsight)++-- | Undocumented member.+proactiveInsight_predictionTimeRange :: Lens.Lens' ProactiveInsight (Prelude.Maybe PredictionTimeRange)+proactiveInsight_predictionTimeRange = Lens.lens (\ProactiveInsight' {predictionTimeRange} -> predictionTimeRange) (\s@ProactiveInsight' {} a -> s {predictionTimeRange = a} :: ProactiveInsight)++-- | Undocumented member.+proactiveInsight_resourceCollection :: Lens.Lens' ProactiveInsight (Prelude.Maybe ResourceCollection)+proactiveInsight_resourceCollection = Lens.lens (\ProactiveInsight' {resourceCollection} -> resourceCollection) (\s@ProactiveInsight' {} a -> s {resourceCollection = a} :: ProactiveInsight)++-- | The severity of the insight. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+proactiveInsight_severity :: Lens.Lens' ProactiveInsight (Prelude.Maybe InsightSeverity)+proactiveInsight_severity = Lens.lens (\ProactiveInsight' {severity} -> severity) (\s@ProactiveInsight' {} a -> s {severity = a} :: ProactiveInsight)++-- | The ID of the Amazon Web Services System Manager OpsItem created for+-- this insight. You must enable the creation of OpstItems insights before+-- they are created for each insight.+proactiveInsight_ssmOpsItemId :: Lens.Lens' ProactiveInsight (Prelude.Maybe Prelude.Text)+proactiveInsight_ssmOpsItemId = Lens.lens (\ProactiveInsight' {ssmOpsItemId} -> ssmOpsItemId) (\s@ProactiveInsight' {} a -> s {ssmOpsItemId = a} :: ProactiveInsight)++-- | The status of the proactive insight.+proactiveInsight_status :: Lens.Lens' ProactiveInsight (Prelude.Maybe InsightStatus)+proactiveInsight_status = Lens.lens (\ProactiveInsight' {status} -> status) (\s@ProactiveInsight' {} a -> s {status = a} :: ProactiveInsight)++instance Data.FromJSON ProactiveInsight where+  parseJSON =+    Data.withObject+      "ProactiveInsight"+      ( \x ->+          ProactiveInsight'+            Prelude.<$> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "InsightTimeRange")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "PredictionTimeRange")+            Prelude.<*> (x Data..:? "ResourceCollection")+            Prelude.<*> (x Data..:? "Severity")+            Prelude.<*> (x Data..:? "SsmOpsItemId")+            Prelude.<*> (x Data..:? "Status")+      )++instance Prelude.Hashable ProactiveInsight where+  hashWithSalt _salt ProactiveInsight' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` insightTimeRange+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` predictionTimeRange+      `Prelude.hashWithSalt` resourceCollection+      `Prelude.hashWithSalt` severity+      `Prelude.hashWithSalt` ssmOpsItemId+      `Prelude.hashWithSalt` status++instance Prelude.NFData ProactiveInsight where+  rnf ProactiveInsight' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf insightTimeRange+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf predictionTimeRange+      `Prelude.seq` Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf severity+      `Prelude.seq` Prelude.rnf ssmOpsItemId+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/DevOpsGuru/Types/ProactiveInsightSummary.hs view
@@ -0,0 +1,185 @@+{-# 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.DevOpsGuru.Types.ProactiveInsightSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ProactiveInsightSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.InsightSeverity+import Amazonka.DevOpsGuru.Types.InsightStatus+import Amazonka.DevOpsGuru.Types.InsightTimeRange+import Amazonka.DevOpsGuru.Types.PredictionTimeRange+import Amazonka.DevOpsGuru.Types.ResourceCollection+import Amazonka.DevOpsGuru.Types.ServiceCollection+import qualified Amazonka.Prelude as Prelude++-- | Details about a proactive insight. This object is returned by+-- @DescribeInsight.@+--+-- /See:/ 'newProactiveInsightSummary' smart constructor.+data ProactiveInsightSummary = ProactiveInsightSummary'+  { -- | The Amazon Resource Names (ARNs) of the Amazon Web Services resources+    -- that generated this insight.+    associatedResourceArns :: Prelude.Maybe [Prelude.Text],+    -- | The ID of the proactive insight.+    id :: Prelude.Maybe Prelude.Text,+    insightTimeRange :: Prelude.Maybe InsightTimeRange,+    -- | The name of the proactive insight.+    name :: Prelude.Maybe Prelude.Text,+    predictionTimeRange :: Prelude.Maybe PredictionTimeRange,+    resourceCollection :: Prelude.Maybe ResourceCollection,+    -- | A collection of the names of Amazon Web Services services.+    serviceCollection :: Prelude.Maybe ServiceCollection,+    -- | The severity of the insight. For more information, see+    -- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+    -- in the /Amazon DevOps Guru User Guide/.+    severity :: Prelude.Maybe InsightSeverity,+    -- | The status of the proactive insight.+    status :: Prelude.Maybe InsightStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProactiveInsightSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'associatedResourceArns', 'proactiveInsightSummary_associatedResourceArns' - The Amazon Resource Names (ARNs) of the Amazon Web Services resources+-- that generated this insight.+--+-- 'id', 'proactiveInsightSummary_id' - The ID of the proactive insight.+--+-- 'insightTimeRange', 'proactiveInsightSummary_insightTimeRange' - Undocumented member.+--+-- 'name', 'proactiveInsightSummary_name' - The name of the proactive insight.+--+-- 'predictionTimeRange', 'proactiveInsightSummary_predictionTimeRange' - Undocumented member.+--+-- 'resourceCollection', 'proactiveInsightSummary_resourceCollection' - Undocumented member.+--+-- 'serviceCollection', 'proactiveInsightSummary_serviceCollection' - A collection of the names of Amazon Web Services services.+--+-- 'severity', 'proactiveInsightSummary_severity' - The severity of the insight. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+--+-- 'status', 'proactiveInsightSummary_status' - The status of the proactive insight.+newProactiveInsightSummary ::+  ProactiveInsightSummary+newProactiveInsightSummary =+  ProactiveInsightSummary'+    { associatedResourceArns =+        Prelude.Nothing,+      id = Prelude.Nothing,+      insightTimeRange = Prelude.Nothing,+      name = Prelude.Nothing,+      predictionTimeRange = Prelude.Nothing,+      resourceCollection = Prelude.Nothing,+      serviceCollection = Prelude.Nothing,+      severity = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The Amazon Resource Names (ARNs) of the Amazon Web Services resources+-- that generated this insight.+proactiveInsightSummary_associatedResourceArns :: Lens.Lens' ProactiveInsightSummary (Prelude.Maybe [Prelude.Text])+proactiveInsightSummary_associatedResourceArns = Lens.lens (\ProactiveInsightSummary' {associatedResourceArns} -> associatedResourceArns) (\s@ProactiveInsightSummary' {} a -> s {associatedResourceArns = a} :: ProactiveInsightSummary) Prelude.. Lens.mapping Lens.coerced++-- | The ID of the proactive insight.+proactiveInsightSummary_id :: Lens.Lens' ProactiveInsightSummary (Prelude.Maybe Prelude.Text)+proactiveInsightSummary_id = Lens.lens (\ProactiveInsightSummary' {id} -> id) (\s@ProactiveInsightSummary' {} a -> s {id = a} :: ProactiveInsightSummary)++-- | Undocumented member.+proactiveInsightSummary_insightTimeRange :: Lens.Lens' ProactiveInsightSummary (Prelude.Maybe InsightTimeRange)+proactiveInsightSummary_insightTimeRange = Lens.lens (\ProactiveInsightSummary' {insightTimeRange} -> insightTimeRange) (\s@ProactiveInsightSummary' {} a -> s {insightTimeRange = a} :: ProactiveInsightSummary)++-- | The name of the proactive insight.+proactiveInsightSummary_name :: Lens.Lens' ProactiveInsightSummary (Prelude.Maybe Prelude.Text)+proactiveInsightSummary_name = Lens.lens (\ProactiveInsightSummary' {name} -> name) (\s@ProactiveInsightSummary' {} a -> s {name = a} :: ProactiveInsightSummary)++-- | Undocumented member.+proactiveInsightSummary_predictionTimeRange :: Lens.Lens' ProactiveInsightSummary (Prelude.Maybe PredictionTimeRange)+proactiveInsightSummary_predictionTimeRange = Lens.lens (\ProactiveInsightSummary' {predictionTimeRange} -> predictionTimeRange) (\s@ProactiveInsightSummary' {} a -> s {predictionTimeRange = a} :: ProactiveInsightSummary)++-- | Undocumented member.+proactiveInsightSummary_resourceCollection :: Lens.Lens' ProactiveInsightSummary (Prelude.Maybe ResourceCollection)+proactiveInsightSummary_resourceCollection = Lens.lens (\ProactiveInsightSummary' {resourceCollection} -> resourceCollection) (\s@ProactiveInsightSummary' {} a -> s {resourceCollection = a} :: ProactiveInsightSummary)++-- | A collection of the names of Amazon Web Services services.+proactiveInsightSummary_serviceCollection :: Lens.Lens' ProactiveInsightSummary (Prelude.Maybe ServiceCollection)+proactiveInsightSummary_serviceCollection = Lens.lens (\ProactiveInsightSummary' {serviceCollection} -> serviceCollection) (\s@ProactiveInsightSummary' {} a -> s {serviceCollection = a} :: ProactiveInsightSummary)++-- | The severity of the insight. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+proactiveInsightSummary_severity :: Lens.Lens' ProactiveInsightSummary (Prelude.Maybe InsightSeverity)+proactiveInsightSummary_severity = Lens.lens (\ProactiveInsightSummary' {severity} -> severity) (\s@ProactiveInsightSummary' {} a -> s {severity = a} :: ProactiveInsightSummary)++-- | The status of the proactive insight.+proactiveInsightSummary_status :: Lens.Lens' ProactiveInsightSummary (Prelude.Maybe InsightStatus)+proactiveInsightSummary_status = Lens.lens (\ProactiveInsightSummary' {status} -> status) (\s@ProactiveInsightSummary' {} a -> s {status = a} :: ProactiveInsightSummary)++instance Data.FromJSON ProactiveInsightSummary where+  parseJSON =+    Data.withObject+      "ProactiveInsightSummary"+      ( \x ->+          ProactiveInsightSummary'+            Prelude.<$> ( x+                            Data..:? "AssociatedResourceArns"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "InsightTimeRange")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "PredictionTimeRange")+            Prelude.<*> (x Data..:? "ResourceCollection")+            Prelude.<*> (x Data..:? "ServiceCollection")+            Prelude.<*> (x Data..:? "Severity")+            Prelude.<*> (x Data..:? "Status")+      )++instance Prelude.Hashable ProactiveInsightSummary where+  hashWithSalt _salt ProactiveInsightSummary' {..} =+    _salt+      `Prelude.hashWithSalt` associatedResourceArns+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` insightTimeRange+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` predictionTimeRange+      `Prelude.hashWithSalt` resourceCollection+      `Prelude.hashWithSalt` serviceCollection+      `Prelude.hashWithSalt` severity+      `Prelude.hashWithSalt` status++instance Prelude.NFData ProactiveInsightSummary where+  rnf ProactiveInsightSummary' {..} =+    Prelude.rnf associatedResourceArns+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf insightTimeRange+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf predictionTimeRange+      `Prelude.seq` Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf serviceCollection+      `Prelude.seq` Prelude.rnf severity+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/DevOpsGuru/Types/ProactiveOrganizationInsightSummary.hs view
@@ -0,0 +1,204 @@+{-# 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.DevOpsGuru.Types.ProactiveOrganizationInsightSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ProactiveOrganizationInsightSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.InsightSeverity+import Amazonka.DevOpsGuru.Types.InsightStatus+import Amazonka.DevOpsGuru.Types.InsightTimeRange+import Amazonka.DevOpsGuru.Types.PredictionTimeRange+import Amazonka.DevOpsGuru.Types.ResourceCollection+import Amazonka.DevOpsGuru.Types.ServiceCollection+import qualified Amazonka.Prelude as Prelude++-- | Details about a proactive insight. This object is returned by+-- @DescribeInsight@.+--+-- /See:/ 'newProactiveOrganizationInsightSummary' smart constructor.+data ProactiveOrganizationInsightSummary = ProactiveOrganizationInsightSummary'+  { -- | The ID of the Amazon Web Services account.+    accountId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the insight summary.+    id :: Prelude.Maybe Prelude.Text,+    insightTimeRange :: Prelude.Maybe InsightTimeRange,+    -- | The name of the insight summary.+    name :: Prelude.Maybe Prelude.Text,+    -- | The ID of the organizational unit.+    organizationalUnitId :: Prelude.Maybe Prelude.Text,+    predictionTimeRange :: Prelude.Maybe PredictionTimeRange,+    resourceCollection :: Prelude.Maybe ResourceCollection,+    serviceCollection :: Prelude.Maybe ServiceCollection,+    -- | An array of severity values used to search for insights. For more+    -- information, see+    -- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+    -- in the /Amazon DevOps Guru User Guide/.+    severity :: Prelude.Maybe InsightSeverity,+    -- | An array of status values used to search for insights.+    status :: Prelude.Maybe InsightStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProactiveOrganizationInsightSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountId', 'proactiveOrganizationInsightSummary_accountId' - The ID of the Amazon Web Services account.+--+-- 'id', 'proactiveOrganizationInsightSummary_id' - The ID of the insight summary.+--+-- 'insightTimeRange', 'proactiveOrganizationInsightSummary_insightTimeRange' - Undocumented member.+--+-- 'name', 'proactiveOrganizationInsightSummary_name' - The name of the insight summary.+--+-- 'organizationalUnitId', 'proactiveOrganizationInsightSummary_organizationalUnitId' - The ID of the organizational unit.+--+-- 'predictionTimeRange', 'proactiveOrganizationInsightSummary_predictionTimeRange' - Undocumented member.+--+-- 'resourceCollection', 'proactiveOrganizationInsightSummary_resourceCollection' - Undocumented member.+--+-- 'serviceCollection', 'proactiveOrganizationInsightSummary_serviceCollection' - Undocumented member.+--+-- 'severity', 'proactiveOrganizationInsightSummary_severity' - An array of severity values used to search for insights. For more+-- information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+--+-- 'status', 'proactiveOrganizationInsightSummary_status' - An array of status values used to search for insights.+newProactiveOrganizationInsightSummary ::+  ProactiveOrganizationInsightSummary+newProactiveOrganizationInsightSummary =+  ProactiveOrganizationInsightSummary'+    { accountId =+        Prelude.Nothing,+      id = Prelude.Nothing,+      insightTimeRange = Prelude.Nothing,+      name = Prelude.Nothing,+      organizationalUnitId = Prelude.Nothing,+      predictionTimeRange = Prelude.Nothing,+      resourceCollection = Prelude.Nothing,+      serviceCollection = Prelude.Nothing,+      severity = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The ID of the Amazon Web Services account.+proactiveOrganizationInsightSummary_accountId :: Lens.Lens' ProactiveOrganizationInsightSummary (Prelude.Maybe Prelude.Text)+proactiveOrganizationInsightSummary_accountId = Lens.lens (\ProactiveOrganizationInsightSummary' {accountId} -> accountId) (\s@ProactiveOrganizationInsightSummary' {} a -> s {accountId = a} :: ProactiveOrganizationInsightSummary)++-- | The ID of the insight summary.+proactiveOrganizationInsightSummary_id :: Lens.Lens' ProactiveOrganizationInsightSummary (Prelude.Maybe Prelude.Text)+proactiveOrganizationInsightSummary_id = Lens.lens (\ProactiveOrganizationInsightSummary' {id} -> id) (\s@ProactiveOrganizationInsightSummary' {} a -> s {id = a} :: ProactiveOrganizationInsightSummary)++-- | Undocumented member.+proactiveOrganizationInsightSummary_insightTimeRange :: Lens.Lens' ProactiveOrganizationInsightSummary (Prelude.Maybe InsightTimeRange)+proactiveOrganizationInsightSummary_insightTimeRange = Lens.lens (\ProactiveOrganizationInsightSummary' {insightTimeRange} -> insightTimeRange) (\s@ProactiveOrganizationInsightSummary' {} a -> s {insightTimeRange = a} :: ProactiveOrganizationInsightSummary)++-- | The name of the insight summary.+proactiveOrganizationInsightSummary_name :: Lens.Lens' ProactiveOrganizationInsightSummary (Prelude.Maybe Prelude.Text)+proactiveOrganizationInsightSummary_name = Lens.lens (\ProactiveOrganizationInsightSummary' {name} -> name) (\s@ProactiveOrganizationInsightSummary' {} a -> s {name = a} :: ProactiveOrganizationInsightSummary)++-- | The ID of the organizational unit.+proactiveOrganizationInsightSummary_organizationalUnitId :: Lens.Lens' ProactiveOrganizationInsightSummary (Prelude.Maybe Prelude.Text)+proactiveOrganizationInsightSummary_organizationalUnitId = Lens.lens (\ProactiveOrganizationInsightSummary' {organizationalUnitId} -> organizationalUnitId) (\s@ProactiveOrganizationInsightSummary' {} a -> s {organizationalUnitId = a} :: ProactiveOrganizationInsightSummary)++-- | Undocumented member.+proactiveOrganizationInsightSummary_predictionTimeRange :: Lens.Lens' ProactiveOrganizationInsightSummary (Prelude.Maybe PredictionTimeRange)+proactiveOrganizationInsightSummary_predictionTimeRange = Lens.lens (\ProactiveOrganizationInsightSummary' {predictionTimeRange} -> predictionTimeRange) (\s@ProactiveOrganizationInsightSummary' {} a -> s {predictionTimeRange = a} :: ProactiveOrganizationInsightSummary)++-- | Undocumented member.+proactiveOrganizationInsightSummary_resourceCollection :: Lens.Lens' ProactiveOrganizationInsightSummary (Prelude.Maybe ResourceCollection)+proactiveOrganizationInsightSummary_resourceCollection = Lens.lens (\ProactiveOrganizationInsightSummary' {resourceCollection} -> resourceCollection) (\s@ProactiveOrganizationInsightSummary' {} a -> s {resourceCollection = a} :: ProactiveOrganizationInsightSummary)++-- | Undocumented member.+proactiveOrganizationInsightSummary_serviceCollection :: Lens.Lens' ProactiveOrganizationInsightSummary (Prelude.Maybe ServiceCollection)+proactiveOrganizationInsightSummary_serviceCollection = Lens.lens (\ProactiveOrganizationInsightSummary' {serviceCollection} -> serviceCollection) (\s@ProactiveOrganizationInsightSummary' {} a -> s {serviceCollection = a} :: ProactiveOrganizationInsightSummary)++-- | An array of severity values used to search for insights. For more+-- information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+proactiveOrganizationInsightSummary_severity :: Lens.Lens' ProactiveOrganizationInsightSummary (Prelude.Maybe InsightSeverity)+proactiveOrganizationInsightSummary_severity = Lens.lens (\ProactiveOrganizationInsightSummary' {severity} -> severity) (\s@ProactiveOrganizationInsightSummary' {} a -> s {severity = a} :: ProactiveOrganizationInsightSummary)++-- | An array of status values used to search for insights.+proactiveOrganizationInsightSummary_status :: Lens.Lens' ProactiveOrganizationInsightSummary (Prelude.Maybe InsightStatus)+proactiveOrganizationInsightSummary_status = Lens.lens (\ProactiveOrganizationInsightSummary' {status} -> status) (\s@ProactiveOrganizationInsightSummary' {} a -> s {status = a} :: ProactiveOrganizationInsightSummary)++instance+  Data.FromJSON+    ProactiveOrganizationInsightSummary+  where+  parseJSON =+    Data.withObject+      "ProactiveOrganizationInsightSummary"+      ( \x ->+          ProactiveOrganizationInsightSummary'+            Prelude.<$> (x Data..:? "AccountId")+            Prelude.<*> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "InsightTimeRange")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "OrganizationalUnitId")+            Prelude.<*> (x Data..:? "PredictionTimeRange")+            Prelude.<*> (x Data..:? "ResourceCollection")+            Prelude.<*> (x Data..:? "ServiceCollection")+            Prelude.<*> (x Data..:? "Severity")+            Prelude.<*> (x Data..:? "Status")+      )++instance+  Prelude.Hashable+    ProactiveOrganizationInsightSummary+  where+  hashWithSalt+    _salt+    ProactiveOrganizationInsightSummary' {..} =+      _salt+        `Prelude.hashWithSalt` accountId+        `Prelude.hashWithSalt` id+        `Prelude.hashWithSalt` insightTimeRange+        `Prelude.hashWithSalt` name+        `Prelude.hashWithSalt` organizationalUnitId+        `Prelude.hashWithSalt` predictionTimeRange+        `Prelude.hashWithSalt` resourceCollection+        `Prelude.hashWithSalt` serviceCollection+        `Prelude.hashWithSalt` severity+        `Prelude.hashWithSalt` status++instance+  Prelude.NFData+    ProactiveOrganizationInsightSummary+  where+  rnf ProactiveOrganizationInsightSummary' {..} =+    Prelude.rnf accountId+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf insightTimeRange+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf organizationalUnitId+      `Prelude.seq` Prelude.rnf predictionTimeRange+      `Prelude.seq` Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf serviceCollection+      `Prelude.seq` Prelude.rnf severity+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/DevOpsGuru/Types/ReactiveAnomaly.hs view
@@ -0,0 +1,266 @@+{-# 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.DevOpsGuru.Types.ReactiveAnomaly+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ReactiveAnomaly where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.AnomalyReportedTimeRange+import Amazonka.DevOpsGuru.Types.AnomalyResource+import Amazonka.DevOpsGuru.Types.AnomalySeverity+import Amazonka.DevOpsGuru.Types.AnomalySourceDetails+import Amazonka.DevOpsGuru.Types.AnomalyStatus+import Amazonka.DevOpsGuru.Types.AnomalyTimeRange+import Amazonka.DevOpsGuru.Types.AnomalyType+import Amazonka.DevOpsGuru.Types.ResourceCollection+import qualified Amazonka.Prelude as Prelude++-- | Details about a reactive anomaly. This object is returned by+-- @ListAnomalies@.+--+-- /See:/ 'newReactiveAnomaly' smart constructor.+data ReactiveAnomaly = ReactiveAnomaly'+  { -- | An @AnomalyReportedTimeRange@ object that specifies the time range+    -- between when the anomaly is opened and the time when it is closed.+    anomalyReportedTimeRange :: Prelude.Maybe AnomalyReportedTimeRange,+    -- | The Amazon Web Services resources in which anomalous behavior was+    -- detected by DevOps Guru.+    anomalyResources :: Prelude.Maybe [AnomalyResource],+    anomalyTimeRange :: Prelude.Maybe AnomalyTimeRange,+    -- | The ID of the insight that contains this anomaly. An insight is composed+    -- of related anomalies.+    associatedInsightId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the causal anomaly that is associated with this reactive+    -- anomaly. The ID of a \`CAUSAL\` anomaly is always \`NULL\`.+    causalAnomalyId :: Prelude.Maybe Prelude.Text,+    -- | A description of the reactive anomaly.+    description :: Prelude.Maybe Prelude.Text,+    -- | The ID of the reactive anomaly.+    id :: Prelude.Maybe Prelude.Text,+    -- | The name of the reactive anomaly.+    name :: Prelude.Maybe Prelude.Text,+    resourceCollection :: Prelude.Maybe ResourceCollection,+    -- | The severity of the anomaly. The severity of anomalies that generate an+    -- insight determine that insight\'s severity. For more information, see+    -- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+    -- in the /Amazon DevOps Guru User Guide/.+    severity :: Prelude.Maybe AnomalySeverity,+    -- | Details about the source of the analyzed operational data that triggered+    -- the anomaly. The one supported source is Amazon CloudWatch metrics.+    sourceDetails :: Prelude.Maybe AnomalySourceDetails,+    -- | The status of the anomaly.+    status :: Prelude.Maybe AnomalyStatus,+    -- | The type of the reactive anomaly. It can be one of the following types.+    --+    -- -   @CAUSAL@ - the anomaly can cause a new insight.+    --+    -- -   @CONTEXTUAL@ - the anomaly contains additional information about an+    --     insight or its causal anomaly.+    type' :: Prelude.Maybe AnomalyType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReactiveAnomaly' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'anomalyReportedTimeRange', 'reactiveAnomaly_anomalyReportedTimeRange' - An @AnomalyReportedTimeRange@ object that specifies the time range+-- between when the anomaly is opened and the time when it is closed.+--+-- 'anomalyResources', 'reactiveAnomaly_anomalyResources' - The Amazon Web Services resources in which anomalous behavior was+-- detected by DevOps Guru.+--+-- 'anomalyTimeRange', 'reactiveAnomaly_anomalyTimeRange' - Undocumented member.+--+-- 'associatedInsightId', 'reactiveAnomaly_associatedInsightId' - The ID of the insight that contains this anomaly. An insight is composed+-- of related anomalies.+--+-- 'causalAnomalyId', 'reactiveAnomaly_causalAnomalyId' - The ID of the causal anomaly that is associated with this reactive+-- anomaly. The ID of a \`CAUSAL\` anomaly is always \`NULL\`.+--+-- 'description', 'reactiveAnomaly_description' - A description of the reactive anomaly.+--+-- 'id', 'reactiveAnomaly_id' - The ID of the reactive anomaly.+--+-- 'name', 'reactiveAnomaly_name' - The name of the reactive anomaly.+--+-- 'resourceCollection', 'reactiveAnomaly_resourceCollection' - Undocumented member.+--+-- 'severity', 'reactiveAnomaly_severity' - The severity of the anomaly. The severity of anomalies that generate an+-- insight determine that insight\'s severity. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+--+-- 'sourceDetails', 'reactiveAnomaly_sourceDetails' - Details about the source of the analyzed operational data that triggered+-- the anomaly. The one supported source is Amazon CloudWatch metrics.+--+-- 'status', 'reactiveAnomaly_status' - The status of the anomaly.+--+-- 'type'', 'reactiveAnomaly_type' - The type of the reactive anomaly. It can be one of the following types.+--+-- -   @CAUSAL@ - the anomaly can cause a new insight.+--+-- -   @CONTEXTUAL@ - the anomaly contains additional information about an+--     insight or its causal anomaly.+newReactiveAnomaly ::+  ReactiveAnomaly+newReactiveAnomaly =+  ReactiveAnomaly'+    { anomalyReportedTimeRange =+        Prelude.Nothing,+      anomalyResources = Prelude.Nothing,+      anomalyTimeRange = Prelude.Nothing,+      associatedInsightId = Prelude.Nothing,+      causalAnomalyId = Prelude.Nothing,+      description = Prelude.Nothing,+      id = Prelude.Nothing,+      name = Prelude.Nothing,+      resourceCollection = Prelude.Nothing,+      severity = Prelude.Nothing,+      sourceDetails = Prelude.Nothing,+      status = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | An @AnomalyReportedTimeRange@ object that specifies the time range+-- between when the anomaly is opened and the time when it is closed.+reactiveAnomaly_anomalyReportedTimeRange :: Lens.Lens' ReactiveAnomaly (Prelude.Maybe AnomalyReportedTimeRange)+reactiveAnomaly_anomalyReportedTimeRange = Lens.lens (\ReactiveAnomaly' {anomalyReportedTimeRange} -> anomalyReportedTimeRange) (\s@ReactiveAnomaly' {} a -> s {anomalyReportedTimeRange = a} :: ReactiveAnomaly)++-- | The Amazon Web Services resources in which anomalous behavior was+-- detected by DevOps Guru.+reactiveAnomaly_anomalyResources :: Lens.Lens' ReactiveAnomaly (Prelude.Maybe [AnomalyResource])+reactiveAnomaly_anomalyResources = Lens.lens (\ReactiveAnomaly' {anomalyResources} -> anomalyResources) (\s@ReactiveAnomaly' {} a -> s {anomalyResources = a} :: ReactiveAnomaly) Prelude.. Lens.mapping Lens.coerced++-- | Undocumented member.+reactiveAnomaly_anomalyTimeRange :: Lens.Lens' ReactiveAnomaly (Prelude.Maybe AnomalyTimeRange)+reactiveAnomaly_anomalyTimeRange = Lens.lens (\ReactiveAnomaly' {anomalyTimeRange} -> anomalyTimeRange) (\s@ReactiveAnomaly' {} a -> s {anomalyTimeRange = a} :: ReactiveAnomaly)++-- | The ID of the insight that contains this anomaly. An insight is composed+-- of related anomalies.+reactiveAnomaly_associatedInsightId :: Lens.Lens' ReactiveAnomaly (Prelude.Maybe Prelude.Text)+reactiveAnomaly_associatedInsightId = Lens.lens (\ReactiveAnomaly' {associatedInsightId} -> associatedInsightId) (\s@ReactiveAnomaly' {} a -> s {associatedInsightId = a} :: ReactiveAnomaly)++-- | The ID of the causal anomaly that is associated with this reactive+-- anomaly. The ID of a \`CAUSAL\` anomaly is always \`NULL\`.+reactiveAnomaly_causalAnomalyId :: Lens.Lens' ReactiveAnomaly (Prelude.Maybe Prelude.Text)+reactiveAnomaly_causalAnomalyId = Lens.lens (\ReactiveAnomaly' {causalAnomalyId} -> causalAnomalyId) (\s@ReactiveAnomaly' {} a -> s {causalAnomalyId = a} :: ReactiveAnomaly)++-- | A description of the reactive anomaly.+reactiveAnomaly_description :: Lens.Lens' ReactiveAnomaly (Prelude.Maybe Prelude.Text)+reactiveAnomaly_description = Lens.lens (\ReactiveAnomaly' {description} -> description) (\s@ReactiveAnomaly' {} a -> s {description = a} :: ReactiveAnomaly)++-- | The ID of the reactive anomaly.+reactiveAnomaly_id :: Lens.Lens' ReactiveAnomaly (Prelude.Maybe Prelude.Text)+reactiveAnomaly_id = Lens.lens (\ReactiveAnomaly' {id} -> id) (\s@ReactiveAnomaly' {} a -> s {id = a} :: ReactiveAnomaly)++-- | The name of the reactive anomaly.+reactiveAnomaly_name :: Lens.Lens' ReactiveAnomaly (Prelude.Maybe Prelude.Text)+reactiveAnomaly_name = Lens.lens (\ReactiveAnomaly' {name} -> name) (\s@ReactiveAnomaly' {} a -> s {name = a} :: ReactiveAnomaly)++-- | Undocumented member.+reactiveAnomaly_resourceCollection :: Lens.Lens' ReactiveAnomaly (Prelude.Maybe ResourceCollection)+reactiveAnomaly_resourceCollection = Lens.lens (\ReactiveAnomaly' {resourceCollection} -> resourceCollection) (\s@ReactiveAnomaly' {} a -> s {resourceCollection = a} :: ReactiveAnomaly)++-- | The severity of the anomaly. The severity of anomalies that generate an+-- insight determine that insight\'s severity. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+reactiveAnomaly_severity :: Lens.Lens' ReactiveAnomaly (Prelude.Maybe AnomalySeverity)+reactiveAnomaly_severity = Lens.lens (\ReactiveAnomaly' {severity} -> severity) (\s@ReactiveAnomaly' {} a -> s {severity = a} :: ReactiveAnomaly)++-- | Details about the source of the analyzed operational data that triggered+-- the anomaly. The one supported source is Amazon CloudWatch metrics.+reactiveAnomaly_sourceDetails :: Lens.Lens' ReactiveAnomaly (Prelude.Maybe AnomalySourceDetails)+reactiveAnomaly_sourceDetails = Lens.lens (\ReactiveAnomaly' {sourceDetails} -> sourceDetails) (\s@ReactiveAnomaly' {} a -> s {sourceDetails = a} :: ReactiveAnomaly)++-- | The status of the anomaly.+reactiveAnomaly_status :: Lens.Lens' ReactiveAnomaly (Prelude.Maybe AnomalyStatus)+reactiveAnomaly_status = Lens.lens (\ReactiveAnomaly' {status} -> status) (\s@ReactiveAnomaly' {} a -> s {status = a} :: ReactiveAnomaly)++-- | The type of the reactive anomaly. It can be one of the following types.+--+-- -   @CAUSAL@ - the anomaly can cause a new insight.+--+-- -   @CONTEXTUAL@ - the anomaly contains additional information about an+--     insight or its causal anomaly.+reactiveAnomaly_type :: Lens.Lens' ReactiveAnomaly (Prelude.Maybe AnomalyType)+reactiveAnomaly_type = Lens.lens (\ReactiveAnomaly' {type'} -> type') (\s@ReactiveAnomaly' {} a -> s {type' = a} :: ReactiveAnomaly)++instance Data.FromJSON ReactiveAnomaly where+  parseJSON =+    Data.withObject+      "ReactiveAnomaly"+      ( \x ->+          ReactiveAnomaly'+            Prelude.<$> (x Data..:? "AnomalyReportedTimeRange")+            Prelude.<*> ( x+                            Data..:? "AnomalyResources"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "AnomalyTimeRange")+            Prelude.<*> (x Data..:? "AssociatedInsightId")+            Prelude.<*> (x Data..:? "CausalAnomalyId")+            Prelude.<*> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "ResourceCollection")+            Prelude.<*> (x Data..:? "Severity")+            Prelude.<*> (x Data..:? "SourceDetails")+            Prelude.<*> (x Data..:? "Status")+            Prelude.<*> (x Data..:? "Type")+      )++instance Prelude.Hashable ReactiveAnomaly where+  hashWithSalt _salt ReactiveAnomaly' {..} =+    _salt+      `Prelude.hashWithSalt` anomalyReportedTimeRange+      `Prelude.hashWithSalt` anomalyResources+      `Prelude.hashWithSalt` anomalyTimeRange+      `Prelude.hashWithSalt` associatedInsightId+      `Prelude.hashWithSalt` causalAnomalyId+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` resourceCollection+      `Prelude.hashWithSalt` severity+      `Prelude.hashWithSalt` sourceDetails+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` type'++instance Prelude.NFData ReactiveAnomaly where+  rnf ReactiveAnomaly' {..} =+    Prelude.rnf anomalyReportedTimeRange+      `Prelude.seq` Prelude.rnf anomalyResources+      `Prelude.seq` Prelude.rnf anomalyTimeRange+      `Prelude.seq` Prelude.rnf associatedInsightId+      `Prelude.seq` Prelude.rnf causalAnomalyId+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf severity+      `Prelude.seq` Prelude.rnf sourceDetails+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/DevOpsGuru/Types/ReactiveAnomalySummary.hs view
@@ -0,0 +1,266 @@+{-# 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.DevOpsGuru.Types.ReactiveAnomalySummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ReactiveAnomalySummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.AnomalyReportedTimeRange+import Amazonka.DevOpsGuru.Types.AnomalyResource+import Amazonka.DevOpsGuru.Types.AnomalySeverity+import Amazonka.DevOpsGuru.Types.AnomalySourceDetails+import Amazonka.DevOpsGuru.Types.AnomalyStatus+import Amazonka.DevOpsGuru.Types.AnomalyTimeRange+import Amazonka.DevOpsGuru.Types.AnomalyType+import Amazonka.DevOpsGuru.Types.ResourceCollection+import qualified Amazonka.Prelude as Prelude++-- | Details about a reactive anomaly. This object is returned by+-- @DescribeAnomaly.@+--+-- /See:/ 'newReactiveAnomalySummary' smart constructor.+data ReactiveAnomalySummary = ReactiveAnomalySummary'+  { -- | An @AnomalyReportedTimeRange@ object that specifies the time range+    -- between when the anomaly is opened and the time when it is closed.+    anomalyReportedTimeRange :: Prelude.Maybe AnomalyReportedTimeRange,+    -- | The Amazon Web Services resources in which anomalous behavior was+    -- detected by DevOps Guru.+    anomalyResources :: Prelude.Maybe [AnomalyResource],+    anomalyTimeRange :: Prelude.Maybe AnomalyTimeRange,+    -- | The ID of the insight that contains this anomaly. An insight is composed+    -- of related anomalies.+    associatedInsightId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the causal anomaly that is associated with this reactive+    -- anomaly. The ID of a \`CAUSAL\` anomaly is always \`NULL\`.+    causalAnomalyId :: Prelude.Maybe Prelude.Text,+    -- | A description of the reactive anomaly.+    description :: Prelude.Maybe Prelude.Text,+    -- | The ID of the reactive anomaly.+    id :: Prelude.Maybe Prelude.Text,+    -- | The name of the reactive anomaly.+    name :: Prelude.Maybe Prelude.Text,+    resourceCollection :: Prelude.Maybe ResourceCollection,+    -- | The severity of the anomaly. The severity of anomalies that generate an+    -- insight determine that insight\'s severity. For more information, see+    -- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+    -- in the /Amazon DevOps Guru User Guide/.+    severity :: Prelude.Maybe AnomalySeverity,+    -- | Details about the source of the analyzed operational data that triggered+    -- the anomaly. The one supported source is Amazon CloudWatch metrics.+    sourceDetails :: Prelude.Maybe AnomalySourceDetails,+    -- | The status of the reactive anomaly.+    status :: Prelude.Maybe AnomalyStatus,+    -- | The type of the reactive anomaly. It can be one of the following types.+    --+    -- -   @CAUSAL@ - the anomaly can cause a new insight.+    --+    -- -   @CONTEXTUAL@ - the anomaly contains additional information about an+    --     insight or its causal anomaly.+    type' :: Prelude.Maybe AnomalyType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReactiveAnomalySummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'anomalyReportedTimeRange', 'reactiveAnomalySummary_anomalyReportedTimeRange' - An @AnomalyReportedTimeRange@ object that specifies the time range+-- between when the anomaly is opened and the time when it is closed.+--+-- 'anomalyResources', 'reactiveAnomalySummary_anomalyResources' - The Amazon Web Services resources in which anomalous behavior was+-- detected by DevOps Guru.+--+-- 'anomalyTimeRange', 'reactiveAnomalySummary_anomalyTimeRange' - Undocumented member.+--+-- 'associatedInsightId', 'reactiveAnomalySummary_associatedInsightId' - The ID of the insight that contains this anomaly. An insight is composed+-- of related anomalies.+--+-- 'causalAnomalyId', 'reactiveAnomalySummary_causalAnomalyId' - The ID of the causal anomaly that is associated with this reactive+-- anomaly. The ID of a \`CAUSAL\` anomaly is always \`NULL\`.+--+-- 'description', 'reactiveAnomalySummary_description' - A description of the reactive anomaly.+--+-- 'id', 'reactiveAnomalySummary_id' - The ID of the reactive anomaly.+--+-- 'name', 'reactiveAnomalySummary_name' - The name of the reactive anomaly.+--+-- 'resourceCollection', 'reactiveAnomalySummary_resourceCollection' - Undocumented member.+--+-- 'severity', 'reactiveAnomalySummary_severity' - The severity of the anomaly. The severity of anomalies that generate an+-- insight determine that insight\'s severity. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+--+-- 'sourceDetails', 'reactiveAnomalySummary_sourceDetails' - Details about the source of the analyzed operational data that triggered+-- the anomaly. The one supported source is Amazon CloudWatch metrics.+--+-- 'status', 'reactiveAnomalySummary_status' - The status of the reactive anomaly.+--+-- 'type'', 'reactiveAnomalySummary_type' - The type of the reactive anomaly. It can be one of the following types.+--+-- -   @CAUSAL@ - the anomaly can cause a new insight.+--+-- -   @CONTEXTUAL@ - the anomaly contains additional information about an+--     insight or its causal anomaly.+newReactiveAnomalySummary ::+  ReactiveAnomalySummary+newReactiveAnomalySummary =+  ReactiveAnomalySummary'+    { anomalyReportedTimeRange =+        Prelude.Nothing,+      anomalyResources = Prelude.Nothing,+      anomalyTimeRange = Prelude.Nothing,+      associatedInsightId = Prelude.Nothing,+      causalAnomalyId = Prelude.Nothing,+      description = Prelude.Nothing,+      id = Prelude.Nothing,+      name = Prelude.Nothing,+      resourceCollection = Prelude.Nothing,+      severity = Prelude.Nothing,+      sourceDetails = Prelude.Nothing,+      status = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | An @AnomalyReportedTimeRange@ object that specifies the time range+-- between when the anomaly is opened and the time when it is closed.+reactiveAnomalySummary_anomalyReportedTimeRange :: Lens.Lens' ReactiveAnomalySummary (Prelude.Maybe AnomalyReportedTimeRange)+reactiveAnomalySummary_anomalyReportedTimeRange = Lens.lens (\ReactiveAnomalySummary' {anomalyReportedTimeRange} -> anomalyReportedTimeRange) (\s@ReactiveAnomalySummary' {} a -> s {anomalyReportedTimeRange = a} :: ReactiveAnomalySummary)++-- | The Amazon Web Services resources in which anomalous behavior was+-- detected by DevOps Guru.+reactiveAnomalySummary_anomalyResources :: Lens.Lens' ReactiveAnomalySummary (Prelude.Maybe [AnomalyResource])+reactiveAnomalySummary_anomalyResources = Lens.lens (\ReactiveAnomalySummary' {anomalyResources} -> anomalyResources) (\s@ReactiveAnomalySummary' {} a -> s {anomalyResources = a} :: ReactiveAnomalySummary) Prelude.. Lens.mapping Lens.coerced++-- | Undocumented member.+reactiveAnomalySummary_anomalyTimeRange :: Lens.Lens' ReactiveAnomalySummary (Prelude.Maybe AnomalyTimeRange)+reactiveAnomalySummary_anomalyTimeRange = Lens.lens (\ReactiveAnomalySummary' {anomalyTimeRange} -> anomalyTimeRange) (\s@ReactiveAnomalySummary' {} a -> s {anomalyTimeRange = a} :: ReactiveAnomalySummary)++-- | The ID of the insight that contains this anomaly. An insight is composed+-- of related anomalies.+reactiveAnomalySummary_associatedInsightId :: Lens.Lens' ReactiveAnomalySummary (Prelude.Maybe Prelude.Text)+reactiveAnomalySummary_associatedInsightId = Lens.lens (\ReactiveAnomalySummary' {associatedInsightId} -> associatedInsightId) (\s@ReactiveAnomalySummary' {} a -> s {associatedInsightId = a} :: ReactiveAnomalySummary)++-- | The ID of the causal anomaly that is associated with this reactive+-- anomaly. The ID of a \`CAUSAL\` anomaly is always \`NULL\`.+reactiveAnomalySummary_causalAnomalyId :: Lens.Lens' ReactiveAnomalySummary (Prelude.Maybe Prelude.Text)+reactiveAnomalySummary_causalAnomalyId = Lens.lens (\ReactiveAnomalySummary' {causalAnomalyId} -> causalAnomalyId) (\s@ReactiveAnomalySummary' {} a -> s {causalAnomalyId = a} :: ReactiveAnomalySummary)++-- | A description of the reactive anomaly.+reactiveAnomalySummary_description :: Lens.Lens' ReactiveAnomalySummary (Prelude.Maybe Prelude.Text)+reactiveAnomalySummary_description = Lens.lens (\ReactiveAnomalySummary' {description} -> description) (\s@ReactiveAnomalySummary' {} a -> s {description = a} :: ReactiveAnomalySummary)++-- | The ID of the reactive anomaly.+reactiveAnomalySummary_id :: Lens.Lens' ReactiveAnomalySummary (Prelude.Maybe Prelude.Text)+reactiveAnomalySummary_id = Lens.lens (\ReactiveAnomalySummary' {id} -> id) (\s@ReactiveAnomalySummary' {} a -> s {id = a} :: ReactiveAnomalySummary)++-- | The name of the reactive anomaly.+reactiveAnomalySummary_name :: Lens.Lens' ReactiveAnomalySummary (Prelude.Maybe Prelude.Text)+reactiveAnomalySummary_name = Lens.lens (\ReactiveAnomalySummary' {name} -> name) (\s@ReactiveAnomalySummary' {} a -> s {name = a} :: ReactiveAnomalySummary)++-- | Undocumented member.+reactiveAnomalySummary_resourceCollection :: Lens.Lens' ReactiveAnomalySummary (Prelude.Maybe ResourceCollection)+reactiveAnomalySummary_resourceCollection = Lens.lens (\ReactiveAnomalySummary' {resourceCollection} -> resourceCollection) (\s@ReactiveAnomalySummary' {} a -> s {resourceCollection = a} :: ReactiveAnomalySummary)++-- | The severity of the anomaly. The severity of anomalies that generate an+-- insight determine that insight\'s severity. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+reactiveAnomalySummary_severity :: Lens.Lens' ReactiveAnomalySummary (Prelude.Maybe AnomalySeverity)+reactiveAnomalySummary_severity = Lens.lens (\ReactiveAnomalySummary' {severity} -> severity) (\s@ReactiveAnomalySummary' {} a -> s {severity = a} :: ReactiveAnomalySummary)++-- | Details about the source of the analyzed operational data that triggered+-- the anomaly. The one supported source is Amazon CloudWatch metrics.+reactiveAnomalySummary_sourceDetails :: Lens.Lens' ReactiveAnomalySummary (Prelude.Maybe AnomalySourceDetails)+reactiveAnomalySummary_sourceDetails = Lens.lens (\ReactiveAnomalySummary' {sourceDetails} -> sourceDetails) (\s@ReactiveAnomalySummary' {} a -> s {sourceDetails = a} :: ReactiveAnomalySummary)++-- | The status of the reactive anomaly.+reactiveAnomalySummary_status :: Lens.Lens' ReactiveAnomalySummary (Prelude.Maybe AnomalyStatus)+reactiveAnomalySummary_status = Lens.lens (\ReactiveAnomalySummary' {status} -> status) (\s@ReactiveAnomalySummary' {} a -> s {status = a} :: ReactiveAnomalySummary)++-- | The type of the reactive anomaly. It can be one of the following types.+--+-- -   @CAUSAL@ - the anomaly can cause a new insight.+--+-- -   @CONTEXTUAL@ - the anomaly contains additional information about an+--     insight or its causal anomaly.+reactiveAnomalySummary_type :: Lens.Lens' ReactiveAnomalySummary (Prelude.Maybe AnomalyType)+reactiveAnomalySummary_type = Lens.lens (\ReactiveAnomalySummary' {type'} -> type') (\s@ReactiveAnomalySummary' {} a -> s {type' = a} :: ReactiveAnomalySummary)++instance Data.FromJSON ReactiveAnomalySummary where+  parseJSON =+    Data.withObject+      "ReactiveAnomalySummary"+      ( \x ->+          ReactiveAnomalySummary'+            Prelude.<$> (x Data..:? "AnomalyReportedTimeRange")+            Prelude.<*> ( x+                            Data..:? "AnomalyResources"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "AnomalyTimeRange")+            Prelude.<*> (x Data..:? "AssociatedInsightId")+            Prelude.<*> (x Data..:? "CausalAnomalyId")+            Prelude.<*> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "ResourceCollection")+            Prelude.<*> (x Data..:? "Severity")+            Prelude.<*> (x Data..:? "SourceDetails")+            Prelude.<*> (x Data..:? "Status")+            Prelude.<*> (x Data..:? "Type")+      )++instance Prelude.Hashable ReactiveAnomalySummary where+  hashWithSalt _salt ReactiveAnomalySummary' {..} =+    _salt+      `Prelude.hashWithSalt` anomalyReportedTimeRange+      `Prelude.hashWithSalt` anomalyResources+      `Prelude.hashWithSalt` anomalyTimeRange+      `Prelude.hashWithSalt` associatedInsightId+      `Prelude.hashWithSalt` causalAnomalyId+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` resourceCollection+      `Prelude.hashWithSalt` severity+      `Prelude.hashWithSalt` sourceDetails+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` type'++instance Prelude.NFData ReactiveAnomalySummary where+  rnf ReactiveAnomalySummary' {..} =+    Prelude.rnf anomalyReportedTimeRange+      `Prelude.seq` Prelude.rnf anomalyResources+      `Prelude.seq` Prelude.rnf anomalyTimeRange+      `Prelude.seq` Prelude.rnf associatedInsightId+      `Prelude.seq` Prelude.rnf causalAnomalyId+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf severity+      `Prelude.seq` Prelude.rnf sourceDetails+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/DevOpsGuru/Types/ReactiveInsight.hs view
@@ -0,0 +1,171 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.ReactiveInsight+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ReactiveInsight where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.InsightSeverity+import Amazonka.DevOpsGuru.Types.InsightStatus+import Amazonka.DevOpsGuru.Types.InsightTimeRange+import Amazonka.DevOpsGuru.Types.ResourceCollection+import qualified Amazonka.Prelude as Prelude++-- | Information about a reactive insight. This object is returned by+-- @ListInsights@.+--+-- /See:/ 'newReactiveInsight' smart constructor.+data ReactiveInsight = ReactiveInsight'+  { -- | Describes the reactive insight.+    description :: Prelude.Maybe Prelude.Text,+    -- | The ID of a reactive insight.+    id :: Prelude.Maybe Prelude.Text,+    insightTimeRange :: Prelude.Maybe InsightTimeRange,+    -- | The name of a reactive insight.+    name :: Prelude.Maybe Prelude.Text,+    resourceCollection :: Prelude.Maybe ResourceCollection,+    -- | The severity of the insight. For more information, see+    -- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+    -- in the /Amazon DevOps Guru User Guide/.+    severity :: Prelude.Maybe InsightSeverity,+    -- | The ID of the Amazon Web Services System Manager OpsItem created for+    -- this insight. You must enable the creation of OpstItems insights before+    -- they are created for each insight.+    ssmOpsItemId :: Prelude.Maybe Prelude.Text,+    -- | The status of a reactive insight.+    status :: Prelude.Maybe InsightStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReactiveInsight' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'reactiveInsight_description' - Describes the reactive insight.+--+-- 'id', 'reactiveInsight_id' - The ID of a reactive insight.+--+-- 'insightTimeRange', 'reactiveInsight_insightTimeRange' - Undocumented member.+--+-- 'name', 'reactiveInsight_name' - The name of a reactive insight.+--+-- 'resourceCollection', 'reactiveInsight_resourceCollection' - Undocumented member.+--+-- 'severity', 'reactiveInsight_severity' - The severity of the insight. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+--+-- 'ssmOpsItemId', 'reactiveInsight_ssmOpsItemId' - The ID of the Amazon Web Services System Manager OpsItem created for+-- this insight. You must enable the creation of OpstItems insights before+-- they are created for each insight.+--+-- 'status', 'reactiveInsight_status' - The status of a reactive insight.+newReactiveInsight ::+  ReactiveInsight+newReactiveInsight =+  ReactiveInsight'+    { description = Prelude.Nothing,+      id = Prelude.Nothing,+      insightTimeRange = Prelude.Nothing,+      name = Prelude.Nothing,+      resourceCollection = Prelude.Nothing,+      severity = Prelude.Nothing,+      ssmOpsItemId = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | Describes the reactive insight.+reactiveInsight_description :: Lens.Lens' ReactiveInsight (Prelude.Maybe Prelude.Text)+reactiveInsight_description = Lens.lens (\ReactiveInsight' {description} -> description) (\s@ReactiveInsight' {} a -> s {description = a} :: ReactiveInsight)++-- | The ID of a reactive insight.+reactiveInsight_id :: Lens.Lens' ReactiveInsight (Prelude.Maybe Prelude.Text)+reactiveInsight_id = Lens.lens (\ReactiveInsight' {id} -> id) (\s@ReactiveInsight' {} a -> s {id = a} :: ReactiveInsight)++-- | Undocumented member.+reactiveInsight_insightTimeRange :: Lens.Lens' ReactiveInsight (Prelude.Maybe InsightTimeRange)+reactiveInsight_insightTimeRange = Lens.lens (\ReactiveInsight' {insightTimeRange} -> insightTimeRange) (\s@ReactiveInsight' {} a -> s {insightTimeRange = a} :: ReactiveInsight)++-- | The name of a reactive insight.+reactiveInsight_name :: Lens.Lens' ReactiveInsight (Prelude.Maybe Prelude.Text)+reactiveInsight_name = Lens.lens (\ReactiveInsight' {name} -> name) (\s@ReactiveInsight' {} a -> s {name = a} :: ReactiveInsight)++-- | Undocumented member.+reactiveInsight_resourceCollection :: Lens.Lens' ReactiveInsight (Prelude.Maybe ResourceCollection)+reactiveInsight_resourceCollection = Lens.lens (\ReactiveInsight' {resourceCollection} -> resourceCollection) (\s@ReactiveInsight' {} a -> s {resourceCollection = a} :: ReactiveInsight)++-- | The severity of the insight. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+reactiveInsight_severity :: Lens.Lens' ReactiveInsight (Prelude.Maybe InsightSeverity)+reactiveInsight_severity = Lens.lens (\ReactiveInsight' {severity} -> severity) (\s@ReactiveInsight' {} a -> s {severity = a} :: ReactiveInsight)++-- | The ID of the Amazon Web Services System Manager OpsItem created for+-- this insight. You must enable the creation of OpstItems insights before+-- they are created for each insight.+reactiveInsight_ssmOpsItemId :: Lens.Lens' ReactiveInsight (Prelude.Maybe Prelude.Text)+reactiveInsight_ssmOpsItemId = Lens.lens (\ReactiveInsight' {ssmOpsItemId} -> ssmOpsItemId) (\s@ReactiveInsight' {} a -> s {ssmOpsItemId = a} :: ReactiveInsight)++-- | The status of a reactive insight.+reactiveInsight_status :: Lens.Lens' ReactiveInsight (Prelude.Maybe InsightStatus)+reactiveInsight_status = Lens.lens (\ReactiveInsight' {status} -> status) (\s@ReactiveInsight' {} a -> s {status = a} :: ReactiveInsight)++instance Data.FromJSON ReactiveInsight where+  parseJSON =+    Data.withObject+      "ReactiveInsight"+      ( \x ->+          ReactiveInsight'+            Prelude.<$> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "InsightTimeRange")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "ResourceCollection")+            Prelude.<*> (x Data..:? "Severity")+            Prelude.<*> (x Data..:? "SsmOpsItemId")+            Prelude.<*> (x Data..:? "Status")+      )++instance Prelude.Hashable ReactiveInsight where+  hashWithSalt _salt ReactiveInsight' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` insightTimeRange+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` resourceCollection+      `Prelude.hashWithSalt` severity+      `Prelude.hashWithSalt` ssmOpsItemId+      `Prelude.hashWithSalt` status++instance Prelude.NFData ReactiveInsight where+  rnf ReactiveInsight' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf insightTimeRange+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf severity+      `Prelude.seq` Prelude.rnf ssmOpsItemId+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/DevOpsGuru/Types/ReactiveInsightSummary.hs view
@@ -0,0 +1,173 @@+{-# 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.DevOpsGuru.Types.ReactiveInsightSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ReactiveInsightSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.InsightSeverity+import Amazonka.DevOpsGuru.Types.InsightStatus+import Amazonka.DevOpsGuru.Types.InsightTimeRange+import Amazonka.DevOpsGuru.Types.ResourceCollection+import Amazonka.DevOpsGuru.Types.ServiceCollection+import qualified Amazonka.Prelude as Prelude++-- | Information about a reactive insight. This object is returned by+-- @DescribeInsight.@+--+-- /See:/ 'newReactiveInsightSummary' smart constructor.+data ReactiveInsightSummary = ReactiveInsightSummary'+  { -- | The Amazon Resource Names (ARNs) of the Amazon Web Services resources+    -- that generated this insight.+    associatedResourceArns :: Prelude.Maybe [Prelude.Text],+    -- | The ID of a reactive summary.+    id :: Prelude.Maybe Prelude.Text,+    insightTimeRange :: Prelude.Maybe InsightTimeRange,+    -- | The name of a reactive insight.+    name :: Prelude.Maybe Prelude.Text,+    resourceCollection :: Prelude.Maybe ResourceCollection,+    -- | A collection of the names of Amazon Web Services services.+    serviceCollection :: Prelude.Maybe ServiceCollection,+    -- | The severity of the insight. For more information, see+    -- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+    -- in the /Amazon DevOps Guru User Guide/.+    severity :: Prelude.Maybe InsightSeverity,+    -- | The status of a reactive insight.+    status :: Prelude.Maybe InsightStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReactiveInsightSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'associatedResourceArns', 'reactiveInsightSummary_associatedResourceArns' - The Amazon Resource Names (ARNs) of the Amazon Web Services resources+-- that generated this insight.+--+-- 'id', 'reactiveInsightSummary_id' - The ID of a reactive summary.+--+-- 'insightTimeRange', 'reactiveInsightSummary_insightTimeRange' - Undocumented member.+--+-- 'name', 'reactiveInsightSummary_name' - The name of a reactive insight.+--+-- 'resourceCollection', 'reactiveInsightSummary_resourceCollection' - Undocumented member.+--+-- 'serviceCollection', 'reactiveInsightSummary_serviceCollection' - A collection of the names of Amazon Web Services services.+--+-- 'severity', 'reactiveInsightSummary_severity' - The severity of the insight. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+--+-- 'status', 'reactiveInsightSummary_status' - The status of a reactive insight.+newReactiveInsightSummary ::+  ReactiveInsightSummary+newReactiveInsightSummary =+  ReactiveInsightSummary'+    { associatedResourceArns =+        Prelude.Nothing,+      id = Prelude.Nothing,+      insightTimeRange = Prelude.Nothing,+      name = Prelude.Nothing,+      resourceCollection = Prelude.Nothing,+      serviceCollection = Prelude.Nothing,+      severity = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The Amazon Resource Names (ARNs) of the Amazon Web Services resources+-- that generated this insight.+reactiveInsightSummary_associatedResourceArns :: Lens.Lens' ReactiveInsightSummary (Prelude.Maybe [Prelude.Text])+reactiveInsightSummary_associatedResourceArns = Lens.lens (\ReactiveInsightSummary' {associatedResourceArns} -> associatedResourceArns) (\s@ReactiveInsightSummary' {} a -> s {associatedResourceArns = a} :: ReactiveInsightSummary) Prelude.. Lens.mapping Lens.coerced++-- | The ID of a reactive summary.+reactiveInsightSummary_id :: Lens.Lens' ReactiveInsightSummary (Prelude.Maybe Prelude.Text)+reactiveInsightSummary_id = Lens.lens (\ReactiveInsightSummary' {id} -> id) (\s@ReactiveInsightSummary' {} a -> s {id = a} :: ReactiveInsightSummary)++-- | Undocumented member.+reactiveInsightSummary_insightTimeRange :: Lens.Lens' ReactiveInsightSummary (Prelude.Maybe InsightTimeRange)+reactiveInsightSummary_insightTimeRange = Lens.lens (\ReactiveInsightSummary' {insightTimeRange} -> insightTimeRange) (\s@ReactiveInsightSummary' {} a -> s {insightTimeRange = a} :: ReactiveInsightSummary)++-- | The name of a reactive insight.+reactiveInsightSummary_name :: Lens.Lens' ReactiveInsightSummary (Prelude.Maybe Prelude.Text)+reactiveInsightSummary_name = Lens.lens (\ReactiveInsightSummary' {name} -> name) (\s@ReactiveInsightSummary' {} a -> s {name = a} :: ReactiveInsightSummary)++-- | Undocumented member.+reactiveInsightSummary_resourceCollection :: Lens.Lens' ReactiveInsightSummary (Prelude.Maybe ResourceCollection)+reactiveInsightSummary_resourceCollection = Lens.lens (\ReactiveInsightSummary' {resourceCollection} -> resourceCollection) (\s@ReactiveInsightSummary' {} a -> s {resourceCollection = a} :: ReactiveInsightSummary)++-- | A collection of the names of Amazon Web Services services.+reactiveInsightSummary_serviceCollection :: Lens.Lens' ReactiveInsightSummary (Prelude.Maybe ServiceCollection)+reactiveInsightSummary_serviceCollection = Lens.lens (\ReactiveInsightSummary' {serviceCollection} -> serviceCollection) (\s@ReactiveInsightSummary' {} a -> s {serviceCollection = a} :: ReactiveInsightSummary)++-- | The severity of the insight. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+reactiveInsightSummary_severity :: Lens.Lens' ReactiveInsightSummary (Prelude.Maybe InsightSeverity)+reactiveInsightSummary_severity = Lens.lens (\ReactiveInsightSummary' {severity} -> severity) (\s@ReactiveInsightSummary' {} a -> s {severity = a} :: ReactiveInsightSummary)++-- | The status of a reactive insight.+reactiveInsightSummary_status :: Lens.Lens' ReactiveInsightSummary (Prelude.Maybe InsightStatus)+reactiveInsightSummary_status = Lens.lens (\ReactiveInsightSummary' {status} -> status) (\s@ReactiveInsightSummary' {} a -> s {status = a} :: ReactiveInsightSummary)++instance Data.FromJSON ReactiveInsightSummary where+  parseJSON =+    Data.withObject+      "ReactiveInsightSummary"+      ( \x ->+          ReactiveInsightSummary'+            Prelude.<$> ( x+                            Data..:? "AssociatedResourceArns"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "InsightTimeRange")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "ResourceCollection")+            Prelude.<*> (x Data..:? "ServiceCollection")+            Prelude.<*> (x Data..:? "Severity")+            Prelude.<*> (x Data..:? "Status")+      )++instance Prelude.Hashable ReactiveInsightSummary where+  hashWithSalt _salt ReactiveInsightSummary' {..} =+    _salt+      `Prelude.hashWithSalt` associatedResourceArns+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` insightTimeRange+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` resourceCollection+      `Prelude.hashWithSalt` serviceCollection+      `Prelude.hashWithSalt` severity+      `Prelude.hashWithSalt` status++instance Prelude.NFData ReactiveInsightSummary where+  rnf ReactiveInsightSummary' {..} =+    Prelude.rnf associatedResourceArns+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf insightTimeRange+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf serviceCollection+      `Prelude.seq` Prelude.rnf severity+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/DevOpsGuru/Types/ReactiveOrganizationInsightSummary.hs view
@@ -0,0 +1,192 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.ReactiveOrganizationInsightSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ReactiveOrganizationInsightSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.InsightSeverity+import Amazonka.DevOpsGuru.Types.InsightStatus+import Amazonka.DevOpsGuru.Types.InsightTimeRange+import Amazonka.DevOpsGuru.Types.ResourceCollection+import Amazonka.DevOpsGuru.Types.ServiceCollection+import qualified Amazonka.Prelude as Prelude++-- | Information about a reactive insight. This object is returned by+-- @DescribeInsight@.+--+-- /See:/ 'newReactiveOrganizationInsightSummary' smart constructor.+data ReactiveOrganizationInsightSummary = ReactiveOrganizationInsightSummary'+  { -- | The ID of the Amazon Web Services account.+    accountId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the insight summary.+    id :: Prelude.Maybe Prelude.Text,+    insightTimeRange :: Prelude.Maybe InsightTimeRange,+    -- | The name of the insight summary.+    name :: Prelude.Maybe Prelude.Text,+    -- | The ID of the organizational unit.+    organizationalUnitId :: Prelude.Maybe Prelude.Text,+    resourceCollection :: Prelude.Maybe ResourceCollection,+    serviceCollection :: Prelude.Maybe ServiceCollection,+    -- | An array of severity values used to search for insights. For more+    -- information, see+    -- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+    -- in the /Amazon DevOps Guru User Guide/.+    severity :: Prelude.Maybe InsightSeverity,+    -- | An array of status values used to search for insights.+    status :: Prelude.Maybe InsightStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReactiveOrganizationInsightSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountId', 'reactiveOrganizationInsightSummary_accountId' - The ID of the Amazon Web Services account.+--+-- 'id', 'reactiveOrganizationInsightSummary_id' - The ID of the insight summary.+--+-- 'insightTimeRange', 'reactiveOrganizationInsightSummary_insightTimeRange' - Undocumented member.+--+-- 'name', 'reactiveOrganizationInsightSummary_name' - The name of the insight summary.+--+-- 'organizationalUnitId', 'reactiveOrganizationInsightSummary_organizationalUnitId' - The ID of the organizational unit.+--+-- 'resourceCollection', 'reactiveOrganizationInsightSummary_resourceCollection' - Undocumented member.+--+-- 'serviceCollection', 'reactiveOrganizationInsightSummary_serviceCollection' - Undocumented member.+--+-- 'severity', 'reactiveOrganizationInsightSummary_severity' - An array of severity values used to search for insights. For more+-- information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+--+-- 'status', 'reactiveOrganizationInsightSummary_status' - An array of status values used to search for insights.+newReactiveOrganizationInsightSummary ::+  ReactiveOrganizationInsightSummary+newReactiveOrganizationInsightSummary =+  ReactiveOrganizationInsightSummary'+    { accountId =+        Prelude.Nothing,+      id = Prelude.Nothing,+      insightTimeRange = Prelude.Nothing,+      name = Prelude.Nothing,+      organizationalUnitId = Prelude.Nothing,+      resourceCollection = Prelude.Nothing,+      serviceCollection = Prelude.Nothing,+      severity = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The ID of the Amazon Web Services account.+reactiveOrganizationInsightSummary_accountId :: Lens.Lens' ReactiveOrganizationInsightSummary (Prelude.Maybe Prelude.Text)+reactiveOrganizationInsightSummary_accountId = Lens.lens (\ReactiveOrganizationInsightSummary' {accountId} -> accountId) (\s@ReactiveOrganizationInsightSummary' {} a -> s {accountId = a} :: ReactiveOrganizationInsightSummary)++-- | The ID of the insight summary.+reactiveOrganizationInsightSummary_id :: Lens.Lens' ReactiveOrganizationInsightSummary (Prelude.Maybe Prelude.Text)+reactiveOrganizationInsightSummary_id = Lens.lens (\ReactiveOrganizationInsightSummary' {id} -> id) (\s@ReactiveOrganizationInsightSummary' {} a -> s {id = a} :: ReactiveOrganizationInsightSummary)++-- | Undocumented member.+reactiveOrganizationInsightSummary_insightTimeRange :: Lens.Lens' ReactiveOrganizationInsightSummary (Prelude.Maybe InsightTimeRange)+reactiveOrganizationInsightSummary_insightTimeRange = Lens.lens (\ReactiveOrganizationInsightSummary' {insightTimeRange} -> insightTimeRange) (\s@ReactiveOrganizationInsightSummary' {} a -> s {insightTimeRange = a} :: ReactiveOrganizationInsightSummary)++-- | The name of the insight summary.+reactiveOrganizationInsightSummary_name :: Lens.Lens' ReactiveOrganizationInsightSummary (Prelude.Maybe Prelude.Text)+reactiveOrganizationInsightSummary_name = Lens.lens (\ReactiveOrganizationInsightSummary' {name} -> name) (\s@ReactiveOrganizationInsightSummary' {} a -> s {name = a} :: ReactiveOrganizationInsightSummary)++-- | The ID of the organizational unit.+reactiveOrganizationInsightSummary_organizationalUnitId :: Lens.Lens' ReactiveOrganizationInsightSummary (Prelude.Maybe Prelude.Text)+reactiveOrganizationInsightSummary_organizationalUnitId = Lens.lens (\ReactiveOrganizationInsightSummary' {organizationalUnitId} -> organizationalUnitId) (\s@ReactiveOrganizationInsightSummary' {} a -> s {organizationalUnitId = a} :: ReactiveOrganizationInsightSummary)++-- | Undocumented member.+reactiveOrganizationInsightSummary_resourceCollection :: Lens.Lens' ReactiveOrganizationInsightSummary (Prelude.Maybe ResourceCollection)+reactiveOrganizationInsightSummary_resourceCollection = Lens.lens (\ReactiveOrganizationInsightSummary' {resourceCollection} -> resourceCollection) (\s@ReactiveOrganizationInsightSummary' {} a -> s {resourceCollection = a} :: ReactiveOrganizationInsightSummary)++-- | Undocumented member.+reactiveOrganizationInsightSummary_serviceCollection :: Lens.Lens' ReactiveOrganizationInsightSummary (Prelude.Maybe ServiceCollection)+reactiveOrganizationInsightSummary_serviceCollection = Lens.lens (\ReactiveOrganizationInsightSummary' {serviceCollection} -> serviceCollection) (\s@ReactiveOrganizationInsightSummary' {} a -> s {serviceCollection = a} :: ReactiveOrganizationInsightSummary)++-- | An array of severity values used to search for insights. For more+-- information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html#understanding-insights-severities Understanding insight severities>+-- in the /Amazon DevOps Guru User Guide/.+reactiveOrganizationInsightSummary_severity :: Lens.Lens' ReactiveOrganizationInsightSummary (Prelude.Maybe InsightSeverity)+reactiveOrganizationInsightSummary_severity = Lens.lens (\ReactiveOrganizationInsightSummary' {severity} -> severity) (\s@ReactiveOrganizationInsightSummary' {} a -> s {severity = a} :: ReactiveOrganizationInsightSummary)++-- | An array of status values used to search for insights.+reactiveOrganizationInsightSummary_status :: Lens.Lens' ReactiveOrganizationInsightSummary (Prelude.Maybe InsightStatus)+reactiveOrganizationInsightSummary_status = Lens.lens (\ReactiveOrganizationInsightSummary' {status} -> status) (\s@ReactiveOrganizationInsightSummary' {} a -> s {status = a} :: ReactiveOrganizationInsightSummary)++instance+  Data.FromJSON+    ReactiveOrganizationInsightSummary+  where+  parseJSON =+    Data.withObject+      "ReactiveOrganizationInsightSummary"+      ( \x ->+          ReactiveOrganizationInsightSummary'+            Prelude.<$> (x Data..:? "AccountId")+            Prelude.<*> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "InsightTimeRange")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "OrganizationalUnitId")+            Prelude.<*> (x Data..:? "ResourceCollection")+            Prelude.<*> (x Data..:? "ServiceCollection")+            Prelude.<*> (x Data..:? "Severity")+            Prelude.<*> (x Data..:? "Status")+      )++instance+  Prelude.Hashable+    ReactiveOrganizationInsightSummary+  where+  hashWithSalt+    _salt+    ReactiveOrganizationInsightSummary' {..} =+      _salt+        `Prelude.hashWithSalt` accountId+        `Prelude.hashWithSalt` id+        `Prelude.hashWithSalt` insightTimeRange+        `Prelude.hashWithSalt` name+        `Prelude.hashWithSalt` organizationalUnitId+        `Prelude.hashWithSalt` resourceCollection+        `Prelude.hashWithSalt` serviceCollection+        `Prelude.hashWithSalt` severity+        `Prelude.hashWithSalt` status++instance+  Prelude.NFData+    ReactiveOrganizationInsightSummary+  where+  rnf ReactiveOrganizationInsightSummary' {..} =+    Prelude.rnf accountId+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf insightTimeRange+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf organizationalUnitId+      `Prelude.seq` Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf serviceCollection+      `Prelude.seq` Prelude.rnf severity+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/DevOpsGuru/Types/Recommendation.hs view
@@ -0,0 +1,156 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.Recommendation+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.Recommendation where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomaly+import Amazonka.DevOpsGuru.Types.RecommendationRelatedEvent+import qualified Amazonka.Prelude as Prelude++-- | Recommendation information to help you remediate detected anomalous+-- behavior that generated an insight.+--+-- /See:/ 'newRecommendation' smart constructor.+data Recommendation = Recommendation'+  { -- | The category type of the recommendation.+    category :: Prelude.Maybe Prelude.Text,+    -- | A description of the problem.+    description :: Prelude.Maybe Prelude.Text,+    -- | A hyperlink to information to help you address the problem.+    link :: Prelude.Maybe Prelude.Text,+    -- | The name of the recommendation.+    name :: Prelude.Maybe Prelude.Text,+    -- | The reason DevOps Guru flagged the anomalous behavior as a problem.+    reason :: Prelude.Maybe Prelude.Text,+    -- | Anomalies that are related to the problem. Use these Anomalies to learn+    -- more about what\'s happening and to help address the issue.+    relatedAnomalies :: Prelude.Maybe [RecommendationRelatedAnomaly],+    -- | Events that are related to the problem. Use these events to learn more+    -- about what\'s happening and to help address the issue.+    relatedEvents :: Prelude.Maybe [RecommendationRelatedEvent]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Recommendation' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'category', 'recommendation_category' - The category type of the recommendation.+--+-- 'description', 'recommendation_description' - A description of the problem.+--+-- 'link', 'recommendation_link' - A hyperlink to information to help you address the problem.+--+-- 'name', 'recommendation_name' - The name of the recommendation.+--+-- 'reason', 'recommendation_reason' - The reason DevOps Guru flagged the anomalous behavior as a problem.+--+-- 'relatedAnomalies', 'recommendation_relatedAnomalies' - Anomalies that are related to the problem. Use these Anomalies to learn+-- more about what\'s happening and to help address the issue.+--+-- 'relatedEvents', 'recommendation_relatedEvents' - Events that are related to the problem. Use these events to learn more+-- about what\'s happening and to help address the issue.+newRecommendation ::+  Recommendation+newRecommendation =+  Recommendation'+    { category = Prelude.Nothing,+      description = Prelude.Nothing,+      link = Prelude.Nothing,+      name = Prelude.Nothing,+      reason = Prelude.Nothing,+      relatedAnomalies = Prelude.Nothing,+      relatedEvents = Prelude.Nothing+    }++-- | The category type of the recommendation.+recommendation_category :: Lens.Lens' Recommendation (Prelude.Maybe Prelude.Text)+recommendation_category = Lens.lens (\Recommendation' {category} -> category) (\s@Recommendation' {} a -> s {category = a} :: Recommendation)++-- | A description of the problem.+recommendation_description :: Lens.Lens' Recommendation (Prelude.Maybe Prelude.Text)+recommendation_description = Lens.lens (\Recommendation' {description} -> description) (\s@Recommendation' {} a -> s {description = a} :: Recommendation)++-- | A hyperlink to information to help you address the problem.+recommendation_link :: Lens.Lens' Recommendation (Prelude.Maybe Prelude.Text)+recommendation_link = Lens.lens (\Recommendation' {link} -> link) (\s@Recommendation' {} a -> s {link = a} :: Recommendation)++-- | The name of the recommendation.+recommendation_name :: Lens.Lens' Recommendation (Prelude.Maybe Prelude.Text)+recommendation_name = Lens.lens (\Recommendation' {name} -> name) (\s@Recommendation' {} a -> s {name = a} :: Recommendation)++-- | The reason DevOps Guru flagged the anomalous behavior as a problem.+recommendation_reason :: Lens.Lens' Recommendation (Prelude.Maybe Prelude.Text)+recommendation_reason = Lens.lens (\Recommendation' {reason} -> reason) (\s@Recommendation' {} a -> s {reason = a} :: Recommendation)++-- | Anomalies that are related to the problem. Use these Anomalies to learn+-- more about what\'s happening and to help address the issue.+recommendation_relatedAnomalies :: Lens.Lens' Recommendation (Prelude.Maybe [RecommendationRelatedAnomaly])+recommendation_relatedAnomalies = Lens.lens (\Recommendation' {relatedAnomalies} -> relatedAnomalies) (\s@Recommendation' {} a -> s {relatedAnomalies = a} :: Recommendation) Prelude.. Lens.mapping Lens.coerced++-- | Events that are related to the problem. Use these events to learn more+-- about what\'s happening and to help address the issue.+recommendation_relatedEvents :: Lens.Lens' Recommendation (Prelude.Maybe [RecommendationRelatedEvent])+recommendation_relatedEvents = Lens.lens (\Recommendation' {relatedEvents} -> relatedEvents) (\s@Recommendation' {} a -> s {relatedEvents = a} :: Recommendation) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON Recommendation where+  parseJSON =+    Data.withObject+      "Recommendation"+      ( \x ->+          Recommendation'+            Prelude.<$> (x Data..:? "Category")+            Prelude.<*> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "Link")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Reason")+            Prelude.<*> ( x+                            Data..:? "RelatedAnomalies"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "RelatedEvents" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable Recommendation where+  hashWithSalt _salt Recommendation' {..} =+    _salt+      `Prelude.hashWithSalt` category+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` link+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` reason+      `Prelude.hashWithSalt` relatedAnomalies+      `Prelude.hashWithSalt` relatedEvents++instance Prelude.NFData Recommendation where+  rnf Recommendation' {..} =+    Prelude.rnf category+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf link+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf reason+      `Prelude.seq` Prelude.rnf relatedAnomalies+      `Prelude.seq` Prelude.rnf relatedEvents
+ gen/Amazonka/DevOpsGuru/Types/RecommendationRelatedAnomaly.hs view
@@ -0,0 +1,117 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomaly+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomaly where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomalyResource+import Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomalySourceDetail+import qualified Amazonka.Prelude as Prelude++-- | Information about an anomaly that is related to a recommendation.+--+-- /See:/ 'newRecommendationRelatedAnomaly' smart constructor.+data RecommendationRelatedAnomaly = RecommendationRelatedAnomaly'+  { -- | The ID of an anomaly that generated the insight with this+    -- recommendation.+    anomalyId :: Prelude.Maybe Prelude.Text,+    -- | An array of objects that represent resources in which DevOps Guru+    -- detected anomalous behavior. Each object contains the name and type of+    -- the resource.+    resources :: Prelude.Maybe [RecommendationRelatedAnomalyResource],+    -- | Information about where the anomalous behavior related the+    -- recommendation was found. For example, details in Amazon CloudWatch+    -- metrics.+    sourceDetails :: Prelude.Maybe [RecommendationRelatedAnomalySourceDetail]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecommendationRelatedAnomaly' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'anomalyId', 'recommendationRelatedAnomaly_anomalyId' - The ID of an anomaly that generated the insight with this+-- recommendation.+--+-- 'resources', 'recommendationRelatedAnomaly_resources' - An array of objects that represent resources in which DevOps Guru+-- detected anomalous behavior. Each object contains the name and type of+-- the resource.+--+-- 'sourceDetails', 'recommendationRelatedAnomaly_sourceDetails' - Information about where the anomalous behavior related the+-- recommendation was found. For example, details in Amazon CloudWatch+-- metrics.+newRecommendationRelatedAnomaly ::+  RecommendationRelatedAnomaly+newRecommendationRelatedAnomaly =+  RecommendationRelatedAnomaly'+    { anomalyId =+        Prelude.Nothing,+      resources = Prelude.Nothing,+      sourceDetails = Prelude.Nothing+    }++-- | The ID of an anomaly that generated the insight with this+-- recommendation.+recommendationRelatedAnomaly_anomalyId :: Lens.Lens' RecommendationRelatedAnomaly (Prelude.Maybe Prelude.Text)+recommendationRelatedAnomaly_anomalyId = Lens.lens (\RecommendationRelatedAnomaly' {anomalyId} -> anomalyId) (\s@RecommendationRelatedAnomaly' {} a -> s {anomalyId = a} :: RecommendationRelatedAnomaly)++-- | An array of objects that represent resources in which DevOps Guru+-- detected anomalous behavior. Each object contains the name and type of+-- the resource.+recommendationRelatedAnomaly_resources :: Lens.Lens' RecommendationRelatedAnomaly (Prelude.Maybe [RecommendationRelatedAnomalyResource])+recommendationRelatedAnomaly_resources = Lens.lens (\RecommendationRelatedAnomaly' {resources} -> resources) (\s@RecommendationRelatedAnomaly' {} a -> s {resources = a} :: RecommendationRelatedAnomaly) Prelude.. Lens.mapping Lens.coerced++-- | Information about where the anomalous behavior related the+-- recommendation was found. For example, details in Amazon CloudWatch+-- metrics.+recommendationRelatedAnomaly_sourceDetails :: Lens.Lens' RecommendationRelatedAnomaly (Prelude.Maybe [RecommendationRelatedAnomalySourceDetail])+recommendationRelatedAnomaly_sourceDetails = Lens.lens (\RecommendationRelatedAnomaly' {sourceDetails} -> sourceDetails) (\s@RecommendationRelatedAnomaly' {} a -> s {sourceDetails = a} :: RecommendationRelatedAnomaly) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON RecommendationRelatedAnomaly where+  parseJSON =+    Data.withObject+      "RecommendationRelatedAnomaly"+      ( \x ->+          RecommendationRelatedAnomaly'+            Prelude.<$> (x Data..:? "AnomalyId")+            Prelude.<*> (x Data..:? "Resources" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "SourceDetails" Data..!= Prelude.mempty)+      )++instance+  Prelude.Hashable+    RecommendationRelatedAnomaly+  where+  hashWithSalt _salt RecommendationRelatedAnomaly' {..} =+    _salt+      `Prelude.hashWithSalt` anomalyId+      `Prelude.hashWithSalt` resources+      `Prelude.hashWithSalt` sourceDetails++instance Prelude.NFData RecommendationRelatedAnomaly where+  rnf RecommendationRelatedAnomaly' {..} =+    Prelude.rnf anomalyId+      `Prelude.seq` Prelude.rnf resources+      `Prelude.seq` Prelude.rnf sourceDetails
+ gen/Amazonka/DevOpsGuru/Types/RecommendationRelatedAnomalyResource.hs view
@@ -0,0 +1,111 @@+{-# 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.DevOpsGuru.Types.RecommendationRelatedAnomalyResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomalyResource where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Information about a resource in which DevOps Guru detected anomalous+-- behavior.+--+-- /See:/ 'newRecommendationRelatedAnomalyResource' smart constructor.+data RecommendationRelatedAnomalyResource = RecommendationRelatedAnomalyResource'+  { -- | The name of the resource.+    name :: Prelude.Maybe Prelude.Text,+    -- | The type of the resource. Resource types take the same form that is used+    -- by Amazon Web Services CloudFormation resource type identifiers,+    -- @service-provider::service-name::data-type-name@. For example,+    -- @AWS::RDS::DBCluster@. For more information, see+    -- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html Amazon Web Services resource and property types reference>+    -- in the /Amazon Web Services CloudFormation User Guide/.+    type' :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecommendationRelatedAnomalyResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'recommendationRelatedAnomalyResource_name' - The name of the resource.+--+-- 'type'', 'recommendationRelatedAnomalyResource_type' - The type of the resource. Resource types take the same form that is used+-- by Amazon Web Services CloudFormation resource type identifiers,+-- @service-provider::service-name::data-type-name@. For example,+-- @AWS::RDS::DBCluster@. For more information, see+-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html Amazon Web Services resource and property types reference>+-- in the /Amazon Web Services CloudFormation User Guide/.+newRecommendationRelatedAnomalyResource ::+  RecommendationRelatedAnomalyResource+newRecommendationRelatedAnomalyResource =+  RecommendationRelatedAnomalyResource'+    { name =+        Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | The name of the resource.+recommendationRelatedAnomalyResource_name :: Lens.Lens' RecommendationRelatedAnomalyResource (Prelude.Maybe Prelude.Text)+recommendationRelatedAnomalyResource_name = Lens.lens (\RecommendationRelatedAnomalyResource' {name} -> name) (\s@RecommendationRelatedAnomalyResource' {} a -> s {name = a} :: RecommendationRelatedAnomalyResource)++-- | The type of the resource. Resource types take the same form that is used+-- by Amazon Web Services CloudFormation resource type identifiers,+-- @service-provider::service-name::data-type-name@. For example,+-- @AWS::RDS::DBCluster@. For more information, see+-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html Amazon Web Services resource and property types reference>+-- in the /Amazon Web Services CloudFormation User Guide/.+recommendationRelatedAnomalyResource_type :: Lens.Lens' RecommendationRelatedAnomalyResource (Prelude.Maybe Prelude.Text)+recommendationRelatedAnomalyResource_type = Lens.lens (\RecommendationRelatedAnomalyResource' {type'} -> type') (\s@RecommendationRelatedAnomalyResource' {} a -> s {type' = a} :: RecommendationRelatedAnomalyResource)++instance+  Data.FromJSON+    RecommendationRelatedAnomalyResource+  where+  parseJSON =+    Data.withObject+      "RecommendationRelatedAnomalyResource"+      ( \x ->+          RecommendationRelatedAnomalyResource'+            Prelude.<$> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Type")+      )++instance+  Prelude.Hashable+    RecommendationRelatedAnomalyResource+  where+  hashWithSalt+    _salt+    RecommendationRelatedAnomalyResource' {..} =+      _salt+        `Prelude.hashWithSalt` name+        `Prelude.hashWithSalt` type'++instance+  Prelude.NFData+    RecommendationRelatedAnomalyResource+  where+  rnf RecommendationRelatedAnomalyResource' {..} =+    Prelude.rnf name `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/DevOpsGuru/Types/RecommendationRelatedAnomalySourceDetail.hs view
@@ -0,0 +1,92 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomalySourceDetail+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.RecommendationRelatedAnomalySourceDetail where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.RecommendationRelatedCloudWatchMetricsSourceDetail+import qualified Amazonka.Prelude as Prelude++-- | Contains an array of+-- @RecommendationRelatedCloudWatchMetricsSourceDetail@ objects that+-- contain the name and namespace of an Amazon CloudWatch metric.+--+-- /See:/ 'newRecommendationRelatedAnomalySourceDetail' smart constructor.+data RecommendationRelatedAnomalySourceDetail = RecommendationRelatedAnomalySourceDetail'+  { -- | An array of @CloudWatchMetricsDetail@ objects that contains information+    -- about the analyzed metrics that displayed anomalous behavior.+    cloudWatchMetrics :: Prelude.Maybe [RecommendationRelatedCloudWatchMetricsSourceDetail]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecommendationRelatedAnomalySourceDetail' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cloudWatchMetrics', 'recommendationRelatedAnomalySourceDetail_cloudWatchMetrics' - An array of @CloudWatchMetricsDetail@ objects that contains information+-- about the analyzed metrics that displayed anomalous behavior.+newRecommendationRelatedAnomalySourceDetail ::+  RecommendationRelatedAnomalySourceDetail+newRecommendationRelatedAnomalySourceDetail =+  RecommendationRelatedAnomalySourceDetail'+    { cloudWatchMetrics =+        Prelude.Nothing+    }++-- | An array of @CloudWatchMetricsDetail@ objects that contains information+-- about the analyzed metrics that displayed anomalous behavior.+recommendationRelatedAnomalySourceDetail_cloudWatchMetrics :: Lens.Lens' RecommendationRelatedAnomalySourceDetail (Prelude.Maybe [RecommendationRelatedCloudWatchMetricsSourceDetail])+recommendationRelatedAnomalySourceDetail_cloudWatchMetrics = Lens.lens (\RecommendationRelatedAnomalySourceDetail' {cloudWatchMetrics} -> cloudWatchMetrics) (\s@RecommendationRelatedAnomalySourceDetail' {} a -> s {cloudWatchMetrics = a} :: RecommendationRelatedAnomalySourceDetail) Prelude.. Lens.mapping Lens.coerced++instance+  Data.FromJSON+    RecommendationRelatedAnomalySourceDetail+  where+  parseJSON =+    Data.withObject+      "RecommendationRelatedAnomalySourceDetail"+      ( \x ->+          RecommendationRelatedAnomalySourceDetail'+            Prelude.<$> ( x+                            Data..:? "CloudWatchMetrics"+                            Data..!= Prelude.mempty+                        )+      )++instance+  Prelude.Hashable+    RecommendationRelatedAnomalySourceDetail+  where+  hashWithSalt+    _salt+    RecommendationRelatedAnomalySourceDetail' {..} =+      _salt `Prelude.hashWithSalt` cloudWatchMetrics++instance+  Prelude.NFData+    RecommendationRelatedAnomalySourceDetail+  where+  rnf RecommendationRelatedAnomalySourceDetail' {..} =+    Prelude.rnf cloudWatchMetrics
+ gen/Amazonka/DevOpsGuru/Types/RecommendationRelatedCloudWatchMetricsSourceDetail.hs view
@@ -0,0 +1,103 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.RecommendationRelatedCloudWatchMetricsSourceDetail+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.RecommendationRelatedCloudWatchMetricsSourceDetail where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Information about an Amazon CloudWatch metric that is analyzed by DevOps+-- Guru. It is one of many analyzed metrics that are used to generate+-- insights.+--+-- /See:/ 'newRecommendationRelatedCloudWatchMetricsSourceDetail' smart constructor.+data RecommendationRelatedCloudWatchMetricsSourceDetail = RecommendationRelatedCloudWatchMetricsSourceDetail'+  { -- | The name of the CloudWatch metric.+    metricName :: Prelude.Maybe Prelude.Text,+    -- | The namespace of the CloudWatch metric. A namespace is a container for+    -- CloudWatch metrics.+    namespace :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecommendationRelatedCloudWatchMetricsSourceDetail' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'metricName', 'recommendationRelatedCloudWatchMetricsSourceDetail_metricName' - The name of the CloudWatch metric.+--+-- 'namespace', 'recommendationRelatedCloudWatchMetricsSourceDetail_namespace' - The namespace of the CloudWatch metric. A namespace is a container for+-- CloudWatch metrics.+newRecommendationRelatedCloudWatchMetricsSourceDetail ::+  RecommendationRelatedCloudWatchMetricsSourceDetail+newRecommendationRelatedCloudWatchMetricsSourceDetail =+  RecommendationRelatedCloudWatchMetricsSourceDetail'+    { metricName =+        Prelude.Nothing,+      namespace =+        Prelude.Nothing+    }++-- | The name of the CloudWatch metric.+recommendationRelatedCloudWatchMetricsSourceDetail_metricName :: Lens.Lens' RecommendationRelatedCloudWatchMetricsSourceDetail (Prelude.Maybe Prelude.Text)+recommendationRelatedCloudWatchMetricsSourceDetail_metricName = Lens.lens (\RecommendationRelatedCloudWatchMetricsSourceDetail' {metricName} -> metricName) (\s@RecommendationRelatedCloudWatchMetricsSourceDetail' {} a -> s {metricName = a} :: RecommendationRelatedCloudWatchMetricsSourceDetail)++-- | The namespace of the CloudWatch metric. A namespace is a container for+-- CloudWatch metrics.+recommendationRelatedCloudWatchMetricsSourceDetail_namespace :: Lens.Lens' RecommendationRelatedCloudWatchMetricsSourceDetail (Prelude.Maybe Prelude.Text)+recommendationRelatedCloudWatchMetricsSourceDetail_namespace = Lens.lens (\RecommendationRelatedCloudWatchMetricsSourceDetail' {namespace} -> namespace) (\s@RecommendationRelatedCloudWatchMetricsSourceDetail' {} a -> s {namespace = a} :: RecommendationRelatedCloudWatchMetricsSourceDetail)++instance+  Data.FromJSON+    RecommendationRelatedCloudWatchMetricsSourceDetail+  where+  parseJSON =+    Data.withObject+      "RecommendationRelatedCloudWatchMetricsSourceDetail"+      ( \x ->+          RecommendationRelatedCloudWatchMetricsSourceDetail'+            Prelude.<$> (x Data..:? "MetricName")+            Prelude.<*> (x Data..:? "Namespace")+      )++instance+  Prelude.Hashable+    RecommendationRelatedCloudWatchMetricsSourceDetail+  where+  hashWithSalt+    _salt+    RecommendationRelatedCloudWatchMetricsSourceDetail' {..} =+      _salt+        `Prelude.hashWithSalt` metricName+        `Prelude.hashWithSalt` namespace++instance+  Prelude.NFData+    RecommendationRelatedCloudWatchMetricsSourceDetail+  where+  rnf+    RecommendationRelatedCloudWatchMetricsSourceDetail' {..} =+      Prelude.rnf metricName+        `Prelude.seq` Prelude.rnf namespace
+ gen/Amazonka/DevOpsGuru/Types/RecommendationRelatedEvent.hs view
@@ -0,0 +1,94 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.RecommendationRelatedEvent+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.RecommendationRelatedEvent where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.RecommendationRelatedEventResource+import qualified Amazonka.Prelude as Prelude++-- | Information about an event that is related to a recommendation.+--+-- /See:/ 'newRecommendationRelatedEvent' smart constructor.+data RecommendationRelatedEvent = RecommendationRelatedEvent'+  { -- | The name of the event. This corresponds to the @Name@ field in an+    -- @Event@ object.+    name :: Prelude.Maybe Prelude.Text,+    -- | A @ResourceCollection@ object that contains arrays of the names of+    -- Amazon Web Services CloudFormation stacks. You can specify up to 500+    -- Amazon Web Services CloudFormation stacks.+    resources :: Prelude.Maybe [RecommendationRelatedEventResource]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecommendationRelatedEvent' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'recommendationRelatedEvent_name' - The name of the event. This corresponds to the @Name@ field in an+-- @Event@ object.+--+-- 'resources', 'recommendationRelatedEvent_resources' - A @ResourceCollection@ object that contains arrays of the names of+-- Amazon Web Services CloudFormation stacks. You can specify up to 500+-- Amazon Web Services CloudFormation stacks.+newRecommendationRelatedEvent ::+  RecommendationRelatedEvent+newRecommendationRelatedEvent =+  RecommendationRelatedEvent'+    { name = Prelude.Nothing,+      resources = Prelude.Nothing+    }++-- | The name of the event. This corresponds to the @Name@ field in an+-- @Event@ object.+recommendationRelatedEvent_name :: Lens.Lens' RecommendationRelatedEvent (Prelude.Maybe Prelude.Text)+recommendationRelatedEvent_name = Lens.lens (\RecommendationRelatedEvent' {name} -> name) (\s@RecommendationRelatedEvent' {} a -> s {name = a} :: RecommendationRelatedEvent)++-- | A @ResourceCollection@ object that contains arrays of the names of+-- Amazon Web Services CloudFormation stacks. You can specify up to 500+-- Amazon Web Services CloudFormation stacks.+recommendationRelatedEvent_resources :: Lens.Lens' RecommendationRelatedEvent (Prelude.Maybe [RecommendationRelatedEventResource])+recommendationRelatedEvent_resources = Lens.lens (\RecommendationRelatedEvent' {resources} -> resources) (\s@RecommendationRelatedEvent' {} a -> s {resources = a} :: RecommendationRelatedEvent) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON RecommendationRelatedEvent where+  parseJSON =+    Data.withObject+      "RecommendationRelatedEvent"+      ( \x ->+          RecommendationRelatedEvent'+            Prelude.<$> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Resources" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable RecommendationRelatedEvent where+  hashWithSalt _salt RecommendationRelatedEvent' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` resources++instance Prelude.NFData RecommendationRelatedEvent where+  rnf RecommendationRelatedEvent' {..} =+    Prelude.rnf name+      `Prelude.seq` Prelude.rnf resources
+ gen/Amazonka/DevOpsGuru/Types/RecommendationRelatedEventResource.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.RecommendationRelatedEventResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.RecommendationRelatedEventResource where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Information about an Amazon Web Services resource that emitted and event+-- that is related to a recommendation in an insight.+--+-- /See:/ 'newRecommendationRelatedEventResource' smart constructor.+data RecommendationRelatedEventResource = RecommendationRelatedEventResource'+  { -- | The name of the resource that emitted the event. This corresponds to the+    -- @Name@ field in an @EventResource@ object.+    name :: Prelude.Maybe Prelude.Text,+    -- | The type of the resource that emitted the event. This corresponds to the+    -- @Type@ field in an @EventResource@ object.+    type' :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecommendationRelatedEventResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'recommendationRelatedEventResource_name' - The name of the resource that emitted the event. This corresponds to the+-- @Name@ field in an @EventResource@ object.+--+-- 'type'', 'recommendationRelatedEventResource_type' - The type of the resource that emitted the event. This corresponds to the+-- @Type@ field in an @EventResource@ object.+newRecommendationRelatedEventResource ::+  RecommendationRelatedEventResource+newRecommendationRelatedEventResource =+  RecommendationRelatedEventResource'+    { name =+        Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | The name of the resource that emitted the event. This corresponds to the+-- @Name@ field in an @EventResource@ object.+recommendationRelatedEventResource_name :: Lens.Lens' RecommendationRelatedEventResource (Prelude.Maybe Prelude.Text)+recommendationRelatedEventResource_name = Lens.lens (\RecommendationRelatedEventResource' {name} -> name) (\s@RecommendationRelatedEventResource' {} a -> s {name = a} :: RecommendationRelatedEventResource)++-- | The type of the resource that emitted the event. This corresponds to the+-- @Type@ field in an @EventResource@ object.+recommendationRelatedEventResource_type :: Lens.Lens' RecommendationRelatedEventResource (Prelude.Maybe Prelude.Text)+recommendationRelatedEventResource_type = Lens.lens (\RecommendationRelatedEventResource' {type'} -> type') (\s@RecommendationRelatedEventResource' {} a -> s {type' = a} :: RecommendationRelatedEventResource)++instance+  Data.FromJSON+    RecommendationRelatedEventResource+  where+  parseJSON =+    Data.withObject+      "RecommendationRelatedEventResource"+      ( \x ->+          RecommendationRelatedEventResource'+            Prelude.<$> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Type")+      )++instance+  Prelude.Hashable+    RecommendationRelatedEventResource+  where+  hashWithSalt+    _salt+    RecommendationRelatedEventResource' {..} =+      _salt+        `Prelude.hashWithSalt` name+        `Prelude.hashWithSalt` type'++instance+  Prelude.NFData+    RecommendationRelatedEventResource+  where+  rnf RecommendationRelatedEventResource' {..} =+    Prelude.rnf name `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/DevOpsGuru/Types/ResourceCollection.hs view
@@ -0,0 +1,208 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.ResourceCollection+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ResourceCollection where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.CloudFormationCollection+import Amazonka.DevOpsGuru.Types.TagCollection+import qualified Amazonka.Prelude as Prelude++-- | A collection of Amazon Web Services resources supported by DevOps Guru.+-- The two types of Amazon Web Services resource collections supported are+-- Amazon Web Services CloudFormation stacks and Amazon Web Services+-- resources that contain the same Amazon Web Services tag. DevOps Guru can+-- be configured to analyze the Amazon Web Services resources that are+-- defined in the stacks or that are tagged using the same tag /key/. You+-- can specify up to 500 Amazon Web Services CloudFormation stacks.+--+-- /See:/ 'newResourceCollection' smart constructor.+data ResourceCollection = ResourceCollection'+  { -- | An array of the names of Amazon Web Services CloudFormation stacks. The+    -- stacks define Amazon Web Services resources that DevOps Guru analyzes.+    -- You can specify up to 500 Amazon Web Services CloudFormation stacks.+    cloudFormation :: Prelude.Maybe CloudFormationCollection,+    -- | The Amazon Web Services tags that are used by resources in the resource+    -- collection.+    --+    -- Tags help you identify and organize your Amazon Web Services resources.+    -- Many Amazon Web Services services support tagging, so you can assign the+    -- same tag to resources from different services to indicate that the+    -- resources are related. For example, you can assign the same tag to an+    -- Amazon DynamoDB table resource that you assign to an Lambda function.+    -- For more information about using tags, see the+    -- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+    -- whitepaper.+    --+    -- Each Amazon Web Services tag has two parts.+    --+    -- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+    --     @Secret@). Tag /keys/ are case-sensitive.+    --+    -- -   An optional field known as a tag /value/ (for example,+    --     @111122223333@, @Production@, or a team name). Omitting the tag+    --     /value/ is the same as using an empty string. Like tag /keys/, tag+    --     /values/ are case-sensitive.+    --+    -- Together these are known as /key/-/value/ pairs.+    --+    -- The string used for a /key/ in a tag that you use to define your+    -- resource coverage must begin with the prefix @Devops-guru-@. The tag+    -- /key/ might be @DevOps-Guru-deployment-application@ or+    -- @devops-guru-rds-application@. When you create a /key/, the case of+    -- characters in the /key/ can be whatever you choose. After you create a+    -- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+    -- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+    -- act as two different /keys/. Possible /key/\//value/ pairs in your+    -- application might be @Devops-Guru-production-application\/RDS@ or+    -- @Devops-Guru-production-application\/containers@.+    tags :: Prelude.Maybe [TagCollection]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ResourceCollection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cloudFormation', 'resourceCollection_cloudFormation' - An array of the names of Amazon Web Services CloudFormation stacks. The+-- stacks define Amazon Web Services resources that DevOps Guru analyzes.+-- You can specify up to 500 Amazon Web Services CloudFormation stacks.+--+-- 'tags', 'resourceCollection_tags' - The Amazon Web Services tags that are used by resources in the resource+-- collection.+--+-- Tags help you identify and organize your Amazon Web Services resources.+-- Many Amazon Web Services services support tagging, so you can assign the+-- same tag to resources from different services to indicate that the+-- resources are related. For example, you can assign the same tag to an+-- Amazon DynamoDB table resource that you assign to an Lambda function.+-- For more information about using tags, see the+-- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+-- whitepaper.+--+-- Each Amazon Web Services tag has two parts.+--+-- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+--     @Secret@). Tag /keys/ are case-sensitive.+--+-- -   An optional field known as a tag /value/ (for example,+--     @111122223333@, @Production@, or a team name). Omitting the tag+--     /value/ is the same as using an empty string. Like tag /keys/, tag+--     /values/ are case-sensitive.+--+-- Together these are known as /key/-/value/ pairs.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+newResourceCollection ::+  ResourceCollection+newResourceCollection =+  ResourceCollection'+    { cloudFormation =+        Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | An array of the names of Amazon Web Services CloudFormation stacks. The+-- stacks define Amazon Web Services resources that DevOps Guru analyzes.+-- You can specify up to 500 Amazon Web Services CloudFormation stacks.+resourceCollection_cloudFormation :: Lens.Lens' ResourceCollection (Prelude.Maybe CloudFormationCollection)+resourceCollection_cloudFormation = Lens.lens (\ResourceCollection' {cloudFormation} -> cloudFormation) (\s@ResourceCollection' {} a -> s {cloudFormation = a} :: ResourceCollection)++-- | The Amazon Web Services tags that are used by resources in the resource+-- collection.+--+-- Tags help you identify and organize your Amazon Web Services resources.+-- Many Amazon Web Services services support tagging, so you can assign the+-- same tag to resources from different services to indicate that the+-- resources are related. For example, you can assign the same tag to an+-- Amazon DynamoDB table resource that you assign to an Lambda function.+-- For more information about using tags, see the+-- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+-- whitepaper.+--+-- Each Amazon Web Services tag has two parts.+--+-- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+--     @Secret@). Tag /keys/ are case-sensitive.+--+-- -   An optional field known as a tag /value/ (for example,+--     @111122223333@, @Production@, or a team name). Omitting the tag+--     /value/ is the same as using an empty string. Like tag /keys/, tag+--     /values/ are case-sensitive.+--+-- Together these are known as /key/-/value/ pairs.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+resourceCollection_tags :: Lens.Lens' ResourceCollection (Prelude.Maybe [TagCollection])+resourceCollection_tags = Lens.lens (\ResourceCollection' {tags} -> tags) (\s@ResourceCollection' {} a -> s {tags = a} :: ResourceCollection) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ResourceCollection where+  parseJSON =+    Data.withObject+      "ResourceCollection"+      ( \x ->+          ResourceCollection'+            Prelude.<$> (x Data..:? "CloudFormation")+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ResourceCollection where+  hashWithSalt _salt ResourceCollection' {..} =+    _salt+      `Prelude.hashWithSalt` cloudFormation+      `Prelude.hashWithSalt` tags++instance Prelude.NFData ResourceCollection where+  rnf ResourceCollection' {..} =+    Prelude.rnf cloudFormation+      `Prelude.seq` Prelude.rnf tags++instance Data.ToJSON ResourceCollection where+  toJSON ResourceCollection' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CloudFormation" Data..=)+              Prelude.<$> cloudFormation,+            ("Tags" Data..=) Prelude.<$> tags+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/ResourceCollectionFilter.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.DevOpsGuru.Types.ResourceCollectionFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ResourceCollectionFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.CloudFormationCollectionFilter+import Amazonka.DevOpsGuru.Types.TagCollectionFilter+import qualified Amazonka.Prelude as Prelude++-- | Information about a filter used to specify which Amazon Web Services+-- resources are analyzed for anomalous behavior by DevOps Guru.+--+-- /See:/ 'newResourceCollectionFilter' smart constructor.+data ResourceCollectionFilter = ResourceCollectionFilter'+  { -- | Information about Amazon Web Services CloudFormation stacks. You can use+    -- up to 500 stacks to specify which Amazon Web Services resources in your+    -- account to analyze. For more information, see+    -- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html Stacks>+    -- in the /Amazon Web Services CloudFormation User Guide/.+    cloudFormation :: Prelude.Maybe CloudFormationCollectionFilter,+    -- | The Amazon Web Services tags used to filter the resources in the+    -- resource collection.+    --+    -- Tags help you identify and organize your Amazon Web Services resources.+    -- Many Amazon Web Services services support tagging, so you can assign the+    -- same tag to resources from different services to indicate that the+    -- resources are related. For example, you can assign the same tag to an+    -- Amazon DynamoDB table resource that you assign to an Lambda function.+    -- For more information about using tags, see the+    -- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+    -- whitepaper.+    --+    -- Each Amazon Web Services tag has two parts.+    --+    -- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+    --     @Secret@). Tag /keys/ are case-sensitive.+    --+    -- -   An optional field known as a tag /value/ (for example,+    --     @111122223333@, @Production@, or a team name). Omitting the tag+    --     /value/ is the same as using an empty string. Like tag /keys/, tag+    --     /values/ are case-sensitive.+    --+    -- Together these are known as /key/-/value/ pairs.+    --+    -- The string used for a /key/ in a tag that you use to define your+    -- resource coverage must begin with the prefix @Devops-guru-@. The tag+    -- /key/ might be @DevOps-Guru-deployment-application@ or+    -- @devops-guru-rds-application@. When you create a /key/, the case of+    -- characters in the /key/ can be whatever you choose. After you create a+    -- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+    -- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+    -- act as two different /keys/. Possible /key/\//value/ pairs in your+    -- application might be @Devops-Guru-production-application\/RDS@ or+    -- @Devops-Guru-production-application\/containers@.+    tags :: Prelude.Maybe [TagCollectionFilter]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ResourceCollectionFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cloudFormation', 'resourceCollectionFilter_cloudFormation' - Information about Amazon Web Services CloudFormation stacks. You can use+-- up to 500 stacks to specify which Amazon Web Services resources in your+-- account to analyze. For more information, see+-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html Stacks>+-- in the /Amazon Web Services CloudFormation User Guide/.+--+-- 'tags', 'resourceCollectionFilter_tags' - The Amazon Web Services tags used to filter the resources in the+-- resource collection.+--+-- Tags help you identify and organize your Amazon Web Services resources.+-- Many Amazon Web Services services support tagging, so you can assign the+-- same tag to resources from different services to indicate that the+-- resources are related. For example, you can assign the same tag to an+-- Amazon DynamoDB table resource that you assign to an Lambda function.+-- For more information about using tags, see the+-- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+-- whitepaper.+--+-- Each Amazon Web Services tag has two parts.+--+-- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+--     @Secret@). Tag /keys/ are case-sensitive.+--+-- -   An optional field known as a tag /value/ (for example,+--     @111122223333@, @Production@, or a team name). Omitting the tag+--     /value/ is the same as using an empty string. Like tag /keys/, tag+--     /values/ are case-sensitive.+--+-- Together these are known as /key/-/value/ pairs.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+newResourceCollectionFilter ::+  ResourceCollectionFilter+newResourceCollectionFilter =+  ResourceCollectionFilter'+    { cloudFormation =+        Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | Information about Amazon Web Services CloudFormation stacks. You can use+-- up to 500 stacks to specify which Amazon Web Services resources in your+-- account to analyze. For more information, see+-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html Stacks>+-- in the /Amazon Web Services CloudFormation User Guide/.+resourceCollectionFilter_cloudFormation :: Lens.Lens' ResourceCollectionFilter (Prelude.Maybe CloudFormationCollectionFilter)+resourceCollectionFilter_cloudFormation = Lens.lens (\ResourceCollectionFilter' {cloudFormation} -> cloudFormation) (\s@ResourceCollectionFilter' {} a -> s {cloudFormation = a} :: ResourceCollectionFilter)++-- | The Amazon Web Services tags used to filter the resources in the+-- resource collection.+--+-- Tags help you identify and organize your Amazon Web Services resources.+-- Many Amazon Web Services services support tagging, so you can assign the+-- same tag to resources from different services to indicate that the+-- resources are related. For example, you can assign the same tag to an+-- Amazon DynamoDB table resource that you assign to an Lambda function.+-- For more information about using tags, see the+-- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+-- whitepaper.+--+-- Each Amazon Web Services tag has two parts.+--+-- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+--     @Secret@). Tag /keys/ are case-sensitive.+--+-- -   An optional field known as a tag /value/ (for example,+--     @111122223333@, @Production@, or a team name). Omitting the tag+--     /value/ is the same as using an empty string. Like tag /keys/, tag+--     /values/ are case-sensitive.+--+-- Together these are known as /key/-/value/ pairs.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+resourceCollectionFilter_tags :: Lens.Lens' ResourceCollectionFilter (Prelude.Maybe [TagCollectionFilter])+resourceCollectionFilter_tags = Lens.lens (\ResourceCollectionFilter' {tags} -> tags) (\s@ResourceCollectionFilter' {} a -> s {tags = a} :: ResourceCollectionFilter) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ResourceCollectionFilter where+  parseJSON =+    Data.withObject+      "ResourceCollectionFilter"+      ( \x ->+          ResourceCollectionFilter'+            Prelude.<$> (x Data..:? "CloudFormation")+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ResourceCollectionFilter where+  hashWithSalt _salt ResourceCollectionFilter' {..} =+    _salt+      `Prelude.hashWithSalt` cloudFormation+      `Prelude.hashWithSalt` tags++instance Prelude.NFData ResourceCollectionFilter where+  rnf ResourceCollectionFilter' {..} =+    Prelude.rnf cloudFormation+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/DevOpsGuru/Types/ResourceCollectionType.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.ResourceCollectionType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ResourceCollectionType+  ( ResourceCollectionType+      ( ..,+        ResourceCollectionType_AWS_CLOUD_FORMATION,+        ResourceCollectionType_AWS_SERVICE,+        ResourceCollectionType_AWS_TAGS+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ResourceCollectionType = ResourceCollectionType'+  { fromResourceCollectionType ::+      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 ResourceCollectionType_AWS_CLOUD_FORMATION :: ResourceCollectionType+pattern ResourceCollectionType_AWS_CLOUD_FORMATION = ResourceCollectionType' "AWS_CLOUD_FORMATION"++pattern ResourceCollectionType_AWS_SERVICE :: ResourceCollectionType+pattern ResourceCollectionType_AWS_SERVICE = ResourceCollectionType' "AWS_SERVICE"++pattern ResourceCollectionType_AWS_TAGS :: ResourceCollectionType+pattern ResourceCollectionType_AWS_TAGS = ResourceCollectionType' "AWS_TAGS"++{-# COMPLETE+  ResourceCollectionType_AWS_CLOUD_FORMATION,+  ResourceCollectionType_AWS_SERVICE,+  ResourceCollectionType_AWS_TAGS,+  ResourceCollectionType'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/ResourcePermission.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.ResourcePermission+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ResourcePermission+  ( ResourcePermission+      ( ..,+        ResourcePermission_FULL_PERMISSION,+        ResourcePermission_MISSING_PERMISSION+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ResourcePermission = ResourcePermission'+  { fromResourcePermission ::+      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 ResourcePermission_FULL_PERMISSION :: ResourcePermission+pattern ResourcePermission_FULL_PERMISSION = ResourcePermission' "FULL_PERMISSION"++pattern ResourcePermission_MISSING_PERMISSION :: ResourcePermission+pattern ResourcePermission_MISSING_PERMISSION = ResourcePermission' "MISSING_PERMISSION"++{-# COMPLETE+  ResourcePermission_FULL_PERMISSION,+  ResourcePermission_MISSING_PERMISSION,+  ResourcePermission'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/ResourceTypeFilter.hs view
@@ -0,0 +1,196 @@+{-# 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.DevOpsGuru.Types.ResourceTypeFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ResourceTypeFilter+  ( ResourceTypeFilter+      ( ..,+        ResourceTypeFilter_CLOUDFRONT_DISTRIBUTION,+        ResourceTypeFilter_DYNAMODB_TABLE,+        ResourceTypeFilter_EC2_NAT_GATEWAY,+        ResourceTypeFilter_ECS_CLUSTER,+        ResourceTypeFilter_ECS_SERVICE,+        ResourceTypeFilter_EKS_CLUSTER,+        ResourceTypeFilter_ELASTICACHE_CACHE_CLUSTER,+        ResourceTypeFilter_ELASTICSEARCH_DOMAIN,+        ResourceTypeFilter_ELASTIC_BEANSTALK_ENVIRONMENT,+        ResourceTypeFilter_ELASTIC_LOAD_BALANCER_LOAD_BALANCER,+        ResourceTypeFilter_ELASTIC_LOAD_BALANCING_V2_LOAD_BALANCER,+        ResourceTypeFilter_ELASTIC_LOAD_BALANCING_V2_TARGET_GROUP,+        ResourceTypeFilter_KINESIS_STREAM,+        ResourceTypeFilter_LAMBDA_FUNCTION,+        ResourceTypeFilter_LOG_GROUPS,+        ResourceTypeFilter_OPEN_SEARCH_SERVICE_DOMAIN,+        ResourceTypeFilter_RDS_DB_CLUSTER,+        ResourceTypeFilter_RDS_DB_INSTANCE,+        ResourceTypeFilter_REDSHIFT_CLUSTER,+        ResourceTypeFilter_ROUTE53_HEALTH_CHECK,+        ResourceTypeFilter_ROUTE53_HOSTED_ZONE,+        ResourceTypeFilter_S3_BUCKET,+        ResourceTypeFilter_SAGEMAKER_ENDPOINT,+        ResourceTypeFilter_SNS_TOPIC,+        ResourceTypeFilter_SQS_QUEUE,+        ResourceTypeFilter_STEP_FUNCTIONS_ACTIVITY,+        ResourceTypeFilter_STEP_FUNCTIONS_STATE_MACHINE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ResourceTypeFilter = ResourceTypeFilter'+  { fromResourceTypeFilter ::+      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 ResourceTypeFilter_CLOUDFRONT_DISTRIBUTION :: ResourceTypeFilter+pattern ResourceTypeFilter_CLOUDFRONT_DISTRIBUTION = ResourceTypeFilter' "CLOUDFRONT_DISTRIBUTION"++pattern ResourceTypeFilter_DYNAMODB_TABLE :: ResourceTypeFilter+pattern ResourceTypeFilter_DYNAMODB_TABLE = ResourceTypeFilter' "DYNAMODB_TABLE"++pattern ResourceTypeFilter_EC2_NAT_GATEWAY :: ResourceTypeFilter+pattern ResourceTypeFilter_EC2_NAT_GATEWAY = ResourceTypeFilter' "EC2_NAT_GATEWAY"++pattern ResourceTypeFilter_ECS_CLUSTER :: ResourceTypeFilter+pattern ResourceTypeFilter_ECS_CLUSTER = ResourceTypeFilter' "ECS_CLUSTER"++pattern ResourceTypeFilter_ECS_SERVICE :: ResourceTypeFilter+pattern ResourceTypeFilter_ECS_SERVICE = ResourceTypeFilter' "ECS_SERVICE"++pattern ResourceTypeFilter_EKS_CLUSTER :: ResourceTypeFilter+pattern ResourceTypeFilter_EKS_CLUSTER = ResourceTypeFilter' "EKS_CLUSTER"++pattern ResourceTypeFilter_ELASTICACHE_CACHE_CLUSTER :: ResourceTypeFilter+pattern ResourceTypeFilter_ELASTICACHE_CACHE_CLUSTER = ResourceTypeFilter' "ELASTICACHE_CACHE_CLUSTER"++pattern ResourceTypeFilter_ELASTICSEARCH_DOMAIN :: ResourceTypeFilter+pattern ResourceTypeFilter_ELASTICSEARCH_DOMAIN = ResourceTypeFilter' "ELASTICSEARCH_DOMAIN"++pattern ResourceTypeFilter_ELASTIC_BEANSTALK_ENVIRONMENT :: ResourceTypeFilter+pattern ResourceTypeFilter_ELASTIC_BEANSTALK_ENVIRONMENT = ResourceTypeFilter' "ELASTIC_BEANSTALK_ENVIRONMENT"++pattern ResourceTypeFilter_ELASTIC_LOAD_BALANCER_LOAD_BALANCER :: ResourceTypeFilter+pattern ResourceTypeFilter_ELASTIC_LOAD_BALANCER_LOAD_BALANCER = ResourceTypeFilter' "ELASTIC_LOAD_BALANCER_LOAD_BALANCER"++pattern ResourceTypeFilter_ELASTIC_LOAD_BALANCING_V2_LOAD_BALANCER :: ResourceTypeFilter+pattern ResourceTypeFilter_ELASTIC_LOAD_BALANCING_V2_LOAD_BALANCER = ResourceTypeFilter' "ELASTIC_LOAD_BALANCING_V2_LOAD_BALANCER"++pattern ResourceTypeFilter_ELASTIC_LOAD_BALANCING_V2_TARGET_GROUP :: ResourceTypeFilter+pattern ResourceTypeFilter_ELASTIC_LOAD_BALANCING_V2_TARGET_GROUP = ResourceTypeFilter' "ELASTIC_LOAD_BALANCING_V2_TARGET_GROUP"++pattern ResourceTypeFilter_KINESIS_STREAM :: ResourceTypeFilter+pattern ResourceTypeFilter_KINESIS_STREAM = ResourceTypeFilter' "KINESIS_STREAM"++pattern ResourceTypeFilter_LAMBDA_FUNCTION :: ResourceTypeFilter+pattern ResourceTypeFilter_LAMBDA_FUNCTION = ResourceTypeFilter' "LAMBDA_FUNCTION"++pattern ResourceTypeFilter_LOG_GROUPS :: ResourceTypeFilter+pattern ResourceTypeFilter_LOG_GROUPS = ResourceTypeFilter' "LOG_GROUPS"++pattern ResourceTypeFilter_OPEN_SEARCH_SERVICE_DOMAIN :: ResourceTypeFilter+pattern ResourceTypeFilter_OPEN_SEARCH_SERVICE_DOMAIN = ResourceTypeFilter' "OPEN_SEARCH_SERVICE_DOMAIN"++pattern ResourceTypeFilter_RDS_DB_CLUSTER :: ResourceTypeFilter+pattern ResourceTypeFilter_RDS_DB_CLUSTER = ResourceTypeFilter' "RDS_DB_CLUSTER"++pattern ResourceTypeFilter_RDS_DB_INSTANCE :: ResourceTypeFilter+pattern ResourceTypeFilter_RDS_DB_INSTANCE = ResourceTypeFilter' "RDS_DB_INSTANCE"++pattern ResourceTypeFilter_REDSHIFT_CLUSTER :: ResourceTypeFilter+pattern ResourceTypeFilter_REDSHIFT_CLUSTER = ResourceTypeFilter' "REDSHIFT_CLUSTER"++pattern ResourceTypeFilter_ROUTE53_HEALTH_CHECK :: ResourceTypeFilter+pattern ResourceTypeFilter_ROUTE53_HEALTH_CHECK = ResourceTypeFilter' "ROUTE53_HEALTH_CHECK"++pattern ResourceTypeFilter_ROUTE53_HOSTED_ZONE :: ResourceTypeFilter+pattern ResourceTypeFilter_ROUTE53_HOSTED_ZONE = ResourceTypeFilter' "ROUTE53_HOSTED_ZONE"++pattern ResourceTypeFilter_S3_BUCKET :: ResourceTypeFilter+pattern ResourceTypeFilter_S3_BUCKET = ResourceTypeFilter' "S3_BUCKET"++pattern ResourceTypeFilter_SAGEMAKER_ENDPOINT :: ResourceTypeFilter+pattern ResourceTypeFilter_SAGEMAKER_ENDPOINT = ResourceTypeFilter' "SAGEMAKER_ENDPOINT"++pattern ResourceTypeFilter_SNS_TOPIC :: ResourceTypeFilter+pattern ResourceTypeFilter_SNS_TOPIC = ResourceTypeFilter' "SNS_TOPIC"++pattern ResourceTypeFilter_SQS_QUEUE :: ResourceTypeFilter+pattern ResourceTypeFilter_SQS_QUEUE = ResourceTypeFilter' "SQS_QUEUE"++pattern ResourceTypeFilter_STEP_FUNCTIONS_ACTIVITY :: ResourceTypeFilter+pattern ResourceTypeFilter_STEP_FUNCTIONS_ACTIVITY = ResourceTypeFilter' "STEP_FUNCTIONS_ACTIVITY"++pattern ResourceTypeFilter_STEP_FUNCTIONS_STATE_MACHINE :: ResourceTypeFilter+pattern ResourceTypeFilter_STEP_FUNCTIONS_STATE_MACHINE = ResourceTypeFilter' "STEP_FUNCTIONS_STATE_MACHINE"++{-# COMPLETE+  ResourceTypeFilter_CLOUDFRONT_DISTRIBUTION,+  ResourceTypeFilter_DYNAMODB_TABLE,+  ResourceTypeFilter_EC2_NAT_GATEWAY,+  ResourceTypeFilter_ECS_CLUSTER,+  ResourceTypeFilter_ECS_SERVICE,+  ResourceTypeFilter_EKS_CLUSTER,+  ResourceTypeFilter_ELASTICACHE_CACHE_CLUSTER,+  ResourceTypeFilter_ELASTICSEARCH_DOMAIN,+  ResourceTypeFilter_ELASTIC_BEANSTALK_ENVIRONMENT,+  ResourceTypeFilter_ELASTIC_LOAD_BALANCER_LOAD_BALANCER,+  ResourceTypeFilter_ELASTIC_LOAD_BALANCING_V2_LOAD_BALANCER,+  ResourceTypeFilter_ELASTIC_LOAD_BALANCING_V2_TARGET_GROUP,+  ResourceTypeFilter_KINESIS_STREAM,+  ResourceTypeFilter_LAMBDA_FUNCTION,+  ResourceTypeFilter_LOG_GROUPS,+  ResourceTypeFilter_OPEN_SEARCH_SERVICE_DOMAIN,+  ResourceTypeFilter_RDS_DB_CLUSTER,+  ResourceTypeFilter_RDS_DB_INSTANCE,+  ResourceTypeFilter_REDSHIFT_CLUSTER,+  ResourceTypeFilter_ROUTE53_HEALTH_CHECK,+  ResourceTypeFilter_ROUTE53_HOSTED_ZONE,+  ResourceTypeFilter_S3_BUCKET,+  ResourceTypeFilter_SAGEMAKER_ENDPOINT,+  ResourceTypeFilter_SNS_TOPIC,+  ResourceTypeFilter_SQS_QUEUE,+  ResourceTypeFilter_STEP_FUNCTIONS_ACTIVITY,+  ResourceTypeFilter_STEP_FUNCTIONS_STATE_MACHINE,+  ResourceTypeFilter'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/SearchInsightsFilters.hs view
@@ -0,0 +1,114 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.SearchInsightsFilters+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.SearchInsightsFilters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.InsightSeverity+import Amazonka.DevOpsGuru.Types.InsightStatus+import Amazonka.DevOpsGuru.Types.ResourceCollection+import Amazonka.DevOpsGuru.Types.ServiceCollection+import qualified Amazonka.Prelude as Prelude++-- | Specifies one or more severity values and one or more status values that+-- are used to search for insights.+--+-- /See:/ 'newSearchInsightsFilters' smart constructor.+data SearchInsightsFilters = SearchInsightsFilters'+  { resourceCollection :: Prelude.Maybe ResourceCollection,+    -- | A collection of the names of Amazon Web Services services.+    serviceCollection :: Prelude.Maybe ServiceCollection,+    -- | An array of severity values used to search for insights.+    severities :: Prelude.Maybe [InsightSeverity],+    -- | An array of status values used to search for insights.+    statuses :: Prelude.Maybe [InsightStatus]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchInsightsFilters' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceCollection', 'searchInsightsFilters_resourceCollection' - Undocumented member.+--+-- 'serviceCollection', 'searchInsightsFilters_serviceCollection' - A collection of the names of Amazon Web Services services.+--+-- 'severities', 'searchInsightsFilters_severities' - An array of severity values used to search for insights.+--+-- 'statuses', 'searchInsightsFilters_statuses' - An array of status values used to search for insights.+newSearchInsightsFilters ::+  SearchInsightsFilters+newSearchInsightsFilters =+  SearchInsightsFilters'+    { resourceCollection =+        Prelude.Nothing,+      serviceCollection = Prelude.Nothing,+      severities = Prelude.Nothing,+      statuses = Prelude.Nothing+    }++-- | Undocumented member.+searchInsightsFilters_resourceCollection :: Lens.Lens' SearchInsightsFilters (Prelude.Maybe ResourceCollection)+searchInsightsFilters_resourceCollection = Lens.lens (\SearchInsightsFilters' {resourceCollection} -> resourceCollection) (\s@SearchInsightsFilters' {} a -> s {resourceCollection = a} :: SearchInsightsFilters)++-- | A collection of the names of Amazon Web Services services.+searchInsightsFilters_serviceCollection :: Lens.Lens' SearchInsightsFilters (Prelude.Maybe ServiceCollection)+searchInsightsFilters_serviceCollection = Lens.lens (\SearchInsightsFilters' {serviceCollection} -> serviceCollection) (\s@SearchInsightsFilters' {} a -> s {serviceCollection = a} :: SearchInsightsFilters)++-- | An array of severity values used to search for insights.+searchInsightsFilters_severities :: Lens.Lens' SearchInsightsFilters (Prelude.Maybe [InsightSeverity])+searchInsightsFilters_severities = Lens.lens (\SearchInsightsFilters' {severities} -> severities) (\s@SearchInsightsFilters' {} a -> s {severities = a} :: SearchInsightsFilters) Prelude.. Lens.mapping Lens.coerced++-- | An array of status values used to search for insights.+searchInsightsFilters_statuses :: Lens.Lens' SearchInsightsFilters (Prelude.Maybe [InsightStatus])+searchInsightsFilters_statuses = Lens.lens (\SearchInsightsFilters' {statuses} -> statuses) (\s@SearchInsightsFilters' {} a -> s {statuses = a} :: SearchInsightsFilters) Prelude.. Lens.mapping Lens.coerced++instance Prelude.Hashable SearchInsightsFilters where+  hashWithSalt _salt SearchInsightsFilters' {..} =+    _salt+      `Prelude.hashWithSalt` resourceCollection+      `Prelude.hashWithSalt` serviceCollection+      `Prelude.hashWithSalt` severities+      `Prelude.hashWithSalt` statuses++instance Prelude.NFData SearchInsightsFilters where+  rnf SearchInsightsFilters' {..} =+    Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf serviceCollection+      `Prelude.seq` Prelude.rnf severities+      `Prelude.seq` Prelude.rnf statuses++instance Data.ToJSON SearchInsightsFilters where+  toJSON SearchInsightsFilters' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ResourceCollection" Data..=)+              Prelude.<$> resourceCollection,+            ("ServiceCollection" Data..=)+              Prelude.<$> serviceCollection,+            ("Severities" Data..=) Prelude.<$> severities,+            ("Statuses" Data..=) Prelude.<$> statuses+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/SearchOrganizationInsightsFilters.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.DevOpsGuru.Types.SearchOrganizationInsightsFilters+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.SearchOrganizationInsightsFilters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.InsightSeverity+import Amazonka.DevOpsGuru.Types.InsightStatus+import Amazonka.DevOpsGuru.Types.ResourceCollection+import Amazonka.DevOpsGuru.Types.ServiceCollection+import qualified Amazonka.Prelude as Prelude++-- | Filters you can use to specify which events are returned when+-- @ListEvents@ is called.+--+-- /See:/ 'newSearchOrganizationInsightsFilters' smart constructor.+data SearchOrganizationInsightsFilters = SearchOrganizationInsightsFilters'+  { resourceCollection :: Prelude.Maybe ResourceCollection,+    serviceCollection :: Prelude.Maybe ServiceCollection,+    -- | An array of severity values used to search for insights.+    severities :: Prelude.Maybe [InsightSeverity],+    -- | An array of status values used to search for insights.+    statuses :: Prelude.Maybe [InsightStatus]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchOrganizationInsightsFilters' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceCollection', 'searchOrganizationInsightsFilters_resourceCollection' - Undocumented member.+--+-- 'serviceCollection', 'searchOrganizationInsightsFilters_serviceCollection' - Undocumented member.+--+-- 'severities', 'searchOrganizationInsightsFilters_severities' - An array of severity values used to search for insights.+--+-- 'statuses', 'searchOrganizationInsightsFilters_statuses' - An array of status values used to search for insights.+newSearchOrganizationInsightsFilters ::+  SearchOrganizationInsightsFilters+newSearchOrganizationInsightsFilters =+  SearchOrganizationInsightsFilters'+    { resourceCollection =+        Prelude.Nothing,+      serviceCollection = Prelude.Nothing,+      severities = Prelude.Nothing,+      statuses = Prelude.Nothing+    }++-- | Undocumented member.+searchOrganizationInsightsFilters_resourceCollection :: Lens.Lens' SearchOrganizationInsightsFilters (Prelude.Maybe ResourceCollection)+searchOrganizationInsightsFilters_resourceCollection = Lens.lens (\SearchOrganizationInsightsFilters' {resourceCollection} -> resourceCollection) (\s@SearchOrganizationInsightsFilters' {} a -> s {resourceCollection = a} :: SearchOrganizationInsightsFilters)++-- | Undocumented member.+searchOrganizationInsightsFilters_serviceCollection :: Lens.Lens' SearchOrganizationInsightsFilters (Prelude.Maybe ServiceCollection)+searchOrganizationInsightsFilters_serviceCollection = Lens.lens (\SearchOrganizationInsightsFilters' {serviceCollection} -> serviceCollection) (\s@SearchOrganizationInsightsFilters' {} a -> s {serviceCollection = a} :: SearchOrganizationInsightsFilters)++-- | An array of severity values used to search for insights.+searchOrganizationInsightsFilters_severities :: Lens.Lens' SearchOrganizationInsightsFilters (Prelude.Maybe [InsightSeverity])+searchOrganizationInsightsFilters_severities = Lens.lens (\SearchOrganizationInsightsFilters' {severities} -> severities) (\s@SearchOrganizationInsightsFilters' {} a -> s {severities = a} :: SearchOrganizationInsightsFilters) Prelude.. Lens.mapping Lens.coerced++-- | An array of status values used to search for insights.+searchOrganizationInsightsFilters_statuses :: Lens.Lens' SearchOrganizationInsightsFilters (Prelude.Maybe [InsightStatus])+searchOrganizationInsightsFilters_statuses = Lens.lens (\SearchOrganizationInsightsFilters' {statuses} -> statuses) (\s@SearchOrganizationInsightsFilters' {} a -> s {statuses = a} :: SearchOrganizationInsightsFilters) Prelude.. Lens.mapping Lens.coerced++instance+  Prelude.Hashable+    SearchOrganizationInsightsFilters+  where+  hashWithSalt+    _salt+    SearchOrganizationInsightsFilters' {..} =+      _salt+        `Prelude.hashWithSalt` resourceCollection+        `Prelude.hashWithSalt` serviceCollection+        `Prelude.hashWithSalt` severities+        `Prelude.hashWithSalt` statuses++instance+  Prelude.NFData+    SearchOrganizationInsightsFilters+  where+  rnf SearchOrganizationInsightsFilters' {..} =+    Prelude.rnf resourceCollection+      `Prelude.seq` Prelude.rnf serviceCollection+      `Prelude.seq` Prelude.rnf severities+      `Prelude.seq` Prelude.rnf statuses++instance+  Data.ToJSON+    SearchOrganizationInsightsFilters+  where+  toJSON SearchOrganizationInsightsFilters' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ResourceCollection" Data..=)+              Prelude.<$> resourceCollection,+            ("ServiceCollection" Data..=)+              Prelude.<$> serviceCollection,+            ("Severities" Data..=) Prelude.<$> severities,+            ("Statuses" Data..=) Prelude.<$> statuses+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/ServiceCollection.hs view
@@ -0,0 +1,79 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.ServiceCollection+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ServiceCollection where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.ServiceName+import qualified Amazonka.Prelude as Prelude++-- | A collection of the names of Amazon Web Services services.+--+-- /See:/ 'newServiceCollection' smart constructor.+data ServiceCollection = ServiceCollection'+  { -- | An array of strings that each specifies the name of an Amazon Web+    -- Services service.+    serviceNames :: Prelude.Maybe [ServiceName]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ServiceCollection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'serviceNames', 'serviceCollection_serviceNames' - An array of strings that each specifies the name of an Amazon Web+-- Services service.+newServiceCollection ::+  ServiceCollection+newServiceCollection =+  ServiceCollection' {serviceNames = Prelude.Nothing}++-- | An array of strings that each specifies the name of an Amazon Web+-- Services service.+serviceCollection_serviceNames :: Lens.Lens' ServiceCollection (Prelude.Maybe [ServiceName])+serviceCollection_serviceNames = Lens.lens (\ServiceCollection' {serviceNames} -> serviceNames) (\s@ServiceCollection' {} a -> s {serviceNames = a} :: ServiceCollection) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ServiceCollection where+  parseJSON =+    Data.withObject+      "ServiceCollection"+      ( \x ->+          ServiceCollection'+            Prelude.<$> (x Data..:? "ServiceNames" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ServiceCollection where+  hashWithSalt _salt ServiceCollection' {..} =+    _salt `Prelude.hashWithSalt` serviceNames++instance Prelude.NFData ServiceCollection where+  rnf ServiceCollection' {..} = Prelude.rnf serviceNames++instance Data.ToJSON ServiceCollection where+  toJSON ServiceCollection' {..} =+    Data.object+      ( Prelude.catMaybes+          [("ServiceNames" Data..=) Prelude.<$> serviceNames]+      )
+ gen/Amazonka/DevOpsGuru/Types/ServiceHealth.hs view
@@ -0,0 +1,108 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.ServiceHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ServiceHealth where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.ServiceInsightHealth+import Amazonka.DevOpsGuru.Types.ServiceName+import qualified Amazonka.Prelude as Prelude++-- | Represents the health of an Amazon Web Services service.+--+-- /See:/ 'newServiceHealth' smart constructor.+data ServiceHealth = ServiceHealth'+  { -- | Number of resources that DevOps Guru is monitoring in an analyzed Amazon+    -- Web Services service.+    analyzedResourceCount :: Prelude.Maybe Prelude.Integer,+    -- | Represents the health of an Amazon Web Services service. This is a+    -- @ServiceInsightHealth@ that contains the number of open proactive and+    -- reactive insights for this service.+    insight :: Prelude.Maybe ServiceInsightHealth,+    -- | The name of the Amazon Web Services service.+    serviceName :: Prelude.Maybe ServiceName+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ServiceHealth' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'analyzedResourceCount', 'serviceHealth_analyzedResourceCount' - Number of resources that DevOps Guru is monitoring in an analyzed Amazon+-- Web Services service.+--+-- 'insight', 'serviceHealth_insight' - Represents the health of an Amazon Web Services service. This is a+-- @ServiceInsightHealth@ that contains the number of open proactive and+-- reactive insights for this service.+--+-- 'serviceName', 'serviceHealth_serviceName' - The name of the Amazon Web Services service.+newServiceHealth ::+  ServiceHealth+newServiceHealth =+  ServiceHealth'+    { analyzedResourceCount =+        Prelude.Nothing,+      insight = Prelude.Nothing,+      serviceName = Prelude.Nothing+    }++-- | Number of resources that DevOps Guru is monitoring in an analyzed Amazon+-- Web Services service.+serviceHealth_analyzedResourceCount :: Lens.Lens' ServiceHealth (Prelude.Maybe Prelude.Integer)+serviceHealth_analyzedResourceCount = Lens.lens (\ServiceHealth' {analyzedResourceCount} -> analyzedResourceCount) (\s@ServiceHealth' {} a -> s {analyzedResourceCount = a} :: ServiceHealth)++-- | Represents the health of an Amazon Web Services service. This is a+-- @ServiceInsightHealth@ that contains the number of open proactive and+-- reactive insights for this service.+serviceHealth_insight :: Lens.Lens' ServiceHealth (Prelude.Maybe ServiceInsightHealth)+serviceHealth_insight = Lens.lens (\ServiceHealth' {insight} -> insight) (\s@ServiceHealth' {} a -> s {insight = a} :: ServiceHealth)++-- | The name of the Amazon Web Services service.+serviceHealth_serviceName :: Lens.Lens' ServiceHealth (Prelude.Maybe ServiceName)+serviceHealth_serviceName = Lens.lens (\ServiceHealth' {serviceName} -> serviceName) (\s@ServiceHealth' {} a -> s {serviceName = a} :: ServiceHealth)++instance Data.FromJSON ServiceHealth where+  parseJSON =+    Data.withObject+      "ServiceHealth"+      ( \x ->+          ServiceHealth'+            Prelude.<$> (x Data..:? "AnalyzedResourceCount")+            Prelude.<*> (x Data..:? "Insight")+            Prelude.<*> (x Data..:? "ServiceName")+      )++instance Prelude.Hashable ServiceHealth where+  hashWithSalt _salt ServiceHealth' {..} =+    _salt+      `Prelude.hashWithSalt` analyzedResourceCount+      `Prelude.hashWithSalt` insight+      `Prelude.hashWithSalt` serviceName++instance Prelude.NFData ServiceHealth where+  rnf ServiceHealth' {..} =+    Prelude.rnf analyzedResourceCount+      `Prelude.seq` Prelude.rnf insight+      `Prelude.seq` Prelude.rnf serviceName
+ gen/Amazonka/DevOpsGuru/Types/ServiceInsightHealth.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.DevOpsGuru.Types.ServiceInsightHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ServiceInsightHealth where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains the number of open proactive and reactive insights in an+-- analyzed Amazon Web Services service.+--+-- /See:/ 'newServiceInsightHealth' smart constructor.+data ServiceInsightHealth = ServiceInsightHealth'+  { -- | The number of open proactive insights in the Amazon Web Services service+    openProactiveInsights :: Prelude.Maybe Prelude.Int,+    -- | The number of open reactive insights in the Amazon Web Services service+    openReactiveInsights :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ServiceInsightHealth' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'openProactiveInsights', 'serviceInsightHealth_openProactiveInsights' - The number of open proactive insights in the Amazon Web Services service+--+-- 'openReactiveInsights', 'serviceInsightHealth_openReactiveInsights' - The number of open reactive insights in the Amazon Web Services service+newServiceInsightHealth ::+  ServiceInsightHealth+newServiceInsightHealth =+  ServiceInsightHealth'+    { openProactiveInsights =+        Prelude.Nothing,+      openReactiveInsights = Prelude.Nothing+    }++-- | The number of open proactive insights in the Amazon Web Services service+serviceInsightHealth_openProactiveInsights :: Lens.Lens' ServiceInsightHealth (Prelude.Maybe Prelude.Int)+serviceInsightHealth_openProactiveInsights = Lens.lens (\ServiceInsightHealth' {openProactiveInsights} -> openProactiveInsights) (\s@ServiceInsightHealth' {} a -> s {openProactiveInsights = a} :: ServiceInsightHealth)++-- | The number of open reactive insights in the Amazon Web Services service+serviceInsightHealth_openReactiveInsights :: Lens.Lens' ServiceInsightHealth (Prelude.Maybe Prelude.Int)+serviceInsightHealth_openReactiveInsights = Lens.lens (\ServiceInsightHealth' {openReactiveInsights} -> openReactiveInsights) (\s@ServiceInsightHealth' {} a -> s {openReactiveInsights = a} :: ServiceInsightHealth)++instance Data.FromJSON ServiceInsightHealth where+  parseJSON =+    Data.withObject+      "ServiceInsightHealth"+      ( \x ->+          ServiceInsightHealth'+            Prelude.<$> (x Data..:? "OpenProactiveInsights")+            Prelude.<*> (x Data..:? "OpenReactiveInsights")+      )++instance Prelude.Hashable ServiceInsightHealth where+  hashWithSalt _salt ServiceInsightHealth' {..} =+    _salt+      `Prelude.hashWithSalt` openProactiveInsights+      `Prelude.hashWithSalt` openReactiveInsights++instance Prelude.NFData ServiceInsightHealth where+  rnf ServiceInsightHealth' {..} =+    Prelude.rnf openProactiveInsights+      `Prelude.seq` Prelude.rnf openReactiveInsights
+ gen/Amazonka/DevOpsGuru/Types/ServiceIntegrationConfig.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.DevOpsGuru.Types.ServiceIntegrationConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ServiceIntegrationConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.LogsAnomalyDetectionIntegration+import Amazonka.DevOpsGuru.Types.OpsCenterIntegration+import qualified Amazonka.Prelude as Prelude++-- | Information about the integration of DevOps Guru with another Amazon Web+-- Services service, such as Amazon Web Services Systems Manager.+--+-- /See:/ 'newServiceIntegrationConfig' smart constructor.+data ServiceIntegrationConfig = ServiceIntegrationConfig'+  { -- | Information about whether DevOps Guru is configured to perform log+    -- anomaly detection on Amazon CloudWatch log groups.+    logsAnomalyDetection :: Prelude.Maybe LogsAnomalyDetectionIntegration,+    -- | Information about whether DevOps Guru is configured to create an OpsItem+    -- in Amazon Web Services Systems Manager OpsCenter for each created+    -- insight.+    opsCenter :: Prelude.Maybe OpsCenterIntegration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ServiceIntegrationConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'logsAnomalyDetection', 'serviceIntegrationConfig_logsAnomalyDetection' - Information about whether DevOps Guru is configured to perform log+-- anomaly detection on Amazon CloudWatch log groups.+--+-- 'opsCenter', 'serviceIntegrationConfig_opsCenter' - Information about whether DevOps Guru is configured to create an OpsItem+-- in Amazon Web Services Systems Manager OpsCenter for each created+-- insight.+newServiceIntegrationConfig ::+  ServiceIntegrationConfig+newServiceIntegrationConfig =+  ServiceIntegrationConfig'+    { logsAnomalyDetection =+        Prelude.Nothing,+      opsCenter = Prelude.Nothing+    }++-- | Information about whether DevOps Guru is configured to perform log+-- anomaly detection on Amazon CloudWatch log groups.+serviceIntegrationConfig_logsAnomalyDetection :: Lens.Lens' ServiceIntegrationConfig (Prelude.Maybe LogsAnomalyDetectionIntegration)+serviceIntegrationConfig_logsAnomalyDetection = Lens.lens (\ServiceIntegrationConfig' {logsAnomalyDetection} -> logsAnomalyDetection) (\s@ServiceIntegrationConfig' {} a -> s {logsAnomalyDetection = a} :: ServiceIntegrationConfig)++-- | Information about whether DevOps Guru is configured to create an OpsItem+-- in Amazon Web Services Systems Manager OpsCenter for each created+-- insight.+serviceIntegrationConfig_opsCenter :: Lens.Lens' ServiceIntegrationConfig (Prelude.Maybe OpsCenterIntegration)+serviceIntegrationConfig_opsCenter = Lens.lens (\ServiceIntegrationConfig' {opsCenter} -> opsCenter) (\s@ServiceIntegrationConfig' {} a -> s {opsCenter = a} :: ServiceIntegrationConfig)++instance Data.FromJSON ServiceIntegrationConfig where+  parseJSON =+    Data.withObject+      "ServiceIntegrationConfig"+      ( \x ->+          ServiceIntegrationConfig'+            Prelude.<$> (x Data..:? "LogsAnomalyDetection")+            Prelude.<*> (x Data..:? "OpsCenter")+      )++instance Prelude.Hashable ServiceIntegrationConfig where+  hashWithSalt _salt ServiceIntegrationConfig' {..} =+    _salt+      `Prelude.hashWithSalt` logsAnomalyDetection+      `Prelude.hashWithSalt` opsCenter++instance Prelude.NFData ServiceIntegrationConfig where+  rnf ServiceIntegrationConfig' {..} =+    Prelude.rnf logsAnomalyDetection+      `Prelude.seq` Prelude.rnf opsCenter
+ gen/Amazonka/DevOpsGuru/Types/ServiceName.hs view
@@ -0,0 +1,186 @@+{-# 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.DevOpsGuru.Types.ServiceName+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ServiceName+  ( ServiceName+      ( ..,+        ServiceName_API_GATEWAY,+        ServiceName_APPLICATION_ELB,+        ServiceName_AUTO_SCALING_GROUP,+        ServiceName_CLOUD_FRONT,+        ServiceName_DYNAMO_DB,+        ServiceName_EC2,+        ServiceName_ECS,+        ServiceName_EKS,+        ServiceName_ELASTIC_BEANSTALK,+        ServiceName_ELASTI_CACHE,+        ServiceName_ELB,+        ServiceName_ES,+        ServiceName_KINESIS,+        ServiceName_LAMBDA,+        ServiceName_NAT_GATEWAY,+        ServiceName_NETWORK_ELB,+        ServiceName_RDS,+        ServiceName_REDSHIFT,+        ServiceName_ROUTE_53,+        ServiceName_S3,+        ServiceName_SAGE_MAKER,+        ServiceName_SNS,+        ServiceName_SQS,+        ServiceName_STEP_FUNCTIONS,+        ServiceName_SWF+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ServiceName = ServiceName'+  { fromServiceName ::+      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 ServiceName_API_GATEWAY :: ServiceName+pattern ServiceName_API_GATEWAY = ServiceName' "API_GATEWAY"++pattern ServiceName_APPLICATION_ELB :: ServiceName+pattern ServiceName_APPLICATION_ELB = ServiceName' "APPLICATION_ELB"++pattern ServiceName_AUTO_SCALING_GROUP :: ServiceName+pattern ServiceName_AUTO_SCALING_GROUP = ServiceName' "AUTO_SCALING_GROUP"++pattern ServiceName_CLOUD_FRONT :: ServiceName+pattern ServiceName_CLOUD_FRONT = ServiceName' "CLOUD_FRONT"++pattern ServiceName_DYNAMO_DB :: ServiceName+pattern ServiceName_DYNAMO_DB = ServiceName' "DYNAMO_DB"++pattern ServiceName_EC2 :: ServiceName+pattern ServiceName_EC2 = ServiceName' "EC2"++pattern ServiceName_ECS :: ServiceName+pattern ServiceName_ECS = ServiceName' "ECS"++pattern ServiceName_EKS :: ServiceName+pattern ServiceName_EKS = ServiceName' "EKS"++pattern ServiceName_ELASTIC_BEANSTALK :: ServiceName+pattern ServiceName_ELASTIC_BEANSTALK = ServiceName' "ELASTIC_BEANSTALK"++pattern ServiceName_ELASTI_CACHE :: ServiceName+pattern ServiceName_ELASTI_CACHE = ServiceName' "ELASTI_CACHE"++pattern ServiceName_ELB :: ServiceName+pattern ServiceName_ELB = ServiceName' "ELB"++pattern ServiceName_ES :: ServiceName+pattern ServiceName_ES = ServiceName' "ES"++pattern ServiceName_KINESIS :: ServiceName+pattern ServiceName_KINESIS = ServiceName' "KINESIS"++pattern ServiceName_LAMBDA :: ServiceName+pattern ServiceName_LAMBDA = ServiceName' "LAMBDA"++pattern ServiceName_NAT_GATEWAY :: ServiceName+pattern ServiceName_NAT_GATEWAY = ServiceName' "NAT_GATEWAY"++pattern ServiceName_NETWORK_ELB :: ServiceName+pattern ServiceName_NETWORK_ELB = ServiceName' "NETWORK_ELB"++pattern ServiceName_RDS :: ServiceName+pattern ServiceName_RDS = ServiceName' "RDS"++pattern ServiceName_REDSHIFT :: ServiceName+pattern ServiceName_REDSHIFT = ServiceName' "REDSHIFT"++pattern ServiceName_ROUTE_53 :: ServiceName+pattern ServiceName_ROUTE_53 = ServiceName' "ROUTE_53"++pattern ServiceName_S3 :: ServiceName+pattern ServiceName_S3 = ServiceName' "S3"++pattern ServiceName_SAGE_MAKER :: ServiceName+pattern ServiceName_SAGE_MAKER = ServiceName' "SAGE_MAKER"++pattern ServiceName_SNS :: ServiceName+pattern ServiceName_SNS = ServiceName' "SNS"++pattern ServiceName_SQS :: ServiceName+pattern ServiceName_SQS = ServiceName' "SQS"++pattern ServiceName_STEP_FUNCTIONS :: ServiceName+pattern ServiceName_STEP_FUNCTIONS = ServiceName' "STEP_FUNCTIONS"++pattern ServiceName_SWF :: ServiceName+pattern ServiceName_SWF = ServiceName' "SWF"++{-# COMPLETE+  ServiceName_API_GATEWAY,+  ServiceName_APPLICATION_ELB,+  ServiceName_AUTO_SCALING_GROUP,+  ServiceName_CLOUD_FRONT,+  ServiceName_DYNAMO_DB,+  ServiceName_EC2,+  ServiceName_ECS,+  ServiceName_EKS,+  ServiceName_ELASTIC_BEANSTALK,+  ServiceName_ELASTI_CACHE,+  ServiceName_ELB,+  ServiceName_ES,+  ServiceName_KINESIS,+  ServiceName_LAMBDA,+  ServiceName_NAT_GATEWAY,+  ServiceName_NETWORK_ELB,+  ServiceName_RDS,+  ServiceName_REDSHIFT,+  ServiceName_ROUTE_53,+  ServiceName_S3,+  ServiceName_SAGE_MAKER,+  ServiceName_SNS,+  ServiceName_SQS,+  ServiceName_STEP_FUNCTIONS,+  ServiceName_SWF,+  ServiceName'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/ServiceResourceCost.hs view
@@ -0,0 +1,152 @@+{-# 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.DevOpsGuru.Types.ServiceResourceCost+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.ServiceResourceCost where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.CostEstimationServiceResourceState+import qualified Amazonka.Prelude as Prelude++-- | An object that contains information about the estimated monthly cost to+-- analyze an Amazon Web Services resource. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/cost-estimate.html Estimate your Amazon DevOps Guru costs>+-- and+-- <http://aws.amazon.com/devops-guru/pricing/ Amazon DevOps Guru pricing>.+--+-- /See:/ 'newServiceResourceCost' smart constructor.+data ServiceResourceCost = ServiceResourceCost'+  { -- | The total estimated monthly cost to analyze the active resources for+    -- this resource.+    cost :: Prelude.Maybe Prelude.Double,+    -- | The number of active resources analyzed for this service to create a+    -- monthly cost estimate.+    count :: Prelude.Maybe Prelude.Int,+    -- | The state of the resource. The resource is @ACTIVE@ if it produces+    -- metrics, events, or logs within an hour, otherwise it is @INACTIVE@. You+    -- pay for the number of active Amazon Web Services resource hours analyzed+    -- for each resource. Inactive resources are not charged.+    state :: Prelude.Maybe CostEstimationServiceResourceState,+    -- | The type of the Amazon Web Services resource.+    type' :: Prelude.Maybe Prelude.Text,+    -- | The price per hour to analyze the resources in the service. For more+    -- information, see+    -- <https://docs.aws.amazon.com/devops-guru/latest/userguide/cost-estimate.html Estimate your Amazon DevOps Guru costs>+    -- and+    -- <http://aws.amazon.com/devops-guru/pricing/ Amazon DevOps Guru pricing>.+    unitCost :: Prelude.Maybe Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ServiceResourceCost' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cost', 'serviceResourceCost_cost' - The total estimated monthly cost to analyze the active resources for+-- this resource.+--+-- 'count', 'serviceResourceCost_count' - The number of active resources analyzed for this service to create a+-- monthly cost estimate.+--+-- 'state', 'serviceResourceCost_state' - The state of the resource. The resource is @ACTIVE@ if it produces+-- metrics, events, or logs within an hour, otherwise it is @INACTIVE@. You+-- pay for the number of active Amazon Web Services resource hours analyzed+-- for each resource. Inactive resources are not charged.+--+-- 'type'', 'serviceResourceCost_type' - The type of the Amazon Web Services resource.+--+-- 'unitCost', 'serviceResourceCost_unitCost' - The price per hour to analyze the resources in the service. For more+-- information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/cost-estimate.html Estimate your Amazon DevOps Guru costs>+-- and+-- <http://aws.amazon.com/devops-guru/pricing/ Amazon DevOps Guru pricing>.+newServiceResourceCost ::+  ServiceResourceCost+newServiceResourceCost =+  ServiceResourceCost'+    { cost = Prelude.Nothing,+      count = Prelude.Nothing,+      state = Prelude.Nothing,+      type' = Prelude.Nothing,+      unitCost = Prelude.Nothing+    }++-- | The total estimated monthly cost to analyze the active resources for+-- this resource.+serviceResourceCost_cost :: Lens.Lens' ServiceResourceCost (Prelude.Maybe Prelude.Double)+serviceResourceCost_cost = Lens.lens (\ServiceResourceCost' {cost} -> cost) (\s@ServiceResourceCost' {} a -> s {cost = a} :: ServiceResourceCost)++-- | The number of active resources analyzed for this service to create a+-- monthly cost estimate.+serviceResourceCost_count :: Lens.Lens' ServiceResourceCost (Prelude.Maybe Prelude.Int)+serviceResourceCost_count = Lens.lens (\ServiceResourceCost' {count} -> count) (\s@ServiceResourceCost' {} a -> s {count = a} :: ServiceResourceCost)++-- | The state of the resource. The resource is @ACTIVE@ if it produces+-- metrics, events, or logs within an hour, otherwise it is @INACTIVE@. You+-- pay for the number of active Amazon Web Services resource hours analyzed+-- for each resource. Inactive resources are not charged.+serviceResourceCost_state :: Lens.Lens' ServiceResourceCost (Prelude.Maybe CostEstimationServiceResourceState)+serviceResourceCost_state = Lens.lens (\ServiceResourceCost' {state} -> state) (\s@ServiceResourceCost' {} a -> s {state = a} :: ServiceResourceCost)++-- | The type of the Amazon Web Services resource.+serviceResourceCost_type :: Lens.Lens' ServiceResourceCost (Prelude.Maybe Prelude.Text)+serviceResourceCost_type = Lens.lens (\ServiceResourceCost' {type'} -> type') (\s@ServiceResourceCost' {} a -> s {type' = a} :: ServiceResourceCost)++-- | The price per hour to analyze the resources in the service. For more+-- information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/cost-estimate.html Estimate your Amazon DevOps Guru costs>+-- and+-- <http://aws.amazon.com/devops-guru/pricing/ Amazon DevOps Guru pricing>.+serviceResourceCost_unitCost :: Lens.Lens' ServiceResourceCost (Prelude.Maybe Prelude.Double)+serviceResourceCost_unitCost = Lens.lens (\ServiceResourceCost' {unitCost} -> unitCost) (\s@ServiceResourceCost' {} a -> s {unitCost = a} :: ServiceResourceCost)++instance Data.FromJSON ServiceResourceCost where+  parseJSON =+    Data.withObject+      "ServiceResourceCost"+      ( \x ->+          ServiceResourceCost'+            Prelude.<$> (x Data..:? "Cost")+            Prelude.<*> (x Data..:? "Count")+            Prelude.<*> (x Data..:? "State")+            Prelude.<*> (x Data..:? "Type")+            Prelude.<*> (x Data..:? "UnitCost")+      )++instance Prelude.Hashable ServiceResourceCost where+  hashWithSalt _salt ServiceResourceCost' {..} =+    _salt+      `Prelude.hashWithSalt` cost+      `Prelude.hashWithSalt` count+      `Prelude.hashWithSalt` state+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` unitCost++instance Prelude.NFData ServiceResourceCost where+  rnf ServiceResourceCost' {..} =+    Prelude.rnf cost+      `Prelude.seq` Prelude.rnf count+      `Prelude.seq` Prelude.rnf state+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf unitCost
+ gen/Amazonka/DevOpsGuru/Types/SnsChannelConfig.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.DevOpsGuru.Types.SnsChannelConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.SnsChannelConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains the Amazon Resource Name (ARN) of an Amazon Simple Notification+-- Service topic.+--+-- If you use an Amazon SNS topic in another account, you must attach a+-- policy to it that grants DevOps Guru permission to it notifications.+-- DevOps Guru adds the required policy on your behalf to send+-- notifications using Amazon SNS in your account. DevOps Guru only+-- supports standard SNS topics. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-required-permissions.html Permissions for cross account Amazon SNS topics>.+--+-- If you use an Amazon SNS topic in another account, you must attach a+-- policy to it that grants DevOps Guru permission to it notifications.+-- DevOps Guru adds the required policy on your behalf to send+-- notifications using Amazon SNS in your account. For more information,+-- see Permissions for cross account Amazon SNS topics.+--+-- If you use an Amazon SNS topic that is encrypted by an Amazon Web+-- Services Key Management Service customer-managed key (CMK), then you+-- must add permissions to the CMK. For more information, see+-- <https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-kms-permissions.html Permissions for Amazon Web Services KMS–encrypted Amazon SNS topics>.+--+-- /See:/ 'newSnsChannelConfig' smart constructor.+data SnsChannelConfig = SnsChannelConfig'+  { -- | The Amazon Resource Name (ARN) of an Amazon Simple Notification Service+    -- topic.+    topicArn :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SnsChannelConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'topicArn', 'snsChannelConfig_topicArn' - The Amazon Resource Name (ARN) of an Amazon Simple Notification Service+-- topic.+newSnsChannelConfig ::+  SnsChannelConfig+newSnsChannelConfig =+  SnsChannelConfig' {topicArn = Prelude.Nothing}++-- | The Amazon Resource Name (ARN) of an Amazon Simple Notification Service+-- topic.+snsChannelConfig_topicArn :: Lens.Lens' SnsChannelConfig (Prelude.Maybe Prelude.Text)+snsChannelConfig_topicArn = Lens.lens (\SnsChannelConfig' {topicArn} -> topicArn) (\s@SnsChannelConfig' {} a -> s {topicArn = a} :: SnsChannelConfig)++instance Data.FromJSON SnsChannelConfig where+  parseJSON =+    Data.withObject+      "SnsChannelConfig"+      ( \x ->+          SnsChannelConfig'+            Prelude.<$> (x Data..:? "TopicArn")+      )++instance Prelude.Hashable SnsChannelConfig where+  hashWithSalt _salt SnsChannelConfig' {..} =+    _salt `Prelude.hashWithSalt` topicArn++instance Prelude.NFData SnsChannelConfig where+  rnf SnsChannelConfig' {..} = Prelude.rnf topicArn++instance Data.ToJSON SnsChannelConfig where+  toJSON SnsChannelConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [("TopicArn" Data..=) Prelude.<$> topicArn]+      )
+ gen/Amazonka/DevOpsGuru/Types/StartTimeRange.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.DevOpsGuru.Types.StartTimeRange+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.StartTimeRange where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A time range used to specify when the behavior of an insight or anomaly+-- started.+--+-- /See:/ 'newStartTimeRange' smart constructor.+data StartTimeRange = StartTimeRange'+  { -- | The start time of the time range.+    fromTime :: Prelude.Maybe Data.POSIX,+    -- | The end time of the time range.+    toTime :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartTimeRange' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fromTime', 'startTimeRange_fromTime' - The start time of the time range.+--+-- 'toTime', 'startTimeRange_toTime' - The end time of the time range.+newStartTimeRange ::+  StartTimeRange+newStartTimeRange =+  StartTimeRange'+    { fromTime = Prelude.Nothing,+      toTime = Prelude.Nothing+    }++-- | The start time of the time range.+startTimeRange_fromTime :: Lens.Lens' StartTimeRange (Prelude.Maybe Prelude.UTCTime)+startTimeRange_fromTime = Lens.lens (\StartTimeRange' {fromTime} -> fromTime) (\s@StartTimeRange' {} a -> s {fromTime = a} :: StartTimeRange) Prelude.. Lens.mapping Data._Time++-- | The end time of the time range.+startTimeRange_toTime :: Lens.Lens' StartTimeRange (Prelude.Maybe Prelude.UTCTime)+startTimeRange_toTime = Lens.lens (\StartTimeRange' {toTime} -> toTime) (\s@StartTimeRange' {} a -> s {toTime = a} :: StartTimeRange) Prelude.. Lens.mapping Data._Time++instance Prelude.Hashable StartTimeRange where+  hashWithSalt _salt StartTimeRange' {..} =+    _salt+      `Prelude.hashWithSalt` fromTime+      `Prelude.hashWithSalt` toTime++instance Prelude.NFData StartTimeRange where+  rnf StartTimeRange' {..} =+    Prelude.rnf fromTime+      `Prelude.seq` Prelude.rnf toTime++instance Data.ToJSON StartTimeRange where+  toJSON StartTimeRange' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("FromTime" Data..=) Prelude.<$> fromTime,+            ("ToTime" Data..=) Prelude.<$> toTime+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/TagCollection.hs view
@@ -0,0 +1,191 @@+{-# 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.DevOpsGuru.Types.TagCollection+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.TagCollection where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A collection of Amazon Web Services tags.+--+-- Tags help you identify and organize your Amazon Web Services resources.+-- Many Amazon Web Services services support tagging, so you can assign the+-- same tag to resources from different services to indicate that the+-- resources are related. For example, you can assign the same tag to an+-- Amazon DynamoDB table resource that you assign to an Lambda function.+-- For more information about using tags, see the+-- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+-- whitepaper.+--+-- Each Amazon Web Services tag has two parts.+--+-- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+--     @Secret@). Tag /keys/ are case-sensitive.+--+-- -   An optional field known as a tag /value/ (for example,+--     @111122223333@, @Production@, or a team name). Omitting the tag+--     /value/ is the same as using an empty string. Like tag /keys/, tag+--     /values/ are case-sensitive.+--+-- Together these are known as /key/-/value/ pairs.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+--+-- /See:/ 'newTagCollection' smart constructor.+data TagCollection = TagCollection'+  { -- | An Amazon Web Services tag /key/ that is used to identify the Amazon Web+    -- Services resources that DevOps Guru analyzes. All Amazon Web Services+    -- resources in your account and Region tagged with this /key/ make up your+    -- DevOps Guru application and analysis boundary.+    --+    -- The string used for a /key/ in a tag that you use to define your+    -- resource coverage must begin with the prefix @Devops-guru-@. The tag+    -- /key/ might be @DevOps-Guru-deployment-application@ or+    -- @devops-guru-rds-application@. When you create a /key/, the case of+    -- characters in the /key/ can be whatever you choose. After you create a+    -- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+    -- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+    -- act as two different /keys/. Possible /key/\//value/ pairs in your+    -- application might be @Devops-Guru-production-application\/RDS@ or+    -- @Devops-Guru-production-application\/containers@.+    appBoundaryKey :: Prelude.Text,+    -- | The values in an Amazon Web Services tag collection.+    --+    -- The tag\'s /value/ is an optional field used to associate a string with+    -- the tag /key/ (for example, @111122223333@, @Production@, or a team+    -- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+    -- /value/ is the same as using an empty string. Like tag /keys/, tag+    -- /values/ are case-sensitive. You can specify a maximum of 256 characters+    -- for a tag value.+    tagValues :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagCollection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'appBoundaryKey', 'tagCollection_appBoundaryKey' - An Amazon Web Services tag /key/ that is used to identify the Amazon Web+-- Services resources that DevOps Guru analyzes. All Amazon Web Services+-- resources in your account and Region tagged with this /key/ make up your+-- DevOps Guru application and analysis boundary.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+--+-- 'tagValues', 'tagCollection_tagValues' - The values in an Amazon Web Services tag collection.+--+-- The tag\'s /value/ is an optional field used to associate a string with+-- the tag /key/ (for example, @111122223333@, @Production@, or a team+-- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+-- /value/ is the same as using an empty string. Like tag /keys/, tag+-- /values/ are case-sensitive. You can specify a maximum of 256 characters+-- for a tag value.+newTagCollection ::+  -- | 'appBoundaryKey'+  Prelude.Text ->+  TagCollection+newTagCollection pAppBoundaryKey_ =+  TagCollection'+    { appBoundaryKey = pAppBoundaryKey_,+      tagValues = Prelude.mempty+    }++-- | An Amazon Web Services tag /key/ that is used to identify the Amazon Web+-- Services resources that DevOps Guru analyzes. All Amazon Web Services+-- resources in your account and Region tagged with this /key/ make up your+-- DevOps Guru application and analysis boundary.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+tagCollection_appBoundaryKey :: Lens.Lens' TagCollection Prelude.Text+tagCollection_appBoundaryKey = Lens.lens (\TagCollection' {appBoundaryKey} -> appBoundaryKey) (\s@TagCollection' {} a -> s {appBoundaryKey = a} :: TagCollection)++-- | The values in an Amazon Web Services tag collection.+--+-- The tag\'s /value/ is an optional field used to associate a string with+-- the tag /key/ (for example, @111122223333@, @Production@, or a team+-- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+-- /value/ is the same as using an empty string. Like tag /keys/, tag+-- /values/ are case-sensitive. You can specify a maximum of 256 characters+-- for a tag value.+tagCollection_tagValues :: Lens.Lens' TagCollection [Prelude.Text]+tagCollection_tagValues = Lens.lens (\TagCollection' {tagValues} -> tagValues) (\s@TagCollection' {} a -> s {tagValues = a} :: TagCollection) Prelude.. Lens.coerced++instance Data.FromJSON TagCollection where+  parseJSON =+    Data.withObject+      "TagCollection"+      ( \x ->+          TagCollection'+            Prelude.<$> (x Data..: "AppBoundaryKey")+            Prelude.<*> (x Data..:? "TagValues" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable TagCollection where+  hashWithSalt _salt TagCollection' {..} =+    _salt+      `Prelude.hashWithSalt` appBoundaryKey+      `Prelude.hashWithSalt` tagValues++instance Prelude.NFData TagCollection where+  rnf TagCollection' {..} =+    Prelude.rnf appBoundaryKey+      `Prelude.seq` Prelude.rnf tagValues++instance Data.ToJSON TagCollection where+  toJSON TagCollection' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("AppBoundaryKey" Data..= appBoundaryKey),+            Prelude.Just ("TagValues" Data..= tagValues)+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/TagCollectionFilter.hs view
@@ -0,0 +1,152 @@+{-# 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.DevOpsGuru.Types.TagCollectionFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.TagCollectionFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A collection of Amazon Web Services tags used to filter insights. This+-- is used to return insights generated from only resources that contain+-- the tags in the tag collection.+--+-- /See:/ 'newTagCollectionFilter' smart constructor.+data TagCollectionFilter = TagCollectionFilter'+  { -- | An Amazon Web Services tag /key/ that is used to identify the Amazon Web+    -- Services resources that DevOps Guru analyzes. All Amazon Web Services+    -- resources in your account and Region tagged with this /key/ make up your+    -- DevOps Guru application and analysis boundary.+    --+    -- The string used for a /key/ in a tag that you use to define your+    -- resource coverage must begin with the prefix @Devops-guru-@. The tag+    -- /key/ might be @DevOps-Guru-deployment-application@ or+    -- @devops-guru-rds-application@. When you create a /key/, the case of+    -- characters in the /key/ can be whatever you choose. After you create a+    -- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+    -- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+    -- act as two different /keys/. Possible /key/\//value/ pairs in your+    -- application might be @Devops-Guru-production-application\/RDS@ or+    -- @Devops-Guru-production-application\/containers@.+    appBoundaryKey :: Prelude.Text,+    -- | The values in an Amazon Web Services tag collection.+    --+    -- The tag\'s /value/ is an optional field used to associate a string with+    -- the tag /key/ (for example, @111122223333@, @Production@, or a team+    -- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+    -- /value/ is the same as using an empty string. Like tag /keys/, tag+    -- /values/ are case-sensitive. You can specify a maximum of 256 characters+    -- for a tag value.+    tagValues :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagCollectionFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'appBoundaryKey', 'tagCollectionFilter_appBoundaryKey' - An Amazon Web Services tag /key/ that is used to identify the Amazon Web+-- Services resources that DevOps Guru analyzes. All Amazon Web Services+-- resources in your account and Region tagged with this /key/ make up your+-- DevOps Guru application and analysis boundary.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+--+-- 'tagValues', 'tagCollectionFilter_tagValues' - The values in an Amazon Web Services tag collection.+--+-- The tag\'s /value/ is an optional field used to associate a string with+-- the tag /key/ (for example, @111122223333@, @Production@, or a team+-- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+-- /value/ is the same as using an empty string. Like tag /keys/, tag+-- /values/ are case-sensitive. You can specify a maximum of 256 characters+-- for a tag value.+newTagCollectionFilter ::+  -- | 'appBoundaryKey'+  Prelude.Text ->+  TagCollectionFilter+newTagCollectionFilter pAppBoundaryKey_ =+  TagCollectionFilter'+    { appBoundaryKey =+        pAppBoundaryKey_,+      tagValues = Prelude.mempty+    }++-- | An Amazon Web Services tag /key/ that is used to identify the Amazon Web+-- Services resources that DevOps Guru analyzes. All Amazon Web Services+-- resources in your account and Region tagged with this /key/ make up your+-- DevOps Guru application and analysis boundary.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+tagCollectionFilter_appBoundaryKey :: Lens.Lens' TagCollectionFilter Prelude.Text+tagCollectionFilter_appBoundaryKey = Lens.lens (\TagCollectionFilter' {appBoundaryKey} -> appBoundaryKey) (\s@TagCollectionFilter' {} a -> s {appBoundaryKey = a} :: TagCollectionFilter)++-- | The values in an Amazon Web Services tag collection.+--+-- The tag\'s /value/ is an optional field used to associate a string with+-- the tag /key/ (for example, @111122223333@, @Production@, or a team+-- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+-- /value/ is the same as using an empty string. Like tag /keys/, tag+-- /values/ are case-sensitive. You can specify a maximum of 256 characters+-- for a tag value.+tagCollectionFilter_tagValues :: Lens.Lens' TagCollectionFilter [Prelude.Text]+tagCollectionFilter_tagValues = Lens.lens (\TagCollectionFilter' {tagValues} -> tagValues) (\s@TagCollectionFilter' {} a -> s {tagValues = a} :: TagCollectionFilter) Prelude.. Lens.coerced++instance Data.FromJSON TagCollectionFilter where+  parseJSON =+    Data.withObject+      "TagCollectionFilter"+      ( \x ->+          TagCollectionFilter'+            Prelude.<$> (x Data..: "AppBoundaryKey")+            Prelude.<*> (x Data..:? "TagValues" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable TagCollectionFilter where+  hashWithSalt _salt TagCollectionFilter' {..} =+    _salt+      `Prelude.hashWithSalt` appBoundaryKey+      `Prelude.hashWithSalt` tagValues++instance Prelude.NFData TagCollectionFilter where+  rnf TagCollectionFilter' {..} =+    Prelude.rnf appBoundaryKey+      `Prelude.seq` Prelude.rnf tagValues
+ gen/Amazonka/DevOpsGuru/Types/TagCostEstimationResourceCollectionFilter.hs view
@@ -0,0 +1,188 @@+{-# 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.DevOpsGuru.Types.TagCostEstimationResourceCollectionFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.TagCostEstimationResourceCollectionFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Information about a collection of Amazon Web Services resources that are+-- identified by an Amazon Web Services tag. This collection of resources+-- is used to create a monthly cost estimate for DevOps Guru to analyze+-- Amazon Web Services resources. The maximum number of tags you can+-- specify for a cost estimate is one. The estimate created is for the cost+-- to analyze the Amazon Web Services resources defined by the tag. For+-- more information, see+-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html Stacks>+-- in the /Amazon Web Services CloudFormation User Guide/.+--+-- /See:/ 'newTagCostEstimationResourceCollectionFilter' smart constructor.+data TagCostEstimationResourceCollectionFilter = TagCostEstimationResourceCollectionFilter'+  { -- | An Amazon Web Services tag /key/ that is used to identify the Amazon Web+    -- Services resources that DevOps Guru analyzes. All Amazon Web Services+    -- resources in your account and Region tagged with this /key/ make up your+    -- DevOps Guru application and analysis boundary.+    --+    -- The string used for a /key/ in a tag that you use to define your+    -- resource coverage must begin with the prefix @Devops-guru-@. The tag+    -- /key/ might be @DevOps-Guru-deployment-application@ or+    -- @devops-guru-rds-application@. When you create a /key/, the case of+    -- characters in the /key/ can be whatever you choose. After you create a+    -- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+    -- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+    -- act as two different /keys/. Possible /key/\//value/ pairs in your+    -- application might be @Devops-Guru-production-application\/RDS@ or+    -- @Devops-Guru-production-application\/containers@.+    appBoundaryKey :: Prelude.Text,+    -- | The values in an Amazon Web Services tag collection.+    --+    -- The tag\'s /value/ is an optional field used to associate a string with+    -- the tag /key/ (for example, @111122223333@, @Production@, or a team+    -- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+    -- /value/ is the same as using an empty string. Like tag /keys/, tag+    -- /values/ are case-sensitive. You can specify a maximum of 256 characters+    -- for a tag value.+    tagValues :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagCostEstimationResourceCollectionFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'appBoundaryKey', 'tagCostEstimationResourceCollectionFilter_appBoundaryKey' - An Amazon Web Services tag /key/ that is used to identify the Amazon Web+-- Services resources that DevOps Guru analyzes. All Amazon Web Services+-- resources in your account and Region tagged with this /key/ make up your+-- DevOps Guru application and analysis boundary.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+--+-- 'tagValues', 'tagCostEstimationResourceCollectionFilter_tagValues' - The values in an Amazon Web Services tag collection.+--+-- The tag\'s /value/ is an optional field used to associate a string with+-- the tag /key/ (for example, @111122223333@, @Production@, or a team+-- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+-- /value/ is the same as using an empty string. Like tag /keys/, tag+-- /values/ are case-sensitive. You can specify a maximum of 256 characters+-- for a tag value.+newTagCostEstimationResourceCollectionFilter ::+  -- | 'appBoundaryKey'+  Prelude.Text ->+  -- | 'tagValues'+  Prelude.NonEmpty Prelude.Text ->+  TagCostEstimationResourceCollectionFilter+newTagCostEstimationResourceCollectionFilter+  pAppBoundaryKey_+  pTagValues_ =+    TagCostEstimationResourceCollectionFilter'+      { appBoundaryKey =+          pAppBoundaryKey_,+        tagValues =+          Lens.coerced+            Lens.# pTagValues_+      }++-- | An Amazon Web Services tag /key/ that is used to identify the Amazon Web+-- Services resources that DevOps Guru analyzes. All Amazon Web Services+-- resources in your account and Region tagged with this /key/ make up your+-- DevOps Guru application and analysis boundary.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+tagCostEstimationResourceCollectionFilter_appBoundaryKey :: Lens.Lens' TagCostEstimationResourceCollectionFilter Prelude.Text+tagCostEstimationResourceCollectionFilter_appBoundaryKey = Lens.lens (\TagCostEstimationResourceCollectionFilter' {appBoundaryKey} -> appBoundaryKey) (\s@TagCostEstimationResourceCollectionFilter' {} a -> s {appBoundaryKey = a} :: TagCostEstimationResourceCollectionFilter)++-- | The values in an Amazon Web Services tag collection.+--+-- The tag\'s /value/ is an optional field used to associate a string with+-- the tag /key/ (for example, @111122223333@, @Production@, or a team+-- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+-- /value/ is the same as using an empty string. Like tag /keys/, tag+-- /values/ are case-sensitive. You can specify a maximum of 256 characters+-- for a tag value.+tagCostEstimationResourceCollectionFilter_tagValues :: Lens.Lens' TagCostEstimationResourceCollectionFilter (Prelude.NonEmpty Prelude.Text)+tagCostEstimationResourceCollectionFilter_tagValues = Lens.lens (\TagCostEstimationResourceCollectionFilter' {tagValues} -> tagValues) (\s@TagCostEstimationResourceCollectionFilter' {} a -> s {tagValues = a} :: TagCostEstimationResourceCollectionFilter) Prelude.. Lens.coerced++instance+  Data.FromJSON+    TagCostEstimationResourceCollectionFilter+  where+  parseJSON =+    Data.withObject+      "TagCostEstimationResourceCollectionFilter"+      ( \x ->+          TagCostEstimationResourceCollectionFilter'+            Prelude.<$> (x Data..: "AppBoundaryKey")+            Prelude.<*> (x Data..: "TagValues")+      )++instance+  Prelude.Hashable+    TagCostEstimationResourceCollectionFilter+  where+  hashWithSalt+    _salt+    TagCostEstimationResourceCollectionFilter' {..} =+      _salt+        `Prelude.hashWithSalt` appBoundaryKey+        `Prelude.hashWithSalt` tagValues++instance+  Prelude.NFData+    TagCostEstimationResourceCollectionFilter+  where+  rnf TagCostEstimationResourceCollectionFilter' {..} =+    Prelude.rnf appBoundaryKey+      `Prelude.seq` Prelude.rnf tagValues++instance+  Data.ToJSON+    TagCostEstimationResourceCollectionFilter+  where+  toJSON TagCostEstimationResourceCollectionFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("AppBoundaryKey" Data..= appBoundaryKey),+            Prelude.Just ("TagValues" Data..= tagValues)+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/TagHealth.hs view
@@ -0,0 +1,185 @@+{-# 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.DevOpsGuru.Types.TagHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.TagHealth where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.InsightHealth+import qualified Amazonka.Prelude as Prelude++-- | Information about the health of Amazon Web Services resources in your+-- account that are specified by an Amazon Web Services tag /key/.+--+-- /See:/ 'newTagHealth' smart constructor.+data TagHealth = TagHealth'+  { -- | Number of resources that DevOps Guru is monitoring in your account that+    -- are specified by an Amazon Web Services tag.+    analyzedResourceCount :: Prelude.Maybe Prelude.Integer,+    -- | An Amazon Web Services tag /key/ that is used to identify the Amazon Web+    -- Services resources that DevOps Guru analyzes. All Amazon Web Services+    -- resources in your account and Region tagged with this /key/ make up your+    -- DevOps Guru application and analysis boundary.+    --+    -- The string used for a /key/ in a tag that you use to define your+    -- resource coverage must begin with the prefix @Devops-guru-@. The tag+    -- /key/ might be @DevOps-Guru-deployment-application@ or+    -- @devops-guru-rds-application@. When you create a /key/, the case of+    -- characters in the /key/ can be whatever you choose. After you create a+    -- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+    -- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+    -- act as two different /keys/. Possible /key/\//value/ pairs in your+    -- application might be @Devops-Guru-production-application\/RDS@ or+    -- @Devops-Guru-production-application\/containers@.+    appBoundaryKey :: Prelude.Maybe Prelude.Text,+    -- | Information about the health of the Amazon Web Services resources in+    -- your account that are specified by an Amazon Web Services tag, including+    -- the number of open proactive, open reactive insights, and the Mean Time+    -- to Recover (MTTR) of closed insights.+    insight :: Prelude.Maybe InsightHealth,+    -- | The value in an Amazon Web Services tag.+    --+    -- The tag\'s /value/ is an optional field used to associate a string with+    -- the tag /key/ (for example, @111122223333@, @Production@, or a team+    -- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+    -- /value/ is the same as using an empty string. Like tag /keys/, tag+    -- /values/ are case-sensitive. You can specify a maximum of 256 characters+    -- for a tag value.+    tagValue :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagHealth' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'analyzedResourceCount', 'tagHealth_analyzedResourceCount' - Number of resources that DevOps Guru is monitoring in your account that+-- are specified by an Amazon Web Services tag.+--+-- 'appBoundaryKey', 'tagHealth_appBoundaryKey' - An Amazon Web Services tag /key/ that is used to identify the Amazon Web+-- Services resources that DevOps Guru analyzes. All Amazon Web Services+-- resources in your account and Region tagged with this /key/ make up your+-- DevOps Guru application and analysis boundary.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+--+-- 'insight', 'tagHealth_insight' - Information about the health of the Amazon Web Services resources in+-- your account that are specified by an Amazon Web Services tag, including+-- the number of open proactive, open reactive insights, and the Mean Time+-- to Recover (MTTR) of closed insights.+--+-- 'tagValue', 'tagHealth_tagValue' - The value in an Amazon Web Services tag.+--+-- The tag\'s /value/ is an optional field used to associate a string with+-- the tag /key/ (for example, @111122223333@, @Production@, or a team+-- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+-- /value/ is the same as using an empty string. Like tag /keys/, tag+-- /values/ are case-sensitive. You can specify a maximum of 256 characters+-- for a tag value.+newTagHealth ::+  TagHealth+newTagHealth =+  TagHealth'+    { analyzedResourceCount = Prelude.Nothing,+      appBoundaryKey = Prelude.Nothing,+      insight = Prelude.Nothing,+      tagValue = Prelude.Nothing+    }++-- | Number of resources that DevOps Guru is monitoring in your account that+-- are specified by an Amazon Web Services tag.+tagHealth_analyzedResourceCount :: Lens.Lens' TagHealth (Prelude.Maybe Prelude.Integer)+tagHealth_analyzedResourceCount = Lens.lens (\TagHealth' {analyzedResourceCount} -> analyzedResourceCount) (\s@TagHealth' {} a -> s {analyzedResourceCount = a} :: TagHealth)++-- | An Amazon Web Services tag /key/ that is used to identify the Amazon Web+-- Services resources that DevOps Guru analyzes. All Amazon Web Services+-- resources in your account and Region tagged with this /key/ make up your+-- DevOps Guru application and analysis boundary.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+tagHealth_appBoundaryKey :: Lens.Lens' TagHealth (Prelude.Maybe Prelude.Text)+tagHealth_appBoundaryKey = Lens.lens (\TagHealth' {appBoundaryKey} -> appBoundaryKey) (\s@TagHealth' {} a -> s {appBoundaryKey = a} :: TagHealth)++-- | Information about the health of the Amazon Web Services resources in+-- your account that are specified by an Amazon Web Services tag, including+-- the number of open proactive, open reactive insights, and the Mean Time+-- to Recover (MTTR) of closed insights.+tagHealth_insight :: Lens.Lens' TagHealth (Prelude.Maybe InsightHealth)+tagHealth_insight = Lens.lens (\TagHealth' {insight} -> insight) (\s@TagHealth' {} a -> s {insight = a} :: TagHealth)++-- | The value in an Amazon Web Services tag.+--+-- The tag\'s /value/ is an optional field used to associate a string with+-- the tag /key/ (for example, @111122223333@, @Production@, or a team+-- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+-- /value/ is the same as using an empty string. Like tag /keys/, tag+-- /values/ are case-sensitive. You can specify a maximum of 256 characters+-- for a tag value.+tagHealth_tagValue :: Lens.Lens' TagHealth (Prelude.Maybe Prelude.Text)+tagHealth_tagValue = Lens.lens (\TagHealth' {tagValue} -> tagValue) (\s@TagHealth' {} a -> s {tagValue = a} :: TagHealth)++instance Data.FromJSON TagHealth where+  parseJSON =+    Data.withObject+      "TagHealth"+      ( \x ->+          TagHealth'+            Prelude.<$> (x Data..:? "AnalyzedResourceCount")+            Prelude.<*> (x Data..:? "AppBoundaryKey")+            Prelude.<*> (x Data..:? "Insight")+            Prelude.<*> (x Data..:? "TagValue")+      )++instance Prelude.Hashable TagHealth where+  hashWithSalt _salt TagHealth' {..} =+    _salt+      `Prelude.hashWithSalt` analyzedResourceCount+      `Prelude.hashWithSalt` appBoundaryKey+      `Prelude.hashWithSalt` insight+      `Prelude.hashWithSalt` tagValue++instance Prelude.NFData TagHealth where+  rnf TagHealth' {..} =+    Prelude.rnf analyzedResourceCount+      `Prelude.seq` Prelude.rnf appBoundaryKey+      `Prelude.seq` Prelude.rnf insight+      `Prelude.seq` Prelude.rnf tagValue
+ gen/Amazonka/DevOpsGuru/Types/TimestampMetricValuePair.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.DevOpsGuru.Types.TimestampMetricValuePair+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.TimestampMetricValuePair where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A pair that contains metric values at the respective timestamp.+--+-- /See:/ 'newTimestampMetricValuePair' smart constructor.+data TimestampMetricValuePair = TimestampMetricValuePair'+  { -- | Value of the anomalous metric data point at respective Timestamp.+    metricValue :: Prelude.Maybe Prelude.Double,+    -- | A @Timestamp@ that specifies the time the event occurred.+    timestamp :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TimestampMetricValuePair' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'metricValue', 'timestampMetricValuePair_metricValue' - Value of the anomalous metric data point at respective Timestamp.+--+-- 'timestamp', 'timestampMetricValuePair_timestamp' - A @Timestamp@ that specifies the time the event occurred.+newTimestampMetricValuePair ::+  TimestampMetricValuePair+newTimestampMetricValuePair =+  TimestampMetricValuePair'+    { metricValue =+        Prelude.Nothing,+      timestamp = Prelude.Nothing+    }++-- | Value of the anomalous metric data point at respective Timestamp.+timestampMetricValuePair_metricValue :: Lens.Lens' TimestampMetricValuePair (Prelude.Maybe Prelude.Double)+timestampMetricValuePair_metricValue = Lens.lens (\TimestampMetricValuePair' {metricValue} -> metricValue) (\s@TimestampMetricValuePair' {} a -> s {metricValue = a} :: TimestampMetricValuePair)++-- | A @Timestamp@ that specifies the time the event occurred.+timestampMetricValuePair_timestamp :: Lens.Lens' TimestampMetricValuePair (Prelude.Maybe Prelude.UTCTime)+timestampMetricValuePair_timestamp = Lens.lens (\TimestampMetricValuePair' {timestamp} -> timestamp) (\s@TimestampMetricValuePair' {} a -> s {timestamp = a} :: TimestampMetricValuePair) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON TimestampMetricValuePair where+  parseJSON =+    Data.withObject+      "TimestampMetricValuePair"+      ( \x ->+          TimestampMetricValuePair'+            Prelude.<$> (x Data..:? "MetricValue")+            Prelude.<*> (x Data..:? "Timestamp")+      )++instance Prelude.Hashable TimestampMetricValuePair where+  hashWithSalt _salt TimestampMetricValuePair' {..} =+    _salt+      `Prelude.hashWithSalt` metricValue+      `Prelude.hashWithSalt` timestamp++instance Prelude.NFData TimestampMetricValuePair where+  rnf TimestampMetricValuePair' {..} =+    Prelude.rnf metricValue+      `Prelude.seq` Prelude.rnf timestamp
+ gen/Amazonka/DevOpsGuru/Types/UpdateCloudFormationCollectionFilter.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.UpdateCloudFormationCollectionFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.UpdateCloudFormationCollectionFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains the names of Amazon Web Services CloudFormation stacks used to+-- update a collection of stacks. You can specify up to 500 Amazon Web+-- Services CloudFormation stacks.+--+-- /See:/ 'newUpdateCloudFormationCollectionFilter' smart constructor.+data UpdateCloudFormationCollectionFilter = UpdateCloudFormationCollectionFilter'+  { -- | An array of the names of the Amazon Web Services CloudFormation stacks+    -- to update. You can specify up to 500 Amazon Web Services CloudFormation+    -- stacks.+    stackNames :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateCloudFormationCollectionFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'stackNames', 'updateCloudFormationCollectionFilter_stackNames' - An array of the names of the Amazon Web Services CloudFormation stacks+-- to update. You can specify up to 500 Amazon Web Services CloudFormation+-- stacks.+newUpdateCloudFormationCollectionFilter ::+  UpdateCloudFormationCollectionFilter+newUpdateCloudFormationCollectionFilter =+  UpdateCloudFormationCollectionFilter'+    { stackNames =+        Prelude.Nothing+    }++-- | An array of the names of the Amazon Web Services CloudFormation stacks+-- to update. You can specify up to 500 Amazon Web Services CloudFormation+-- stacks.+updateCloudFormationCollectionFilter_stackNames :: Lens.Lens' UpdateCloudFormationCollectionFilter (Prelude.Maybe [Prelude.Text])+updateCloudFormationCollectionFilter_stackNames = Lens.lens (\UpdateCloudFormationCollectionFilter' {stackNames} -> stackNames) (\s@UpdateCloudFormationCollectionFilter' {} a -> s {stackNames = a} :: UpdateCloudFormationCollectionFilter) Prelude.. Lens.mapping Lens.coerced++instance+  Prelude.Hashable+    UpdateCloudFormationCollectionFilter+  where+  hashWithSalt+    _salt+    UpdateCloudFormationCollectionFilter' {..} =+      _salt `Prelude.hashWithSalt` stackNames++instance+  Prelude.NFData+    UpdateCloudFormationCollectionFilter+  where+  rnf UpdateCloudFormationCollectionFilter' {..} =+    Prelude.rnf stackNames++instance+  Data.ToJSON+    UpdateCloudFormationCollectionFilter+  where+  toJSON UpdateCloudFormationCollectionFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [("StackNames" Data..=) Prelude.<$> stackNames]+      )
+ gen/Amazonka/DevOpsGuru/Types/UpdateResourceCollectionAction.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.UpdateResourceCollectionAction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.UpdateResourceCollectionAction+  ( UpdateResourceCollectionAction+      ( ..,+        UpdateResourceCollectionAction_ADD,+        UpdateResourceCollectionAction_REMOVE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype UpdateResourceCollectionAction = UpdateResourceCollectionAction'+  { fromUpdateResourceCollectionAction ::+      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 UpdateResourceCollectionAction_ADD :: UpdateResourceCollectionAction+pattern UpdateResourceCollectionAction_ADD = UpdateResourceCollectionAction' "ADD"++pattern UpdateResourceCollectionAction_REMOVE :: UpdateResourceCollectionAction+pattern UpdateResourceCollectionAction_REMOVE = UpdateResourceCollectionAction' "REMOVE"++{-# COMPLETE+  UpdateResourceCollectionAction_ADD,+  UpdateResourceCollectionAction_REMOVE,+  UpdateResourceCollectionAction'+  #-}
+ gen/Amazonka/DevOpsGuru/Types/UpdateResourceCollectionFilter.hs view
@@ -0,0 +1,198 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.Types.UpdateResourceCollectionFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.UpdateResourceCollectionFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.UpdateCloudFormationCollectionFilter+import Amazonka.DevOpsGuru.Types.UpdateTagCollectionFilter+import qualified Amazonka.Prelude as Prelude++-- | Contains information used to update a collection of Amazon Web Services+-- resources.+--+-- /See:/ 'newUpdateResourceCollectionFilter' smart constructor.+data UpdateResourceCollectionFilter = UpdateResourceCollectionFilter'+  { -- | A collection of Amazon Web Services CloudFormation stacks. You can+    -- specify up to 500 Amazon Web Services CloudFormation stacks.+    cloudFormation :: Prelude.Maybe UpdateCloudFormationCollectionFilter,+    -- | The updated Amazon Web Services tags used to filter the resources in the+    -- resource collection.+    --+    -- Tags help you identify and organize your Amazon Web Services resources.+    -- Many Amazon Web Services services support tagging, so you can assign the+    -- same tag to resources from different services to indicate that the+    -- resources are related. For example, you can assign the same tag to an+    -- Amazon DynamoDB table resource that you assign to an Lambda function.+    -- For more information about using tags, see the+    -- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+    -- whitepaper.+    --+    -- Each Amazon Web Services tag has two parts.+    --+    -- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+    --     @Secret@). Tag /keys/ are case-sensitive.+    --+    -- -   An optional field known as a tag /value/ (for example,+    --     @111122223333@, @Production@, or a team name). Omitting the tag+    --     /value/ is the same as using an empty string. Like tag /keys/, tag+    --     /values/ are case-sensitive.+    --+    -- Together these are known as /key/-/value/ pairs.+    --+    -- The string used for a /key/ in a tag that you use to define your+    -- resource coverage must begin with the prefix @Devops-guru-@. The tag+    -- /key/ might be @DevOps-Guru-deployment-application@ or+    -- @devops-guru-rds-application@. When you create a /key/, the case of+    -- characters in the /key/ can be whatever you choose. After you create a+    -- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+    -- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+    -- act as two different /keys/. Possible /key/\//value/ pairs in your+    -- application might be @Devops-Guru-production-application\/RDS@ or+    -- @Devops-Guru-production-application\/containers@.+    tags :: Prelude.Maybe [UpdateTagCollectionFilter]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateResourceCollectionFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cloudFormation', 'updateResourceCollectionFilter_cloudFormation' - A collection of Amazon Web Services CloudFormation stacks. You can+-- specify up to 500 Amazon Web Services CloudFormation stacks.+--+-- 'tags', 'updateResourceCollectionFilter_tags' - The updated Amazon Web Services tags used to filter the resources in the+-- resource collection.+--+-- Tags help you identify and organize your Amazon Web Services resources.+-- Many Amazon Web Services services support tagging, so you can assign the+-- same tag to resources from different services to indicate that the+-- resources are related. For example, you can assign the same tag to an+-- Amazon DynamoDB table resource that you assign to an Lambda function.+-- For more information about using tags, see the+-- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+-- whitepaper.+--+-- Each Amazon Web Services tag has two parts.+--+-- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+--     @Secret@). Tag /keys/ are case-sensitive.+--+-- -   An optional field known as a tag /value/ (for example,+--     @111122223333@, @Production@, or a team name). Omitting the tag+--     /value/ is the same as using an empty string. Like tag /keys/, tag+--     /values/ are case-sensitive.+--+-- Together these are known as /key/-/value/ pairs.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+newUpdateResourceCollectionFilter ::+  UpdateResourceCollectionFilter+newUpdateResourceCollectionFilter =+  UpdateResourceCollectionFilter'+    { cloudFormation =+        Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | A collection of Amazon Web Services CloudFormation stacks. You can+-- specify up to 500 Amazon Web Services CloudFormation stacks.+updateResourceCollectionFilter_cloudFormation :: Lens.Lens' UpdateResourceCollectionFilter (Prelude.Maybe UpdateCloudFormationCollectionFilter)+updateResourceCollectionFilter_cloudFormation = Lens.lens (\UpdateResourceCollectionFilter' {cloudFormation} -> cloudFormation) (\s@UpdateResourceCollectionFilter' {} a -> s {cloudFormation = a} :: UpdateResourceCollectionFilter)++-- | The updated Amazon Web Services tags used to filter the resources in the+-- resource collection.+--+-- Tags help you identify and organize your Amazon Web Services resources.+-- Many Amazon Web Services services support tagging, so you can assign the+-- same tag to resources from different services to indicate that the+-- resources are related. For example, you can assign the same tag to an+-- Amazon DynamoDB table resource that you assign to an Lambda function.+-- For more information about using tags, see the+-- <https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf Tagging best practices>+-- whitepaper.+--+-- Each Amazon Web Services tag has two parts.+--+-- -   A tag /key/ (for example, @CostCenter@, @Environment@, @Project@, or+--     @Secret@). Tag /keys/ are case-sensitive.+--+-- -   An optional field known as a tag /value/ (for example,+--     @111122223333@, @Production@, or a team name). Omitting the tag+--     /value/ is the same as using an empty string. Like tag /keys/, tag+--     /values/ are case-sensitive.+--+-- Together these are known as /key/-/value/ pairs.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+updateResourceCollectionFilter_tags :: Lens.Lens' UpdateResourceCollectionFilter (Prelude.Maybe [UpdateTagCollectionFilter])+updateResourceCollectionFilter_tags = Lens.lens (\UpdateResourceCollectionFilter' {tags} -> tags) (\s@UpdateResourceCollectionFilter' {} a -> s {tags = a} :: UpdateResourceCollectionFilter) Prelude.. Lens.mapping Lens.coerced++instance+  Prelude.Hashable+    UpdateResourceCollectionFilter+  where+  hashWithSalt+    _salt+    UpdateResourceCollectionFilter' {..} =+      _salt+        `Prelude.hashWithSalt` cloudFormation+        `Prelude.hashWithSalt` tags++instance+  Prelude.NFData+    UpdateResourceCollectionFilter+  where+  rnf UpdateResourceCollectionFilter' {..} =+    Prelude.rnf cloudFormation+      `Prelude.seq` Prelude.rnf tags++instance Data.ToJSON UpdateResourceCollectionFilter where+  toJSON UpdateResourceCollectionFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CloudFormation" Data..=)+              Prelude.<$> cloudFormation,+            ("Tags" Data..=) Prelude.<$> tags+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/UpdateServiceIntegrationConfig.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.DevOpsGuru.Types.UpdateServiceIntegrationConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.UpdateServiceIntegrationConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types.LogsAnomalyDetectionIntegrationConfig+import Amazonka.DevOpsGuru.Types.OpsCenterIntegrationConfig+import qualified Amazonka.Prelude as Prelude++-- | Information about updating the integration status of an Amazon Web+-- Services service, such as Amazon Web Services Systems Manager, with+-- DevOps Guru.+--+-- /See:/ 'newUpdateServiceIntegrationConfig' smart constructor.+data UpdateServiceIntegrationConfig = UpdateServiceIntegrationConfig'+  { -- | Information about whether DevOps Guru is configured to perform log+    -- anomaly detection on Amazon CloudWatch log groups.+    logsAnomalyDetection :: Prelude.Maybe LogsAnomalyDetectionIntegrationConfig,+    opsCenter :: Prelude.Maybe OpsCenterIntegrationConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateServiceIntegrationConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'logsAnomalyDetection', 'updateServiceIntegrationConfig_logsAnomalyDetection' - Information about whether DevOps Guru is configured to perform log+-- anomaly detection on Amazon CloudWatch log groups.+--+-- 'opsCenter', 'updateServiceIntegrationConfig_opsCenter' - Undocumented member.+newUpdateServiceIntegrationConfig ::+  UpdateServiceIntegrationConfig+newUpdateServiceIntegrationConfig =+  UpdateServiceIntegrationConfig'+    { logsAnomalyDetection =+        Prelude.Nothing,+      opsCenter = Prelude.Nothing+    }++-- | Information about whether DevOps Guru is configured to perform log+-- anomaly detection on Amazon CloudWatch log groups.+updateServiceIntegrationConfig_logsAnomalyDetection :: Lens.Lens' UpdateServiceIntegrationConfig (Prelude.Maybe LogsAnomalyDetectionIntegrationConfig)+updateServiceIntegrationConfig_logsAnomalyDetection = Lens.lens (\UpdateServiceIntegrationConfig' {logsAnomalyDetection} -> logsAnomalyDetection) (\s@UpdateServiceIntegrationConfig' {} a -> s {logsAnomalyDetection = a} :: UpdateServiceIntegrationConfig)++-- | Undocumented member.+updateServiceIntegrationConfig_opsCenter :: Lens.Lens' UpdateServiceIntegrationConfig (Prelude.Maybe OpsCenterIntegrationConfig)+updateServiceIntegrationConfig_opsCenter = Lens.lens (\UpdateServiceIntegrationConfig' {opsCenter} -> opsCenter) (\s@UpdateServiceIntegrationConfig' {} a -> s {opsCenter = a} :: UpdateServiceIntegrationConfig)++instance+  Prelude.Hashable+    UpdateServiceIntegrationConfig+  where+  hashWithSalt+    _salt+    UpdateServiceIntegrationConfig' {..} =+      _salt+        `Prelude.hashWithSalt` logsAnomalyDetection+        `Prelude.hashWithSalt` opsCenter++instance+  Prelude.NFData+    UpdateServiceIntegrationConfig+  where+  rnf UpdateServiceIntegrationConfig' {..} =+    Prelude.rnf logsAnomalyDetection+      `Prelude.seq` Prelude.rnf opsCenter++instance Data.ToJSON UpdateServiceIntegrationConfig where+  toJSON UpdateServiceIntegrationConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("LogsAnomalyDetection" Data..=)+              Prelude.<$> logsAnomalyDetection,+            ("OpsCenter" Data..=) Prelude.<$> opsCenter+          ]+      )
+ gen/Amazonka/DevOpsGuru/Types/UpdateTagCollectionFilter.hs view
@@ -0,0 +1,151 @@+{-# 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.DevOpsGuru.Types.UpdateTagCollectionFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.DevOpsGuru.Types.UpdateTagCollectionFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A new collection of Amazon Web Services resources that are defined by an+-- Amazon Web Services tag or tag /key/\//value/ pair.+--+-- /See:/ 'newUpdateTagCollectionFilter' smart constructor.+data UpdateTagCollectionFilter = UpdateTagCollectionFilter'+  { -- | An Amazon Web Services tag /key/ that is used to identify the Amazon Web+    -- Services resources that DevOps Guru analyzes. All Amazon Web Services+    -- resources in your account and Region tagged with this /key/ make up your+    -- DevOps Guru application and analysis boundary.+    --+    -- The string used for a /key/ in a tag that you use to define your+    -- resource coverage must begin with the prefix @Devops-guru-@. The tag+    -- /key/ might be @DevOps-Guru-deployment-application@ or+    -- @devops-guru-rds-application@. When you create a /key/, the case of+    -- characters in the /key/ can be whatever you choose. After you create a+    -- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+    -- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+    -- act as two different /keys/. Possible /key/\//value/ pairs in your+    -- application might be @Devops-Guru-production-application\/RDS@ or+    -- @Devops-Guru-production-application\/containers@.+    appBoundaryKey :: Prelude.Text,+    -- | The values in an Amazon Web Services tag collection.+    --+    -- The tag\'s /value/ is an optional field used to associate a string with+    -- the tag /key/ (for example, @111122223333@, @Production@, or a team+    -- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+    -- /value/ is the same as using an empty string. Like tag /keys/, tag+    -- /values/ are case-sensitive. You can specify a maximum of 256 characters+    -- for a tag value.+    tagValues :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateTagCollectionFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'appBoundaryKey', 'updateTagCollectionFilter_appBoundaryKey' - An Amazon Web Services tag /key/ that is used to identify the Amazon Web+-- Services resources that DevOps Guru analyzes. All Amazon Web Services+-- resources in your account and Region tagged with this /key/ make up your+-- DevOps Guru application and analysis boundary.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+--+-- 'tagValues', 'updateTagCollectionFilter_tagValues' - The values in an Amazon Web Services tag collection.+--+-- The tag\'s /value/ is an optional field used to associate a string with+-- the tag /key/ (for example, @111122223333@, @Production@, or a team+-- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+-- /value/ is the same as using an empty string. Like tag /keys/, tag+-- /values/ are case-sensitive. You can specify a maximum of 256 characters+-- for a tag value.+newUpdateTagCollectionFilter ::+  -- | 'appBoundaryKey'+  Prelude.Text ->+  UpdateTagCollectionFilter+newUpdateTagCollectionFilter pAppBoundaryKey_ =+  UpdateTagCollectionFilter'+    { appBoundaryKey =+        pAppBoundaryKey_,+      tagValues = Prelude.mempty+    }++-- | An Amazon Web Services tag /key/ that is used to identify the Amazon Web+-- Services resources that DevOps Guru analyzes. All Amazon Web Services+-- resources in your account and Region tagged with this /key/ make up your+-- DevOps Guru application and analysis boundary.+--+-- The string used for a /key/ in a tag that you use to define your+-- resource coverage must begin with the prefix @Devops-guru-@. The tag+-- /key/ might be @DevOps-Guru-deployment-application@ or+-- @devops-guru-rds-application@. When you create a /key/, the case of+-- characters in the /key/ can be whatever you choose. After you create a+-- /key/, it is case-sensitive. For example, DevOps Guru works with a /key/+-- named @devops-guru-rds@ and a /key/ named @DevOps-Guru-RDS@, and these+-- act as two different /keys/. Possible /key/\//value/ pairs in your+-- application might be @Devops-Guru-production-application\/RDS@ or+-- @Devops-Guru-production-application\/containers@.+updateTagCollectionFilter_appBoundaryKey :: Lens.Lens' UpdateTagCollectionFilter Prelude.Text+updateTagCollectionFilter_appBoundaryKey = Lens.lens (\UpdateTagCollectionFilter' {appBoundaryKey} -> appBoundaryKey) (\s@UpdateTagCollectionFilter' {} a -> s {appBoundaryKey = a} :: UpdateTagCollectionFilter)++-- | The values in an Amazon Web Services tag collection.+--+-- The tag\'s /value/ is an optional field used to associate a string with+-- the tag /key/ (for example, @111122223333@, @Production@, or a team+-- name). The /key/ and /value/ are the tag\'s /key/ pair. Omitting the tag+-- /value/ is the same as using an empty string. Like tag /keys/, tag+-- /values/ are case-sensitive. You can specify a maximum of 256 characters+-- for a tag value.+updateTagCollectionFilter_tagValues :: Lens.Lens' UpdateTagCollectionFilter [Prelude.Text]+updateTagCollectionFilter_tagValues = Lens.lens (\UpdateTagCollectionFilter' {tagValues} -> tagValues) (\s@UpdateTagCollectionFilter' {} a -> s {tagValues = a} :: UpdateTagCollectionFilter) Prelude.. Lens.coerced++instance Prelude.Hashable UpdateTagCollectionFilter where+  hashWithSalt _salt UpdateTagCollectionFilter' {..} =+    _salt+      `Prelude.hashWithSalt` appBoundaryKey+      `Prelude.hashWithSalt` tagValues++instance Prelude.NFData UpdateTagCollectionFilter where+  rnf UpdateTagCollectionFilter' {..} =+    Prelude.rnf appBoundaryKey+      `Prelude.seq` Prelude.rnf tagValues++instance Data.ToJSON UpdateTagCollectionFilter where+  toJSON UpdateTagCollectionFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("AppBoundaryKey" Data..= appBoundaryKey),+            Prelude.Just ("TagValues" Data..= tagValues)+          ]+      )
+ gen/Amazonka/DevOpsGuru/UpdateEventSourcesConfig.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.DevOpsGuru.UpdateEventSourcesConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Enables or disables integration with a service that can be integrated+-- with DevOps Guru. The one service that can be integrated with DevOps+-- Guru is Amazon CodeGuru Profiler, which can produce proactive+-- recommendations which can be stored and viewed in DevOps Guru.+module Amazonka.DevOpsGuru.UpdateEventSourcesConfig+  ( -- * Creating a Request+    UpdateEventSourcesConfig (..),+    newUpdateEventSourcesConfig,++    -- * Request Lenses+    updateEventSourcesConfig_eventSources,++    -- * Destructuring the Response+    UpdateEventSourcesConfigResponse (..),+    newUpdateEventSourcesConfigResponse,++    -- * Response Lenses+    updateEventSourcesConfigResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateEventSourcesConfig' smart constructor.+data UpdateEventSourcesConfig = UpdateEventSourcesConfig'+  { -- | Configuration information about the integration of DevOps Guru as the+    -- Consumer via EventBridge with another AWS Service.+    eventSources :: Prelude.Maybe EventSourcesConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateEventSourcesConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'eventSources', 'updateEventSourcesConfig_eventSources' - Configuration information about the integration of DevOps Guru as the+-- Consumer via EventBridge with another AWS Service.+newUpdateEventSourcesConfig ::+  UpdateEventSourcesConfig+newUpdateEventSourcesConfig =+  UpdateEventSourcesConfig'+    { eventSources =+        Prelude.Nothing+    }++-- | Configuration information about the integration of DevOps Guru as the+-- Consumer via EventBridge with another AWS Service.+updateEventSourcesConfig_eventSources :: Lens.Lens' UpdateEventSourcesConfig (Prelude.Maybe EventSourcesConfig)+updateEventSourcesConfig_eventSources = Lens.lens (\UpdateEventSourcesConfig' {eventSources} -> eventSources) (\s@UpdateEventSourcesConfig' {} a -> s {eventSources = a} :: UpdateEventSourcesConfig)++instance Core.AWSRequest UpdateEventSourcesConfig where+  type+    AWSResponse UpdateEventSourcesConfig =+      UpdateEventSourcesConfigResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateEventSourcesConfigResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateEventSourcesConfig where+  hashWithSalt _salt UpdateEventSourcesConfig' {..} =+    _salt `Prelude.hashWithSalt` eventSources++instance Prelude.NFData UpdateEventSourcesConfig where+  rnf UpdateEventSourcesConfig' {..} =+    Prelude.rnf eventSources++instance Data.ToHeaders UpdateEventSourcesConfig where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateEventSourcesConfig where+  toJSON UpdateEventSourcesConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [("EventSources" Data..=) Prelude.<$> eventSources]+      )++instance Data.ToPath UpdateEventSourcesConfig where+  toPath = Prelude.const "/event-sources"++instance Data.ToQuery UpdateEventSourcesConfig where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateEventSourcesConfigResponse' smart constructor.+data UpdateEventSourcesConfigResponse = UpdateEventSourcesConfigResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateEventSourcesConfigResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateEventSourcesConfigResponse_httpStatus' - The response's http status code.+newUpdateEventSourcesConfigResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateEventSourcesConfigResponse+newUpdateEventSourcesConfigResponse pHttpStatus_ =+  UpdateEventSourcesConfigResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+updateEventSourcesConfigResponse_httpStatus :: Lens.Lens' UpdateEventSourcesConfigResponse Prelude.Int+updateEventSourcesConfigResponse_httpStatus = Lens.lens (\UpdateEventSourcesConfigResponse' {httpStatus} -> httpStatus) (\s@UpdateEventSourcesConfigResponse' {} a -> s {httpStatus = a} :: UpdateEventSourcesConfigResponse)++instance+  Prelude.NFData+    UpdateEventSourcesConfigResponse+  where+  rnf UpdateEventSourcesConfigResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/UpdateResourceCollection.hs view
@@ -0,0 +1,187 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.UpdateResourceCollection+-- 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 collection of resources that DevOps Guru analyzes. The two+-- types of Amazon Web Services resource collections supported are Amazon+-- Web Services CloudFormation stacks and Amazon Web Services resources+-- that contain the same Amazon Web Services tag. DevOps Guru can be+-- configured to analyze the Amazon Web Services resources that are defined+-- in the stacks or that are tagged using the same tag /key/. You can+-- specify up to 500 Amazon Web Services CloudFormation stacks. This method+-- also creates the IAM role required for you to use DevOps Guru.+module Amazonka.DevOpsGuru.UpdateResourceCollection+  ( -- * Creating a Request+    UpdateResourceCollection (..),+    newUpdateResourceCollection,++    -- * Request Lenses+    updateResourceCollection_action,+    updateResourceCollection_resourceCollection,++    -- * Destructuring the Response+    UpdateResourceCollectionResponse (..),+    newUpdateResourceCollectionResponse,++    -- * Response Lenses+    updateResourceCollectionResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateResourceCollection' smart constructor.+data UpdateResourceCollection = UpdateResourceCollection'+  { -- | Specifies if the resource collection in the request is added or deleted+    -- to the resource collection.+    action :: UpdateResourceCollectionAction,+    resourceCollection :: UpdateResourceCollectionFilter+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateResourceCollection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateResourceCollection_action' - Specifies if the resource collection in the request is added or deleted+-- to the resource collection.+--+-- 'resourceCollection', 'updateResourceCollection_resourceCollection' - Undocumented member.+newUpdateResourceCollection ::+  -- | 'action'+  UpdateResourceCollectionAction ->+  -- | 'resourceCollection'+  UpdateResourceCollectionFilter ->+  UpdateResourceCollection+newUpdateResourceCollection+  pAction_+  pResourceCollection_ =+    UpdateResourceCollection'+      { action = pAction_,+        resourceCollection = pResourceCollection_+      }++-- | Specifies if the resource collection in the request is added or deleted+-- to the resource collection.+updateResourceCollection_action :: Lens.Lens' UpdateResourceCollection UpdateResourceCollectionAction+updateResourceCollection_action = Lens.lens (\UpdateResourceCollection' {action} -> action) (\s@UpdateResourceCollection' {} a -> s {action = a} :: UpdateResourceCollection)++-- | Undocumented member.+updateResourceCollection_resourceCollection :: Lens.Lens' UpdateResourceCollection UpdateResourceCollectionFilter+updateResourceCollection_resourceCollection = Lens.lens (\UpdateResourceCollection' {resourceCollection} -> resourceCollection) (\s@UpdateResourceCollection' {} a -> s {resourceCollection = a} :: UpdateResourceCollection)++instance Core.AWSRequest UpdateResourceCollection where+  type+    AWSResponse UpdateResourceCollection =+      UpdateResourceCollectionResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateResourceCollectionResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateResourceCollection where+  hashWithSalt _salt UpdateResourceCollection' {..} =+    _salt+      `Prelude.hashWithSalt` action+      `Prelude.hashWithSalt` resourceCollection++instance Prelude.NFData UpdateResourceCollection where+  rnf UpdateResourceCollection' {..} =+    Prelude.rnf action+      `Prelude.seq` Prelude.rnf resourceCollection++instance Data.ToHeaders UpdateResourceCollection where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateResourceCollection where+  toJSON UpdateResourceCollection' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("Action" Data..= action),+            Prelude.Just+              ("ResourceCollection" Data..= resourceCollection)+          ]+      )++instance Data.ToPath UpdateResourceCollection where+  toPath = Prelude.const "/resource-collections"++instance Data.ToQuery UpdateResourceCollection where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateResourceCollectionResponse' smart constructor.+data UpdateResourceCollectionResponse = UpdateResourceCollectionResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateResourceCollectionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateResourceCollectionResponse_httpStatus' - The response's http status code.+newUpdateResourceCollectionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateResourceCollectionResponse+newUpdateResourceCollectionResponse pHttpStatus_ =+  UpdateResourceCollectionResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+updateResourceCollectionResponse_httpStatus :: Lens.Lens' UpdateResourceCollectionResponse Prelude.Int+updateResourceCollectionResponse_httpStatus = Lens.lens (\UpdateResourceCollectionResponse' {httpStatus} -> httpStatus) (\s@UpdateResourceCollectionResponse' {} a -> s {httpStatus = a} :: UpdateResourceCollectionResponse)++instance+  Prelude.NFData+    UpdateResourceCollectionResponse+  where+  rnf UpdateResourceCollectionResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/UpdateServiceIntegration.hs view
@@ -0,0 +1,170 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.DevOpsGuru.UpdateServiceIntegration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Enables or disables integration with a service that can be integrated+-- with DevOps Guru. The one service that can be integrated with DevOps+-- Guru is Amazon Web Services Systems Manager, which can be used to create+-- an OpsItem for each generated insight.+module Amazonka.DevOpsGuru.UpdateServiceIntegration+  ( -- * Creating a Request+    UpdateServiceIntegration (..),+    newUpdateServiceIntegration,++    -- * Request Lenses+    updateServiceIntegration_serviceIntegration,++    -- * Destructuring the Response+    UpdateServiceIntegrationResponse (..),+    newUpdateServiceIntegrationResponse,++    -- * Response Lenses+    updateServiceIntegrationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateServiceIntegration' smart constructor.+data UpdateServiceIntegration = UpdateServiceIntegration'+  { -- | An @IntegratedServiceConfig@ object used to specify the integrated+    -- service you want to update, and whether you want to update it to enabled+    -- or disabled.+    serviceIntegration :: UpdateServiceIntegrationConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateServiceIntegration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'serviceIntegration', 'updateServiceIntegration_serviceIntegration' - An @IntegratedServiceConfig@ object used to specify the integrated+-- service you want to update, and whether you want to update it to enabled+-- or disabled.+newUpdateServiceIntegration ::+  -- | 'serviceIntegration'+  UpdateServiceIntegrationConfig ->+  UpdateServiceIntegration+newUpdateServiceIntegration pServiceIntegration_ =+  UpdateServiceIntegration'+    { serviceIntegration =+        pServiceIntegration_+    }++-- | An @IntegratedServiceConfig@ object used to specify the integrated+-- service you want to update, and whether you want to update it to enabled+-- or disabled.+updateServiceIntegration_serviceIntegration :: Lens.Lens' UpdateServiceIntegration UpdateServiceIntegrationConfig+updateServiceIntegration_serviceIntegration = Lens.lens (\UpdateServiceIntegration' {serviceIntegration} -> serviceIntegration) (\s@UpdateServiceIntegration' {} a -> s {serviceIntegration = a} :: UpdateServiceIntegration)++instance Core.AWSRequest UpdateServiceIntegration where+  type+    AWSResponse UpdateServiceIntegration =+      UpdateServiceIntegrationResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateServiceIntegrationResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateServiceIntegration where+  hashWithSalt _salt UpdateServiceIntegration' {..} =+    _salt `Prelude.hashWithSalt` serviceIntegration++instance Prelude.NFData UpdateServiceIntegration where+  rnf UpdateServiceIntegration' {..} =+    Prelude.rnf serviceIntegration++instance Data.ToHeaders UpdateServiceIntegration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateServiceIntegration where+  toJSON UpdateServiceIntegration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("ServiceIntegration" Data..= serviceIntegration)+          ]+      )++instance Data.ToPath UpdateServiceIntegration where+  toPath = Prelude.const "/service-integrations"++instance Data.ToQuery UpdateServiceIntegration where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateServiceIntegrationResponse' smart constructor.+data UpdateServiceIntegrationResponse = UpdateServiceIntegrationResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateServiceIntegrationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateServiceIntegrationResponse_httpStatus' - The response's http status code.+newUpdateServiceIntegrationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateServiceIntegrationResponse+newUpdateServiceIntegrationResponse pHttpStatus_ =+  UpdateServiceIntegrationResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+updateServiceIntegrationResponse_httpStatus :: Lens.Lens' UpdateServiceIntegrationResponse Prelude.Int+updateServiceIntegrationResponse_httpStatus = Lens.lens (\UpdateServiceIntegrationResponse' {httpStatus} -> httpStatus) (\s@UpdateServiceIntegrationResponse' {} a -> s {httpStatus = a} :: UpdateServiceIntegrationResponse)++instance+  Prelude.NFData+    UpdateServiceIntegrationResponse+  where+  rnf UpdateServiceIntegrationResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/DevOpsGuru/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.DevOpsGuru.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.DevOpsGuru.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DevOpsGuru.Lens+import Amazonka.DevOpsGuru.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.DevOpsGuru+import Test.Amazonka.DevOpsGuru.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "DevOpsGuru"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/DevOpsGuru.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.DevOpsGuru+-- Copyright   : (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.DevOpsGuru+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/DevOpsGuru/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.DevOpsGuru.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.DevOpsGuru.Internal where
+ test/Test/Amazonka/Gen/DevOpsGuru.hs view
@@ -0,0 +1,658 @@+{-# 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.DevOpsGuru+-- Copyright   : (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.DevOpsGuru where++import Amazonka.DevOpsGuru+import qualified Data.Proxy as Proxy+import Test.Amazonka.DevOpsGuru.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"+--         [ requestAddNotificationChannel $+--             newAddNotificationChannel+--+--         , requestDeleteInsight $+--             newDeleteInsight+--+--         , requestDescribeAccountHealth $+--             newDescribeAccountHealth+--+--         , requestDescribeAccountOverview $+--             newDescribeAccountOverview+--+--         , requestDescribeAnomaly $+--             newDescribeAnomaly+--+--         , requestDescribeEventSourcesConfig $+--             newDescribeEventSourcesConfig+--+--         , requestDescribeFeedback $+--             newDescribeFeedback+--+--         , requestDescribeInsight $+--             newDescribeInsight+--+--         , requestDescribeOrganizationHealth $+--             newDescribeOrganizationHealth+--+--         , requestDescribeOrganizationOverview $+--             newDescribeOrganizationOverview+--+--         , requestDescribeOrganizationResourceCollectionHealth $+--             newDescribeOrganizationResourceCollectionHealth+--+--         , requestDescribeResourceCollectionHealth $+--             newDescribeResourceCollectionHealth+--+--         , requestDescribeServiceIntegration $+--             newDescribeServiceIntegration+--+--         , requestGetCostEstimation $+--             newGetCostEstimation+--+--         , requestGetResourceCollection $+--             newGetResourceCollection+--+--         , requestListAnomaliesForInsight $+--             newListAnomaliesForInsight+--+--         , requestListAnomalousLogGroups $+--             newListAnomalousLogGroups+--+--         , requestListEvents $+--             newListEvents+--+--         , requestListInsights $+--             newListInsights+--+--         , requestListMonitoredResources $+--             newListMonitoredResources+--+--         , requestListNotificationChannels $+--             newListNotificationChannels+--+--         , requestListOrganizationInsights $+--             newListOrganizationInsights+--+--         , requestListRecommendations $+--             newListRecommendations+--+--         , requestPutFeedback $+--             newPutFeedback+--+--         , requestRemoveNotificationChannel $+--             newRemoveNotificationChannel+--+--         , requestSearchInsights $+--             newSearchInsights+--+--         , requestSearchOrganizationInsights $+--             newSearchOrganizationInsights+--+--         , requestStartCostEstimation $+--             newStartCostEstimation+--+--         , requestUpdateEventSourcesConfig $+--             newUpdateEventSourcesConfig+--+--         , requestUpdateResourceCollection $+--             newUpdateResourceCollection+--+--         , requestUpdateServiceIntegration $+--             newUpdateServiceIntegration+--+--           ]++--     , testGroup "response"+--         [ responseAddNotificationChannel $+--             newAddNotificationChannelResponse+--+--         , responseDeleteInsight $+--             newDeleteInsightResponse+--+--         , responseDescribeAccountHealth $+--             newDescribeAccountHealthResponse+--+--         , responseDescribeAccountOverview $+--             newDescribeAccountOverviewResponse+--+--         , responseDescribeAnomaly $+--             newDescribeAnomalyResponse+--+--         , responseDescribeEventSourcesConfig $+--             newDescribeEventSourcesConfigResponse+--+--         , responseDescribeFeedback $+--             newDescribeFeedbackResponse+--+--         , responseDescribeInsight $+--             newDescribeInsightResponse+--+--         , responseDescribeOrganizationHealth $+--             newDescribeOrganizationHealthResponse+--+--         , responseDescribeOrganizationOverview $+--             newDescribeOrganizationOverviewResponse+--+--         , responseDescribeOrganizationResourceCollectionHealth $+--             newDescribeOrganizationResourceCollectionHealthResponse+--+--         , responseDescribeResourceCollectionHealth $+--             newDescribeResourceCollectionHealthResponse+--+--         , responseDescribeServiceIntegration $+--             newDescribeServiceIntegrationResponse+--+--         , responseGetCostEstimation $+--             newGetCostEstimationResponse+--+--         , responseGetResourceCollection $+--             newGetResourceCollectionResponse+--+--         , responseListAnomaliesForInsight $+--             newListAnomaliesForInsightResponse+--+--         , responseListAnomalousLogGroups $+--             newListAnomalousLogGroupsResponse+--+--         , responseListEvents $+--             newListEventsResponse+--+--         , responseListInsights $+--             newListInsightsResponse+--+--         , responseListMonitoredResources $+--             newListMonitoredResourcesResponse+--+--         , responseListNotificationChannels $+--             newListNotificationChannelsResponse+--+--         , responseListOrganizationInsights $+--             newListOrganizationInsightsResponse+--+--         , responseListRecommendations $+--             newListRecommendationsResponse+--+--         , responsePutFeedback $+--             newPutFeedbackResponse+--+--         , responseRemoveNotificationChannel $+--             newRemoveNotificationChannelResponse+--+--         , responseSearchInsights $+--             newSearchInsightsResponse+--+--         , responseSearchOrganizationInsights $+--             newSearchOrganizationInsightsResponse+--+--         , responseStartCostEstimation $+--             newStartCostEstimationResponse+--+--         , responseUpdateEventSourcesConfig $+--             newUpdateEventSourcesConfigResponse+--+--         , responseUpdateResourceCollection $+--             newUpdateResourceCollectionResponse+--+--         , responseUpdateServiceIntegration $+--             newUpdateServiceIntegrationResponse+--+--           ]+--     ]++-- Requests++requestAddNotificationChannel :: AddNotificationChannel -> TestTree+requestAddNotificationChannel =+  req+    "AddNotificationChannel"+    "fixture/AddNotificationChannel.yaml"++requestDeleteInsight :: DeleteInsight -> TestTree+requestDeleteInsight =+  req+    "DeleteInsight"+    "fixture/DeleteInsight.yaml"++requestDescribeAccountHealth :: DescribeAccountHealth -> TestTree+requestDescribeAccountHealth =+  req+    "DescribeAccountHealth"+    "fixture/DescribeAccountHealth.yaml"++requestDescribeAccountOverview :: DescribeAccountOverview -> TestTree+requestDescribeAccountOverview =+  req+    "DescribeAccountOverview"+    "fixture/DescribeAccountOverview.yaml"++requestDescribeAnomaly :: DescribeAnomaly -> TestTree+requestDescribeAnomaly =+  req+    "DescribeAnomaly"+    "fixture/DescribeAnomaly.yaml"++requestDescribeEventSourcesConfig :: DescribeEventSourcesConfig -> TestTree+requestDescribeEventSourcesConfig =+  req+    "DescribeEventSourcesConfig"+    "fixture/DescribeEventSourcesConfig.yaml"++requestDescribeFeedback :: DescribeFeedback -> TestTree+requestDescribeFeedback =+  req+    "DescribeFeedback"+    "fixture/DescribeFeedback.yaml"++requestDescribeInsight :: DescribeInsight -> TestTree+requestDescribeInsight =+  req+    "DescribeInsight"+    "fixture/DescribeInsight.yaml"++requestDescribeOrganizationHealth :: DescribeOrganizationHealth -> TestTree+requestDescribeOrganizationHealth =+  req+    "DescribeOrganizationHealth"+    "fixture/DescribeOrganizationHealth.yaml"++requestDescribeOrganizationOverview :: DescribeOrganizationOverview -> TestTree+requestDescribeOrganizationOverview =+  req+    "DescribeOrganizationOverview"+    "fixture/DescribeOrganizationOverview.yaml"++requestDescribeOrganizationResourceCollectionHealth :: DescribeOrganizationResourceCollectionHealth -> TestTree+requestDescribeOrganizationResourceCollectionHealth =+  req+    "DescribeOrganizationResourceCollectionHealth"+    "fixture/DescribeOrganizationResourceCollectionHealth.yaml"++requestDescribeResourceCollectionHealth :: DescribeResourceCollectionHealth -> TestTree+requestDescribeResourceCollectionHealth =+  req+    "DescribeResourceCollectionHealth"+    "fixture/DescribeResourceCollectionHealth.yaml"++requestDescribeServiceIntegration :: DescribeServiceIntegration -> TestTree+requestDescribeServiceIntegration =+  req+    "DescribeServiceIntegration"+    "fixture/DescribeServiceIntegration.yaml"++requestGetCostEstimation :: GetCostEstimation -> TestTree+requestGetCostEstimation =+  req+    "GetCostEstimation"+    "fixture/GetCostEstimation.yaml"++requestGetResourceCollection :: GetResourceCollection -> TestTree+requestGetResourceCollection =+  req+    "GetResourceCollection"+    "fixture/GetResourceCollection.yaml"++requestListAnomaliesForInsight :: ListAnomaliesForInsight -> TestTree+requestListAnomaliesForInsight =+  req+    "ListAnomaliesForInsight"+    "fixture/ListAnomaliesForInsight.yaml"++requestListAnomalousLogGroups :: ListAnomalousLogGroups -> TestTree+requestListAnomalousLogGroups =+  req+    "ListAnomalousLogGroups"+    "fixture/ListAnomalousLogGroups.yaml"++requestListEvents :: ListEvents -> TestTree+requestListEvents =+  req+    "ListEvents"+    "fixture/ListEvents.yaml"++requestListInsights :: ListInsights -> TestTree+requestListInsights =+  req+    "ListInsights"+    "fixture/ListInsights.yaml"++requestListMonitoredResources :: ListMonitoredResources -> TestTree+requestListMonitoredResources =+  req+    "ListMonitoredResources"+    "fixture/ListMonitoredResources.yaml"++requestListNotificationChannels :: ListNotificationChannels -> TestTree+requestListNotificationChannels =+  req+    "ListNotificationChannels"+    "fixture/ListNotificationChannels.yaml"++requestListOrganizationInsights :: ListOrganizationInsights -> TestTree+requestListOrganizationInsights =+  req+    "ListOrganizationInsights"+    "fixture/ListOrganizationInsights.yaml"++requestListRecommendations :: ListRecommendations -> TestTree+requestListRecommendations =+  req+    "ListRecommendations"+    "fixture/ListRecommendations.yaml"++requestPutFeedback :: PutFeedback -> TestTree+requestPutFeedback =+  req+    "PutFeedback"+    "fixture/PutFeedback.yaml"++requestRemoveNotificationChannel :: RemoveNotificationChannel -> TestTree+requestRemoveNotificationChannel =+  req+    "RemoveNotificationChannel"+    "fixture/RemoveNotificationChannel.yaml"++requestSearchInsights :: SearchInsights -> TestTree+requestSearchInsights =+  req+    "SearchInsights"+    "fixture/SearchInsights.yaml"++requestSearchOrganizationInsights :: SearchOrganizationInsights -> TestTree+requestSearchOrganizationInsights =+  req+    "SearchOrganizationInsights"+    "fixture/SearchOrganizationInsights.yaml"++requestStartCostEstimation :: StartCostEstimation -> TestTree+requestStartCostEstimation =+  req+    "StartCostEstimation"+    "fixture/StartCostEstimation.yaml"++requestUpdateEventSourcesConfig :: UpdateEventSourcesConfig -> TestTree+requestUpdateEventSourcesConfig =+  req+    "UpdateEventSourcesConfig"+    "fixture/UpdateEventSourcesConfig.yaml"++requestUpdateResourceCollection :: UpdateResourceCollection -> TestTree+requestUpdateResourceCollection =+  req+    "UpdateResourceCollection"+    "fixture/UpdateResourceCollection.yaml"++requestUpdateServiceIntegration :: UpdateServiceIntegration -> TestTree+requestUpdateServiceIntegration =+  req+    "UpdateServiceIntegration"+    "fixture/UpdateServiceIntegration.yaml"++-- Responses++responseAddNotificationChannel :: AddNotificationChannelResponse -> TestTree+responseAddNotificationChannel =+  res+    "AddNotificationChannelResponse"+    "fixture/AddNotificationChannelResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AddNotificationChannel)++responseDeleteInsight :: DeleteInsightResponse -> TestTree+responseDeleteInsight =+  res+    "DeleteInsightResponse"+    "fixture/DeleteInsightResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteInsight)++responseDescribeAccountHealth :: DescribeAccountHealthResponse -> TestTree+responseDescribeAccountHealth =+  res+    "DescribeAccountHealthResponse"+    "fixture/DescribeAccountHealthResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeAccountHealth)++responseDescribeAccountOverview :: DescribeAccountOverviewResponse -> TestTree+responseDescribeAccountOverview =+  res+    "DescribeAccountOverviewResponse"+    "fixture/DescribeAccountOverviewResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeAccountOverview)++responseDescribeAnomaly :: DescribeAnomalyResponse -> TestTree+responseDescribeAnomaly =+  res+    "DescribeAnomalyResponse"+    "fixture/DescribeAnomalyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeAnomaly)++responseDescribeEventSourcesConfig :: DescribeEventSourcesConfigResponse -> TestTree+responseDescribeEventSourcesConfig =+  res+    "DescribeEventSourcesConfigResponse"+    "fixture/DescribeEventSourcesConfigResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeEventSourcesConfig)++responseDescribeFeedback :: DescribeFeedbackResponse -> TestTree+responseDescribeFeedback =+  res+    "DescribeFeedbackResponse"+    "fixture/DescribeFeedbackResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeFeedback)++responseDescribeInsight :: DescribeInsightResponse -> TestTree+responseDescribeInsight =+  res+    "DescribeInsightResponse"+    "fixture/DescribeInsightResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeInsight)++responseDescribeOrganizationHealth :: DescribeOrganizationHealthResponse -> TestTree+responseDescribeOrganizationHealth =+  res+    "DescribeOrganizationHealthResponse"+    "fixture/DescribeOrganizationHealthResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeOrganizationHealth)++responseDescribeOrganizationOverview :: DescribeOrganizationOverviewResponse -> TestTree+responseDescribeOrganizationOverview =+  res+    "DescribeOrganizationOverviewResponse"+    "fixture/DescribeOrganizationOverviewResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeOrganizationOverview)++responseDescribeOrganizationResourceCollectionHealth :: DescribeOrganizationResourceCollectionHealthResponse -> TestTree+responseDescribeOrganizationResourceCollectionHealth =+  res+    "DescribeOrganizationResourceCollectionHealthResponse"+    "fixture/DescribeOrganizationResourceCollectionHealthResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeOrganizationResourceCollectionHealth)++responseDescribeResourceCollectionHealth :: DescribeResourceCollectionHealthResponse -> TestTree+responseDescribeResourceCollectionHealth =+  res+    "DescribeResourceCollectionHealthResponse"+    "fixture/DescribeResourceCollectionHealthResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeResourceCollectionHealth)++responseDescribeServiceIntegration :: DescribeServiceIntegrationResponse -> TestTree+responseDescribeServiceIntegration =+  res+    "DescribeServiceIntegrationResponse"+    "fixture/DescribeServiceIntegrationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeServiceIntegration)++responseGetCostEstimation :: GetCostEstimationResponse -> TestTree+responseGetCostEstimation =+  res+    "GetCostEstimationResponse"+    "fixture/GetCostEstimationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetCostEstimation)++responseGetResourceCollection :: GetResourceCollectionResponse -> TestTree+responseGetResourceCollection =+  res+    "GetResourceCollectionResponse"+    "fixture/GetResourceCollectionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetResourceCollection)++responseListAnomaliesForInsight :: ListAnomaliesForInsightResponse -> TestTree+responseListAnomaliesForInsight =+  res+    "ListAnomaliesForInsightResponse"+    "fixture/ListAnomaliesForInsightResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListAnomaliesForInsight)++responseListAnomalousLogGroups :: ListAnomalousLogGroupsResponse -> TestTree+responseListAnomalousLogGroups =+  res+    "ListAnomalousLogGroupsResponse"+    "fixture/ListAnomalousLogGroupsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListAnomalousLogGroups)++responseListEvents :: ListEventsResponse -> TestTree+responseListEvents =+  res+    "ListEventsResponse"+    "fixture/ListEventsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListEvents)++responseListInsights :: ListInsightsResponse -> TestTree+responseListInsights =+  res+    "ListInsightsResponse"+    "fixture/ListInsightsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListInsights)++responseListMonitoredResources :: ListMonitoredResourcesResponse -> TestTree+responseListMonitoredResources =+  res+    "ListMonitoredResourcesResponse"+    "fixture/ListMonitoredResourcesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListMonitoredResources)++responseListNotificationChannels :: ListNotificationChannelsResponse -> TestTree+responseListNotificationChannels =+  res+    "ListNotificationChannelsResponse"+    "fixture/ListNotificationChannelsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListNotificationChannels)++responseListOrganizationInsights :: ListOrganizationInsightsResponse -> TestTree+responseListOrganizationInsights =+  res+    "ListOrganizationInsightsResponse"+    "fixture/ListOrganizationInsightsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListOrganizationInsights)++responseListRecommendations :: ListRecommendationsResponse -> TestTree+responseListRecommendations =+  res+    "ListRecommendationsResponse"+    "fixture/ListRecommendationsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListRecommendations)++responsePutFeedback :: PutFeedbackResponse -> TestTree+responsePutFeedback =+  res+    "PutFeedbackResponse"+    "fixture/PutFeedbackResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutFeedback)++responseRemoveNotificationChannel :: RemoveNotificationChannelResponse -> TestTree+responseRemoveNotificationChannel =+  res+    "RemoveNotificationChannelResponse"+    "fixture/RemoveNotificationChannelResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy RemoveNotificationChannel)++responseSearchInsights :: SearchInsightsResponse -> TestTree+responseSearchInsights =+  res+    "SearchInsightsResponse"+    "fixture/SearchInsightsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy SearchInsights)++responseSearchOrganizationInsights :: SearchOrganizationInsightsResponse -> TestTree+responseSearchOrganizationInsights =+  res+    "SearchOrganizationInsightsResponse"+    "fixture/SearchOrganizationInsightsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy SearchOrganizationInsights)++responseStartCostEstimation :: StartCostEstimationResponse -> TestTree+responseStartCostEstimation =+  res+    "StartCostEstimationResponse"+    "fixture/StartCostEstimationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartCostEstimation)++responseUpdateEventSourcesConfig :: UpdateEventSourcesConfigResponse -> TestTree+responseUpdateEventSourcesConfig =+  res+    "UpdateEventSourcesConfigResponse"+    "fixture/UpdateEventSourcesConfigResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateEventSourcesConfig)++responseUpdateResourceCollection :: UpdateResourceCollectionResponse -> TestTree+responseUpdateResourceCollection =+  res+    "UpdateResourceCollectionResponse"+    "fixture/UpdateResourceCollectionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateResourceCollection)++responseUpdateServiceIntegration :: UpdateServiceIntegrationResponse -> TestTree+responseUpdateServiceIntegration =+  res+    "UpdateServiceIntegrationResponse"+    "fixture/UpdateServiceIntegrationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateServiceIntegration)