packages feed

amazonka-codeguruprofiler (empty) → 2.0

raw patch · 109 files changed

+11255/−0 lines, 109 filesdep +amazonka-codeguruprofilerdep +amazonka-coredep +amazonka-test

Dependencies added: amazonka-codeguruprofiler, amazonka-core, 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 CodeGuru Profiler SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2019-07-18@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-codeguruprofiler)+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.CodeGuruProfiler](http://hackage.haskell.org/package/amazonka-codeguruprofiler/docs/Amazonka-CodeGuruProfiler.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-codeguruprofiler` 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-codeguruprofiler.cabal view
@@ -0,0 +1,134 @@+cabal-version:      2.2+name:               amazonka-codeguruprofiler+version:            2.0+synopsis:           Amazon CodeGuru Profiler SDK.+homepage:           https://github.com/brendanhay/amazonka+bug-reports:        https://github.com/brendanhay/amazonka/issues+license:            MPL-2.0+license-file:       LICENSE+author:             Brendan Hay+maintainer:+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>++copyright:          Copyright (c) 2013-2023 Brendan Hay+category:           AWS+build-type:         Simple+extra-source-files:+  fixture/*.proto+  fixture/*.yaml+  README.md+  src/.gitkeep++description:+  Derived from API version @2019-07-18@ 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.CodeGuruProfiler.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.CodeGuruProfiler" 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-codeguruprofiler++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.CodeGuruProfiler+    Amazonka.CodeGuruProfiler.AddNotificationChannels+    Amazonka.CodeGuruProfiler.BatchGetFrameMetricData+    Amazonka.CodeGuruProfiler.ConfigureAgent+    Amazonka.CodeGuruProfiler.CreateProfilingGroup+    Amazonka.CodeGuruProfiler.DeleteProfilingGroup+    Amazonka.CodeGuruProfiler.DescribeProfilingGroup+    Amazonka.CodeGuruProfiler.GetFindingsReportAccountSummary+    Amazonka.CodeGuruProfiler.GetNotificationConfiguration+    Amazonka.CodeGuruProfiler.GetPolicy+    Amazonka.CodeGuruProfiler.GetProfile+    Amazonka.CodeGuruProfiler.GetRecommendations+    Amazonka.CodeGuruProfiler.Lens+    Amazonka.CodeGuruProfiler.ListFindingsReports+    Amazonka.CodeGuruProfiler.ListProfileTimes+    Amazonka.CodeGuruProfiler.ListProfilingGroups+    Amazonka.CodeGuruProfiler.ListTagsForResource+    Amazonka.CodeGuruProfiler.PostAgentProfile+    Amazonka.CodeGuruProfiler.PutPermission+    Amazonka.CodeGuruProfiler.RemoveNotificationChannel+    Amazonka.CodeGuruProfiler.RemovePermission+    Amazonka.CodeGuruProfiler.SubmitFeedback+    Amazonka.CodeGuruProfiler.TagResource+    Amazonka.CodeGuruProfiler.Types+    Amazonka.CodeGuruProfiler.Types.ActionGroup+    Amazonka.CodeGuruProfiler.Types.AgentConfiguration+    Amazonka.CodeGuruProfiler.Types.AgentOrchestrationConfig+    Amazonka.CodeGuruProfiler.Types.AgentParameterField+    Amazonka.CodeGuruProfiler.Types.AggregatedProfileTime+    Amazonka.CodeGuruProfiler.Types.AggregationPeriod+    Amazonka.CodeGuruProfiler.Types.Anomaly+    Amazonka.CodeGuruProfiler.Types.AnomalyInstance+    Amazonka.CodeGuruProfiler.Types.Channel+    Amazonka.CodeGuruProfiler.Types.ComputePlatform+    Amazonka.CodeGuruProfiler.Types.EventPublisher+    Amazonka.CodeGuruProfiler.Types.FeedbackType+    Amazonka.CodeGuruProfiler.Types.FindingsReportSummary+    Amazonka.CodeGuruProfiler.Types.FrameMetric+    Amazonka.CodeGuruProfiler.Types.FrameMetricDatum+    Amazonka.CodeGuruProfiler.Types.Match+    Amazonka.CodeGuruProfiler.Types.MetadataField+    Amazonka.CodeGuruProfiler.Types.Metric+    Amazonka.CodeGuruProfiler.Types.MetricType+    Amazonka.CodeGuruProfiler.Types.NotificationConfiguration+    Amazonka.CodeGuruProfiler.Types.OrderBy+    Amazonka.CodeGuruProfiler.Types.Pattern+    Amazonka.CodeGuruProfiler.Types.ProfileTime+    Amazonka.CodeGuruProfiler.Types.ProfilingGroupDescription+    Amazonka.CodeGuruProfiler.Types.ProfilingStatus+    Amazonka.CodeGuruProfiler.Types.Recommendation+    Amazonka.CodeGuruProfiler.Types.TimestampStructure+    Amazonka.CodeGuruProfiler.Types.UserFeedback+    Amazonka.CodeGuruProfiler.UntagResource+    Amazonka.CodeGuruProfiler.UpdateProfilingGroup+    Amazonka.CodeGuruProfiler.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-codeguruprofiler-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.CodeGuruProfiler+    Test.Amazonka.CodeGuruProfiler.Internal+    Test.Amazonka.Gen.CodeGuruProfiler++  build-depends:+    , amazonka-codeguruprofiler+    , amazonka-core              >=2.0 && <2.1+    , amazonka-test              >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/AddNotificationChannels.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/AddNotificationChannelsResponse.proto view
+ fixture/BatchGetFrameMetricData.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/BatchGetFrameMetricDataResponse.proto view
+ fixture/ConfigureAgent.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/ConfigureAgentResponse.proto view
+ fixture/CreateProfilingGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/CreateProfilingGroupResponse.proto view
+ fixture/DeleteProfilingGroup.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/DeleteProfilingGroupResponse.proto view
+ fixture/DescribeProfilingGroup.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/DescribeProfilingGroupResponse.proto view
+ fixture/GetFindingsReportAccountSummary.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/GetFindingsReportAccountSummaryResponse.proto view
+ fixture/GetNotificationConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/GetNotificationConfigurationResponse.proto view
+ fixture/GetPolicy.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/GetPolicyResponse.proto view
+ fixture/GetProfile.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/GetProfileResponse.proto view
+ fixture/GetRecommendations.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/GetRecommendationsResponse.proto view
+ fixture/ListFindingsReports.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/ListFindingsReportsResponse.proto view
+ fixture/ListProfileTimes.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/ListProfileTimesResponse.proto view
+ fixture/ListProfilingGroups.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/ListProfilingGroupsResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListTagsForResourceResponse.proto view
+ fixture/PostAgentProfile.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/PostAgentProfileResponse.proto view
+ fixture/PutPermission.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/PutPermissionResponse.proto view
+ fixture/RemoveNotificationChannel.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/RemovePermission.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/RemovePermissionResponse.proto view
+ fixture/SubmitFeedback.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/SubmitFeedbackResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/TagResourceResponse.proto view
+ fixture/UntagResource.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UntagResourceResponse.proto view
+ fixture/UpdateProfilingGroup.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-profiler/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  codeguru-profiler.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/UpdateProfilingGroupResponse.proto view
+ gen/Amazonka/CodeGuruProfiler.hs view
@@ -0,0 +1,366 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.CodeGuruProfiler+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Derived from API version @2019-07-18@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- This section provides documentation for the Amazon CodeGuru Profiler API+-- operations.+--+-- Amazon CodeGuru Profiler collects runtime performance data from your+-- live applications, and provides recommendations that can help you+-- fine-tune your application performance. Using machine learning+-- algorithms, CodeGuru Profiler can help you find your most expensive+-- lines of code and suggest ways you can improve efficiency and remove CPU+-- bottlenecks.+--+-- Amazon CodeGuru Profiler provides different visualizations of profiling+-- data to help you identify what code is running on the CPU, see how much+-- time is consumed, and suggest ways to reduce CPU utilization.+--+-- Amazon CodeGuru Profiler currently supports applications written in all+-- Java virtual machine (JVM) languages and Python. While CodeGuru Profiler+-- supports both visualizations and recommendations for applications+-- written in Java, it can also generate visualizations and a subset of+-- recommendations for applications written in other JVM languages and+-- Python.+--+-- For more information, see+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html What is Amazon CodeGuru Profiler>+-- in the /Amazon CodeGuru Profiler User Guide/.+module Amazonka.CodeGuruProfiler+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** ConflictException+    _ConflictException,++    -- ** InternalServerException+    _InternalServerException,++    -- ** ResourceNotFoundException+    _ResourceNotFoundException,++    -- ** ServiceQuotaExceededException+    _ServiceQuotaExceededException,++    -- ** ThrottlingException+    _ThrottlingException,++    -- ** ValidationException+    _ValidationException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** AddNotificationChannels+    AddNotificationChannels (AddNotificationChannels'),+    newAddNotificationChannels,+    AddNotificationChannelsResponse (AddNotificationChannelsResponse'),+    newAddNotificationChannelsResponse,++    -- ** BatchGetFrameMetricData+    BatchGetFrameMetricData (BatchGetFrameMetricData'),+    newBatchGetFrameMetricData,+    BatchGetFrameMetricDataResponse (BatchGetFrameMetricDataResponse'),+    newBatchGetFrameMetricDataResponse,++    -- ** ConfigureAgent+    ConfigureAgent (ConfigureAgent'),+    newConfigureAgent,+    ConfigureAgentResponse (ConfigureAgentResponse'),+    newConfigureAgentResponse,++    -- ** CreateProfilingGroup+    CreateProfilingGroup (CreateProfilingGroup'),+    newCreateProfilingGroup,+    CreateProfilingGroupResponse (CreateProfilingGroupResponse'),+    newCreateProfilingGroupResponse,++    -- ** DeleteProfilingGroup+    DeleteProfilingGroup (DeleteProfilingGroup'),+    newDeleteProfilingGroup,+    DeleteProfilingGroupResponse (DeleteProfilingGroupResponse'),+    newDeleteProfilingGroupResponse,++    -- ** DescribeProfilingGroup+    DescribeProfilingGroup (DescribeProfilingGroup'),+    newDescribeProfilingGroup,+    DescribeProfilingGroupResponse (DescribeProfilingGroupResponse'),+    newDescribeProfilingGroupResponse,++    -- ** GetFindingsReportAccountSummary+    GetFindingsReportAccountSummary (GetFindingsReportAccountSummary'),+    newGetFindingsReportAccountSummary,+    GetFindingsReportAccountSummaryResponse (GetFindingsReportAccountSummaryResponse'),+    newGetFindingsReportAccountSummaryResponse,++    -- ** GetNotificationConfiguration+    GetNotificationConfiguration (GetNotificationConfiguration'),+    newGetNotificationConfiguration,+    GetNotificationConfigurationResponse (GetNotificationConfigurationResponse'),+    newGetNotificationConfigurationResponse,++    -- ** GetPolicy+    GetPolicy (GetPolicy'),+    newGetPolicy,+    GetPolicyResponse (GetPolicyResponse'),+    newGetPolicyResponse,++    -- ** GetProfile+    GetProfile (GetProfile'),+    newGetProfile,+    GetProfileResponse (GetProfileResponse'),+    newGetProfileResponse,++    -- ** GetRecommendations+    GetRecommendations (GetRecommendations'),+    newGetRecommendations,+    GetRecommendationsResponse (GetRecommendationsResponse'),+    newGetRecommendationsResponse,++    -- ** ListFindingsReports+    ListFindingsReports (ListFindingsReports'),+    newListFindingsReports,+    ListFindingsReportsResponse (ListFindingsReportsResponse'),+    newListFindingsReportsResponse,++    -- ** ListProfileTimes (Paginated)+    ListProfileTimes (ListProfileTimes'),+    newListProfileTimes,+    ListProfileTimesResponse (ListProfileTimesResponse'),+    newListProfileTimesResponse,++    -- ** ListProfilingGroups+    ListProfilingGroups (ListProfilingGroups'),+    newListProfilingGroups,+    ListProfilingGroupsResponse (ListProfilingGroupsResponse'),+    newListProfilingGroupsResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** PostAgentProfile+    PostAgentProfile (PostAgentProfile'),+    newPostAgentProfile,+    PostAgentProfileResponse (PostAgentProfileResponse'),+    newPostAgentProfileResponse,++    -- ** PutPermission+    PutPermission (PutPermission'),+    newPutPermission,+    PutPermissionResponse (PutPermissionResponse'),+    newPutPermissionResponse,++    -- ** RemoveNotificationChannel+    RemoveNotificationChannel (RemoveNotificationChannel'),+    newRemoveNotificationChannel,+    RemoveNotificationChannelResponse (RemoveNotificationChannelResponse'),+    newRemoveNotificationChannelResponse,++    -- ** RemovePermission+    RemovePermission (RemovePermission'),+    newRemovePermission,+    RemovePermissionResponse (RemovePermissionResponse'),+    newRemovePermissionResponse,++    -- ** SubmitFeedback+    SubmitFeedback (SubmitFeedback'),+    newSubmitFeedback,+    SubmitFeedbackResponse (SubmitFeedbackResponse'),+    newSubmitFeedbackResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateProfilingGroup+    UpdateProfilingGroup (UpdateProfilingGroup'),+    newUpdateProfilingGroup,+    UpdateProfilingGroupResponse (UpdateProfilingGroupResponse'),+    newUpdateProfilingGroupResponse,++    -- * Types++    -- ** ActionGroup+    ActionGroup (..),++    -- ** AgentParameterField+    AgentParameterField (..),++    -- ** AggregationPeriod+    AggregationPeriod (..),++    -- ** ComputePlatform+    ComputePlatform (..),++    -- ** EventPublisher+    EventPublisher (..),++    -- ** FeedbackType+    FeedbackType (..),++    -- ** MetadataField+    MetadataField (..),++    -- ** MetricType+    MetricType (..),++    -- ** OrderBy+    OrderBy (..),++    -- ** AgentConfiguration+    AgentConfiguration (AgentConfiguration'),+    newAgentConfiguration,++    -- ** AgentOrchestrationConfig+    AgentOrchestrationConfig (AgentOrchestrationConfig'),+    newAgentOrchestrationConfig,++    -- ** AggregatedProfileTime+    AggregatedProfileTime (AggregatedProfileTime'),+    newAggregatedProfileTime,++    -- ** Anomaly+    Anomaly (Anomaly'),+    newAnomaly,++    -- ** AnomalyInstance+    AnomalyInstance (AnomalyInstance'),+    newAnomalyInstance,++    -- ** Channel+    Channel (Channel'),+    newChannel,++    -- ** FindingsReportSummary+    FindingsReportSummary (FindingsReportSummary'),+    newFindingsReportSummary,++    -- ** FrameMetric+    FrameMetric (FrameMetric'),+    newFrameMetric,++    -- ** FrameMetricDatum+    FrameMetricDatum (FrameMetricDatum'),+    newFrameMetricDatum,++    -- ** Match+    Match (Match'),+    newMatch,++    -- ** Metric+    Metric (Metric'),+    newMetric,++    -- ** NotificationConfiguration+    NotificationConfiguration (NotificationConfiguration'),+    newNotificationConfiguration,++    -- ** Pattern+    Pattern (Pattern'),+    newPattern,++    -- ** ProfileTime+    ProfileTime (ProfileTime'),+    newProfileTime,++    -- ** ProfilingGroupDescription+    ProfilingGroupDescription (ProfilingGroupDescription'),+    newProfilingGroupDescription,++    -- ** ProfilingStatus+    ProfilingStatus (ProfilingStatus'),+    newProfilingStatus,++    -- ** Recommendation+    Recommendation (Recommendation'),+    newRecommendation,++    -- ** TimestampStructure+    TimestampStructure (TimestampStructure'),+    newTimestampStructure,++    -- ** UserFeedback+    UserFeedback (UserFeedback'),+    newUserFeedback,+  )+where++import Amazonka.CodeGuruProfiler.AddNotificationChannels+import Amazonka.CodeGuruProfiler.BatchGetFrameMetricData+import Amazonka.CodeGuruProfiler.ConfigureAgent+import Amazonka.CodeGuruProfiler.CreateProfilingGroup+import Amazonka.CodeGuruProfiler.DeleteProfilingGroup+import Amazonka.CodeGuruProfiler.DescribeProfilingGroup+import Amazonka.CodeGuruProfiler.GetFindingsReportAccountSummary+import Amazonka.CodeGuruProfiler.GetNotificationConfiguration+import Amazonka.CodeGuruProfiler.GetPolicy+import Amazonka.CodeGuruProfiler.GetProfile+import Amazonka.CodeGuruProfiler.GetRecommendations+import Amazonka.CodeGuruProfiler.Lens+import Amazonka.CodeGuruProfiler.ListFindingsReports+import Amazonka.CodeGuruProfiler.ListProfileTimes+import Amazonka.CodeGuruProfiler.ListProfilingGroups+import Amazonka.CodeGuruProfiler.ListTagsForResource+import Amazonka.CodeGuruProfiler.PostAgentProfile+import Amazonka.CodeGuruProfiler.PutPermission+import Amazonka.CodeGuruProfiler.RemoveNotificationChannel+import Amazonka.CodeGuruProfiler.RemovePermission+import Amazonka.CodeGuruProfiler.SubmitFeedback+import Amazonka.CodeGuruProfiler.TagResource+import Amazonka.CodeGuruProfiler.Types+import Amazonka.CodeGuruProfiler.UntagResource+import Amazonka.CodeGuruProfiler.UpdateProfilingGroup+import Amazonka.CodeGuruProfiler.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 'CodeGuruProfiler'.++-- $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/CodeGuruProfiler/AddNotificationChannels.hs view
@@ -0,0 +1,200 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.AddNotificationChannels+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Add up to 2 anomaly notifications channels for a profiling group.+module Amazonka.CodeGuruProfiler.AddNotificationChannels+  ( -- * Creating a Request+    AddNotificationChannels (..),+    newAddNotificationChannels,++    -- * Request Lenses+    addNotificationChannels_channels,+    addNotificationChannels_profilingGroupName,++    -- * Destructuring the Response+    AddNotificationChannelsResponse (..),+    newAddNotificationChannelsResponse,++    -- * Response Lenses+    addNotificationChannelsResponse_notificationConfiguration,+    addNotificationChannelsResponse_httpStatus,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the AddNotificationChannelsRequest.+--+-- /See:/ 'newAddNotificationChannels' smart constructor.+data AddNotificationChannels = AddNotificationChannels'+  { -- | One or 2 channels to report to when anomalies are detected.+    channels :: Prelude.NonEmpty Channel,+    -- | The name of the profiling group that we are setting up notifications+    -- for.+    profilingGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddNotificationChannels' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'addNotificationChannels_channels' - One or 2 channels to report to when anomalies are detected.+--+-- 'profilingGroupName', 'addNotificationChannels_profilingGroupName' - The name of the profiling group that we are setting up notifications+-- for.+newAddNotificationChannels ::+  -- | 'channels'+  Prelude.NonEmpty Channel ->+  -- | 'profilingGroupName'+  Prelude.Text ->+  AddNotificationChannels+newAddNotificationChannels+  pChannels_+  pProfilingGroupName_ =+    AddNotificationChannels'+      { channels =+          Lens.coerced Lens.# pChannels_,+        profilingGroupName = pProfilingGroupName_+      }++-- | One or 2 channels to report to when anomalies are detected.+addNotificationChannels_channels :: Lens.Lens' AddNotificationChannels (Prelude.NonEmpty Channel)+addNotificationChannels_channels = Lens.lens (\AddNotificationChannels' {channels} -> channels) (\s@AddNotificationChannels' {} a -> s {channels = a} :: AddNotificationChannels) Prelude.. Lens.coerced++-- | The name of the profiling group that we are setting up notifications+-- for.+addNotificationChannels_profilingGroupName :: Lens.Lens' AddNotificationChannels Prelude.Text+addNotificationChannels_profilingGroupName = Lens.lens (\AddNotificationChannels' {profilingGroupName} -> profilingGroupName) (\s@AddNotificationChannels' {} a -> s {profilingGroupName = a} :: AddNotificationChannels)++instance Core.AWSRequest AddNotificationChannels where+  type+    AWSResponse AddNotificationChannels =+      AddNotificationChannelsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          AddNotificationChannelsResponse'+            Prelude.<$> (x Data..?> "notificationConfiguration")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable AddNotificationChannels where+  hashWithSalt _salt AddNotificationChannels' {..} =+    _salt+      `Prelude.hashWithSalt` channels+      `Prelude.hashWithSalt` profilingGroupName++instance Prelude.NFData AddNotificationChannels where+  rnf AddNotificationChannels' {..} =+    Prelude.rnf channels+      `Prelude.seq` Prelude.rnf profilingGroupName++instance Data.ToHeaders AddNotificationChannels where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AddNotificationChannels where+  toJSON AddNotificationChannels' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("channels" Data..= channels)]+      )++instance Data.ToPath AddNotificationChannels where+  toPath AddNotificationChannels' {..} =+    Prelude.mconcat+      [ "/profilingGroups/",+        Data.toBS profilingGroupName,+        "/notificationConfiguration"+      ]++instance Data.ToQuery AddNotificationChannels where+  toQuery = Prelude.const Prelude.mempty++-- | The structure representing the AddNotificationChannelsResponse.+--+-- /See:/ 'newAddNotificationChannelsResponse' smart constructor.+data AddNotificationChannelsResponse = AddNotificationChannelsResponse'+  { -- | The new notification configuration for this profiling group.+    notificationConfiguration :: Prelude.Maybe NotificationConfiguration,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddNotificationChannelsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'notificationConfiguration', 'addNotificationChannelsResponse_notificationConfiguration' - The new notification configuration for this profiling group.+--+-- 'httpStatus', 'addNotificationChannelsResponse_httpStatus' - The response's http status code.+newAddNotificationChannelsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  AddNotificationChannelsResponse+newAddNotificationChannelsResponse pHttpStatus_ =+  AddNotificationChannelsResponse'+    { notificationConfiguration =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The new notification configuration for this profiling group.+addNotificationChannelsResponse_notificationConfiguration :: Lens.Lens' AddNotificationChannelsResponse (Prelude.Maybe NotificationConfiguration)+addNotificationChannelsResponse_notificationConfiguration = Lens.lens (\AddNotificationChannelsResponse' {notificationConfiguration} -> notificationConfiguration) (\s@AddNotificationChannelsResponse' {} a -> s {notificationConfiguration = a} :: AddNotificationChannelsResponse)++-- | The response's http status code.+addNotificationChannelsResponse_httpStatus :: Lens.Lens' AddNotificationChannelsResponse Prelude.Int+addNotificationChannelsResponse_httpStatus = Lens.lens (\AddNotificationChannelsResponse' {httpStatus} -> httpStatus) (\s@AddNotificationChannelsResponse' {} a -> s {httpStatus = a} :: AddNotificationChannelsResponse)++instance+  Prelude.NFData+    AddNotificationChannelsResponse+  where+  rnf AddNotificationChannelsResponse' {..} =+    Prelude.rnf notificationConfiguration+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CodeGuruProfiler/BatchGetFrameMetricData.hs view
@@ -0,0 +1,452 @@+{-# 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.CodeGuruProfiler.BatchGetFrameMetricData+-- 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 time series of values for a requested list of frame metrics+-- from a time period.+module Amazonka.CodeGuruProfiler.BatchGetFrameMetricData+  ( -- * Creating a Request+    BatchGetFrameMetricData (..),+    newBatchGetFrameMetricData,++    -- * Request Lenses+    batchGetFrameMetricData_endTime,+    batchGetFrameMetricData_frameMetrics,+    batchGetFrameMetricData_period,+    batchGetFrameMetricData_startTime,+    batchGetFrameMetricData_targetResolution,+    batchGetFrameMetricData_profilingGroupName,++    -- * Destructuring the Response+    BatchGetFrameMetricDataResponse (..),+    newBatchGetFrameMetricDataResponse,++    -- * Response Lenses+    batchGetFrameMetricDataResponse_httpStatus,+    batchGetFrameMetricDataResponse_endTime,+    batchGetFrameMetricDataResponse_endTimes,+    batchGetFrameMetricDataResponse_frameMetricData,+    batchGetFrameMetricDataResponse_resolution,+    batchGetFrameMetricDataResponse_startTime,+    batchGetFrameMetricDataResponse_unprocessedEndTimes,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the BatchGetFrameMetricDataRequest.+--+-- /See:/ 'newBatchGetFrameMetricData' smart constructor.+data BatchGetFrameMetricData = BatchGetFrameMetricData'+  { -- | The end time of the time period for the returned time series values.+    -- This is specified using the ISO 8601 format. For example,+    -- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+    -- 1:15:02 PM UTC.+    endTime :: Prelude.Maybe Data.ISO8601,+    -- | The details of the metrics that are used to request a time series of+    -- values. The metric includes the name of the frame, the aggregation type+    -- to calculate the metric value for the frame, and the thread states to+    -- use to get the count for the metric value of the frame.+    frameMetrics :: Prelude.Maybe [FrameMetric],+    -- | The duration of the frame metrics used to return the time series values.+    -- Specify using the ISO 8601 format. The maximum period duration is one+    -- day (@PT24H@ or @P1D@).+    period :: Prelude.Maybe Prelude.Text,+    -- | The start time of the time period for the frame metrics used to return+    -- the time series values. This is specified using the ISO 8601 format. For+    -- example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1,+    -- 2020 1:15:02 PM UTC.+    startTime :: Prelude.Maybe Data.ISO8601,+    -- | The requested resolution of time steps for the returned time series of+    -- values. If the requested target resolution is not available due to data+    -- not being retained we provide a best effort result by falling back to+    -- the most granular available resolution after the target resolution.+    -- There are 3 valid values.+    --+    -- -   @P1D@ — 1 day+    --+    -- -   @PT1H@ — 1 hour+    --+    -- -   @PT5M@ — 5 minutes+    targetResolution :: Prelude.Maybe AggregationPeriod,+    -- | The name of the profiling group associated with the the frame metrics+    -- used to return the time series values.+    profilingGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetFrameMetricData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchGetFrameMetricData_endTime' - The end time of the time period for the returned time series values.+-- This is specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+--+-- 'frameMetrics', 'batchGetFrameMetricData_frameMetrics' - The details of the metrics that are used to request a time series of+-- values. The metric includes the name of the frame, the aggregation type+-- to calculate the metric value for the frame, and the thread states to+-- use to get the count for the metric value of the frame.+--+-- 'period', 'batchGetFrameMetricData_period' - The duration of the frame metrics used to return the time series values.+-- Specify using the ISO 8601 format. The maximum period duration is one+-- day (@PT24H@ or @P1D@).+--+-- 'startTime', 'batchGetFrameMetricData_startTime' - The start time of the time period for the frame metrics used to return+-- the time series values. This is specified using the ISO 8601 format. For+-- example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1,+-- 2020 1:15:02 PM UTC.+--+-- 'targetResolution', 'batchGetFrameMetricData_targetResolution' - The requested resolution of time steps for the returned time series of+-- values. If the requested target resolution is not available due to data+-- not being retained we provide a best effort result by falling back to+-- the most granular available resolution after the target resolution.+-- There are 3 valid values.+--+-- -   @P1D@ — 1 day+--+-- -   @PT1H@ — 1 hour+--+-- -   @PT5M@ — 5 minutes+--+-- 'profilingGroupName', 'batchGetFrameMetricData_profilingGroupName' - The name of the profiling group associated with the the frame metrics+-- used to return the time series values.+newBatchGetFrameMetricData ::+  -- | 'profilingGroupName'+  Prelude.Text ->+  BatchGetFrameMetricData+newBatchGetFrameMetricData pProfilingGroupName_ =+  BatchGetFrameMetricData'+    { endTime = Prelude.Nothing,+      frameMetrics = Prelude.Nothing,+      period = Prelude.Nothing,+      startTime = Prelude.Nothing,+      targetResolution = Prelude.Nothing,+      profilingGroupName = pProfilingGroupName_+    }++-- | The end time of the time period for the returned time series values.+-- This is specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+batchGetFrameMetricData_endTime :: Lens.Lens' BatchGetFrameMetricData (Prelude.Maybe Prelude.UTCTime)+batchGetFrameMetricData_endTime = Lens.lens (\BatchGetFrameMetricData' {endTime} -> endTime) (\s@BatchGetFrameMetricData' {} a -> s {endTime = a} :: BatchGetFrameMetricData) Prelude.. Lens.mapping Data._Time++-- | The details of the metrics that are used to request a time series of+-- values. The metric includes the name of the frame, the aggregation type+-- to calculate the metric value for the frame, and the thread states to+-- use to get the count for the metric value of the frame.+batchGetFrameMetricData_frameMetrics :: Lens.Lens' BatchGetFrameMetricData (Prelude.Maybe [FrameMetric])+batchGetFrameMetricData_frameMetrics = Lens.lens (\BatchGetFrameMetricData' {frameMetrics} -> frameMetrics) (\s@BatchGetFrameMetricData' {} a -> s {frameMetrics = a} :: BatchGetFrameMetricData) Prelude.. Lens.mapping Lens.coerced++-- | The duration of the frame metrics used to return the time series values.+-- Specify using the ISO 8601 format. The maximum period duration is one+-- day (@PT24H@ or @P1D@).+batchGetFrameMetricData_period :: Lens.Lens' BatchGetFrameMetricData (Prelude.Maybe Prelude.Text)+batchGetFrameMetricData_period = Lens.lens (\BatchGetFrameMetricData' {period} -> period) (\s@BatchGetFrameMetricData' {} a -> s {period = a} :: BatchGetFrameMetricData)++-- | The start time of the time period for the frame metrics used to return+-- the time series values. This is specified using the ISO 8601 format. For+-- example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1,+-- 2020 1:15:02 PM UTC.+batchGetFrameMetricData_startTime :: Lens.Lens' BatchGetFrameMetricData (Prelude.Maybe Prelude.UTCTime)+batchGetFrameMetricData_startTime = Lens.lens (\BatchGetFrameMetricData' {startTime} -> startTime) (\s@BatchGetFrameMetricData' {} a -> s {startTime = a} :: BatchGetFrameMetricData) Prelude.. Lens.mapping Data._Time++-- | The requested resolution of time steps for the returned time series of+-- values. If the requested target resolution is not available due to data+-- not being retained we provide a best effort result by falling back to+-- the most granular available resolution after the target resolution.+-- There are 3 valid values.+--+-- -   @P1D@ — 1 day+--+-- -   @PT1H@ — 1 hour+--+-- -   @PT5M@ — 5 minutes+batchGetFrameMetricData_targetResolution :: Lens.Lens' BatchGetFrameMetricData (Prelude.Maybe AggregationPeriod)+batchGetFrameMetricData_targetResolution = Lens.lens (\BatchGetFrameMetricData' {targetResolution} -> targetResolution) (\s@BatchGetFrameMetricData' {} a -> s {targetResolution = a} :: BatchGetFrameMetricData)++-- | The name of the profiling group associated with the the frame metrics+-- used to return the time series values.+batchGetFrameMetricData_profilingGroupName :: Lens.Lens' BatchGetFrameMetricData Prelude.Text+batchGetFrameMetricData_profilingGroupName = Lens.lens (\BatchGetFrameMetricData' {profilingGroupName} -> profilingGroupName) (\s@BatchGetFrameMetricData' {} a -> s {profilingGroupName = a} :: BatchGetFrameMetricData)++instance Core.AWSRequest BatchGetFrameMetricData where+  type+    AWSResponse BatchGetFrameMetricData =+      BatchGetFrameMetricDataResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchGetFrameMetricDataResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "endTime")+            Prelude.<*> (x Data..?> "endTimes" Core..!@ Prelude.mempty)+            Prelude.<*> ( x+                            Data..?> "frameMetricData"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..:> "resolution")+            Prelude.<*> (x Data..:> "startTime")+            Prelude.<*> ( x+                            Data..?> "unprocessedEndTimes"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable BatchGetFrameMetricData where+  hashWithSalt _salt BatchGetFrameMetricData' {..} =+    _salt+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` frameMetrics+      `Prelude.hashWithSalt` period+      `Prelude.hashWithSalt` startTime+      `Prelude.hashWithSalt` targetResolution+      `Prelude.hashWithSalt` profilingGroupName++instance Prelude.NFData BatchGetFrameMetricData where+  rnf BatchGetFrameMetricData' {..} =+    Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf frameMetrics+      `Prelude.seq` Prelude.rnf period+      `Prelude.seq` Prelude.rnf startTime+      `Prelude.seq` Prelude.rnf targetResolution+      `Prelude.seq` Prelude.rnf profilingGroupName++instance Data.ToHeaders BatchGetFrameMetricData where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchGetFrameMetricData where+  toJSON BatchGetFrameMetricData' {..} =+    Data.object+      ( Prelude.catMaybes+          [("frameMetrics" Data..=) Prelude.<$> frameMetrics]+      )++instance Data.ToPath BatchGetFrameMetricData where+  toPath BatchGetFrameMetricData' {..} =+    Prelude.mconcat+      [ "/profilingGroups/",+        Data.toBS profilingGroupName,+        "/frames/-/metrics"+      ]++instance Data.ToQuery BatchGetFrameMetricData where+  toQuery BatchGetFrameMetricData' {..} =+    Prelude.mconcat+      [ "endTime" Data.=: endTime,+        "period" Data.=: period,+        "startTime" Data.=: startTime,+        "targetResolution" Data.=: targetResolution+      ]++-- | The structure representing the BatchGetFrameMetricDataResponse.+--+-- /See:/ 'newBatchGetFrameMetricDataResponse' smart constructor.+data BatchGetFrameMetricDataResponse = BatchGetFrameMetricDataResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The end time of the time period for the returned time series values.+    -- This is specified using the ISO 8601 format. For example,+    -- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+    -- 1:15:02 PM UTC.+    endTime :: Data.ISO8601,+    -- | List of instances, or time steps, in the time series. For example, if+    -- the @period@ is one day (@PT24H)@), and the @resolution@ is five minutes+    -- (@PT5M@), then there are 288 @endTimes@ in the list that are each five+    -- minutes appart.+    endTimes :: [TimestampStructure],+    -- | Details of the metrics to request a time series of values. The metric+    -- includes the name of the frame, the aggregation type to calculate the+    -- metric value for the frame, and the thread states to use to get the+    -- count for the metric value of the frame.+    frameMetricData :: [FrameMetricDatum],+    -- | Resolution or granularity of the profile data used to generate the time+    -- series. This is the value used to jump through time steps in a time+    -- series. There are 3 valid values.+    --+    -- -   @P1D@ — 1 day+    --+    -- -   @PT1H@ — 1 hour+    --+    -- -   @PT5M@ — 5 minutes+    resolution :: AggregationPeriod,+    -- | The start time of the time period for the returned time series values.+    -- This is specified using the ISO 8601 format. For example,+    -- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+    -- 1:15:02 PM UTC.+    startTime :: Data.ISO8601,+    -- | List of instances which remained unprocessed. This will create a missing+    -- time step in the list of end times.+    unprocessedEndTimes :: Prelude.HashMap Prelude.Text [TimestampStructure]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetFrameMetricDataResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchGetFrameMetricDataResponse_httpStatus' - The response's http status code.+--+-- 'endTime', 'batchGetFrameMetricDataResponse_endTime' - The end time of the time period for the returned time series values.+-- This is specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+--+-- 'endTimes', 'batchGetFrameMetricDataResponse_endTimes' - List of instances, or time steps, in the time series. For example, if+-- the @period@ is one day (@PT24H)@), and the @resolution@ is five minutes+-- (@PT5M@), then there are 288 @endTimes@ in the list that are each five+-- minutes appart.+--+-- 'frameMetricData', 'batchGetFrameMetricDataResponse_frameMetricData' - Details of the metrics to request a time series of values. The metric+-- includes the name of the frame, the aggregation type to calculate the+-- metric value for the frame, and the thread states to use to get the+-- count for the metric value of the frame.+--+-- 'resolution', 'batchGetFrameMetricDataResponse_resolution' - Resolution or granularity of the profile data used to generate the time+-- series. This is the value used to jump through time steps in a time+-- series. There are 3 valid values.+--+-- -   @P1D@ — 1 day+--+-- -   @PT1H@ — 1 hour+--+-- -   @PT5M@ — 5 minutes+--+-- 'startTime', 'batchGetFrameMetricDataResponse_startTime' - The start time of the time period for the returned time series values.+-- This is specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+--+-- 'unprocessedEndTimes', 'batchGetFrameMetricDataResponse_unprocessedEndTimes' - List of instances which remained unprocessed. This will create a missing+-- time step in the list of end times.+newBatchGetFrameMetricDataResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'endTime'+  Prelude.UTCTime ->+  -- | 'resolution'+  AggregationPeriod ->+  -- | 'startTime'+  Prelude.UTCTime ->+  BatchGetFrameMetricDataResponse+newBatchGetFrameMetricDataResponse+  pHttpStatus_+  pEndTime_+  pResolution_+  pStartTime_ =+    BatchGetFrameMetricDataResponse'+      { httpStatus =+          pHttpStatus_,+        endTime = Data._Time Lens.# pEndTime_,+        endTimes = Prelude.mempty,+        frameMetricData = Prelude.mempty,+        resolution = pResolution_,+        startTime = Data._Time Lens.# pStartTime_,+        unprocessedEndTimes = Prelude.mempty+      }++-- | The response's http status code.+batchGetFrameMetricDataResponse_httpStatus :: Lens.Lens' BatchGetFrameMetricDataResponse Prelude.Int+batchGetFrameMetricDataResponse_httpStatus = Lens.lens (\BatchGetFrameMetricDataResponse' {httpStatus} -> httpStatus) (\s@BatchGetFrameMetricDataResponse' {} a -> s {httpStatus = a} :: BatchGetFrameMetricDataResponse)++-- | The end time of the time period for the returned time series values.+-- This is specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+batchGetFrameMetricDataResponse_endTime :: Lens.Lens' BatchGetFrameMetricDataResponse Prelude.UTCTime+batchGetFrameMetricDataResponse_endTime = Lens.lens (\BatchGetFrameMetricDataResponse' {endTime} -> endTime) (\s@BatchGetFrameMetricDataResponse' {} a -> s {endTime = a} :: BatchGetFrameMetricDataResponse) Prelude.. Data._Time++-- | List of instances, or time steps, in the time series. For example, if+-- the @period@ is one day (@PT24H)@), and the @resolution@ is five minutes+-- (@PT5M@), then there are 288 @endTimes@ in the list that are each five+-- minutes appart.+batchGetFrameMetricDataResponse_endTimes :: Lens.Lens' BatchGetFrameMetricDataResponse [TimestampStructure]+batchGetFrameMetricDataResponse_endTimes = Lens.lens (\BatchGetFrameMetricDataResponse' {endTimes} -> endTimes) (\s@BatchGetFrameMetricDataResponse' {} a -> s {endTimes = a} :: BatchGetFrameMetricDataResponse) Prelude.. Lens.coerced++-- | Details of the metrics to request a time series of values. The metric+-- includes the name of the frame, the aggregation type to calculate the+-- metric value for the frame, and the thread states to use to get the+-- count for the metric value of the frame.+batchGetFrameMetricDataResponse_frameMetricData :: Lens.Lens' BatchGetFrameMetricDataResponse [FrameMetricDatum]+batchGetFrameMetricDataResponse_frameMetricData = Lens.lens (\BatchGetFrameMetricDataResponse' {frameMetricData} -> frameMetricData) (\s@BatchGetFrameMetricDataResponse' {} a -> s {frameMetricData = a} :: BatchGetFrameMetricDataResponse) Prelude.. Lens.coerced++-- | Resolution or granularity of the profile data used to generate the time+-- series. This is the value used to jump through time steps in a time+-- series. There are 3 valid values.+--+-- -   @P1D@ — 1 day+--+-- -   @PT1H@ — 1 hour+--+-- -   @PT5M@ — 5 minutes+batchGetFrameMetricDataResponse_resolution :: Lens.Lens' BatchGetFrameMetricDataResponse AggregationPeriod+batchGetFrameMetricDataResponse_resolution = Lens.lens (\BatchGetFrameMetricDataResponse' {resolution} -> resolution) (\s@BatchGetFrameMetricDataResponse' {} a -> s {resolution = a} :: BatchGetFrameMetricDataResponse)++-- | The start time of the time period for the returned time series values.+-- This is specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+batchGetFrameMetricDataResponse_startTime :: Lens.Lens' BatchGetFrameMetricDataResponse Prelude.UTCTime+batchGetFrameMetricDataResponse_startTime = Lens.lens (\BatchGetFrameMetricDataResponse' {startTime} -> startTime) (\s@BatchGetFrameMetricDataResponse' {} a -> s {startTime = a} :: BatchGetFrameMetricDataResponse) Prelude.. Data._Time++-- | List of instances which remained unprocessed. This will create a missing+-- time step in the list of end times.+batchGetFrameMetricDataResponse_unprocessedEndTimes :: Lens.Lens' BatchGetFrameMetricDataResponse (Prelude.HashMap Prelude.Text [TimestampStructure])+batchGetFrameMetricDataResponse_unprocessedEndTimes = Lens.lens (\BatchGetFrameMetricDataResponse' {unprocessedEndTimes} -> unprocessedEndTimes) (\s@BatchGetFrameMetricDataResponse' {} a -> s {unprocessedEndTimes = a} :: BatchGetFrameMetricDataResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    BatchGetFrameMetricDataResponse+  where+  rnf BatchGetFrameMetricDataResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf endTimes+      `Prelude.seq` Prelude.rnf frameMetricData+      `Prelude.seq` Prelude.rnf resolution+      `Prelude.seq` Prelude.rnf startTime+      `Prelude.seq` Prelude.rnf unprocessedEndTimes
+ gen/Amazonka/CodeGuruProfiler/ConfigureAgent.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.CodeGuruProfiler.ConfigureAgent+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Used by profiler agents to report their current state and to receive+-- remote configuration updates. For example, @ConfigureAgent@ can be used+-- to tell an agent whether to profile or not and for how long to return+-- profiling data.+module Amazonka.CodeGuruProfiler.ConfigureAgent+  ( -- * Creating a Request+    ConfigureAgent (..),+    newConfigureAgent,++    -- * Request Lenses+    configureAgent_fleetInstanceId,+    configureAgent_metadata,+    configureAgent_profilingGroupName,++    -- * Destructuring the Response+    ConfigureAgentResponse (..),+    newConfigureAgentResponse,++    -- * Response Lenses+    configureAgentResponse_httpStatus,+    configureAgentResponse_configuration,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the configureAgentRequest.+--+-- /See:/ 'newConfigureAgent' smart constructor.+data ConfigureAgent = ConfigureAgent'+  { -- | A universally unique identifier (UUID) for a profiling instance. For+    -- example, if the profiling instance is an Amazon EC2 instance, it is the+    -- instance ID. If it is an AWS Fargate container, it is the container\'s+    -- task ID.+    fleetInstanceId :: Prelude.Maybe Prelude.Text,+    -- | Metadata captured about the compute platform the agent is running on. It+    -- includes information about sampling and reporting. The valid fields are:+    --+    -- -   @COMPUTE_PLATFORM@ - The compute platform on which the agent is+    --     running+    --+    -- -   @AGENT_ID@ - The ID for an agent instance.+    --+    -- -   @AWS_REQUEST_ID@ - The AWS request ID of a Lambda invocation.+    --+    -- -   @EXECUTION_ENVIRONMENT@ - The execution environment a Lambda+    --     function is running on.+    --+    -- -   @LAMBDA_FUNCTION_ARN@ - The Amazon Resource Name (ARN) that is used+    --     to invoke a Lambda function.+    --+    -- -   @LAMBDA_MEMORY_LIMIT_IN_MB@ - The memory allocated to a Lambda+    --     function.+    --+    -- -   @LAMBDA_REMAINING_TIME_IN_MILLISECONDS@ - The time in milliseconds+    --     before execution of a Lambda function times out.+    --+    -- -   @LAMBDA_TIME_GAP_BETWEEN_INVOKES_IN_MILLISECONDS@ - The time in+    --     milliseconds between two invocations of a Lambda function.+    --+    -- -   @LAMBDA_PREVIOUS_EXECUTION_TIME_IN_MILLISECONDS@ - The time in+    --     milliseconds for the previous Lambda invocation.+    metadata :: Prelude.Maybe (Prelude.HashMap MetadataField Prelude.Text),+    -- | The name of the profiling group for which the configured agent is+    -- collecting profiling data.+    profilingGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ConfigureAgent' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fleetInstanceId', 'configureAgent_fleetInstanceId' - A universally unique identifier (UUID) for a profiling instance. For+-- example, if the profiling instance is an Amazon EC2 instance, it is the+-- instance ID. If it is an AWS Fargate container, it is the container\'s+-- task ID.+--+-- 'metadata', 'configureAgent_metadata' - Metadata captured about the compute platform the agent is running on. It+-- includes information about sampling and reporting. The valid fields are:+--+-- -   @COMPUTE_PLATFORM@ - The compute platform on which the agent is+--     running+--+-- -   @AGENT_ID@ - The ID for an agent instance.+--+-- -   @AWS_REQUEST_ID@ - The AWS request ID of a Lambda invocation.+--+-- -   @EXECUTION_ENVIRONMENT@ - The execution environment a Lambda+--     function is running on.+--+-- -   @LAMBDA_FUNCTION_ARN@ - The Amazon Resource Name (ARN) that is used+--     to invoke a Lambda function.+--+-- -   @LAMBDA_MEMORY_LIMIT_IN_MB@ - The memory allocated to a Lambda+--     function.+--+-- -   @LAMBDA_REMAINING_TIME_IN_MILLISECONDS@ - The time in milliseconds+--     before execution of a Lambda function times out.+--+-- -   @LAMBDA_TIME_GAP_BETWEEN_INVOKES_IN_MILLISECONDS@ - The time in+--     milliseconds between two invocations of a Lambda function.+--+-- -   @LAMBDA_PREVIOUS_EXECUTION_TIME_IN_MILLISECONDS@ - The time in+--     milliseconds for the previous Lambda invocation.+--+-- 'profilingGroupName', 'configureAgent_profilingGroupName' - The name of the profiling group for which the configured agent is+-- collecting profiling data.+newConfigureAgent ::+  -- | 'profilingGroupName'+  Prelude.Text ->+  ConfigureAgent+newConfigureAgent pProfilingGroupName_ =+  ConfigureAgent'+    { fleetInstanceId = Prelude.Nothing,+      metadata = Prelude.Nothing,+      profilingGroupName = pProfilingGroupName_+    }++-- | A universally unique identifier (UUID) for a profiling instance. For+-- example, if the profiling instance is an Amazon EC2 instance, it is the+-- instance ID. If it is an AWS Fargate container, it is the container\'s+-- task ID.+configureAgent_fleetInstanceId :: Lens.Lens' ConfigureAgent (Prelude.Maybe Prelude.Text)+configureAgent_fleetInstanceId = Lens.lens (\ConfigureAgent' {fleetInstanceId} -> fleetInstanceId) (\s@ConfigureAgent' {} a -> s {fleetInstanceId = a} :: ConfigureAgent)++-- | Metadata captured about the compute platform the agent is running on. It+-- includes information about sampling and reporting. The valid fields are:+--+-- -   @COMPUTE_PLATFORM@ - The compute platform on which the agent is+--     running+--+-- -   @AGENT_ID@ - The ID for an agent instance.+--+-- -   @AWS_REQUEST_ID@ - The AWS request ID of a Lambda invocation.+--+-- -   @EXECUTION_ENVIRONMENT@ - The execution environment a Lambda+--     function is running on.+--+-- -   @LAMBDA_FUNCTION_ARN@ - The Amazon Resource Name (ARN) that is used+--     to invoke a Lambda function.+--+-- -   @LAMBDA_MEMORY_LIMIT_IN_MB@ - The memory allocated to a Lambda+--     function.+--+-- -   @LAMBDA_REMAINING_TIME_IN_MILLISECONDS@ - The time in milliseconds+--     before execution of a Lambda function times out.+--+-- -   @LAMBDA_TIME_GAP_BETWEEN_INVOKES_IN_MILLISECONDS@ - The time in+--     milliseconds between two invocations of a Lambda function.+--+-- -   @LAMBDA_PREVIOUS_EXECUTION_TIME_IN_MILLISECONDS@ - The time in+--     milliseconds for the previous Lambda invocation.+configureAgent_metadata :: Lens.Lens' ConfigureAgent (Prelude.Maybe (Prelude.HashMap MetadataField Prelude.Text))+configureAgent_metadata = Lens.lens (\ConfigureAgent' {metadata} -> metadata) (\s@ConfigureAgent' {} a -> s {metadata = a} :: ConfigureAgent) Prelude.. Lens.mapping Lens.coerced++-- | The name of the profiling group for which the configured agent is+-- collecting profiling data.+configureAgent_profilingGroupName :: Lens.Lens' ConfigureAgent Prelude.Text+configureAgent_profilingGroupName = Lens.lens (\ConfigureAgent' {profilingGroupName} -> profilingGroupName) (\s@ConfigureAgent' {} a -> s {profilingGroupName = a} :: ConfigureAgent)++instance Core.AWSRequest ConfigureAgent where+  type+    AWSResponse ConfigureAgent =+      ConfigureAgentResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ConfigureAgentResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable ConfigureAgent where+  hashWithSalt _salt ConfigureAgent' {..} =+    _salt+      `Prelude.hashWithSalt` fleetInstanceId+      `Prelude.hashWithSalt` metadata+      `Prelude.hashWithSalt` profilingGroupName++instance Prelude.NFData ConfigureAgent where+  rnf ConfigureAgent' {..} =+    Prelude.rnf fleetInstanceId+      `Prelude.seq` Prelude.rnf metadata+      `Prelude.seq` Prelude.rnf profilingGroupName++instance Data.ToHeaders ConfigureAgent where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ConfigureAgent where+  toJSON ConfigureAgent' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("fleetInstanceId" Data..=)+              Prelude.<$> fleetInstanceId,+            ("metadata" Data..=) Prelude.<$> metadata+          ]+      )++instance Data.ToPath ConfigureAgent where+  toPath ConfigureAgent' {..} =+    Prelude.mconcat+      [ "/profilingGroups/",+        Data.toBS profilingGroupName,+        "/configureAgent"+      ]++instance Data.ToQuery ConfigureAgent where+  toQuery = Prelude.const Prelude.mempty++-- | The structure representing the configureAgentResponse.+--+-- /See:/ 'newConfigureAgentResponse' smart constructor.+data ConfigureAgentResponse = ConfigureAgentResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | An+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AgentConfiguration.html AgentConfiguration>+    -- object that specifies if an agent profiles or not and for how long to+    -- return profiling data.+    configuration :: AgentConfiguration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ConfigureAgentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'configureAgentResponse_httpStatus' - The response's http status code.+--+-- 'configuration', 'configureAgentResponse_configuration' - An+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AgentConfiguration.html AgentConfiguration>+-- object that specifies if an agent profiles or not and for how long to+-- return profiling data.+newConfigureAgentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'configuration'+  AgentConfiguration ->+  ConfigureAgentResponse+newConfigureAgentResponse+  pHttpStatus_+  pConfiguration_ =+    ConfigureAgentResponse'+      { httpStatus = pHttpStatus_,+        configuration = pConfiguration_+      }++-- | The response's http status code.+configureAgentResponse_httpStatus :: Lens.Lens' ConfigureAgentResponse Prelude.Int+configureAgentResponse_httpStatus = Lens.lens (\ConfigureAgentResponse' {httpStatus} -> httpStatus) (\s@ConfigureAgentResponse' {} a -> s {httpStatus = a} :: ConfigureAgentResponse)++-- | An+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AgentConfiguration.html AgentConfiguration>+-- object that specifies if an agent profiles or not and for how long to+-- return profiling data.+configureAgentResponse_configuration :: Lens.Lens' ConfigureAgentResponse AgentConfiguration+configureAgentResponse_configuration = Lens.lens (\ConfigureAgentResponse' {configuration} -> configuration) (\s@ConfigureAgentResponse' {} a -> s {configuration = a} :: ConfigureAgentResponse)++instance Prelude.NFData ConfigureAgentResponse where+  rnf ConfigureAgentResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf configuration
+ gen/Amazonka/CodeGuruProfiler/CreateProfilingGroup.hs view
@@ -0,0 +1,264 @@+{-# 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.CodeGuruProfiler.CreateProfilingGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a profiling group.+module Amazonka.CodeGuruProfiler.CreateProfilingGroup+  ( -- * Creating a Request+    CreateProfilingGroup (..),+    newCreateProfilingGroup,++    -- * Request Lenses+    createProfilingGroup_agentOrchestrationConfig,+    createProfilingGroup_computePlatform,+    createProfilingGroup_tags,+    createProfilingGroup_clientToken,+    createProfilingGroup_profilingGroupName,++    -- * Destructuring the Response+    CreateProfilingGroupResponse (..),+    newCreateProfilingGroupResponse,++    -- * Response Lenses+    createProfilingGroupResponse_httpStatus,+    createProfilingGroupResponse_profilingGroup,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the createProfiliingGroupRequest.+--+-- /See:/ 'newCreateProfilingGroup' smart constructor.+data CreateProfilingGroup = CreateProfilingGroup'+  { -- | Specifies whether profiling is enabled or disabled for the created+    -- profiling group.+    agentOrchestrationConfig :: Prelude.Maybe AgentOrchestrationConfig,+    -- | The compute platform of the profiling group. Use @AWSLambda@ if your+    -- application runs on AWS Lambda. Use @Default@ if your application runs+    -- on a compute platform that is not AWS Lambda, such an Amazon EC2+    -- instance, an on-premises server, or a different platform. If not+    -- specified, @Default@ is used.+    computePlatform :: Prelude.Maybe ComputePlatform,+    -- | A list of tags to add to the created profiling group.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Amazon CodeGuru Profiler uses this universally unique identifier (UUID)+    -- to prevent the accidental creation of duplicate profiling groups if+    -- there are failures and retries.+    clientToken :: Prelude.Text,+    -- | The name of the profiling group to create.+    profilingGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateProfilingGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'agentOrchestrationConfig', 'createProfilingGroup_agentOrchestrationConfig' - Specifies whether profiling is enabled or disabled for the created+-- profiling group.+--+-- 'computePlatform', 'createProfilingGroup_computePlatform' - The compute platform of the profiling group. Use @AWSLambda@ if your+-- application runs on AWS Lambda. Use @Default@ if your application runs+-- on a compute platform that is not AWS Lambda, such an Amazon EC2+-- instance, an on-premises server, or a different platform. If not+-- specified, @Default@ is used.+--+-- 'tags', 'createProfilingGroup_tags' - A list of tags to add to the created profiling group.+--+-- 'clientToken', 'createProfilingGroup_clientToken' - Amazon CodeGuru Profiler uses this universally unique identifier (UUID)+-- to prevent the accidental creation of duplicate profiling groups if+-- there are failures and retries.+--+-- 'profilingGroupName', 'createProfilingGroup_profilingGroupName' - The name of the profiling group to create.+newCreateProfilingGroup ::+  -- | 'clientToken'+  Prelude.Text ->+  -- | 'profilingGroupName'+  Prelude.Text ->+  CreateProfilingGroup+newCreateProfilingGroup+  pClientToken_+  pProfilingGroupName_ =+    CreateProfilingGroup'+      { agentOrchestrationConfig =+          Prelude.Nothing,+        computePlatform = Prelude.Nothing,+        tags = Prelude.Nothing,+        clientToken = pClientToken_,+        profilingGroupName = pProfilingGroupName_+      }++-- | Specifies whether profiling is enabled or disabled for the created+-- profiling group.+createProfilingGroup_agentOrchestrationConfig :: Lens.Lens' CreateProfilingGroup (Prelude.Maybe AgentOrchestrationConfig)+createProfilingGroup_agentOrchestrationConfig = Lens.lens (\CreateProfilingGroup' {agentOrchestrationConfig} -> agentOrchestrationConfig) (\s@CreateProfilingGroup' {} a -> s {agentOrchestrationConfig = a} :: CreateProfilingGroup)++-- | The compute platform of the profiling group. Use @AWSLambda@ if your+-- application runs on AWS Lambda. Use @Default@ if your application runs+-- on a compute platform that is not AWS Lambda, such an Amazon EC2+-- instance, an on-premises server, or a different platform. If not+-- specified, @Default@ is used.+createProfilingGroup_computePlatform :: Lens.Lens' CreateProfilingGroup (Prelude.Maybe ComputePlatform)+createProfilingGroup_computePlatform = Lens.lens (\CreateProfilingGroup' {computePlatform} -> computePlatform) (\s@CreateProfilingGroup' {} a -> s {computePlatform = a} :: CreateProfilingGroup)++-- | A list of tags to add to the created profiling group.+createProfilingGroup_tags :: Lens.Lens' CreateProfilingGroup (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createProfilingGroup_tags = Lens.lens (\CreateProfilingGroup' {tags} -> tags) (\s@CreateProfilingGroup' {} a -> s {tags = a} :: CreateProfilingGroup) Prelude.. Lens.mapping Lens.coerced++-- | Amazon CodeGuru Profiler uses this universally unique identifier (UUID)+-- to prevent the accidental creation of duplicate profiling groups if+-- there are failures and retries.+createProfilingGroup_clientToken :: Lens.Lens' CreateProfilingGroup Prelude.Text+createProfilingGroup_clientToken = Lens.lens (\CreateProfilingGroup' {clientToken} -> clientToken) (\s@CreateProfilingGroup' {} a -> s {clientToken = a} :: CreateProfilingGroup)++-- | The name of the profiling group to create.+createProfilingGroup_profilingGroupName :: Lens.Lens' CreateProfilingGroup Prelude.Text+createProfilingGroup_profilingGroupName = Lens.lens (\CreateProfilingGroup' {profilingGroupName} -> profilingGroupName) (\s@CreateProfilingGroup' {} a -> s {profilingGroupName = a} :: CreateProfilingGroup)++instance Core.AWSRequest CreateProfilingGroup where+  type+    AWSResponse CreateProfilingGroup =+      CreateProfilingGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateProfilingGroupResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable CreateProfilingGroup where+  hashWithSalt _salt CreateProfilingGroup' {..} =+    _salt+      `Prelude.hashWithSalt` agentOrchestrationConfig+      `Prelude.hashWithSalt` computePlatform+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` profilingGroupName++instance Prelude.NFData CreateProfilingGroup where+  rnf CreateProfilingGroup' {..} =+    Prelude.rnf agentOrchestrationConfig+      `Prelude.seq` Prelude.rnf computePlatform+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf profilingGroupName++instance Data.ToHeaders CreateProfilingGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateProfilingGroup where+  toJSON CreateProfilingGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("agentOrchestrationConfig" Data..=)+              Prelude.<$> agentOrchestrationConfig,+            ("computePlatform" Data..=)+              Prelude.<$> computePlatform,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("profilingGroupName" Data..= profilingGroupName)+          ]+      )++instance Data.ToPath CreateProfilingGroup where+  toPath = Prelude.const "/profilingGroups"++instance Data.ToQuery CreateProfilingGroup where+  toQuery CreateProfilingGroup' {..} =+    Prelude.mconcat ["clientToken" Data.=: clientToken]++-- | The structure representing the createProfilingGroupResponse.+--+-- /See:/ 'newCreateProfilingGroupResponse' smart constructor.+data CreateProfilingGroupResponse = CreateProfilingGroupResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The returned+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+    -- object that contains information about the created profiling group.+    profilingGroup :: ProfilingGroupDescription+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateProfilingGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createProfilingGroupResponse_httpStatus' - The response's http status code.+--+-- 'profilingGroup', 'createProfilingGroupResponse_profilingGroup' - The returned+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- object that contains information about the created profiling group.+newCreateProfilingGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'profilingGroup'+  ProfilingGroupDescription ->+  CreateProfilingGroupResponse+newCreateProfilingGroupResponse+  pHttpStatus_+  pProfilingGroup_ =+    CreateProfilingGroupResponse'+      { httpStatus =+          pHttpStatus_,+        profilingGroup = pProfilingGroup_+      }++-- | The response's http status code.+createProfilingGroupResponse_httpStatus :: Lens.Lens' CreateProfilingGroupResponse Prelude.Int+createProfilingGroupResponse_httpStatus = Lens.lens (\CreateProfilingGroupResponse' {httpStatus} -> httpStatus) (\s@CreateProfilingGroupResponse' {} a -> s {httpStatus = a} :: CreateProfilingGroupResponse)++-- | The returned+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- object that contains information about the created profiling group.+createProfilingGroupResponse_profilingGroup :: Lens.Lens' CreateProfilingGroupResponse ProfilingGroupDescription+createProfilingGroupResponse_profilingGroup = Lens.lens (\CreateProfilingGroupResponse' {profilingGroup} -> profilingGroup) (\s@CreateProfilingGroupResponse' {} a -> s {profilingGroup = a} :: CreateProfilingGroupResponse)++instance Prelude.NFData CreateProfilingGroupResponse where+  rnf CreateProfilingGroupResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf profilingGroup
+ gen/Amazonka/CodeGuruProfiler/DeleteProfilingGroup.hs view
@@ -0,0 +1,155 @@+{-# 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.CodeGuruProfiler.DeleteProfilingGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes a profiling group.+module Amazonka.CodeGuruProfiler.DeleteProfilingGroup+  ( -- * Creating a Request+    DeleteProfilingGroup (..),+    newDeleteProfilingGroup,++    -- * Request Lenses+    deleteProfilingGroup_profilingGroupName,++    -- * Destructuring the Response+    DeleteProfilingGroupResponse (..),+    newDeleteProfilingGroupResponse,++    -- * Response Lenses+    deleteProfilingGroupResponse_httpStatus,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the deleteProfilingGroupRequest.+--+-- /See:/ 'newDeleteProfilingGroup' smart constructor.+data DeleteProfilingGroup = DeleteProfilingGroup'+  { -- | The name of the profiling group to delete.+    profilingGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteProfilingGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'profilingGroupName', 'deleteProfilingGroup_profilingGroupName' - The name of the profiling group to delete.+newDeleteProfilingGroup ::+  -- | 'profilingGroupName'+  Prelude.Text ->+  DeleteProfilingGroup+newDeleteProfilingGroup pProfilingGroupName_ =+  DeleteProfilingGroup'+    { profilingGroupName =+        pProfilingGroupName_+    }++-- | The name of the profiling group to delete.+deleteProfilingGroup_profilingGroupName :: Lens.Lens' DeleteProfilingGroup Prelude.Text+deleteProfilingGroup_profilingGroupName = Lens.lens (\DeleteProfilingGroup' {profilingGroupName} -> profilingGroupName) (\s@DeleteProfilingGroup' {} a -> s {profilingGroupName = a} :: DeleteProfilingGroup)++instance Core.AWSRequest DeleteProfilingGroup where+  type+    AWSResponse DeleteProfilingGroup =+      DeleteProfilingGroupResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteProfilingGroupResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteProfilingGroup where+  hashWithSalt _salt DeleteProfilingGroup' {..} =+    _salt `Prelude.hashWithSalt` profilingGroupName++instance Prelude.NFData DeleteProfilingGroup where+  rnf DeleteProfilingGroup' {..} =+    Prelude.rnf profilingGroupName++instance Data.ToHeaders DeleteProfilingGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteProfilingGroup where+  toPath DeleteProfilingGroup' {..} =+    Prelude.mconcat+      ["/profilingGroups/", Data.toBS profilingGroupName]++instance Data.ToQuery DeleteProfilingGroup where+  toQuery = Prelude.const Prelude.mempty++-- | The structure representing the deleteProfilingGroupResponse.+--+-- /See:/ 'newDeleteProfilingGroupResponse' smart constructor.+data DeleteProfilingGroupResponse = DeleteProfilingGroupResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteProfilingGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteProfilingGroupResponse_httpStatus' - The response's http status code.+newDeleteProfilingGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteProfilingGroupResponse+newDeleteProfilingGroupResponse pHttpStatus_ =+  DeleteProfilingGroupResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deleteProfilingGroupResponse_httpStatus :: Lens.Lens' DeleteProfilingGroupResponse Prelude.Int+deleteProfilingGroupResponse_httpStatus = Lens.lens (\DeleteProfilingGroupResponse' {httpStatus} -> httpStatus) (\s@DeleteProfilingGroupResponse' {} a -> s {httpStatus = a} :: DeleteProfilingGroupResponse)++instance Prelude.NFData DeleteProfilingGroupResponse where+  rnf DeleteProfilingGroupResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/CodeGuruProfiler/DescribeProfilingGroup.hs view
@@ -0,0 +1,182 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.DescribeProfilingGroup+-- 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+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- object that contains information about the requested profiling group.+module Amazonka.CodeGuruProfiler.DescribeProfilingGroup+  ( -- * Creating a Request+    DescribeProfilingGroup (..),+    newDescribeProfilingGroup,++    -- * Request Lenses+    describeProfilingGroup_profilingGroupName,++    -- * Destructuring the Response+    DescribeProfilingGroupResponse (..),+    newDescribeProfilingGroupResponse,++    -- * Response Lenses+    describeProfilingGroupResponse_httpStatus,+    describeProfilingGroupResponse_profilingGroup,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the describeProfilingGroupRequest.+--+-- /See:/ 'newDescribeProfilingGroup' smart constructor.+data DescribeProfilingGroup = DescribeProfilingGroup'+  { -- | The name of the profiling group to get information about.+    profilingGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeProfilingGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'profilingGroupName', 'describeProfilingGroup_profilingGroupName' - The name of the profiling group to get information about.+newDescribeProfilingGroup ::+  -- | 'profilingGroupName'+  Prelude.Text ->+  DescribeProfilingGroup+newDescribeProfilingGroup pProfilingGroupName_ =+  DescribeProfilingGroup'+    { profilingGroupName =+        pProfilingGroupName_+    }++-- | The name of the profiling group to get information about.+describeProfilingGroup_profilingGroupName :: Lens.Lens' DescribeProfilingGroup Prelude.Text+describeProfilingGroup_profilingGroupName = Lens.lens (\DescribeProfilingGroup' {profilingGroupName} -> profilingGroupName) (\s@DescribeProfilingGroup' {} a -> s {profilingGroupName = a} :: DescribeProfilingGroup)++instance Core.AWSRequest DescribeProfilingGroup where+  type+    AWSResponse DescribeProfilingGroup =+      DescribeProfilingGroupResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeProfilingGroupResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DescribeProfilingGroup where+  hashWithSalt _salt DescribeProfilingGroup' {..} =+    _salt `Prelude.hashWithSalt` profilingGroupName++instance Prelude.NFData DescribeProfilingGroup where+  rnf DescribeProfilingGroup' {..} =+    Prelude.rnf profilingGroupName++instance Data.ToHeaders DescribeProfilingGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeProfilingGroup where+  toPath DescribeProfilingGroup' {..} =+    Prelude.mconcat+      ["/profilingGroups/", Data.toBS profilingGroupName]++instance Data.ToQuery DescribeProfilingGroup where+  toQuery = Prelude.const Prelude.mempty++-- | The structure representing the describeProfilingGroupResponse.+--+-- /See:/ 'newDescribeProfilingGroupResponse' smart constructor.+data DescribeProfilingGroupResponse = DescribeProfilingGroupResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The returned+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+    -- object that contains information about the requested profiling group.+    profilingGroup :: ProfilingGroupDescription+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeProfilingGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeProfilingGroupResponse_httpStatus' - The response's http status code.+--+-- 'profilingGroup', 'describeProfilingGroupResponse_profilingGroup' - The returned+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- object that contains information about the requested profiling group.+newDescribeProfilingGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'profilingGroup'+  ProfilingGroupDescription ->+  DescribeProfilingGroupResponse+newDescribeProfilingGroupResponse+  pHttpStatus_+  pProfilingGroup_ =+    DescribeProfilingGroupResponse'+      { httpStatus =+          pHttpStatus_,+        profilingGroup = pProfilingGroup_+      }++-- | The response's http status code.+describeProfilingGroupResponse_httpStatus :: Lens.Lens' DescribeProfilingGroupResponse Prelude.Int+describeProfilingGroupResponse_httpStatus = Lens.lens (\DescribeProfilingGroupResponse' {httpStatus} -> httpStatus) (\s@DescribeProfilingGroupResponse' {} a -> s {httpStatus = a} :: DescribeProfilingGroupResponse)++-- | The returned+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- object that contains information about the requested profiling group.+describeProfilingGroupResponse_profilingGroup :: Lens.Lens' DescribeProfilingGroupResponse ProfilingGroupDescription+describeProfilingGroupResponse_profilingGroup = Lens.lens (\DescribeProfilingGroupResponse' {profilingGroup} -> profilingGroup) (\s@DescribeProfilingGroupResponse' {} a -> s {profilingGroup = a} :: DescribeProfilingGroupResponse)++instance+  Prelude.NFData+    DescribeProfilingGroupResponse+  where+  rnf DescribeProfilingGroupResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf profilingGroup
+ gen/Amazonka/CodeGuruProfiler/GetFindingsReportAccountSummary.hs view
@@ -0,0 +1,301 @@+{-# 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.CodeGuruProfiler.GetFindingsReportAccountSummary+-- 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+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_FindingsReportSummary.html FindingsReportSummary>+-- objects that contain analysis results for all profiling groups in your+-- AWS account.+module Amazonka.CodeGuruProfiler.GetFindingsReportAccountSummary+  ( -- * Creating a Request+    GetFindingsReportAccountSummary (..),+    newGetFindingsReportAccountSummary,++    -- * Request Lenses+    getFindingsReportAccountSummary_dailyReportsOnly,+    getFindingsReportAccountSummary_maxResults,+    getFindingsReportAccountSummary_nextToken,++    -- * Destructuring the Response+    GetFindingsReportAccountSummaryResponse (..),+    newGetFindingsReportAccountSummaryResponse,++    -- * Response Lenses+    getFindingsReportAccountSummaryResponse_nextToken,+    getFindingsReportAccountSummaryResponse_httpStatus,+    getFindingsReportAccountSummaryResponse_reportSummaries,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the GetFindingsReportAccountSummaryRequest.+--+-- /See:/ 'newGetFindingsReportAccountSummary' smart constructor.+data GetFindingsReportAccountSummary = GetFindingsReportAccountSummary'+  { -- | A @Boolean@ value indicating whether to only return reports from daily+    -- profiles. If set to @True@, only analysis data from daily profiles is+    -- returned. If set to @False@, analysis data is returned from smaller time+    -- windows (for example, one hour).+    dailyReportsOnly :: Prelude.Maybe Prelude.Bool,+    -- | The maximum number of results returned by+    -- @ GetFindingsReportAccountSummary@ in paginated output. When this+    -- parameter is used, @GetFindingsReportAccountSummary@ only returns+    -- @maxResults@ results in a single page along with a @nextToken@ response+    -- element. The remaining results of the initial request can be seen by+    -- sending another @GetFindingsReportAccountSummary@ request with the+    -- returned @nextToken@ value.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated+    -- @GetFindingsReportAccountSummary@ request where @maxResults@ was used+    -- and the results exceeded the value of that parameter. Pagination+    -- continues from the end of the previous results that returned the+    -- @nextToken@ value.+    --+    -- This token should be treated as an opaque identifier that is only used+    -- to retrieve the next items in a list and not for other programmatic+    -- purposes.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetFindingsReportAccountSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dailyReportsOnly', 'getFindingsReportAccountSummary_dailyReportsOnly' - A @Boolean@ value indicating whether to only return reports from daily+-- profiles. If set to @True@, only analysis data from daily profiles is+-- returned. If set to @False@, analysis data is returned from smaller time+-- windows (for example, one hour).+--+-- 'maxResults', 'getFindingsReportAccountSummary_maxResults' - The maximum number of results returned by+-- @ GetFindingsReportAccountSummary@ in paginated output. When this+-- parameter is used, @GetFindingsReportAccountSummary@ only returns+-- @maxResults@ results in a single page along with a @nextToken@ response+-- element. The remaining results of the initial request can be seen by+-- sending another @GetFindingsReportAccountSummary@ request with the+-- returned @nextToken@ value.+--+-- 'nextToken', 'getFindingsReportAccountSummary_nextToken' - The @nextToken@ value returned from a previous paginated+-- @GetFindingsReportAccountSummary@ request where @maxResults@ was used+-- and the results exceeded the value of that parameter. Pagination+-- continues from the end of the previous results that returned the+-- @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is only used+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+newGetFindingsReportAccountSummary ::+  GetFindingsReportAccountSummary+newGetFindingsReportAccountSummary =+  GetFindingsReportAccountSummary'+    { dailyReportsOnly =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | A @Boolean@ value indicating whether to only return reports from daily+-- profiles. If set to @True@, only analysis data from daily profiles is+-- returned. If set to @False@, analysis data is returned from smaller time+-- windows (for example, one hour).+getFindingsReportAccountSummary_dailyReportsOnly :: Lens.Lens' GetFindingsReportAccountSummary (Prelude.Maybe Prelude.Bool)+getFindingsReportAccountSummary_dailyReportsOnly = Lens.lens (\GetFindingsReportAccountSummary' {dailyReportsOnly} -> dailyReportsOnly) (\s@GetFindingsReportAccountSummary' {} a -> s {dailyReportsOnly = a} :: GetFindingsReportAccountSummary)++-- | The maximum number of results returned by+-- @ GetFindingsReportAccountSummary@ in paginated output. When this+-- parameter is used, @GetFindingsReportAccountSummary@ only returns+-- @maxResults@ results in a single page along with a @nextToken@ response+-- element. The remaining results of the initial request can be seen by+-- sending another @GetFindingsReportAccountSummary@ request with the+-- returned @nextToken@ value.+getFindingsReportAccountSummary_maxResults :: Lens.Lens' GetFindingsReportAccountSummary (Prelude.Maybe Prelude.Natural)+getFindingsReportAccountSummary_maxResults = Lens.lens (\GetFindingsReportAccountSummary' {maxResults} -> maxResults) (\s@GetFindingsReportAccountSummary' {} a -> s {maxResults = a} :: GetFindingsReportAccountSummary)++-- | The @nextToken@ value returned from a previous paginated+-- @GetFindingsReportAccountSummary@ request where @maxResults@ was used+-- and the results exceeded the value of that parameter. Pagination+-- continues from the end of the previous results that returned the+-- @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is only used+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+getFindingsReportAccountSummary_nextToken :: Lens.Lens' GetFindingsReportAccountSummary (Prelude.Maybe Prelude.Text)+getFindingsReportAccountSummary_nextToken = Lens.lens (\GetFindingsReportAccountSummary' {nextToken} -> nextToken) (\s@GetFindingsReportAccountSummary' {} a -> s {nextToken = a} :: GetFindingsReportAccountSummary)++instance+  Core.AWSRequest+    GetFindingsReportAccountSummary+  where+  type+    AWSResponse GetFindingsReportAccountSummary =+      GetFindingsReportAccountSummaryResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetFindingsReportAccountSummaryResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "reportSummaries"+                            Core..!@ Prelude.mempty+                        )+      )++instance+  Prelude.Hashable+    GetFindingsReportAccountSummary+  where+  hashWithSalt+    _salt+    GetFindingsReportAccountSummary' {..} =+      _salt+        `Prelude.hashWithSalt` dailyReportsOnly+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` nextToken++instance+  Prelude.NFData+    GetFindingsReportAccountSummary+  where+  rnf GetFindingsReportAccountSummary' {..} =+    Prelude.rnf dailyReportsOnly+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance+  Data.ToHeaders+    GetFindingsReportAccountSummary+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetFindingsReportAccountSummary where+  toPath = Prelude.const "/internal/findingsReports"++instance Data.ToQuery GetFindingsReportAccountSummary where+  toQuery GetFindingsReportAccountSummary' {..} =+    Prelude.mconcat+      [ "dailyReportsOnly" Data.=: dailyReportsOnly,+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | The structure representing the GetFindingsReportAccountSummaryResponse.+--+-- /See:/ 'newGetFindingsReportAccountSummaryResponse' smart constructor.+data GetFindingsReportAccountSummaryResponse = GetFindingsReportAccountSummaryResponse'+  { -- | The @nextToken@ value to include in a future+    -- @GetFindingsReportAccountSummary@ request. When the results of a+    -- @GetFindingsReportAccountSummary@ request exceed @maxResults@, this+    -- value can be used to retrieve the next page of results. This value is+    -- @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The return list of+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_FindingsReportSummary.html FindingsReportSummary>+    -- objects taht contain summaries of analysis results for all profiling+    -- groups in your AWS account.+    reportSummaries :: [FindingsReportSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetFindingsReportAccountSummaryResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getFindingsReportAccountSummaryResponse_nextToken' - The @nextToken@ value to include in a future+-- @GetFindingsReportAccountSummary@ request. When the results of a+-- @GetFindingsReportAccountSummary@ request exceed @maxResults@, this+-- value can be used to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+--+-- 'httpStatus', 'getFindingsReportAccountSummaryResponse_httpStatus' - The response's http status code.+--+-- 'reportSummaries', 'getFindingsReportAccountSummaryResponse_reportSummaries' - The return list of+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_FindingsReportSummary.html FindingsReportSummary>+-- objects taht contain summaries of analysis results for all profiling+-- groups in your AWS account.+newGetFindingsReportAccountSummaryResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetFindingsReportAccountSummaryResponse+newGetFindingsReportAccountSummaryResponse+  pHttpStatus_ =+    GetFindingsReportAccountSummaryResponse'+      { nextToken =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        reportSummaries = Prelude.mempty+      }++-- | The @nextToken@ value to include in a future+-- @GetFindingsReportAccountSummary@ request. When the results of a+-- @GetFindingsReportAccountSummary@ request exceed @maxResults@, this+-- value can be used to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+getFindingsReportAccountSummaryResponse_nextToken :: Lens.Lens' GetFindingsReportAccountSummaryResponse (Prelude.Maybe Prelude.Text)+getFindingsReportAccountSummaryResponse_nextToken = Lens.lens (\GetFindingsReportAccountSummaryResponse' {nextToken} -> nextToken) (\s@GetFindingsReportAccountSummaryResponse' {} a -> s {nextToken = a} :: GetFindingsReportAccountSummaryResponse)++-- | The response's http status code.+getFindingsReportAccountSummaryResponse_httpStatus :: Lens.Lens' GetFindingsReportAccountSummaryResponse Prelude.Int+getFindingsReportAccountSummaryResponse_httpStatus = Lens.lens (\GetFindingsReportAccountSummaryResponse' {httpStatus} -> httpStatus) (\s@GetFindingsReportAccountSummaryResponse' {} a -> s {httpStatus = a} :: GetFindingsReportAccountSummaryResponse)++-- | The return list of+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_FindingsReportSummary.html FindingsReportSummary>+-- objects taht contain summaries of analysis results for all profiling+-- groups in your AWS account.+getFindingsReportAccountSummaryResponse_reportSummaries :: Lens.Lens' GetFindingsReportAccountSummaryResponse [FindingsReportSummary]+getFindingsReportAccountSummaryResponse_reportSummaries = Lens.lens (\GetFindingsReportAccountSummaryResponse' {reportSummaries} -> reportSummaries) (\s@GetFindingsReportAccountSummaryResponse' {} a -> s {reportSummaries = a} :: GetFindingsReportAccountSummaryResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    GetFindingsReportAccountSummaryResponse+  where+  rnf GetFindingsReportAccountSummaryResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf reportSummaries
+ gen/Amazonka/CodeGuruProfiler/GetNotificationConfiguration.hs view
@@ -0,0 +1,185 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.GetNotificationConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Get the current configuration for anomaly notifications for a profiling+-- group.+module Amazonka.CodeGuruProfiler.GetNotificationConfiguration+  ( -- * Creating a Request+    GetNotificationConfiguration (..),+    newGetNotificationConfiguration,++    -- * Request Lenses+    getNotificationConfiguration_profilingGroupName,++    -- * Destructuring the Response+    GetNotificationConfigurationResponse (..),+    newGetNotificationConfigurationResponse,++    -- * Response Lenses+    getNotificationConfigurationResponse_httpStatus,+    getNotificationConfigurationResponse_notificationConfiguration,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the GetNotificationConfigurationRequest.+--+-- /See:/ 'newGetNotificationConfiguration' smart constructor.+data GetNotificationConfiguration = GetNotificationConfiguration'+  { -- | The name of the profiling group we want to get the notification+    -- configuration for.+    profilingGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetNotificationConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'profilingGroupName', 'getNotificationConfiguration_profilingGroupName' - The name of the profiling group we want to get the notification+-- configuration for.+newGetNotificationConfiguration ::+  -- | 'profilingGroupName'+  Prelude.Text ->+  GetNotificationConfiguration+newGetNotificationConfiguration pProfilingGroupName_ =+  GetNotificationConfiguration'+    { profilingGroupName =+        pProfilingGroupName_+    }++-- | The name of the profiling group we want to get the notification+-- configuration for.+getNotificationConfiguration_profilingGroupName :: Lens.Lens' GetNotificationConfiguration Prelude.Text+getNotificationConfiguration_profilingGroupName = Lens.lens (\GetNotificationConfiguration' {profilingGroupName} -> profilingGroupName) (\s@GetNotificationConfiguration' {} a -> s {profilingGroupName = a} :: GetNotificationConfiguration)++instance Core.AWSRequest GetNotificationConfiguration where+  type+    AWSResponse GetNotificationConfiguration =+      GetNotificationConfigurationResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetNotificationConfigurationResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "notificationConfiguration")+      )++instance+  Prelude.Hashable+    GetNotificationConfiguration+  where+  hashWithSalt _salt GetNotificationConfiguration' {..} =+    _salt `Prelude.hashWithSalt` profilingGroupName++instance Prelude.NFData GetNotificationConfiguration where+  rnf GetNotificationConfiguration' {..} =+    Prelude.rnf profilingGroupName++instance Data.ToHeaders GetNotificationConfiguration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetNotificationConfiguration where+  toPath GetNotificationConfiguration' {..} =+    Prelude.mconcat+      [ "/profilingGroups/",+        Data.toBS profilingGroupName,+        "/notificationConfiguration"+      ]++instance Data.ToQuery GetNotificationConfiguration where+  toQuery = Prelude.const Prelude.mempty++-- | The structure representing the GetNotificationConfigurationResponse.+--+-- /See:/ 'newGetNotificationConfigurationResponse' smart constructor.+data GetNotificationConfigurationResponse = GetNotificationConfigurationResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The current notification configuration for this profiling group.+    notificationConfiguration :: NotificationConfiguration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetNotificationConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getNotificationConfigurationResponse_httpStatus' - The response's http status code.+--+-- 'notificationConfiguration', 'getNotificationConfigurationResponse_notificationConfiguration' - The current notification configuration for this profiling group.+newGetNotificationConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'notificationConfiguration'+  NotificationConfiguration ->+  GetNotificationConfigurationResponse+newGetNotificationConfigurationResponse+  pHttpStatus_+  pNotificationConfiguration_ =+    GetNotificationConfigurationResponse'+      { httpStatus =+          pHttpStatus_,+        notificationConfiguration =+          pNotificationConfiguration_+      }++-- | The response's http status code.+getNotificationConfigurationResponse_httpStatus :: Lens.Lens' GetNotificationConfigurationResponse Prelude.Int+getNotificationConfigurationResponse_httpStatus = Lens.lens (\GetNotificationConfigurationResponse' {httpStatus} -> httpStatus) (\s@GetNotificationConfigurationResponse' {} a -> s {httpStatus = a} :: GetNotificationConfigurationResponse)++-- | The current notification configuration for this profiling group.+getNotificationConfigurationResponse_notificationConfiguration :: Lens.Lens' GetNotificationConfigurationResponse NotificationConfiguration+getNotificationConfigurationResponse_notificationConfiguration = Lens.lens (\GetNotificationConfigurationResponse' {notificationConfiguration} -> notificationConfiguration) (\s@GetNotificationConfigurationResponse' {} a -> s {notificationConfiguration = a} :: GetNotificationConfigurationResponse)++instance+  Prelude.NFData+    GetNotificationConfigurationResponse+  where+  rnf GetNotificationConfigurationResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf notificationConfiguration
+ gen/Amazonka/CodeGuruProfiler/GetPolicy.hs view
@@ -0,0 +1,188 @@+{-# 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.CodeGuruProfiler.GetPolicy+-- 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 JSON-formatted resource-based policy on a profiling group.+module Amazonka.CodeGuruProfiler.GetPolicy+  ( -- * Creating a Request+    GetPolicy (..),+    newGetPolicy,++    -- * Request Lenses+    getPolicy_profilingGroupName,++    -- * Destructuring the Response+    GetPolicyResponse (..),+    newGetPolicyResponse,++    -- * Response Lenses+    getPolicyResponse_httpStatus,+    getPolicyResponse_policy,+    getPolicyResponse_revisionId,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the @getPolicyRequest@.+--+-- /See:/ 'newGetPolicy' smart constructor.+data GetPolicy = GetPolicy'+  { -- | The name of the profiling group.+    profilingGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'profilingGroupName', 'getPolicy_profilingGroupName' - The name of the profiling group.+newGetPolicy ::+  -- | 'profilingGroupName'+  Prelude.Text ->+  GetPolicy+newGetPolicy pProfilingGroupName_ =+  GetPolicy'+    { profilingGroupName =+        pProfilingGroupName_+    }++-- | The name of the profiling group.+getPolicy_profilingGroupName :: Lens.Lens' GetPolicy Prelude.Text+getPolicy_profilingGroupName = Lens.lens (\GetPolicy' {profilingGroupName} -> profilingGroupName) (\s@GetPolicy' {} a -> s {profilingGroupName = a} :: GetPolicy)++instance Core.AWSRequest GetPolicy where+  type AWSResponse GetPolicy = GetPolicyResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetPolicyResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "policy")+            Prelude.<*> (x Data..:> "revisionId")+      )++instance Prelude.Hashable GetPolicy where+  hashWithSalt _salt GetPolicy' {..} =+    _salt `Prelude.hashWithSalt` profilingGroupName++instance Prelude.NFData GetPolicy where+  rnf GetPolicy' {..} = Prelude.rnf profilingGroupName++instance Data.ToHeaders GetPolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetPolicy where+  toPath GetPolicy' {..} =+    Prelude.mconcat+      [ "/profilingGroups/",+        Data.toBS profilingGroupName,+        "/policy"+      ]++instance Data.ToQuery GetPolicy where+  toQuery = Prelude.const Prelude.mempty++-- | The structure representing the @getPolicyResponse@.+--+-- /See:/ 'newGetPolicyResponse' smart constructor.+data GetPolicyResponse = GetPolicyResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The JSON-formatted resource-based policy attached to the+    -- @ProfilingGroup@.+    policy :: Prelude.Text,+    -- | A unique identifier for the current revision of the returned policy.+    revisionId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetPolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getPolicyResponse_httpStatus' - The response's http status code.+--+-- 'policy', 'getPolicyResponse_policy' - The JSON-formatted resource-based policy attached to the+-- @ProfilingGroup@.+--+-- 'revisionId', 'getPolicyResponse_revisionId' - A unique identifier for the current revision of the returned policy.+newGetPolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'policy'+  Prelude.Text ->+  -- | 'revisionId'+  Prelude.Text ->+  GetPolicyResponse+newGetPolicyResponse+  pHttpStatus_+  pPolicy_+  pRevisionId_ =+    GetPolicyResponse'+      { httpStatus = pHttpStatus_,+        policy = pPolicy_,+        revisionId = pRevisionId_+      }++-- | The response's http status code.+getPolicyResponse_httpStatus :: Lens.Lens' GetPolicyResponse Prelude.Int+getPolicyResponse_httpStatus = Lens.lens (\GetPolicyResponse' {httpStatus} -> httpStatus) (\s@GetPolicyResponse' {} a -> s {httpStatus = a} :: GetPolicyResponse)++-- | The JSON-formatted resource-based policy attached to the+-- @ProfilingGroup@.+getPolicyResponse_policy :: Lens.Lens' GetPolicyResponse Prelude.Text+getPolicyResponse_policy = Lens.lens (\GetPolicyResponse' {policy} -> policy) (\s@GetPolicyResponse' {} a -> s {policy = a} :: GetPolicyResponse)++-- | A unique identifier for the current revision of the returned policy.+getPolicyResponse_revisionId :: Lens.Lens' GetPolicyResponse Prelude.Text+getPolicyResponse_revisionId = Lens.lens (\GetPolicyResponse' {revisionId} -> revisionId) (\s@GetPolicyResponse' {} a -> s {revisionId = a} :: GetPolicyResponse)++instance Prelude.NFData GetPolicyResponse where+  rnf GetPolicyResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf policy+      `Prelude.seq` Prelude.rnf revisionId
+ gen/Amazonka/CodeGuruProfiler/GetProfile.hs view
@@ -0,0 +1,332 @@+{-# 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.CodeGuruProfiler.GetProfile+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets the aggregated profile of a profiling group for a specified time+-- range. Amazon CodeGuru Profiler collects posted agent profiles for a+-- profiling group into aggregated profiles.+--+-- >  <note> <p> Because aggregated profiles expire over time <code>GetProfile</code> is not idempotent. </p> </note> <p> Specify the time range for the requested aggregated profile using 1 or 2 of the following parameters: <code>startTime</code>, <code>endTime</code>, <code>period</code>. The maximum time range allowed is 7 days. If you specify all 3 parameters, an exception is thrown. If you specify only <code>period</code>, the latest aggregated profile is returned. </p> <p> Aggregated profiles are available with aggregation periods of 5 minutes, 1 hour, and 1 day, aligned to UTC. The aggregation period of an aggregated profile determines how long it is retained. For more information, see <a href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AggregatedProfileTime.html"> <code>AggregatedProfileTime</code> </a>. The aggregated profile's aggregation period determines how long it is retained by CodeGuru Profiler. </p> <ul> <li> <p> If the aggregation period is 5 minutes, the aggregated profile is retained for 15 days. </p> </li> <li> <p> If the aggregation period is 1 hour, the aggregated profile is retained for 60 days. </p> </li> <li> <p> If the aggregation period is 1 day, the aggregated profile is retained for 3 years. </p> </li> </ul> <p>There are two use cases for calling <code>GetProfile</code>.</p> <ol> <li> <p> If you want to return an aggregated profile that already exists, use <a href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ListProfileTimes.html"> <code>ListProfileTimes</code> </a> to view the time ranges of existing aggregated profiles. Use them in a <code>GetProfile</code> request to return a specific, existing aggregated profile. </p> </li> <li> <p> If you want to return an aggregated profile for a time range that doesn't align with an existing aggregated profile, then CodeGuru Profiler makes a best effort to combine existing aggregated profiles from the requested time range and return them as one aggregated profile. </p> <p> If aggregated profiles do not exist for the full time range requested, then aggregated profiles for a smaller time range are returned. For example, if the requested time range is from 00:00 to 00:20, and the existing aggregated profiles are from 00:15 and 00:25, then the aggregated profiles from 00:15 to 00:20 are returned. </p> </li> </ol>+module Amazonka.CodeGuruProfiler.GetProfile+  ( -- * Creating a Request+    GetProfile (..),+    newGetProfile,++    -- * Request Lenses+    getProfile_accept,+    getProfile_endTime,+    getProfile_maxDepth,+    getProfile_period,+    getProfile_startTime,+    getProfile_profilingGroupName,++    -- * Destructuring the Response+    GetProfileResponse (..),+    newGetProfileResponse,++    -- * Response Lenses+    getProfileResponse_contentEncoding,+    getProfileResponse_httpStatus,+    getProfileResponse_contentType,+    getProfileResponse_profile,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the getProfileRequest.+--+-- /See:/ 'newGetProfile' smart constructor.+data GetProfile = GetProfile'+  { -- | The format of the returned profiling data. The format maps to the+    -- @Accept@ and @Content-Type@ headers of the HTTP request. You can specify+    -- one of the following: or the default .+    --+    -- >  <ul> <li> <p> <code>application/json</code> — standard JSON format </p> </li> <li> <p> <code>application/x-amzn-ion</code> — the Amazon Ion data format. For more information, see <a href="http://amzn.github.io/ion-docs/">Amazon Ion</a>. </p> </li> </ul>+    accept :: Prelude.Maybe Prelude.Text,+    -- | The end time of the requested profile. Specify using the ISO 8601+    -- format. For example, 2020-06-01T13:15:02.001Z represents 1 millisecond+    -- past June 1, 2020 1:15:02 PM UTC.+    --+    -- If you specify @endTime@, then you must also specify @period@ or+    -- @startTime@, but not both.+    endTime :: Prelude.Maybe Data.ISO8601,+    -- | The maximum depth of the stacks in the code that is represented in the+    -- aggregated profile. For example, if CodeGuru Profiler finds a method+    -- @A@, which calls method @B@, which calls method @C@, which calls method+    -- @D@, then the depth is 4. If the @maxDepth@ is set to 2, then the+    -- aggregated profile contains representations of methods @A@ and @B@.+    maxDepth :: Prelude.Maybe Prelude.Natural,+    -- | Used with @startTime@ or @endTime@ to specify the time range for the+    -- returned aggregated profile. Specify using the ISO 8601 format. For+    -- example, @P1DT1H1M1S@.+    --+    -- >  <p> To get the latest aggregated profile, specify only <code>period</code>. </p>+    period :: Prelude.Maybe Prelude.Text,+    -- | The start time of the profile to get. Specify using the ISO 8601 format.+    -- For example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June+    -- 1, 2020 1:15:02 PM UTC.+    --+    -- >  <p> If you specify <code>startTime</code>, then you must also specify <code>period</code> or <code>endTime</code>, but not both. </p>+    startTime :: Prelude.Maybe Data.ISO8601,+    -- | The name of the profiling group to get.+    profilingGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetProfile' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accept', 'getProfile_accept' - The format of the returned profiling data. The format maps to the+-- @Accept@ and @Content-Type@ headers of the HTTP request. You can specify+-- one of the following: or the default .+--+-- >  <ul> <li> <p> <code>application/json</code> — standard JSON format </p> </li> <li> <p> <code>application/x-amzn-ion</code> — the Amazon Ion data format. For more information, see <a href="http://amzn.github.io/ion-docs/">Amazon Ion</a>. </p> </li> </ul>+--+-- 'endTime', 'getProfile_endTime' - The end time of the requested profile. Specify using the ISO 8601+-- format. For example, 2020-06-01T13:15:02.001Z represents 1 millisecond+-- past June 1, 2020 1:15:02 PM UTC.+--+-- If you specify @endTime@, then you must also specify @period@ or+-- @startTime@, but not both.+--+-- 'maxDepth', 'getProfile_maxDepth' - The maximum depth of the stacks in the code that is represented in the+-- aggregated profile. For example, if CodeGuru Profiler finds a method+-- @A@, which calls method @B@, which calls method @C@, which calls method+-- @D@, then the depth is 4. If the @maxDepth@ is set to 2, then the+-- aggregated profile contains representations of methods @A@ and @B@.+--+-- 'period', 'getProfile_period' - Used with @startTime@ or @endTime@ to specify the time range for the+-- returned aggregated profile. Specify using the ISO 8601 format. For+-- example, @P1DT1H1M1S@.+--+-- >  <p> To get the latest aggregated profile, specify only <code>period</code>. </p>+--+-- 'startTime', 'getProfile_startTime' - The start time of the profile to get. Specify using the ISO 8601 format.+-- For example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June+-- 1, 2020 1:15:02 PM UTC.+--+-- >  <p> If you specify <code>startTime</code>, then you must also specify <code>period</code> or <code>endTime</code>, but not both. </p>+--+-- 'profilingGroupName', 'getProfile_profilingGroupName' - The name of the profiling group to get.+newGetProfile ::+  -- | 'profilingGroupName'+  Prelude.Text ->+  GetProfile+newGetProfile pProfilingGroupName_ =+  GetProfile'+    { accept = Prelude.Nothing,+      endTime = Prelude.Nothing,+      maxDepth = Prelude.Nothing,+      period = Prelude.Nothing,+      startTime = Prelude.Nothing,+      profilingGroupName = pProfilingGroupName_+    }++-- | The format of the returned profiling data. The format maps to the+-- @Accept@ and @Content-Type@ headers of the HTTP request. You can specify+-- one of the following: or the default .+--+-- >  <ul> <li> <p> <code>application/json</code> — standard JSON format </p> </li> <li> <p> <code>application/x-amzn-ion</code> — the Amazon Ion data format. For more information, see <a href="http://amzn.github.io/ion-docs/">Amazon Ion</a>. </p> </li> </ul>+getProfile_accept :: Lens.Lens' GetProfile (Prelude.Maybe Prelude.Text)+getProfile_accept = Lens.lens (\GetProfile' {accept} -> accept) (\s@GetProfile' {} a -> s {accept = a} :: GetProfile)++-- | The end time of the requested profile. Specify using the ISO 8601+-- format. For example, 2020-06-01T13:15:02.001Z represents 1 millisecond+-- past June 1, 2020 1:15:02 PM UTC.+--+-- If you specify @endTime@, then you must also specify @period@ or+-- @startTime@, but not both.+getProfile_endTime :: Lens.Lens' GetProfile (Prelude.Maybe Prelude.UTCTime)+getProfile_endTime = Lens.lens (\GetProfile' {endTime} -> endTime) (\s@GetProfile' {} a -> s {endTime = a} :: GetProfile) Prelude.. Lens.mapping Data._Time++-- | The maximum depth of the stacks in the code that is represented in the+-- aggregated profile. For example, if CodeGuru Profiler finds a method+-- @A@, which calls method @B@, which calls method @C@, which calls method+-- @D@, then the depth is 4. If the @maxDepth@ is set to 2, then the+-- aggregated profile contains representations of methods @A@ and @B@.+getProfile_maxDepth :: Lens.Lens' GetProfile (Prelude.Maybe Prelude.Natural)+getProfile_maxDepth = Lens.lens (\GetProfile' {maxDepth} -> maxDepth) (\s@GetProfile' {} a -> s {maxDepth = a} :: GetProfile)++-- | Used with @startTime@ or @endTime@ to specify the time range for the+-- returned aggregated profile. Specify using the ISO 8601 format. For+-- example, @P1DT1H1M1S@.+--+-- >  <p> To get the latest aggregated profile, specify only <code>period</code>. </p>+getProfile_period :: Lens.Lens' GetProfile (Prelude.Maybe Prelude.Text)+getProfile_period = Lens.lens (\GetProfile' {period} -> period) (\s@GetProfile' {} a -> s {period = a} :: GetProfile)++-- | The start time of the profile to get. Specify using the ISO 8601 format.+-- For example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June+-- 1, 2020 1:15:02 PM UTC.+--+-- >  <p> If you specify <code>startTime</code>, then you must also specify <code>period</code> or <code>endTime</code>, but not both. </p>+getProfile_startTime :: Lens.Lens' GetProfile (Prelude.Maybe Prelude.UTCTime)+getProfile_startTime = Lens.lens (\GetProfile' {startTime} -> startTime) (\s@GetProfile' {} a -> s {startTime = a} :: GetProfile) Prelude.. Lens.mapping Data._Time++-- | The name of the profiling group to get.+getProfile_profilingGroupName :: Lens.Lens' GetProfile Prelude.Text+getProfile_profilingGroupName = Lens.lens (\GetProfile' {profilingGroupName} -> profilingGroupName) (\s@GetProfile' {} a -> s {profilingGroupName = a} :: GetProfile)++instance Core.AWSRequest GetProfile where+  type AWSResponse GetProfile = GetProfileResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveBytes+      ( \s h x ->+          GetProfileResponse'+            Prelude.<$> (h Data..#? "Content-Encoding")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (h Data..# "Content-Type")+            Prelude.<*> (Prelude.pure x)+      )++instance Prelude.Hashable GetProfile where+  hashWithSalt _salt GetProfile' {..} =+    _salt+      `Prelude.hashWithSalt` accept+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` maxDepth+      `Prelude.hashWithSalt` period+      `Prelude.hashWithSalt` startTime+      `Prelude.hashWithSalt` profilingGroupName++instance Prelude.NFData GetProfile where+  rnf GetProfile' {..} =+    Prelude.rnf accept+      `Prelude.seq` Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf maxDepth+      `Prelude.seq` Prelude.rnf period+      `Prelude.seq` Prelude.rnf startTime+      `Prelude.seq` Prelude.rnf profilingGroupName++instance Data.ToHeaders GetProfile where+  toHeaders GetProfile' {..} =+    Prelude.mconcat+      [ "Accept" Data.=# accept,+        "Content-Type"+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)+      ]++instance Data.ToPath GetProfile where+  toPath GetProfile' {..} =+    Prelude.mconcat+      [ "/profilingGroups/",+        Data.toBS profilingGroupName,+        "/profile"+      ]++instance Data.ToQuery GetProfile where+  toQuery GetProfile' {..} =+    Prelude.mconcat+      [ "endTime" Data.=: endTime,+        "maxDepth" Data.=: maxDepth,+        "period" Data.=: period,+        "startTime" Data.=: startTime+      ]++-- | The structure representing the getProfileResponse.+--+-- /See:/ 'newGetProfileResponse' smart constructor.+data GetProfileResponse = GetProfileResponse'+  { -- | The content encoding of the profile.+    contentEncoding :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The content type of the profile in the payload. It is either+    -- @application\/json@ or the default @application\/x-amzn-ion@.+    contentType :: Prelude.Text,+    -- | Information about the profile.+    profile :: Prelude.ByteString+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetProfileResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'contentEncoding', 'getProfileResponse_contentEncoding' - The content encoding of the profile.+--+-- 'httpStatus', 'getProfileResponse_httpStatus' - The response's http status code.+--+-- 'contentType', 'getProfileResponse_contentType' - The content type of the profile in the payload. It is either+-- @application\/json@ or the default @application\/x-amzn-ion@.+--+-- 'profile', 'getProfileResponse_profile' - Information about the profile.+newGetProfileResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'contentType'+  Prelude.Text ->+  -- | 'profile'+  Prelude.ByteString ->+  GetProfileResponse+newGetProfileResponse+  pHttpStatus_+  pContentType_+  pProfile_ =+    GetProfileResponse'+      { contentEncoding =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        contentType = pContentType_,+        profile = pProfile_+      }++-- | The content encoding of the profile.+getProfileResponse_contentEncoding :: Lens.Lens' GetProfileResponse (Prelude.Maybe Prelude.Text)+getProfileResponse_contentEncoding = Lens.lens (\GetProfileResponse' {contentEncoding} -> contentEncoding) (\s@GetProfileResponse' {} a -> s {contentEncoding = a} :: GetProfileResponse)++-- | The response's http status code.+getProfileResponse_httpStatus :: Lens.Lens' GetProfileResponse Prelude.Int+getProfileResponse_httpStatus = Lens.lens (\GetProfileResponse' {httpStatus} -> httpStatus) (\s@GetProfileResponse' {} a -> s {httpStatus = a} :: GetProfileResponse)++-- | The content type of the profile in the payload. It is either+-- @application\/json@ or the default @application\/x-amzn-ion@.+getProfileResponse_contentType :: Lens.Lens' GetProfileResponse Prelude.Text+getProfileResponse_contentType = Lens.lens (\GetProfileResponse' {contentType} -> contentType) (\s@GetProfileResponse' {} a -> s {contentType = a} :: GetProfileResponse)++-- | Information about the profile.+getProfileResponse_profile :: Lens.Lens' GetProfileResponse Prelude.ByteString+getProfileResponse_profile = Lens.lens (\GetProfileResponse' {profile} -> profile) (\s@GetProfileResponse' {} a -> s {profile = a} :: GetProfileResponse)++instance Prelude.NFData GetProfileResponse where+  rnf GetProfileResponse' {..} =+    Prelude.rnf contentEncoding+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf contentType+      `Prelude.seq` Prelude.rnf profile
+ gen/Amazonka/CodeGuruProfiler/GetRecommendations.hs view
@@ -0,0 +1,392 @@+{-# 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.CodeGuruProfiler.GetRecommendations+-- 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+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_Recommendation.html Recommendation>+-- objects that contain recommendations for a profiling group for a given+-- time period. A list of+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_Anomaly.html Anomaly>+-- objects that contains details about anomalies detected in the profiling+-- group for the same time period is also returned.+module Amazonka.CodeGuruProfiler.GetRecommendations+  ( -- * Creating a Request+    GetRecommendations (..),+    newGetRecommendations,++    -- * Request Lenses+    getRecommendations_locale,+    getRecommendations_endTime,+    getRecommendations_profilingGroupName,+    getRecommendations_startTime,++    -- * Destructuring the Response+    GetRecommendationsResponse (..),+    newGetRecommendationsResponse,++    -- * Response Lenses+    getRecommendationsResponse_httpStatus,+    getRecommendationsResponse_anomalies,+    getRecommendationsResponse_profileEndTime,+    getRecommendationsResponse_profileStartTime,+    getRecommendationsResponse_profilingGroupName,+    getRecommendationsResponse_recommendations,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the GetRecommendationsRequest.+--+-- /See:/ 'newGetRecommendations' smart constructor.+data GetRecommendations = GetRecommendations'+  { -- | The language used to provide analysis. Specify using a string that is+    -- one of the following @BCP 47@ language codes.+    --+    -- -   @de-DE@ - German, Germany+    --+    -- -   @en-GB@ - English, United Kingdom+    --+    -- -   @en-US@ - English, United States+    --+    -- -   @es-ES@ - Spanish, Spain+    --+    -- -   @fr-FR@ - French, France+    --+    -- -   @it-IT@ - Italian, Italy+    --+    -- -   @ja-JP@ - Japanese, Japan+    --+    -- -   @ko-KR@ - Korean, Republic of Korea+    --+    -- -   @pt-BR@ - Portugese, Brazil+    --+    -- -   @zh-CN@ - Chinese, China+    --+    -- -   @zh-TW@ - Chinese, Taiwan+    locale :: Prelude.Maybe Prelude.Text,+    -- | The start time of the profile to get analysis data about. You must+    -- specify @startTime@ and @endTime@. This is specified using the ISO 8601+    -- format. For example, 2020-06-01T13:15:02.001Z represents 1 millisecond+    -- past June 1, 2020 1:15:02 PM UTC.+    endTime :: Data.ISO8601,+    -- | The name of the profiling group to get analysis data about.+    profilingGroupName :: Prelude.Text,+    -- | The end time of the profile to get analysis data about. You must specify+    -- @startTime@ and @endTime@. This is specified using the ISO 8601 format.+    -- For example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June+    -- 1, 2020 1:15:02 PM UTC.+    startTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetRecommendations' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'locale', 'getRecommendations_locale' - The language used to provide analysis. Specify using a string that is+-- one of the following @BCP 47@ language codes.+--+-- -   @de-DE@ - German, Germany+--+-- -   @en-GB@ - English, United Kingdom+--+-- -   @en-US@ - English, United States+--+-- -   @es-ES@ - Spanish, Spain+--+-- -   @fr-FR@ - French, France+--+-- -   @it-IT@ - Italian, Italy+--+-- -   @ja-JP@ - Japanese, Japan+--+-- -   @ko-KR@ - Korean, Republic of Korea+--+-- -   @pt-BR@ - Portugese, Brazil+--+-- -   @zh-CN@ - Chinese, China+--+-- -   @zh-TW@ - Chinese, Taiwan+--+-- 'endTime', 'getRecommendations_endTime' - The start time of the profile to get analysis data about. You must+-- specify @startTime@ and @endTime@. This is specified using the ISO 8601+-- format. For example, 2020-06-01T13:15:02.001Z represents 1 millisecond+-- past June 1, 2020 1:15:02 PM UTC.+--+-- 'profilingGroupName', 'getRecommendations_profilingGroupName' - The name of the profiling group to get analysis data about.+--+-- 'startTime', 'getRecommendations_startTime' - The end time of the profile to get analysis data about. You must specify+-- @startTime@ and @endTime@. This is specified using the ISO 8601 format.+-- For example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June+-- 1, 2020 1:15:02 PM UTC.+newGetRecommendations ::+  -- | 'endTime'+  Prelude.UTCTime ->+  -- | 'profilingGroupName'+  Prelude.Text ->+  -- | 'startTime'+  Prelude.UTCTime ->+  GetRecommendations+newGetRecommendations+  pEndTime_+  pProfilingGroupName_+  pStartTime_ =+    GetRecommendations'+      { locale = Prelude.Nothing,+        endTime = Data._Time Lens.# pEndTime_,+        profilingGroupName = pProfilingGroupName_,+        startTime = Data._Time Lens.# pStartTime_+      }++-- | The language used to provide analysis. Specify using a string that is+-- one of the following @BCP 47@ language codes.+--+-- -   @de-DE@ - German, Germany+--+-- -   @en-GB@ - English, United Kingdom+--+-- -   @en-US@ - English, United States+--+-- -   @es-ES@ - Spanish, Spain+--+-- -   @fr-FR@ - French, France+--+-- -   @it-IT@ - Italian, Italy+--+-- -   @ja-JP@ - Japanese, Japan+--+-- -   @ko-KR@ - Korean, Republic of Korea+--+-- -   @pt-BR@ - Portugese, Brazil+--+-- -   @zh-CN@ - Chinese, China+--+-- -   @zh-TW@ - Chinese, Taiwan+getRecommendations_locale :: Lens.Lens' GetRecommendations (Prelude.Maybe Prelude.Text)+getRecommendations_locale = Lens.lens (\GetRecommendations' {locale} -> locale) (\s@GetRecommendations' {} a -> s {locale = a} :: GetRecommendations)++-- | The start time of the profile to get analysis data about. You must+-- specify @startTime@ and @endTime@. This is specified using the ISO 8601+-- format. For example, 2020-06-01T13:15:02.001Z represents 1 millisecond+-- past June 1, 2020 1:15:02 PM UTC.+getRecommendations_endTime :: Lens.Lens' GetRecommendations Prelude.UTCTime+getRecommendations_endTime = Lens.lens (\GetRecommendations' {endTime} -> endTime) (\s@GetRecommendations' {} a -> s {endTime = a} :: GetRecommendations) Prelude.. Data._Time++-- | The name of the profiling group to get analysis data about.+getRecommendations_profilingGroupName :: Lens.Lens' GetRecommendations Prelude.Text+getRecommendations_profilingGroupName = Lens.lens (\GetRecommendations' {profilingGroupName} -> profilingGroupName) (\s@GetRecommendations' {} a -> s {profilingGroupName = a} :: GetRecommendations)++-- | The end time of the profile to get analysis data about. You must specify+-- @startTime@ and @endTime@. This is specified using the ISO 8601 format.+-- For example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June+-- 1, 2020 1:15:02 PM UTC.+getRecommendations_startTime :: Lens.Lens' GetRecommendations Prelude.UTCTime+getRecommendations_startTime = Lens.lens (\GetRecommendations' {startTime} -> startTime) (\s@GetRecommendations' {} a -> s {startTime = a} :: GetRecommendations) Prelude.. Data._Time++instance Core.AWSRequest GetRecommendations where+  type+    AWSResponse GetRecommendations =+      GetRecommendationsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetRecommendationsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "anomalies" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..:> "profileEndTime")+            Prelude.<*> (x Data..:> "profileStartTime")+            Prelude.<*> (x Data..:> "profilingGroupName")+            Prelude.<*> ( x+                            Data..?> "recommendations"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable GetRecommendations where+  hashWithSalt _salt GetRecommendations' {..} =+    _salt+      `Prelude.hashWithSalt` locale+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` profilingGroupName+      `Prelude.hashWithSalt` startTime++instance Prelude.NFData GetRecommendations where+  rnf GetRecommendations' {..} =+    Prelude.rnf locale+      `Prelude.seq` Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf profilingGroupName+      `Prelude.seq` Prelude.rnf startTime++instance Data.ToHeaders GetRecommendations where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetRecommendations where+  toPath GetRecommendations' {..} =+    Prelude.mconcat+      [ "/internal/profilingGroups/",+        Data.toBS profilingGroupName,+        "/recommendations"+      ]++instance Data.ToQuery GetRecommendations where+  toQuery GetRecommendations' {..} =+    Prelude.mconcat+      [ "locale" Data.=: locale,+        "endTime" Data.=: endTime,+        "startTime" Data.=: startTime+      ]++-- | The structure representing the GetRecommendationsResponse.+--+-- /See:/ 'newGetRecommendationsResponse' smart constructor.+data GetRecommendationsResponse = GetRecommendationsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The list of anomalies that the analysis has found for this profile.+    anomalies :: [Anomaly],+    -- | The end time of the profile the analysis data is about. This is+    -- specified using the ISO 8601 format. For example,+    -- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+    -- 1:15:02 PM UTC.+    profileEndTime :: Data.ISO8601,+    -- | The start time of the profile the analysis data is about. This is+    -- specified using the ISO 8601 format. For example,+    -- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+    -- 1:15:02 PM UTC.+    profileStartTime :: Data.ISO8601,+    -- | The name of the profiling group the analysis data is about.+    profilingGroupName :: Prelude.Text,+    -- | The list of recommendations that the analysis found for this profile.+    recommendations :: [Recommendation]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetRecommendationsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getRecommendationsResponse_httpStatus' - The response's http status code.+--+-- 'anomalies', 'getRecommendationsResponse_anomalies' - The list of anomalies that the analysis has found for this profile.+--+-- 'profileEndTime', 'getRecommendationsResponse_profileEndTime' - The end time of the profile the analysis data is about. This is+-- specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+--+-- 'profileStartTime', 'getRecommendationsResponse_profileStartTime' - The start time of the profile the analysis data is about. This is+-- specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+--+-- 'profilingGroupName', 'getRecommendationsResponse_profilingGroupName' - The name of the profiling group the analysis data is about.+--+-- 'recommendations', 'getRecommendationsResponse_recommendations' - The list of recommendations that the analysis found for this profile.+newGetRecommendationsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'profileEndTime'+  Prelude.UTCTime ->+  -- | 'profileStartTime'+  Prelude.UTCTime ->+  -- | 'profilingGroupName'+  Prelude.Text ->+  GetRecommendationsResponse+newGetRecommendationsResponse+  pHttpStatus_+  pProfileEndTime_+  pProfileStartTime_+  pProfilingGroupName_ =+    GetRecommendationsResponse'+      { httpStatus =+          pHttpStatus_,+        anomalies = Prelude.mempty,+        profileEndTime =+          Data._Time Lens.# pProfileEndTime_,+        profileStartTime =+          Data._Time Lens.# pProfileStartTime_,+        profilingGroupName = pProfilingGroupName_,+        recommendations = Prelude.mempty+      }++-- | The response's http status code.+getRecommendationsResponse_httpStatus :: Lens.Lens' GetRecommendationsResponse Prelude.Int+getRecommendationsResponse_httpStatus = Lens.lens (\GetRecommendationsResponse' {httpStatus} -> httpStatus) (\s@GetRecommendationsResponse' {} a -> s {httpStatus = a} :: GetRecommendationsResponse)++-- | The list of anomalies that the analysis has found for this profile.+getRecommendationsResponse_anomalies :: Lens.Lens' GetRecommendationsResponse [Anomaly]+getRecommendationsResponse_anomalies = Lens.lens (\GetRecommendationsResponse' {anomalies} -> anomalies) (\s@GetRecommendationsResponse' {} a -> s {anomalies = a} :: GetRecommendationsResponse) Prelude.. Lens.coerced++-- | The end time of the profile the analysis data is about. This is+-- specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+getRecommendationsResponse_profileEndTime :: Lens.Lens' GetRecommendationsResponse Prelude.UTCTime+getRecommendationsResponse_profileEndTime = Lens.lens (\GetRecommendationsResponse' {profileEndTime} -> profileEndTime) (\s@GetRecommendationsResponse' {} a -> s {profileEndTime = a} :: GetRecommendationsResponse) Prelude.. Data._Time++-- | The start time of the profile the analysis data is about. This is+-- specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+getRecommendationsResponse_profileStartTime :: Lens.Lens' GetRecommendationsResponse Prelude.UTCTime+getRecommendationsResponse_profileStartTime = Lens.lens (\GetRecommendationsResponse' {profileStartTime} -> profileStartTime) (\s@GetRecommendationsResponse' {} a -> s {profileStartTime = a} :: GetRecommendationsResponse) Prelude.. Data._Time++-- | The name of the profiling group the analysis data is about.+getRecommendationsResponse_profilingGroupName :: Lens.Lens' GetRecommendationsResponse Prelude.Text+getRecommendationsResponse_profilingGroupName = Lens.lens (\GetRecommendationsResponse' {profilingGroupName} -> profilingGroupName) (\s@GetRecommendationsResponse' {} a -> s {profilingGroupName = a} :: GetRecommendationsResponse)++-- | The list of recommendations that the analysis found for this profile.+getRecommendationsResponse_recommendations :: Lens.Lens' GetRecommendationsResponse [Recommendation]+getRecommendationsResponse_recommendations = Lens.lens (\GetRecommendationsResponse' {recommendations} -> recommendations) (\s@GetRecommendationsResponse' {} a -> s {recommendations = a} :: GetRecommendationsResponse) Prelude.. Lens.coerced++instance Prelude.NFData GetRecommendationsResponse where+  rnf GetRecommendationsResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf anomalies+      `Prelude.seq` Prelude.rnf profileEndTime+      `Prelude.seq` Prelude.rnf profileStartTime+      `Prelude.seq` Prelude.rnf profilingGroupName+      `Prelude.seq` Prelude.rnf recommendations
+ gen/Amazonka/CodeGuruProfiler/Lens.hs view
@@ -0,0 +1,339 @@+{-# 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.CodeGuruProfiler.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.CodeGuruProfiler.Lens+  ( -- * Operations++    -- ** AddNotificationChannels+    addNotificationChannels_channels,+    addNotificationChannels_profilingGroupName,+    addNotificationChannelsResponse_notificationConfiguration,+    addNotificationChannelsResponse_httpStatus,++    -- ** BatchGetFrameMetricData+    batchGetFrameMetricData_endTime,+    batchGetFrameMetricData_frameMetrics,+    batchGetFrameMetricData_period,+    batchGetFrameMetricData_startTime,+    batchGetFrameMetricData_targetResolution,+    batchGetFrameMetricData_profilingGroupName,+    batchGetFrameMetricDataResponse_httpStatus,+    batchGetFrameMetricDataResponse_endTime,+    batchGetFrameMetricDataResponse_endTimes,+    batchGetFrameMetricDataResponse_frameMetricData,+    batchGetFrameMetricDataResponse_resolution,+    batchGetFrameMetricDataResponse_startTime,+    batchGetFrameMetricDataResponse_unprocessedEndTimes,++    -- ** ConfigureAgent+    configureAgent_fleetInstanceId,+    configureAgent_metadata,+    configureAgent_profilingGroupName,+    configureAgentResponse_httpStatus,+    configureAgentResponse_configuration,++    -- ** CreateProfilingGroup+    createProfilingGroup_agentOrchestrationConfig,+    createProfilingGroup_computePlatform,+    createProfilingGroup_tags,+    createProfilingGroup_clientToken,+    createProfilingGroup_profilingGroupName,+    createProfilingGroupResponse_httpStatus,+    createProfilingGroupResponse_profilingGroup,++    -- ** DeleteProfilingGroup+    deleteProfilingGroup_profilingGroupName,+    deleteProfilingGroupResponse_httpStatus,++    -- ** DescribeProfilingGroup+    describeProfilingGroup_profilingGroupName,+    describeProfilingGroupResponse_httpStatus,+    describeProfilingGroupResponse_profilingGroup,++    -- ** GetFindingsReportAccountSummary+    getFindingsReportAccountSummary_dailyReportsOnly,+    getFindingsReportAccountSummary_maxResults,+    getFindingsReportAccountSummary_nextToken,+    getFindingsReportAccountSummaryResponse_nextToken,+    getFindingsReportAccountSummaryResponse_httpStatus,+    getFindingsReportAccountSummaryResponse_reportSummaries,++    -- ** GetNotificationConfiguration+    getNotificationConfiguration_profilingGroupName,+    getNotificationConfigurationResponse_httpStatus,+    getNotificationConfigurationResponse_notificationConfiguration,++    -- ** GetPolicy+    getPolicy_profilingGroupName,+    getPolicyResponse_httpStatus,+    getPolicyResponse_policy,+    getPolicyResponse_revisionId,++    -- ** GetProfile+    getProfile_accept,+    getProfile_endTime,+    getProfile_maxDepth,+    getProfile_period,+    getProfile_startTime,+    getProfile_profilingGroupName,+    getProfileResponse_contentEncoding,+    getProfileResponse_httpStatus,+    getProfileResponse_contentType,+    getProfileResponse_profile,++    -- ** GetRecommendations+    getRecommendations_locale,+    getRecommendations_endTime,+    getRecommendations_profilingGroupName,+    getRecommendations_startTime,+    getRecommendationsResponse_httpStatus,+    getRecommendationsResponse_anomalies,+    getRecommendationsResponse_profileEndTime,+    getRecommendationsResponse_profileStartTime,+    getRecommendationsResponse_profilingGroupName,+    getRecommendationsResponse_recommendations,++    -- ** ListFindingsReports+    listFindingsReports_dailyReportsOnly,+    listFindingsReports_maxResults,+    listFindingsReports_nextToken,+    listFindingsReports_endTime,+    listFindingsReports_profilingGroupName,+    listFindingsReports_startTime,+    listFindingsReportsResponse_nextToken,+    listFindingsReportsResponse_httpStatus,+    listFindingsReportsResponse_findingsReportSummaries,++    -- ** ListProfileTimes+    listProfileTimes_maxResults,+    listProfileTimes_nextToken,+    listProfileTimes_orderBy,+    listProfileTimes_endTime,+    listProfileTimes_period,+    listProfileTimes_profilingGroupName,+    listProfileTimes_startTime,+    listProfileTimesResponse_nextToken,+    listProfileTimesResponse_httpStatus,+    listProfileTimesResponse_profileTimes,++    -- ** ListProfilingGroups+    listProfilingGroups_includeDescription,+    listProfilingGroups_maxResults,+    listProfilingGroups_nextToken,+    listProfilingGroupsResponse_nextToken,+    listProfilingGroupsResponse_profilingGroups,+    listProfilingGroupsResponse_httpStatus,+    listProfilingGroupsResponse_profilingGroupNames,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,++    -- ** PostAgentProfile+    postAgentProfile_profileToken,+    postAgentProfile_agentProfile,+    postAgentProfile_contentType,+    postAgentProfile_profilingGroupName,+    postAgentProfileResponse_httpStatus,++    -- ** PutPermission+    putPermission_revisionId,+    putPermission_actionGroup,+    putPermission_principals,+    putPermission_profilingGroupName,+    putPermissionResponse_httpStatus,+    putPermissionResponse_policy,+    putPermissionResponse_revisionId,++    -- ** RemoveNotificationChannel+    removeNotificationChannel_channelId,+    removeNotificationChannel_profilingGroupName,+    removeNotificationChannelResponse_notificationConfiguration,+    removeNotificationChannelResponse_httpStatus,++    -- ** RemovePermission+    removePermission_actionGroup,+    removePermission_profilingGroupName,+    removePermission_revisionId,+    removePermissionResponse_httpStatus,+    removePermissionResponse_policy,+    removePermissionResponse_revisionId,++    -- ** SubmitFeedback+    submitFeedback_comment,+    submitFeedback_anomalyInstanceId,+    submitFeedback_profilingGroupName,+    submitFeedback_type,+    submitFeedbackResponse_httpStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UpdateProfilingGroup+    updateProfilingGroup_agentOrchestrationConfig,+    updateProfilingGroup_profilingGroupName,+    updateProfilingGroupResponse_httpStatus,+    updateProfilingGroupResponse_profilingGroup,++    -- * Types++    -- ** AgentConfiguration+    agentConfiguration_agentParameters,+    agentConfiguration_periodInSeconds,+    agentConfiguration_shouldProfile,++    -- ** AgentOrchestrationConfig+    agentOrchestrationConfig_profilingEnabled,++    -- ** AggregatedProfileTime+    aggregatedProfileTime_period,+    aggregatedProfileTime_start,++    -- ** Anomaly+    anomaly_instances,+    anomaly_metric,+    anomaly_reason,++    -- ** AnomalyInstance+    anomalyInstance_endTime,+    anomalyInstance_userFeedback,+    anomalyInstance_id,+    anomalyInstance_startTime,++    -- ** Channel+    channel_id,+    channel_eventPublishers,+    channel_uri,++    -- ** FindingsReportSummary+    findingsReportSummary_id,+    findingsReportSummary_profileEndTime,+    findingsReportSummary_profileStartTime,+    findingsReportSummary_profilingGroupName,+    findingsReportSummary_totalNumberOfFindings,++    -- ** FrameMetric+    frameMetric_frameName,+    frameMetric_threadStates,+    frameMetric_type,++    -- ** FrameMetricDatum+    frameMetricDatum_frameMetric,+    frameMetricDatum_values,++    -- ** Match+    match_frameAddress,+    match_targetFramesIndex,+    match_thresholdBreachValue,++    -- ** Metric+    metric_frameName,+    metric_threadStates,+    metric_type,++    -- ** NotificationConfiguration+    notificationConfiguration_channels,++    -- ** Pattern+    pattern_countersToAggregate,+    pattern_description,+    pattern_id,+    pattern_name,+    pattern_resolutionSteps,+    pattern_targetFrames,+    pattern_thresholdPercent,++    -- ** ProfileTime+    profileTime_start,++    -- ** ProfilingGroupDescription+    profilingGroupDescription_agentOrchestrationConfig,+    profilingGroupDescription_arn,+    profilingGroupDescription_computePlatform,+    profilingGroupDescription_createdAt,+    profilingGroupDescription_name,+    profilingGroupDescription_profilingStatus,+    profilingGroupDescription_tags,+    profilingGroupDescription_updatedAt,++    -- ** ProfilingStatus+    profilingStatus_latestAgentOrchestratedAt,+    profilingStatus_latestAgentProfileReportedAt,+    profilingStatus_latestAggregatedProfile,++    -- ** Recommendation+    recommendation_allMatchesCount,+    recommendation_allMatchesSum,+    recommendation_endTime,+    recommendation_pattern,+    recommendation_startTime,+    recommendation_topMatches,++    -- ** TimestampStructure+    timestampStructure_value,++    -- ** UserFeedback+    userFeedback_type,+  )+where++import Amazonka.CodeGuruProfiler.AddNotificationChannels+import Amazonka.CodeGuruProfiler.BatchGetFrameMetricData+import Amazonka.CodeGuruProfiler.ConfigureAgent+import Amazonka.CodeGuruProfiler.CreateProfilingGroup+import Amazonka.CodeGuruProfiler.DeleteProfilingGroup+import Amazonka.CodeGuruProfiler.DescribeProfilingGroup+import Amazonka.CodeGuruProfiler.GetFindingsReportAccountSummary+import Amazonka.CodeGuruProfiler.GetNotificationConfiguration+import Amazonka.CodeGuruProfiler.GetPolicy+import Amazonka.CodeGuruProfiler.GetProfile+import Amazonka.CodeGuruProfiler.GetRecommendations+import Amazonka.CodeGuruProfiler.ListFindingsReports+import Amazonka.CodeGuruProfiler.ListProfileTimes+import Amazonka.CodeGuruProfiler.ListProfilingGroups+import Amazonka.CodeGuruProfiler.ListTagsForResource+import Amazonka.CodeGuruProfiler.PostAgentProfile+import Amazonka.CodeGuruProfiler.PutPermission+import Amazonka.CodeGuruProfiler.RemoveNotificationChannel+import Amazonka.CodeGuruProfiler.RemovePermission+import Amazonka.CodeGuruProfiler.SubmitFeedback+import Amazonka.CodeGuruProfiler.TagResource+import Amazonka.CodeGuruProfiler.Types.AgentConfiguration+import Amazonka.CodeGuruProfiler.Types.AgentOrchestrationConfig+import Amazonka.CodeGuruProfiler.Types.AggregatedProfileTime+import Amazonka.CodeGuruProfiler.Types.Anomaly+import Amazonka.CodeGuruProfiler.Types.AnomalyInstance+import Amazonka.CodeGuruProfiler.Types.Channel+import Amazonka.CodeGuruProfiler.Types.FindingsReportSummary+import Amazonka.CodeGuruProfiler.Types.FrameMetric+import Amazonka.CodeGuruProfiler.Types.FrameMetricDatum+import Amazonka.CodeGuruProfiler.Types.Match+import Amazonka.CodeGuruProfiler.Types.Metric+import Amazonka.CodeGuruProfiler.Types.NotificationConfiguration+import Amazonka.CodeGuruProfiler.Types.Pattern+import Amazonka.CodeGuruProfiler.Types.ProfileTime+import Amazonka.CodeGuruProfiler.Types.ProfilingGroupDescription+import Amazonka.CodeGuruProfiler.Types.ProfilingStatus+import Amazonka.CodeGuruProfiler.Types.Recommendation+import Amazonka.CodeGuruProfiler.Types.TimestampStructure+import Amazonka.CodeGuruProfiler.Types.UserFeedback+import Amazonka.CodeGuruProfiler.UntagResource+import Amazonka.CodeGuruProfiler.UpdateProfilingGroup
+ gen/Amazonka/CodeGuruProfiler/ListFindingsReports.hs view
@@ -0,0 +1,332 @@+{-# 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.CodeGuruProfiler.ListFindingsReports+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- List the available reports for a given profiling group and time range.+module Amazonka.CodeGuruProfiler.ListFindingsReports+  ( -- * Creating a Request+    ListFindingsReports (..),+    newListFindingsReports,++    -- * Request Lenses+    listFindingsReports_dailyReportsOnly,+    listFindingsReports_maxResults,+    listFindingsReports_nextToken,+    listFindingsReports_endTime,+    listFindingsReports_profilingGroupName,+    listFindingsReports_startTime,++    -- * Destructuring the Response+    ListFindingsReportsResponse (..),+    newListFindingsReportsResponse,++    -- * Response Lenses+    listFindingsReportsResponse_nextToken,+    listFindingsReportsResponse_httpStatus,+    listFindingsReportsResponse_findingsReportSummaries,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the ListFindingsReportsRequest.+--+-- /See:/ 'newListFindingsReports' smart constructor.+data ListFindingsReports = ListFindingsReports'+  { -- | A @Boolean@ value indicating whether to only return reports from daily+    -- profiles. If set to @True@, only analysis data from daily profiles is+    -- returned. If set to @False@, analysis data is returned from smaller time+    -- windows (for example, one hour).+    dailyReportsOnly :: Prelude.Maybe Prelude.Bool,+    -- | The maximum number of report results returned by @ListFindingsReports@+    -- in paginated output. When this parameter is used, @ListFindingsReports@+    -- only returns @maxResults@ results in a single page along with a+    -- @nextToken@ response element. The remaining results of the initial+    -- request can be seen by sending another @ListFindingsReports@ request+    -- with the returned @nextToken@ value.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated+    -- @ListFindingsReportsRequest@ request where @maxResults@ was used and the+    -- results exceeded the value of that parameter. Pagination continues from+    -- the end of the previous results that returned the @nextToken@ value.+    --+    -- This token should be treated as an opaque identifier that is only used+    -- to retrieve the next items in a list and not for other programmatic+    -- purposes.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The end time of the profile to get analysis data about. You must specify+    -- @startTime@ and @endTime@. This is specified using the ISO 8601 format.+    -- For example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June+    -- 1, 2020 1:15:02 PM UTC.+    endTime :: Data.ISO8601,+    -- | The name of the profiling group from which to search for analysis data.+    profilingGroupName :: Prelude.Text,+    -- | The start time of the profile to get analysis data about. You must+    -- specify @startTime@ and @endTime@. This is specified using the ISO 8601+    -- format. For example, 2020-06-01T13:15:02.001Z represents 1 millisecond+    -- past June 1, 2020 1:15:02 PM UTC.+    startTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListFindingsReports' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dailyReportsOnly', 'listFindingsReports_dailyReportsOnly' - A @Boolean@ value indicating whether to only return reports from daily+-- profiles. If set to @True@, only analysis data from daily profiles is+-- returned. If set to @False@, analysis data is returned from smaller time+-- windows (for example, one hour).+--+-- 'maxResults', 'listFindingsReports_maxResults' - The maximum number of report results returned by @ListFindingsReports@+-- in paginated output. When this parameter is used, @ListFindingsReports@+-- only returns @maxResults@ results in a single page along with a+-- @nextToken@ response element. The remaining results of the initial+-- request can be seen by sending another @ListFindingsReports@ request+-- with the returned @nextToken@ value.+--+-- 'nextToken', 'listFindingsReports_nextToken' - The @nextToken@ value returned from a previous paginated+-- @ListFindingsReportsRequest@ request where @maxResults@ was used and the+-- results exceeded the value of that parameter. Pagination continues from+-- the end of the previous results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is only used+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+--+-- 'endTime', 'listFindingsReports_endTime' - The end time of the profile to get analysis data about. You must specify+-- @startTime@ and @endTime@. This is specified using the ISO 8601 format.+-- For example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June+-- 1, 2020 1:15:02 PM UTC.+--+-- 'profilingGroupName', 'listFindingsReports_profilingGroupName' - The name of the profiling group from which to search for analysis data.+--+-- 'startTime', 'listFindingsReports_startTime' - The start time of the profile to get analysis data about. You must+-- specify @startTime@ and @endTime@. This is specified using the ISO 8601+-- format. For example, 2020-06-01T13:15:02.001Z represents 1 millisecond+-- past June 1, 2020 1:15:02 PM UTC.+newListFindingsReports ::+  -- | 'endTime'+  Prelude.UTCTime ->+  -- | 'profilingGroupName'+  Prelude.Text ->+  -- | 'startTime'+  Prelude.UTCTime ->+  ListFindingsReports+newListFindingsReports+  pEndTime_+  pProfilingGroupName_+  pStartTime_ =+    ListFindingsReports'+      { dailyReportsOnly =+          Prelude.Nothing,+        maxResults = Prelude.Nothing,+        nextToken = Prelude.Nothing,+        endTime = Data._Time Lens.# pEndTime_,+        profilingGroupName = pProfilingGroupName_,+        startTime = Data._Time Lens.# pStartTime_+      }++-- | A @Boolean@ value indicating whether to only return reports from daily+-- profiles. If set to @True@, only analysis data from daily profiles is+-- returned. If set to @False@, analysis data is returned from smaller time+-- windows (for example, one hour).+listFindingsReports_dailyReportsOnly :: Lens.Lens' ListFindingsReports (Prelude.Maybe Prelude.Bool)+listFindingsReports_dailyReportsOnly = Lens.lens (\ListFindingsReports' {dailyReportsOnly} -> dailyReportsOnly) (\s@ListFindingsReports' {} a -> s {dailyReportsOnly = a} :: ListFindingsReports)++-- | The maximum number of report results returned by @ListFindingsReports@+-- in paginated output. When this parameter is used, @ListFindingsReports@+-- only returns @maxResults@ results in a single page along with a+-- @nextToken@ response element. The remaining results of the initial+-- request can be seen by sending another @ListFindingsReports@ request+-- with the returned @nextToken@ value.+listFindingsReports_maxResults :: Lens.Lens' ListFindingsReports (Prelude.Maybe Prelude.Natural)+listFindingsReports_maxResults = Lens.lens (\ListFindingsReports' {maxResults} -> maxResults) (\s@ListFindingsReports' {} a -> s {maxResults = a} :: ListFindingsReports)++-- | The @nextToken@ value returned from a previous paginated+-- @ListFindingsReportsRequest@ request where @maxResults@ was used and the+-- results exceeded the value of that parameter. Pagination continues from+-- the end of the previous results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is only used+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+listFindingsReports_nextToken :: Lens.Lens' ListFindingsReports (Prelude.Maybe Prelude.Text)+listFindingsReports_nextToken = Lens.lens (\ListFindingsReports' {nextToken} -> nextToken) (\s@ListFindingsReports' {} a -> s {nextToken = a} :: ListFindingsReports)++-- | The end time of the profile to get analysis data about. You must specify+-- @startTime@ and @endTime@. This is specified using the ISO 8601 format.+-- For example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June+-- 1, 2020 1:15:02 PM UTC.+listFindingsReports_endTime :: Lens.Lens' ListFindingsReports Prelude.UTCTime+listFindingsReports_endTime = Lens.lens (\ListFindingsReports' {endTime} -> endTime) (\s@ListFindingsReports' {} a -> s {endTime = a} :: ListFindingsReports) Prelude.. Data._Time++-- | The name of the profiling group from which to search for analysis data.+listFindingsReports_profilingGroupName :: Lens.Lens' ListFindingsReports Prelude.Text+listFindingsReports_profilingGroupName = Lens.lens (\ListFindingsReports' {profilingGroupName} -> profilingGroupName) (\s@ListFindingsReports' {} a -> s {profilingGroupName = a} :: ListFindingsReports)++-- | The start time of the profile to get analysis data about. You must+-- specify @startTime@ and @endTime@. This is specified using the ISO 8601+-- format. For example, 2020-06-01T13:15:02.001Z represents 1 millisecond+-- past June 1, 2020 1:15:02 PM UTC.+listFindingsReports_startTime :: Lens.Lens' ListFindingsReports Prelude.UTCTime+listFindingsReports_startTime = Lens.lens (\ListFindingsReports' {startTime} -> startTime) (\s@ListFindingsReports' {} a -> s {startTime = a} :: ListFindingsReports) Prelude.. Data._Time++instance Core.AWSRequest ListFindingsReports where+  type+    AWSResponse ListFindingsReports =+      ListFindingsReportsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListFindingsReportsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "findingsReportSummaries"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListFindingsReports where+  hashWithSalt _salt ListFindingsReports' {..} =+    _salt+      `Prelude.hashWithSalt` dailyReportsOnly+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` profilingGroupName+      `Prelude.hashWithSalt` startTime++instance Prelude.NFData ListFindingsReports where+  rnf ListFindingsReports' {..} =+    Prelude.rnf dailyReportsOnly+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf profilingGroupName+      `Prelude.seq` Prelude.rnf startTime++instance Data.ToHeaders ListFindingsReports where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListFindingsReports where+  toPath ListFindingsReports' {..} =+    Prelude.mconcat+      [ "/internal/profilingGroups/",+        Data.toBS profilingGroupName,+        "/findingsReports"+      ]++instance Data.ToQuery ListFindingsReports where+  toQuery ListFindingsReports' {..} =+    Prelude.mconcat+      [ "dailyReportsOnly" Data.=: dailyReportsOnly,+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "endTime" Data.=: endTime,+        "startTime" Data.=: startTime+      ]++-- | The structure representing the ListFindingsReportsResponse.+--+-- /See:/ 'newListFindingsReportsResponse' smart constructor.+data ListFindingsReportsResponse = ListFindingsReportsResponse'+  { -- | The @nextToken@ value to include in a future @ListFindingsReports@+    -- request. When the results of a @ListFindingsReports@ request exceed+    -- @maxResults@, this value can be used to retrieve the next page of+    -- results. This value is @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The list of analysis results summaries.+    findingsReportSummaries :: [FindingsReportSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListFindingsReportsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listFindingsReportsResponse_nextToken' - The @nextToken@ value to include in a future @ListFindingsReports@+-- request. When the results of a @ListFindingsReports@ request exceed+-- @maxResults@, this value can be used to retrieve the next page of+-- results. This value is @null@ when there are no more results to return.+--+-- 'httpStatus', 'listFindingsReportsResponse_httpStatus' - The response's http status code.+--+-- 'findingsReportSummaries', 'listFindingsReportsResponse_findingsReportSummaries' - The list of analysis results summaries.+newListFindingsReportsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListFindingsReportsResponse+newListFindingsReportsResponse pHttpStatus_ =+  ListFindingsReportsResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      findingsReportSummaries = Prelude.mempty+    }++-- | The @nextToken@ value to include in a future @ListFindingsReports@+-- request. When the results of a @ListFindingsReports@ request exceed+-- @maxResults@, this value can be used to retrieve the next page of+-- results. This value is @null@ when there are no more results to return.+listFindingsReportsResponse_nextToken :: Lens.Lens' ListFindingsReportsResponse (Prelude.Maybe Prelude.Text)+listFindingsReportsResponse_nextToken = Lens.lens (\ListFindingsReportsResponse' {nextToken} -> nextToken) (\s@ListFindingsReportsResponse' {} a -> s {nextToken = a} :: ListFindingsReportsResponse)++-- | The response's http status code.+listFindingsReportsResponse_httpStatus :: Lens.Lens' ListFindingsReportsResponse Prelude.Int+listFindingsReportsResponse_httpStatus = Lens.lens (\ListFindingsReportsResponse' {httpStatus} -> httpStatus) (\s@ListFindingsReportsResponse' {} a -> s {httpStatus = a} :: ListFindingsReportsResponse)++-- | The list of analysis results summaries.+listFindingsReportsResponse_findingsReportSummaries :: Lens.Lens' ListFindingsReportsResponse [FindingsReportSummary]+listFindingsReportsResponse_findingsReportSummaries = Lens.lens (\ListFindingsReportsResponse' {findingsReportSummaries} -> findingsReportSummaries) (\s@ListFindingsReportsResponse' {} a -> s {findingsReportSummaries = a} :: ListFindingsReportsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListFindingsReportsResponse where+  rnf ListFindingsReportsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf findingsReportSummaries
+ gen/Amazonka/CodeGuruProfiler/ListProfileTimes.hs view
@@ -0,0 +1,370 @@+{-# 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.CodeGuruProfiler.ListProfileTimes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists the start times of the available aggregated profiles of a+-- profiling group for an aggregation period within the specified time+-- range.+--+-- This operation returns paginated results.+module Amazonka.CodeGuruProfiler.ListProfileTimes+  ( -- * Creating a Request+    ListProfileTimes (..),+    newListProfileTimes,++    -- * Request Lenses+    listProfileTimes_maxResults,+    listProfileTimes_nextToken,+    listProfileTimes_orderBy,+    listProfileTimes_endTime,+    listProfileTimes_period,+    listProfileTimes_profilingGroupName,+    listProfileTimes_startTime,++    -- * Destructuring the Response+    ListProfileTimesResponse (..),+    newListProfileTimesResponse,++    -- * Response Lenses+    listProfileTimesResponse_nextToken,+    listProfileTimesResponse_httpStatus,+    listProfileTimesResponse_profileTimes,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the listProfileTimesRequest.+--+-- /See:/ 'newListProfileTimes' smart constructor.+data ListProfileTimes = ListProfileTimes'+  { -- | The maximum number of profile time results returned by+    -- @ListProfileTimes@ in paginated output. When this parameter is used,+    -- @ListProfileTimes@ only returns @maxResults@ results in a single page+    -- with a @nextToken@ response element. The remaining results of the+    -- initial request can be seen by sending another @ListProfileTimes@+    -- request with the returned @nextToken@ value.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated+    -- @ListProfileTimes@ request where @maxResults@ was used and the results+    -- exceeded the value of that parameter. Pagination continues from the end+    -- of the previous results that returned the @nextToken@ value.+    --+    -- This token should be treated as an opaque identifier that is only used+    -- to retrieve the next items in a list and not for other programmatic+    -- purposes.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The order (ascending or descending by start time of the profile) to use+    -- when listing profiles. Defaults to @TIMESTAMP_DESCENDING@.+    orderBy :: Prelude.Maybe OrderBy,+    -- | The end time of the time range from which to list the profiles.+    endTime :: Data.ISO8601,+    -- | The aggregation period. This specifies the period during which an+    -- aggregation profile collects posted agent profiles for a profiling+    -- group. There are 3 valid values.+    --+    -- -   @P1D@ — 1 day+    --+    -- -   @PT1H@ — 1 hour+    --+    -- -   @PT5M@ — 5 minutes+    period :: AggregationPeriod,+    -- | The name of the profiling group.+    profilingGroupName :: Prelude.Text,+    -- | The start time of the time range from which to list the profiles.+    startTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProfileTimes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listProfileTimes_maxResults' - The maximum number of profile time results returned by+-- @ListProfileTimes@ in paginated output. When this parameter is used,+-- @ListProfileTimes@ only returns @maxResults@ results in a single page+-- with a @nextToken@ response element. The remaining results of the+-- initial request can be seen by sending another @ListProfileTimes@+-- request with the returned @nextToken@ value.+--+-- 'nextToken', 'listProfileTimes_nextToken' - The @nextToken@ value returned from a previous paginated+-- @ListProfileTimes@ request where @maxResults@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is only used+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+--+-- 'orderBy', 'listProfileTimes_orderBy' - The order (ascending or descending by start time of the profile) to use+-- when listing profiles. Defaults to @TIMESTAMP_DESCENDING@.+--+-- 'endTime', 'listProfileTimes_endTime' - The end time of the time range from which to list the profiles.+--+-- 'period', 'listProfileTimes_period' - The aggregation period. This specifies the period during which an+-- aggregation profile collects posted agent profiles for a profiling+-- group. There are 3 valid values.+--+-- -   @P1D@ — 1 day+--+-- -   @PT1H@ — 1 hour+--+-- -   @PT5M@ — 5 minutes+--+-- 'profilingGroupName', 'listProfileTimes_profilingGroupName' - The name of the profiling group.+--+-- 'startTime', 'listProfileTimes_startTime' - The start time of the time range from which to list the profiles.+newListProfileTimes ::+  -- | 'endTime'+  Prelude.UTCTime ->+  -- | 'period'+  AggregationPeriod ->+  -- | 'profilingGroupName'+  Prelude.Text ->+  -- | 'startTime'+  Prelude.UTCTime ->+  ListProfileTimes+newListProfileTimes+  pEndTime_+  pPeriod_+  pProfilingGroupName_+  pStartTime_ =+    ListProfileTimes'+      { maxResults = Prelude.Nothing,+        nextToken = Prelude.Nothing,+        orderBy = Prelude.Nothing,+        endTime = Data._Time Lens.# pEndTime_,+        period = pPeriod_,+        profilingGroupName = pProfilingGroupName_,+        startTime = Data._Time Lens.# pStartTime_+      }++-- | The maximum number of profile time results returned by+-- @ListProfileTimes@ in paginated output. When this parameter is used,+-- @ListProfileTimes@ only returns @maxResults@ results in a single page+-- with a @nextToken@ response element. The remaining results of the+-- initial request can be seen by sending another @ListProfileTimes@+-- request with the returned @nextToken@ value.+listProfileTimes_maxResults :: Lens.Lens' ListProfileTimes (Prelude.Maybe Prelude.Natural)+listProfileTimes_maxResults = Lens.lens (\ListProfileTimes' {maxResults} -> maxResults) (\s@ListProfileTimes' {} a -> s {maxResults = a} :: ListProfileTimes)++-- | The @nextToken@ value returned from a previous paginated+-- @ListProfileTimes@ request where @maxResults@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is only used+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+listProfileTimes_nextToken :: Lens.Lens' ListProfileTimes (Prelude.Maybe Prelude.Text)+listProfileTimes_nextToken = Lens.lens (\ListProfileTimes' {nextToken} -> nextToken) (\s@ListProfileTimes' {} a -> s {nextToken = a} :: ListProfileTimes)++-- | The order (ascending or descending by start time of the profile) to use+-- when listing profiles. Defaults to @TIMESTAMP_DESCENDING@.+listProfileTimes_orderBy :: Lens.Lens' ListProfileTimes (Prelude.Maybe OrderBy)+listProfileTimes_orderBy = Lens.lens (\ListProfileTimes' {orderBy} -> orderBy) (\s@ListProfileTimes' {} a -> s {orderBy = a} :: ListProfileTimes)++-- | The end time of the time range from which to list the profiles.+listProfileTimes_endTime :: Lens.Lens' ListProfileTimes Prelude.UTCTime+listProfileTimes_endTime = Lens.lens (\ListProfileTimes' {endTime} -> endTime) (\s@ListProfileTimes' {} a -> s {endTime = a} :: ListProfileTimes) Prelude.. Data._Time++-- | The aggregation period. This specifies the period during which an+-- aggregation profile collects posted agent profiles for a profiling+-- group. There are 3 valid values.+--+-- -   @P1D@ — 1 day+--+-- -   @PT1H@ — 1 hour+--+-- -   @PT5M@ — 5 minutes+listProfileTimes_period :: Lens.Lens' ListProfileTimes AggregationPeriod+listProfileTimes_period = Lens.lens (\ListProfileTimes' {period} -> period) (\s@ListProfileTimes' {} a -> s {period = a} :: ListProfileTimes)++-- | The name of the profiling group.+listProfileTimes_profilingGroupName :: Lens.Lens' ListProfileTimes Prelude.Text+listProfileTimes_profilingGroupName = Lens.lens (\ListProfileTimes' {profilingGroupName} -> profilingGroupName) (\s@ListProfileTimes' {} a -> s {profilingGroupName = a} :: ListProfileTimes)++-- | The start time of the time range from which to list the profiles.+listProfileTimes_startTime :: Lens.Lens' ListProfileTimes Prelude.UTCTime+listProfileTimes_startTime = Lens.lens (\ListProfileTimes' {startTime} -> startTime) (\s@ListProfileTimes' {} a -> s {startTime = a} :: ListProfileTimes) Prelude.. Data._Time++instance Core.AWSPager ListProfileTimes where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listProfileTimesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listProfileTimesResponse_profileTimes) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listProfileTimes_nextToken+          Lens..~ rs+          Lens.^? listProfileTimesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListProfileTimes where+  type+    AWSResponse ListProfileTimes =+      ListProfileTimesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListProfileTimesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "profileTimes" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListProfileTimes where+  hashWithSalt _salt ListProfileTimes' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` orderBy+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` period+      `Prelude.hashWithSalt` profilingGroupName+      `Prelude.hashWithSalt` startTime++instance Prelude.NFData ListProfileTimes where+  rnf ListProfileTimes' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf orderBy+      `Prelude.seq` Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf period+      `Prelude.seq` Prelude.rnf profilingGroupName+      `Prelude.seq` Prelude.rnf startTime++instance Data.ToHeaders ListProfileTimes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListProfileTimes where+  toPath ListProfileTimes' {..} =+    Prelude.mconcat+      [ "/profilingGroups/",+        Data.toBS profilingGroupName,+        "/profileTimes"+      ]++instance Data.ToQuery ListProfileTimes where+  toQuery ListProfileTimes' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "orderBy" Data.=: orderBy,+        "endTime" Data.=: endTime,+        "period" Data.=: period,+        "startTime" Data.=: startTime+      ]++-- | The structure representing the listProfileTimesResponse.+--+-- /See:/ 'newListProfileTimesResponse' smart constructor.+data ListProfileTimesResponse = ListProfileTimesResponse'+  { -- | The @nextToken@ value to include in a future @ListProfileTimes@ request.+    -- When the results of a @ListProfileTimes@ request exceed @maxResults@,+    -- this value can be used to retrieve the next page of results. This value+    -- is @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The list of start times of the available profiles for the aggregation+    -- period in the specified time range.+    profileTimes :: [ProfileTime]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProfileTimesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listProfileTimesResponse_nextToken' - The @nextToken@ value to include in a future @ListProfileTimes@ request.+-- When the results of a @ListProfileTimes@ request exceed @maxResults@,+-- this value can be used to retrieve the next page of results. This value+-- is @null@ when there are no more results to return.+--+-- 'httpStatus', 'listProfileTimesResponse_httpStatus' - The response's http status code.+--+-- 'profileTimes', 'listProfileTimesResponse_profileTimes' - The list of start times of the available profiles for the aggregation+-- period in the specified time range.+newListProfileTimesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListProfileTimesResponse+newListProfileTimesResponse pHttpStatus_ =+  ListProfileTimesResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      profileTimes = Prelude.mempty+    }++-- | The @nextToken@ value to include in a future @ListProfileTimes@ request.+-- When the results of a @ListProfileTimes@ request exceed @maxResults@,+-- this value can be used to retrieve the next page of results. This value+-- is @null@ when there are no more results to return.+listProfileTimesResponse_nextToken :: Lens.Lens' ListProfileTimesResponse (Prelude.Maybe Prelude.Text)+listProfileTimesResponse_nextToken = Lens.lens (\ListProfileTimesResponse' {nextToken} -> nextToken) (\s@ListProfileTimesResponse' {} a -> s {nextToken = a} :: ListProfileTimesResponse)++-- | The response's http status code.+listProfileTimesResponse_httpStatus :: Lens.Lens' ListProfileTimesResponse Prelude.Int+listProfileTimesResponse_httpStatus = Lens.lens (\ListProfileTimesResponse' {httpStatus} -> httpStatus) (\s@ListProfileTimesResponse' {} a -> s {httpStatus = a} :: ListProfileTimesResponse)++-- | The list of start times of the available profiles for the aggregation+-- period in the specified time range.+listProfileTimesResponse_profileTimes :: Lens.Lens' ListProfileTimesResponse [ProfileTime]+listProfileTimesResponse_profileTimes = Lens.lens (\ListProfileTimesResponse' {profileTimes} -> profileTimes) (\s@ListProfileTimesResponse' {} a -> s {profileTimes = a} :: ListProfileTimesResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListProfileTimesResponse where+  rnf ListProfileTimesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf profileTimes
+ gen/Amazonka/CodeGuruProfiler/ListProfilingGroups.hs view
@@ -0,0 +1,306 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.ListProfilingGroups+-- 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 profiling groups. The profiling groups are returned as+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- objects.+module Amazonka.CodeGuruProfiler.ListProfilingGroups+  ( -- * Creating a Request+    ListProfilingGroups (..),+    newListProfilingGroups,++    -- * Request Lenses+    listProfilingGroups_includeDescription,+    listProfilingGroups_maxResults,+    listProfilingGroups_nextToken,++    -- * Destructuring the Response+    ListProfilingGroupsResponse (..),+    newListProfilingGroupsResponse,++    -- * Response Lenses+    listProfilingGroupsResponse_nextToken,+    listProfilingGroupsResponse_profilingGroups,+    listProfilingGroupsResponse_httpStatus,+    listProfilingGroupsResponse_profilingGroupNames,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the listProfilingGroupsRequest.+--+-- /See:/ 'newListProfilingGroups' smart constructor.+data ListProfilingGroups = ListProfilingGroups'+  { -- | A @Boolean@ value indicating whether to include a description. If+    -- @true@, then a list of+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+    -- objects that contain detailed information about profiling groups is+    -- returned. If @false@, then a list of profiling group names is returned.+    includeDescription :: Prelude.Maybe Prelude.Bool,+    -- | The maximum number of profiling groups results returned by+    -- @ListProfilingGroups@ in paginated output. When this parameter is used,+    -- @ListProfilingGroups@ only returns @maxResults@ results in a single page+    -- along with a @nextToken@ response element. The remaining results of the+    -- initial request can be seen by sending another @ListProfilingGroups@+    -- request with the returned @nextToken@ value.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated+    -- @ListProfilingGroups@ request where @maxResults@ was used and the+    -- results exceeded the value of that parameter. Pagination continues from+    -- the end of the previous results that returned the @nextToken@ value.+    --+    -- This token should be treated as an opaque identifier that is only used+    -- to retrieve the next items in a list and not for other programmatic+    -- purposes.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProfilingGroups' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'includeDescription', 'listProfilingGroups_includeDescription' - A @Boolean@ value indicating whether to include a description. If+-- @true@, then a list of+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- objects that contain detailed information about profiling groups is+-- returned. If @false@, then a list of profiling group names is returned.+--+-- 'maxResults', 'listProfilingGroups_maxResults' - The maximum number of profiling groups results returned by+-- @ListProfilingGroups@ in paginated output. When this parameter is used,+-- @ListProfilingGroups@ only returns @maxResults@ results in a single page+-- along with a @nextToken@ response element. The remaining results of the+-- initial request can be seen by sending another @ListProfilingGroups@+-- request with the returned @nextToken@ value.+--+-- 'nextToken', 'listProfilingGroups_nextToken' - The @nextToken@ value returned from a previous paginated+-- @ListProfilingGroups@ request where @maxResults@ was used and the+-- results exceeded the value of that parameter. Pagination continues from+-- the end of the previous results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is only used+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+newListProfilingGroups ::+  ListProfilingGroups+newListProfilingGroups =+  ListProfilingGroups'+    { includeDescription =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | A @Boolean@ value indicating whether to include a description. If+-- @true@, then a list of+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- objects that contain detailed information about profiling groups is+-- returned. If @false@, then a list of profiling group names is returned.+listProfilingGroups_includeDescription :: Lens.Lens' ListProfilingGroups (Prelude.Maybe Prelude.Bool)+listProfilingGroups_includeDescription = Lens.lens (\ListProfilingGroups' {includeDescription} -> includeDescription) (\s@ListProfilingGroups' {} a -> s {includeDescription = a} :: ListProfilingGroups)++-- | The maximum number of profiling groups results returned by+-- @ListProfilingGroups@ in paginated output. When this parameter is used,+-- @ListProfilingGroups@ only returns @maxResults@ results in a single page+-- along with a @nextToken@ response element. The remaining results of the+-- initial request can be seen by sending another @ListProfilingGroups@+-- request with the returned @nextToken@ value.+listProfilingGroups_maxResults :: Lens.Lens' ListProfilingGroups (Prelude.Maybe Prelude.Natural)+listProfilingGroups_maxResults = Lens.lens (\ListProfilingGroups' {maxResults} -> maxResults) (\s@ListProfilingGroups' {} a -> s {maxResults = a} :: ListProfilingGroups)++-- | The @nextToken@ value returned from a previous paginated+-- @ListProfilingGroups@ request where @maxResults@ was used and the+-- results exceeded the value of that parameter. Pagination continues from+-- the end of the previous results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is only used+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+listProfilingGroups_nextToken :: Lens.Lens' ListProfilingGroups (Prelude.Maybe Prelude.Text)+listProfilingGroups_nextToken = Lens.lens (\ListProfilingGroups' {nextToken} -> nextToken) (\s@ListProfilingGroups' {} a -> s {nextToken = a} :: ListProfilingGroups)++instance Core.AWSRequest ListProfilingGroups where+  type+    AWSResponse ListProfilingGroups =+      ListProfilingGroupsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListProfilingGroupsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> ( x+                            Data..?> "profilingGroups"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "profilingGroupNames"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListProfilingGroups where+  hashWithSalt _salt ListProfilingGroups' {..} =+    _salt+      `Prelude.hashWithSalt` includeDescription+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListProfilingGroups where+  rnf ListProfilingGroups' {..} =+    Prelude.rnf includeDescription+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListProfilingGroups where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListProfilingGroups where+  toPath = Prelude.const "/profilingGroups"++instance Data.ToQuery ListProfilingGroups where+  toQuery ListProfilingGroups' {..} =+    Prelude.mconcat+      [ "includeDescription" Data.=: includeDescription,+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | The structure representing the listProfilingGroupsResponse.+--+-- /See:/ 'newListProfilingGroupsResponse' smart constructor.+data ListProfilingGroupsResponse = ListProfilingGroupsResponse'+  { -- | The @nextToken@ value to include in a future @ListProfilingGroups@+    -- request. When the results of a @ListProfilingGroups@ request exceed+    -- @maxResults@, this value can be used to retrieve the next page of+    -- results. This value is @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A returned list+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+    -- objects. A list of+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+    -- objects is returned only if @includeDescription@ is @true@, otherwise a+    -- list of profiling group names is returned.+    profilingGroups :: Prelude.Maybe [ProfilingGroupDescription],+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A returned list of profiling group names. A list of the names is+    -- returned only if @includeDescription@ is @false@, otherwise a list of+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+    -- objects is returned.+    profilingGroupNames :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProfilingGroupsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listProfilingGroupsResponse_nextToken' - The @nextToken@ value to include in a future @ListProfilingGroups@+-- request. When the results of a @ListProfilingGroups@ request exceed+-- @maxResults@, this value can be used to retrieve the next page of+-- results. This value is @null@ when there are no more results to return.+--+-- 'profilingGroups', 'listProfilingGroupsResponse_profilingGroups' - A returned list+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- objects. A list of+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- objects is returned only if @includeDescription@ is @true@, otherwise a+-- list of profiling group names is returned.+--+-- 'httpStatus', 'listProfilingGroupsResponse_httpStatus' - The response's http status code.+--+-- 'profilingGroupNames', 'listProfilingGroupsResponse_profilingGroupNames' - A returned list of profiling group names. A list of the names is+-- returned only if @includeDescription@ is @false@, otherwise a list of+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- objects is returned.+newListProfilingGroupsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListProfilingGroupsResponse+newListProfilingGroupsResponse pHttpStatus_ =+  ListProfilingGroupsResponse'+    { nextToken =+        Prelude.Nothing,+      profilingGroups = Prelude.Nothing,+      httpStatus = pHttpStatus_,+      profilingGroupNames = Prelude.mempty+    }++-- | The @nextToken@ value to include in a future @ListProfilingGroups@+-- request. When the results of a @ListProfilingGroups@ request exceed+-- @maxResults@, this value can be used to retrieve the next page of+-- results. This value is @null@ when there are no more results to return.+listProfilingGroupsResponse_nextToken :: Lens.Lens' ListProfilingGroupsResponse (Prelude.Maybe Prelude.Text)+listProfilingGroupsResponse_nextToken = Lens.lens (\ListProfilingGroupsResponse' {nextToken} -> nextToken) (\s@ListProfilingGroupsResponse' {} a -> s {nextToken = a} :: ListProfilingGroupsResponse)++-- | A returned list+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- objects. A list of+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- objects is returned only if @includeDescription@ is @true@, otherwise a+-- list of profiling group names is returned.+listProfilingGroupsResponse_profilingGroups :: Lens.Lens' ListProfilingGroupsResponse (Prelude.Maybe [ProfilingGroupDescription])+listProfilingGroupsResponse_profilingGroups = Lens.lens (\ListProfilingGroupsResponse' {profilingGroups} -> profilingGroups) (\s@ListProfilingGroupsResponse' {} a -> s {profilingGroups = a} :: ListProfilingGroupsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listProfilingGroupsResponse_httpStatus :: Lens.Lens' ListProfilingGroupsResponse Prelude.Int+listProfilingGroupsResponse_httpStatus = Lens.lens (\ListProfilingGroupsResponse' {httpStatus} -> httpStatus) (\s@ListProfilingGroupsResponse' {} a -> s {httpStatus = a} :: ListProfilingGroupsResponse)++-- | A returned list of profiling group names. A list of the names is+-- returned only if @includeDescription@ is @false@, otherwise a list of+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- objects is returned.+listProfilingGroupsResponse_profilingGroupNames :: Lens.Lens' ListProfilingGroupsResponse [Prelude.Text]+listProfilingGroupsResponse_profilingGroupNames = Lens.lens (\ListProfilingGroupsResponse' {profilingGroupNames} -> profilingGroupNames) (\s@ListProfilingGroupsResponse' {} a -> s {profilingGroupNames = a} :: ListProfilingGroupsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListProfilingGroupsResponse where+  rnf ListProfilingGroupsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf profilingGroups+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf profilingGroupNames
+ gen/Amazonka/CodeGuruProfiler/ListTagsForResource.hs view
@@ -0,0 +1,165 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.ListTagsForResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of the tags that are assigned to a specified resource.+module Amazonka.CodeGuruProfiler.ListTagsForResource+  ( -- * Creating a Request+    ListTagsForResource (..),+    newListTagsForResource,++    -- * Request Lenses+    listTagsForResource_resourceArn,++    -- * Destructuring the Response+    ListTagsForResourceResponse (..),+    newListTagsForResourceResponse,++    -- * Response Lenses+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListTagsForResource' smart constructor.+data ListTagsForResource = ListTagsForResource'+  { -- | The Amazon Resource Name (ARN) of the resource that contains the tags to+    -- return.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that contains the tags to+-- return.+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource' {resourceArn = pResourceArn_}++-- | The Amazon Resource Name (ARN) of the resource that contains the tags to+-- return.+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)++instance Core.AWSRequest ListTagsForResource where+  type+    AWSResponse ListTagsForResource =+      ListTagsForResourceResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTagsForResourceResponse'+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListTagsForResource where+  hashWithSalt _salt ListTagsForResource' {..} =+    _salt `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData ListTagsForResource where+  rnf ListTagsForResource' {..} =+    Prelude.rnf resourceArn++instance Data.ToHeaders ListTagsForResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListTagsForResource where+  toPath ListTagsForResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery ListTagsForResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTagsForResourceResponse' smart constructor.+data ListTagsForResourceResponse = ListTagsForResourceResponse'+  { -- | The list of tags assigned to the specified resource. This is the list of+    -- tags returned in the response.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tags', 'listTagsForResourceResponse_tags' - The list of tags assigned to the specified resource. This is the list of+-- tags returned in the response.+--+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { tags =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of tags assigned to the specified resource. This is the list of+-- tags returned in the response.+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)++instance Prelude.NFData ListTagsForResourceResponse where+  rnf ListTagsForResourceResponse' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CodeGuruProfiler/PostAgentProfile.hs view
@@ -0,0 +1,225 @@+{-# 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.CodeGuruProfiler.PostAgentProfile+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Submits profiling data to an aggregated profile of a profiling group. To+-- get an aggregated profile that is created with this profiling data, use+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_GetProfile.html GetProfile>+-- .+module Amazonka.CodeGuruProfiler.PostAgentProfile+  ( -- * Creating a Request+    PostAgentProfile (..),+    newPostAgentProfile,++    -- * Request Lenses+    postAgentProfile_profileToken,+    postAgentProfile_agentProfile,+    postAgentProfile_contentType,+    postAgentProfile_profilingGroupName,++    -- * Destructuring the Response+    PostAgentProfileResponse (..),+    newPostAgentProfileResponse,++    -- * Response Lenses+    postAgentProfileResponse_httpStatus,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the postAgentProfileRequest.+--+-- /See:/ 'newPostAgentProfile' smart constructor.+data PostAgentProfile = PostAgentProfile'+  { -- | Amazon CodeGuru Profiler uses this universally unique identifier (UUID)+    -- to prevent the accidental submission of duplicate profiling data if+    -- there are failures and retries.+    profileToken :: Prelude.Maybe Prelude.Text,+    -- | The submitted profiling data.+    agentProfile :: Prelude.ByteString,+    -- | The format of the submitted profiling data. The format maps to the+    -- @Accept@ and @Content-Type@ headers of the HTTP request. You can specify+    -- one of the following: or the default .+    --+    -- >  <ul> <li> <p> <code>application/json</code> — standard JSON format </p> </li> <li> <p> <code>application/x-amzn-ion</code> — the Amazon Ion data format. For more information, see <a href="http://amzn.github.io/ion-docs/">Amazon Ion</a>. </p> </li> </ul>+    contentType :: Prelude.Text,+    -- | The name of the profiling group with the aggregated profile that+    -- receives the submitted profiling data.+    profilingGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PostAgentProfile' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'profileToken', 'postAgentProfile_profileToken' - Amazon CodeGuru Profiler uses this universally unique identifier (UUID)+-- to prevent the accidental submission of duplicate profiling data if+-- there are failures and retries.+--+-- 'agentProfile', 'postAgentProfile_agentProfile' - The submitted profiling data.+--+-- 'contentType', 'postAgentProfile_contentType' - The format of the submitted profiling data. The format maps to the+-- @Accept@ and @Content-Type@ headers of the HTTP request. You can specify+-- one of the following: or the default .+--+-- >  <ul> <li> <p> <code>application/json</code> — standard JSON format </p> </li> <li> <p> <code>application/x-amzn-ion</code> — the Amazon Ion data format. For more information, see <a href="http://amzn.github.io/ion-docs/">Amazon Ion</a>. </p> </li> </ul>+--+-- 'profilingGroupName', 'postAgentProfile_profilingGroupName' - The name of the profiling group with the aggregated profile that+-- receives the submitted profiling data.+newPostAgentProfile ::+  -- | 'agentProfile'+  Prelude.ByteString ->+  -- | 'contentType'+  Prelude.Text ->+  -- | 'profilingGroupName'+  Prelude.Text ->+  PostAgentProfile+newPostAgentProfile+  pAgentProfile_+  pContentType_+  pProfilingGroupName_ =+    PostAgentProfile'+      { profileToken = Prelude.Nothing,+        agentProfile = pAgentProfile_,+        contentType = pContentType_,+        profilingGroupName = pProfilingGroupName_+      }++-- | Amazon CodeGuru Profiler uses this universally unique identifier (UUID)+-- to prevent the accidental submission of duplicate profiling data if+-- there are failures and retries.+postAgentProfile_profileToken :: Lens.Lens' PostAgentProfile (Prelude.Maybe Prelude.Text)+postAgentProfile_profileToken = Lens.lens (\PostAgentProfile' {profileToken} -> profileToken) (\s@PostAgentProfile' {} a -> s {profileToken = a} :: PostAgentProfile)++-- | The submitted profiling data.+postAgentProfile_agentProfile :: Lens.Lens' PostAgentProfile Prelude.ByteString+postAgentProfile_agentProfile = Lens.lens (\PostAgentProfile' {agentProfile} -> agentProfile) (\s@PostAgentProfile' {} a -> s {agentProfile = a} :: PostAgentProfile)++-- | The format of the submitted profiling data. The format maps to the+-- @Accept@ and @Content-Type@ headers of the HTTP request. You can specify+-- one of the following: or the default .+--+-- >  <ul> <li> <p> <code>application/json</code> — standard JSON format </p> </li> <li> <p> <code>application/x-amzn-ion</code> — the Amazon Ion data format. For more information, see <a href="http://amzn.github.io/ion-docs/">Amazon Ion</a>. </p> </li> </ul>+postAgentProfile_contentType :: Lens.Lens' PostAgentProfile Prelude.Text+postAgentProfile_contentType = Lens.lens (\PostAgentProfile' {contentType} -> contentType) (\s@PostAgentProfile' {} a -> s {contentType = a} :: PostAgentProfile)++-- | The name of the profiling group with the aggregated profile that+-- receives the submitted profiling data.+postAgentProfile_profilingGroupName :: Lens.Lens' PostAgentProfile Prelude.Text+postAgentProfile_profilingGroupName = Lens.lens (\PostAgentProfile' {profilingGroupName} -> profilingGroupName) (\s@PostAgentProfile' {} a -> s {profilingGroupName = a} :: PostAgentProfile)++instance Core.AWSRequest PostAgentProfile where+  type+    AWSResponse PostAgentProfile =+      PostAgentProfileResponse+  request overrides =+    Request.postBody (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PostAgentProfileResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PostAgentProfile where+  hashWithSalt _salt PostAgentProfile' {..} =+    _salt+      `Prelude.hashWithSalt` profileToken+      `Prelude.hashWithSalt` agentProfile+      `Prelude.hashWithSalt` contentType+      `Prelude.hashWithSalt` profilingGroupName++instance Prelude.NFData PostAgentProfile where+  rnf PostAgentProfile' {..} =+    Prelude.rnf profileToken+      `Prelude.seq` Prelude.rnf agentProfile+      `Prelude.seq` Prelude.rnf contentType+      `Prelude.seq` Prelude.rnf profilingGroupName++instance Data.ToBody PostAgentProfile where+  toBody PostAgentProfile' {..} =+    Data.toBody agentProfile++instance Data.ToHeaders PostAgentProfile where+  toHeaders PostAgentProfile' {..} =+    Prelude.mconcat+      ["Content-Type" Data.=# contentType]++instance Data.ToPath PostAgentProfile where+  toPath PostAgentProfile' {..} =+    Prelude.mconcat+      [ "/profilingGroups/",+        Data.toBS profilingGroupName,+        "/agentProfile"+      ]++instance Data.ToQuery PostAgentProfile where+  toQuery PostAgentProfile' {..} =+    Prelude.mconcat+      ["profileToken" Data.=: profileToken]++-- | The structure representing the postAgentProfileResponse.+--+-- /See:/ 'newPostAgentProfileResponse' smart constructor.+data PostAgentProfileResponse = PostAgentProfileResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PostAgentProfileResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'postAgentProfileResponse_httpStatus' - The response's http status code.+newPostAgentProfileResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PostAgentProfileResponse+newPostAgentProfileResponse pHttpStatus_ =+  PostAgentProfileResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+postAgentProfileResponse_httpStatus :: Lens.Lens' PostAgentProfileResponse Prelude.Int+postAgentProfileResponse_httpStatus = Lens.lens (\PostAgentProfileResponse' {httpStatus} -> httpStatus) (\s@PostAgentProfileResponse' {} a -> s {httpStatus = a} :: PostAgentProfileResponse)++instance Prelude.NFData PostAgentProfileResponse where+  rnf PostAgentProfileResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/CodeGuruProfiler/PutPermission.hs view
@@ -0,0 +1,279 @@+{-# 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.CodeGuruProfiler.PutPermission+-- 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 permissions to a profiling group\'s resource-based policy that are+-- provided using an action group. If a profiling group doesn\'t have a+-- resource-based policy, one is created for it using the permissions in+-- the action group and the roles and users in the @principals@ parameter.+--+-- >  <p> The one supported action group that can be added is <code>agentPermission</code> which grants <code>ConfigureAgent</code> and <code>PostAgent</code> permissions. For more information, see <a href="https://docs.aws.amazon.com/codeguru/latest/profiler-ug/resource-based-policies.html">Resource-based policies in CodeGuru Profiler</a> in the <i>Amazon CodeGuru Profiler User Guide</i>, <a href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ConfigureAgent.html"> <code>ConfigureAgent</code> </a>, and <a href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_PostAgentProfile.html"> <code>PostAgentProfile</code> </a>. </p> <p> The first time you call <code>PutPermission</code> on a profiling group, do not specify a <code>revisionId</code> because it doesn't have a resource-based policy. Subsequent calls must provide a <code>revisionId</code> to specify which revision of the resource-based policy to add the permissions to. </p> <p> The response contains the profiling group's JSON-formatted resource policy. </p>+module Amazonka.CodeGuruProfiler.PutPermission+  ( -- * Creating a Request+    PutPermission (..),+    newPutPermission,++    -- * Request Lenses+    putPermission_revisionId,+    putPermission_actionGroup,+    putPermission_principals,+    putPermission_profilingGroupName,++    -- * Destructuring the Response+    PutPermissionResponse (..),+    newPutPermissionResponse,++    -- * Response Lenses+    putPermissionResponse_httpStatus,+    putPermissionResponse_policy,+    putPermissionResponse_revisionId,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the @putPermissionRequest@.+--+-- /See:/ 'newPutPermission' smart constructor.+data PutPermission = PutPermission'+  { -- | A universally unique identifier (UUID) for the revision of the policy+    -- you are adding to the profiling group. Do not specify this when you add+    -- permissions to a profiling group for the first time. If a policy already+    -- exists on the profiling group, you must specify the @revisionId@.+    revisionId :: Prelude.Maybe Prelude.Text,+    -- | Specifies an action group that contains permissions to add to a+    -- profiling group resource. One action group is supported,+    -- @agentPermissions@, which grants permission to perform actions required+    -- by the profiling agent, @ConfigureAgent@ and @PostAgentProfile@+    -- permissions.+    actionGroup :: ActionGroup,+    -- | A list ARNs for the roles and users you want to grant access to the+    -- profiling group. Wildcards are not are supported in the ARNs.+    principals :: Prelude.NonEmpty Prelude.Text,+    -- | The name of the profiling group to grant access to.+    profilingGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutPermission' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'revisionId', 'putPermission_revisionId' - A universally unique identifier (UUID) for the revision of the policy+-- you are adding to the profiling group. Do not specify this when you add+-- permissions to a profiling group for the first time. If a policy already+-- exists on the profiling group, you must specify the @revisionId@.+--+-- 'actionGroup', 'putPermission_actionGroup' - Specifies an action group that contains permissions to add to a+-- profiling group resource. One action group is supported,+-- @agentPermissions@, which grants permission to perform actions required+-- by the profiling agent, @ConfigureAgent@ and @PostAgentProfile@+-- permissions.+--+-- 'principals', 'putPermission_principals' - A list ARNs for the roles and users you want to grant access to the+-- profiling group. Wildcards are not are supported in the ARNs.+--+-- 'profilingGroupName', 'putPermission_profilingGroupName' - The name of the profiling group to grant access to.+newPutPermission ::+  -- | 'actionGroup'+  ActionGroup ->+  -- | 'principals'+  Prelude.NonEmpty Prelude.Text ->+  -- | 'profilingGroupName'+  Prelude.Text ->+  PutPermission+newPutPermission+  pActionGroup_+  pPrincipals_+  pProfilingGroupName_ =+    PutPermission'+      { revisionId = Prelude.Nothing,+        actionGroup = pActionGroup_,+        principals = Lens.coerced Lens.# pPrincipals_,+        profilingGroupName = pProfilingGroupName_+      }++-- | A universally unique identifier (UUID) for the revision of the policy+-- you are adding to the profiling group. Do not specify this when you add+-- permissions to a profiling group for the first time. If a policy already+-- exists on the profiling group, you must specify the @revisionId@.+putPermission_revisionId :: Lens.Lens' PutPermission (Prelude.Maybe Prelude.Text)+putPermission_revisionId = Lens.lens (\PutPermission' {revisionId} -> revisionId) (\s@PutPermission' {} a -> s {revisionId = a} :: PutPermission)++-- | Specifies an action group that contains permissions to add to a+-- profiling group resource. One action group is supported,+-- @agentPermissions@, which grants permission to perform actions required+-- by the profiling agent, @ConfigureAgent@ and @PostAgentProfile@+-- permissions.+putPermission_actionGroup :: Lens.Lens' PutPermission ActionGroup+putPermission_actionGroup = Lens.lens (\PutPermission' {actionGroup} -> actionGroup) (\s@PutPermission' {} a -> s {actionGroup = a} :: PutPermission)++-- | A list ARNs for the roles and users you want to grant access to the+-- profiling group. Wildcards are not are supported in the ARNs.+putPermission_principals :: Lens.Lens' PutPermission (Prelude.NonEmpty Prelude.Text)+putPermission_principals = Lens.lens (\PutPermission' {principals} -> principals) (\s@PutPermission' {} a -> s {principals = a} :: PutPermission) Prelude.. Lens.coerced++-- | The name of the profiling group to grant access to.+putPermission_profilingGroupName :: Lens.Lens' PutPermission Prelude.Text+putPermission_profilingGroupName = Lens.lens (\PutPermission' {profilingGroupName} -> profilingGroupName) (\s@PutPermission' {} a -> s {profilingGroupName = a} :: PutPermission)++instance Core.AWSRequest PutPermission where+  type+    AWSResponse PutPermission =+      PutPermissionResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutPermissionResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "policy")+            Prelude.<*> (x Data..:> "revisionId")+      )++instance Prelude.Hashable PutPermission where+  hashWithSalt _salt PutPermission' {..} =+    _salt+      `Prelude.hashWithSalt` revisionId+      `Prelude.hashWithSalt` actionGroup+      `Prelude.hashWithSalt` principals+      `Prelude.hashWithSalt` profilingGroupName++instance Prelude.NFData PutPermission where+  rnf PutPermission' {..} =+    Prelude.rnf revisionId+      `Prelude.seq` Prelude.rnf actionGroup+      `Prelude.seq` Prelude.rnf principals+      `Prelude.seq` Prelude.rnf profilingGroupName++instance Data.ToHeaders PutPermission where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutPermission where+  toJSON PutPermission' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("revisionId" Data..=) Prelude.<$> revisionId,+            Prelude.Just ("principals" Data..= principals)+          ]+      )++instance Data.ToPath PutPermission where+  toPath PutPermission' {..} =+    Prelude.mconcat+      [ "/profilingGroups/",+        Data.toBS profilingGroupName,+        "/policy/",+        Data.toBS actionGroup+      ]++instance Data.ToQuery PutPermission where+  toQuery = Prelude.const Prelude.mempty++-- | The structure representing the @putPermissionResponse@.+--+-- /See:/ 'newPutPermissionResponse' smart constructor.+data PutPermissionResponse = PutPermissionResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The JSON-formatted resource-based policy on the profiling group that+    -- includes the added permissions.+    policy :: Prelude.Text,+    -- | A universally unique identifier (UUID) for the revision of the+    -- resource-based policy that includes the added permissions. The+    -- JSON-formatted policy is in the @policy@ element of the response.+    revisionId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutPermissionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'putPermissionResponse_httpStatus' - The response's http status code.+--+-- 'policy', 'putPermissionResponse_policy' - The JSON-formatted resource-based policy on the profiling group that+-- includes the added permissions.+--+-- 'revisionId', 'putPermissionResponse_revisionId' - A universally unique identifier (UUID) for the revision of the+-- resource-based policy that includes the added permissions. The+-- JSON-formatted policy is in the @policy@ element of the response.+newPutPermissionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'policy'+  Prelude.Text ->+  -- | 'revisionId'+  Prelude.Text ->+  PutPermissionResponse+newPutPermissionResponse+  pHttpStatus_+  pPolicy_+  pRevisionId_ =+    PutPermissionResponse'+      { httpStatus = pHttpStatus_,+        policy = pPolicy_,+        revisionId = pRevisionId_+      }++-- | The response's http status code.+putPermissionResponse_httpStatus :: Lens.Lens' PutPermissionResponse Prelude.Int+putPermissionResponse_httpStatus = Lens.lens (\PutPermissionResponse' {httpStatus} -> httpStatus) (\s@PutPermissionResponse' {} a -> s {httpStatus = a} :: PutPermissionResponse)++-- | The JSON-formatted resource-based policy on the profiling group that+-- includes the added permissions.+putPermissionResponse_policy :: Lens.Lens' PutPermissionResponse Prelude.Text+putPermissionResponse_policy = Lens.lens (\PutPermissionResponse' {policy} -> policy) (\s@PutPermissionResponse' {} a -> s {policy = a} :: PutPermissionResponse)++-- | A universally unique identifier (UUID) for the revision of the+-- resource-based policy that includes the added permissions. The+-- JSON-formatted policy is in the @policy@ element of the response.+putPermissionResponse_revisionId :: Lens.Lens' PutPermissionResponse Prelude.Text+putPermissionResponse_revisionId = Lens.lens (\PutPermissionResponse' {revisionId} -> revisionId) (\s@PutPermissionResponse' {} a -> s {revisionId = a} :: PutPermissionResponse)++instance Prelude.NFData PutPermissionResponse where+  rnf PutPermissionResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf policy+      `Prelude.seq` Prelude.rnf revisionId
+ gen/Amazonka/CodeGuruProfiler/RemoveNotificationChannel.hs view
@@ -0,0 +1,193 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.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)+--+-- Remove one anomaly notifications channel for a profiling group.+module Amazonka.CodeGuruProfiler.RemoveNotificationChannel+  ( -- * Creating a Request+    RemoveNotificationChannel (..),+    newRemoveNotificationChannel,++    -- * Request Lenses+    removeNotificationChannel_channelId,+    removeNotificationChannel_profilingGroupName,++    -- * Destructuring the Response+    RemoveNotificationChannelResponse (..),+    newRemoveNotificationChannelResponse,++    -- * Response Lenses+    removeNotificationChannelResponse_notificationConfiguration,+    removeNotificationChannelResponse_httpStatus,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the RemoveNotificationChannelRequest.+--+-- /See:/ 'newRemoveNotificationChannel' smart constructor.+data RemoveNotificationChannel = RemoveNotificationChannel'+  { -- | The id of the channel that we want to stop receiving notifications.+    channelId :: Prelude.Text,+    -- | The name of the profiling group we want to change notification+    -- configuration for.+    profilingGroupName :: 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:+--+-- 'channelId', 'removeNotificationChannel_channelId' - The id of the channel that we want to stop receiving notifications.+--+-- 'profilingGroupName', 'removeNotificationChannel_profilingGroupName' - The name of the profiling group we want to change notification+-- configuration for.+newRemoveNotificationChannel ::+  -- | 'channelId'+  Prelude.Text ->+  -- | 'profilingGroupName'+  Prelude.Text ->+  RemoveNotificationChannel+newRemoveNotificationChannel+  pChannelId_+  pProfilingGroupName_ =+    RemoveNotificationChannel'+      { channelId = pChannelId_,+        profilingGroupName = pProfilingGroupName_+      }++-- | The id of the channel that we want to stop receiving notifications.+removeNotificationChannel_channelId :: Lens.Lens' RemoveNotificationChannel Prelude.Text+removeNotificationChannel_channelId = Lens.lens (\RemoveNotificationChannel' {channelId} -> channelId) (\s@RemoveNotificationChannel' {} a -> s {channelId = a} :: RemoveNotificationChannel)++-- | The name of the profiling group we want to change notification+-- configuration for.+removeNotificationChannel_profilingGroupName :: Lens.Lens' RemoveNotificationChannel Prelude.Text+removeNotificationChannel_profilingGroupName = Lens.lens (\RemoveNotificationChannel' {profilingGroupName} -> profilingGroupName) (\s@RemoveNotificationChannel' {} a -> s {profilingGroupName = a} :: RemoveNotificationChannel)++instance Core.AWSRequest RemoveNotificationChannel where+  type+    AWSResponse RemoveNotificationChannel =+      RemoveNotificationChannelResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          RemoveNotificationChannelResponse'+            Prelude.<$> (x Data..?> "notificationConfiguration")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable RemoveNotificationChannel where+  hashWithSalt _salt RemoveNotificationChannel' {..} =+    _salt+      `Prelude.hashWithSalt` channelId+      `Prelude.hashWithSalt` profilingGroupName++instance Prelude.NFData RemoveNotificationChannel where+  rnf RemoveNotificationChannel' {..} =+    Prelude.rnf channelId+      `Prelude.seq` Prelude.rnf profilingGroupName++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+      [ "/profilingGroups/",+        Data.toBS profilingGroupName,+        "/notificationConfiguration/",+        Data.toBS channelId+      ]++instance Data.ToQuery RemoveNotificationChannel where+  toQuery = Prelude.const Prelude.mempty++-- | The structure representing the RemoveNotificationChannelResponse.+--+-- /See:/ 'newRemoveNotificationChannelResponse' smart constructor.+data RemoveNotificationChannelResponse = RemoveNotificationChannelResponse'+  { -- | The new notification configuration for this profiling group.+    notificationConfiguration :: Prelude.Maybe NotificationConfiguration,+    -- | 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:+--+-- 'notificationConfiguration', 'removeNotificationChannelResponse_notificationConfiguration' - The new notification configuration for this profiling group.+--+-- 'httpStatus', 'removeNotificationChannelResponse_httpStatus' - The response's http status code.+newRemoveNotificationChannelResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  RemoveNotificationChannelResponse+newRemoveNotificationChannelResponse pHttpStatus_ =+  RemoveNotificationChannelResponse'+    { notificationConfiguration =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The new notification configuration for this profiling group.+removeNotificationChannelResponse_notificationConfiguration :: Lens.Lens' RemoveNotificationChannelResponse (Prelude.Maybe NotificationConfiguration)+removeNotificationChannelResponse_notificationConfiguration = Lens.lens (\RemoveNotificationChannelResponse' {notificationConfiguration} -> notificationConfiguration) (\s@RemoveNotificationChannelResponse' {} a -> s {notificationConfiguration = a} :: RemoveNotificationChannelResponse)++-- | 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 notificationConfiguration+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/CodeGuruProfiler/RemovePermission.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.CodeGuruProfiler.RemovePermission+-- 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 permissions from a profiling group\'s resource-based policy that+-- are provided using an action group. The one supported action group that+-- can be removed is @agentPermission@ which grants @ConfigureAgent@ and+-- @PostAgent@ permissions. For more information, see+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-ug/resource-based-policies.html Resource-based policies in CodeGuru Profiler>+-- in the /Amazon CodeGuru Profiler User Guide/,+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ConfigureAgent.html ConfigureAgent>+-- , and+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_PostAgentProfile.html PostAgentProfile>+-- .+module Amazonka.CodeGuruProfiler.RemovePermission+  ( -- * Creating a Request+    RemovePermission (..),+    newRemovePermission,++    -- * Request Lenses+    removePermission_actionGroup,+    removePermission_profilingGroupName,+    removePermission_revisionId,++    -- * Destructuring the Response+    RemovePermissionResponse (..),+    newRemovePermissionResponse,++    -- * Response Lenses+    removePermissionResponse_httpStatus,+    removePermissionResponse_policy,+    removePermissionResponse_revisionId,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | >  The structure representing the <code>removePermissionRequest</code>.</p>+--+-- /See:/ 'newRemovePermission' smart constructor.+data RemovePermission = RemovePermission'+  { -- | Specifies an action group that contains the permissions to remove from a+    -- profiling group\'s resource-based policy. One action group is supported,+    -- @agentPermissions@, which grants @ConfigureAgent@ and @PostAgentProfile@+    -- permissions.+    actionGroup :: ActionGroup,+    -- | The name of the profiling group.+    profilingGroupName :: Prelude.Text,+    -- | A universally unique identifier (UUID) for the revision of the+    -- resource-based policy from which you want to remove permissions.+    revisionId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RemovePermission' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'actionGroup', 'removePermission_actionGroup' - Specifies an action group that contains the permissions to remove from a+-- profiling group\'s resource-based policy. One action group is supported,+-- @agentPermissions@, which grants @ConfigureAgent@ and @PostAgentProfile@+-- permissions.+--+-- 'profilingGroupName', 'removePermission_profilingGroupName' - The name of the profiling group.+--+-- 'revisionId', 'removePermission_revisionId' - A universally unique identifier (UUID) for the revision of the+-- resource-based policy from which you want to remove permissions.+newRemovePermission ::+  -- | 'actionGroup'+  ActionGroup ->+  -- | 'profilingGroupName'+  Prelude.Text ->+  -- | 'revisionId'+  Prelude.Text ->+  RemovePermission+newRemovePermission+  pActionGroup_+  pProfilingGroupName_+  pRevisionId_ =+    RemovePermission'+      { actionGroup = pActionGroup_,+        profilingGroupName = pProfilingGroupName_,+        revisionId = pRevisionId_+      }++-- | Specifies an action group that contains the permissions to remove from a+-- profiling group\'s resource-based policy. One action group is supported,+-- @agentPermissions@, which grants @ConfigureAgent@ and @PostAgentProfile@+-- permissions.+removePermission_actionGroup :: Lens.Lens' RemovePermission ActionGroup+removePermission_actionGroup = Lens.lens (\RemovePermission' {actionGroup} -> actionGroup) (\s@RemovePermission' {} a -> s {actionGroup = a} :: RemovePermission)++-- | The name of the profiling group.+removePermission_profilingGroupName :: Lens.Lens' RemovePermission Prelude.Text+removePermission_profilingGroupName = Lens.lens (\RemovePermission' {profilingGroupName} -> profilingGroupName) (\s@RemovePermission' {} a -> s {profilingGroupName = a} :: RemovePermission)++-- | A universally unique identifier (UUID) for the revision of the+-- resource-based policy from which you want to remove permissions.+removePermission_revisionId :: Lens.Lens' RemovePermission Prelude.Text+removePermission_revisionId = Lens.lens (\RemovePermission' {revisionId} -> revisionId) (\s@RemovePermission' {} a -> s {revisionId = a} :: RemovePermission)++instance Core.AWSRequest RemovePermission where+  type+    AWSResponse RemovePermission =+      RemovePermissionResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          RemovePermissionResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "policy")+            Prelude.<*> (x Data..:> "revisionId")+      )++instance Prelude.Hashable RemovePermission where+  hashWithSalt _salt RemovePermission' {..} =+    _salt+      `Prelude.hashWithSalt` actionGroup+      `Prelude.hashWithSalt` profilingGroupName+      `Prelude.hashWithSalt` revisionId++instance Prelude.NFData RemovePermission where+  rnf RemovePermission' {..} =+    Prelude.rnf actionGroup+      `Prelude.seq` Prelude.rnf profilingGroupName+      `Prelude.seq` Prelude.rnf revisionId++instance Data.ToHeaders RemovePermission where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath RemovePermission where+  toPath RemovePermission' {..} =+    Prelude.mconcat+      [ "/profilingGroups/",+        Data.toBS profilingGroupName,+        "/policy/",+        Data.toBS actionGroup+      ]++instance Data.ToQuery RemovePermission where+  toQuery RemovePermission' {..} =+    Prelude.mconcat ["revisionId" Data.=: revisionId]++-- | The structure representing the @removePermissionResponse@.+--+-- /See:/ 'newRemovePermissionResponse' smart constructor.+data RemovePermissionResponse = RemovePermissionResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The JSON-formatted resource-based policy on the profiling group after+    -- the specified permissions were removed.+    policy :: Prelude.Text,+    -- | A universally unique identifier (UUID) for the revision of the+    -- resource-based policy after the specified permissions were removed. The+    -- updated JSON-formatted policy is in the @policy@ element of the+    -- response.+    revisionId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RemovePermissionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'removePermissionResponse_httpStatus' - The response's http status code.+--+-- 'policy', 'removePermissionResponse_policy' - The JSON-formatted resource-based policy on the profiling group after+-- the specified permissions were removed.+--+-- 'revisionId', 'removePermissionResponse_revisionId' - A universally unique identifier (UUID) for the revision of the+-- resource-based policy after the specified permissions were removed. The+-- updated JSON-formatted policy is in the @policy@ element of the+-- response.+newRemovePermissionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'policy'+  Prelude.Text ->+  -- | 'revisionId'+  Prelude.Text ->+  RemovePermissionResponse+newRemovePermissionResponse+  pHttpStatus_+  pPolicy_+  pRevisionId_ =+    RemovePermissionResponse'+      { httpStatus =+          pHttpStatus_,+        policy = pPolicy_,+        revisionId = pRevisionId_+      }++-- | The response's http status code.+removePermissionResponse_httpStatus :: Lens.Lens' RemovePermissionResponse Prelude.Int+removePermissionResponse_httpStatus = Lens.lens (\RemovePermissionResponse' {httpStatus} -> httpStatus) (\s@RemovePermissionResponse' {} a -> s {httpStatus = a} :: RemovePermissionResponse)++-- | The JSON-formatted resource-based policy on the profiling group after+-- the specified permissions were removed.+removePermissionResponse_policy :: Lens.Lens' RemovePermissionResponse Prelude.Text+removePermissionResponse_policy = Lens.lens (\RemovePermissionResponse' {policy} -> policy) (\s@RemovePermissionResponse' {} a -> s {policy = a} :: RemovePermissionResponse)++-- | A universally unique identifier (UUID) for the revision of the+-- resource-based policy after the specified permissions were removed. The+-- updated JSON-formatted policy is in the @policy@ element of the+-- response.+removePermissionResponse_revisionId :: Lens.Lens' RemovePermissionResponse Prelude.Text+removePermissionResponse_revisionId = Lens.lens (\RemovePermissionResponse' {revisionId} -> revisionId) (\s@RemovePermissionResponse' {} a -> s {revisionId = a} :: RemovePermissionResponse)++instance Prelude.NFData RemovePermissionResponse where+  rnf RemovePermissionResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf policy+      `Prelude.seq` Prelude.rnf revisionId
+ gen/Amazonka/CodeGuruProfiler/SubmitFeedback.hs view
@@ -0,0 +1,219 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.SubmitFeedback+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Sends feedback to CodeGuru Profiler about whether the anomaly detected+-- by the analysis is useful or not.+module Amazonka.CodeGuruProfiler.SubmitFeedback+  ( -- * Creating a Request+    SubmitFeedback (..),+    newSubmitFeedback,++    -- * Request Lenses+    submitFeedback_comment,+    submitFeedback_anomalyInstanceId,+    submitFeedback_profilingGroupName,+    submitFeedback_type,++    -- * Destructuring the Response+    SubmitFeedbackResponse (..),+    newSubmitFeedbackResponse,++    -- * Response Lenses+    submitFeedbackResponse_httpStatus,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the SubmitFeedbackRequest.+--+-- /See:/ 'newSubmitFeedback' smart constructor.+data SubmitFeedback = SubmitFeedback'+  { -- | Optional feedback about this anomaly.+    comment :: Prelude.Maybe Prelude.Text,+    -- | The universally unique identifier (UUID) of the+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AnomalyInstance.html AnomalyInstance>+    -- object that is included in the analysis data.+    anomalyInstanceId :: Prelude.Text,+    -- | The name of the profiling group that is associated with the analysis+    -- data.+    profilingGroupName :: Prelude.Text,+    -- | The feedback tpye. Thee are two valid values, @Positive@ and @Negative@.+    type' :: FeedbackType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SubmitFeedback' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'comment', 'submitFeedback_comment' - Optional feedback about this anomaly.+--+-- 'anomalyInstanceId', 'submitFeedback_anomalyInstanceId' - The universally unique identifier (UUID) of the+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AnomalyInstance.html AnomalyInstance>+-- object that is included in the analysis data.+--+-- 'profilingGroupName', 'submitFeedback_profilingGroupName' - The name of the profiling group that is associated with the analysis+-- data.+--+-- 'type'', 'submitFeedback_type' - The feedback tpye. Thee are two valid values, @Positive@ and @Negative@.+newSubmitFeedback ::+  -- | 'anomalyInstanceId'+  Prelude.Text ->+  -- | 'profilingGroupName'+  Prelude.Text ->+  -- | 'type''+  FeedbackType ->+  SubmitFeedback+newSubmitFeedback+  pAnomalyInstanceId_+  pProfilingGroupName_+  pType_ =+    SubmitFeedback'+      { comment = Prelude.Nothing,+        anomalyInstanceId = pAnomalyInstanceId_,+        profilingGroupName = pProfilingGroupName_,+        type' = pType_+      }++-- | Optional feedback about this anomaly.+submitFeedback_comment :: Lens.Lens' SubmitFeedback (Prelude.Maybe Prelude.Text)+submitFeedback_comment = Lens.lens (\SubmitFeedback' {comment} -> comment) (\s@SubmitFeedback' {} a -> s {comment = a} :: SubmitFeedback)++-- | The universally unique identifier (UUID) of the+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AnomalyInstance.html AnomalyInstance>+-- object that is included in the analysis data.+submitFeedback_anomalyInstanceId :: Lens.Lens' SubmitFeedback Prelude.Text+submitFeedback_anomalyInstanceId = Lens.lens (\SubmitFeedback' {anomalyInstanceId} -> anomalyInstanceId) (\s@SubmitFeedback' {} a -> s {anomalyInstanceId = a} :: SubmitFeedback)++-- | The name of the profiling group that is associated with the analysis+-- data.+submitFeedback_profilingGroupName :: Lens.Lens' SubmitFeedback Prelude.Text+submitFeedback_profilingGroupName = Lens.lens (\SubmitFeedback' {profilingGroupName} -> profilingGroupName) (\s@SubmitFeedback' {} a -> s {profilingGroupName = a} :: SubmitFeedback)++-- | The feedback tpye. Thee are two valid values, @Positive@ and @Negative@.+submitFeedback_type :: Lens.Lens' SubmitFeedback FeedbackType+submitFeedback_type = Lens.lens (\SubmitFeedback' {type'} -> type') (\s@SubmitFeedback' {} a -> s {type' = a} :: SubmitFeedback)++instance Core.AWSRequest SubmitFeedback where+  type+    AWSResponse SubmitFeedback =+      SubmitFeedbackResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          SubmitFeedbackResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable SubmitFeedback where+  hashWithSalt _salt SubmitFeedback' {..} =+    _salt+      `Prelude.hashWithSalt` comment+      `Prelude.hashWithSalt` anomalyInstanceId+      `Prelude.hashWithSalt` profilingGroupName+      `Prelude.hashWithSalt` type'++instance Prelude.NFData SubmitFeedback where+  rnf SubmitFeedback' {..} =+    Prelude.rnf comment+      `Prelude.seq` Prelude.rnf anomalyInstanceId+      `Prelude.seq` Prelude.rnf profilingGroupName+      `Prelude.seq` Prelude.rnf type'++instance Data.ToHeaders SubmitFeedback where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON SubmitFeedback where+  toJSON SubmitFeedback' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("comment" Data..=) Prelude.<$> comment,+            Prelude.Just ("type" Data..= type')+          ]+      )++instance Data.ToPath SubmitFeedback where+  toPath SubmitFeedback' {..} =+    Prelude.mconcat+      [ "/internal/profilingGroups/",+        Data.toBS profilingGroupName,+        "/anomalies/",+        Data.toBS anomalyInstanceId,+        "/feedback"+      ]++instance Data.ToQuery SubmitFeedback where+  toQuery = Prelude.const Prelude.mempty++-- | The structure representing the SubmitFeedbackResponse.+--+-- /See:/ 'newSubmitFeedbackResponse' smart constructor.+data SubmitFeedbackResponse = SubmitFeedbackResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SubmitFeedbackResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'submitFeedbackResponse_httpStatus' - The response's http status code.+newSubmitFeedbackResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  SubmitFeedbackResponse+newSubmitFeedbackResponse pHttpStatus_ =+  SubmitFeedbackResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+submitFeedbackResponse_httpStatus :: Lens.Lens' SubmitFeedbackResponse Prelude.Int+submitFeedbackResponse_httpStatus = Lens.lens (\SubmitFeedbackResponse' {httpStatus} -> httpStatus) (\s@SubmitFeedbackResponse' {} a -> s {httpStatus = a} :: SubmitFeedbackResponse)++instance Prelude.NFData SubmitFeedbackResponse where+  rnf SubmitFeedbackResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/CodeGuruProfiler/TagResource.hs view
@@ -0,0 +1,166 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.TagResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Use to assign one or more tags to a resource.+module Amazonka.CodeGuruProfiler.TagResource+  ( -- * Creating a Request+    TagResource (..),+    newTagResource,++    -- * Request Lenses+    tagResource_resourceArn,+    tagResource_tags,++    -- * Destructuring the Response+    TagResourceResponse (..),+    newTagResourceResponse,++    -- * Response Lenses+    tagResourceResponse_httpStatus,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newTagResource' smart constructor.+data TagResource = TagResource'+  { -- | The Amazon Resource Name (ARN) of the resource that the tags are added+    -- to.+    resourceArn :: Prelude.Text,+    -- | The list of tags that are added to the specified resource.+    tags :: Prelude.HashMap Prelude.Text Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that the tags are added+-- to.+--+-- 'tags', 'tagResource_tags' - The list of tags that are added to the specified resource.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the resource that the tags are added+-- to.+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | The list of tags that are added to the specified resource.+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced++instance Core.AWSRequest TagResource where+  type AWSResponse TagResource = TagResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          TagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable TagResource where+  hashWithSalt _salt TagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tags++instance Prelude.NFData TagResource where+  rnf TagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tags++instance Data.ToHeaders TagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON TagResource where+  toJSON TagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("tags" Data..= tags)]+      )++instance Data.ToPath TagResource where+  toPath TagResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery TagResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newTagResourceResponse' smart constructor.+data TagResourceResponse = TagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.+newTagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  TagResourceResponse+newTagResourceResponse pHttpStatus_ =+  TagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)++instance Prelude.NFData TagResourceResponse where+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/CodeGuruProfiler/Types.hs view
@@ -0,0 +1,348 @@+{-# 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.CodeGuruProfiler.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.CodeGuruProfiler.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _ConflictException,+    _InternalServerException,+    _ResourceNotFoundException,+    _ServiceQuotaExceededException,+    _ThrottlingException,+    _ValidationException,++    -- * ActionGroup+    ActionGroup (..),++    -- * AgentParameterField+    AgentParameterField (..),++    -- * AggregationPeriod+    AggregationPeriod (..),++    -- * ComputePlatform+    ComputePlatform (..),++    -- * EventPublisher+    EventPublisher (..),++    -- * FeedbackType+    FeedbackType (..),++    -- * MetadataField+    MetadataField (..),++    -- * MetricType+    MetricType (..),++    -- * OrderBy+    OrderBy (..),++    -- * AgentConfiguration+    AgentConfiguration (..),+    newAgentConfiguration,+    agentConfiguration_agentParameters,+    agentConfiguration_periodInSeconds,+    agentConfiguration_shouldProfile,++    -- * AgentOrchestrationConfig+    AgentOrchestrationConfig (..),+    newAgentOrchestrationConfig,+    agentOrchestrationConfig_profilingEnabled,++    -- * AggregatedProfileTime+    AggregatedProfileTime (..),+    newAggregatedProfileTime,+    aggregatedProfileTime_period,+    aggregatedProfileTime_start,++    -- * Anomaly+    Anomaly (..),+    newAnomaly,+    anomaly_instances,+    anomaly_metric,+    anomaly_reason,++    -- * AnomalyInstance+    AnomalyInstance (..),+    newAnomalyInstance,+    anomalyInstance_endTime,+    anomalyInstance_userFeedback,+    anomalyInstance_id,+    anomalyInstance_startTime,++    -- * Channel+    Channel (..),+    newChannel,+    channel_id,+    channel_eventPublishers,+    channel_uri,++    -- * FindingsReportSummary+    FindingsReportSummary (..),+    newFindingsReportSummary,+    findingsReportSummary_id,+    findingsReportSummary_profileEndTime,+    findingsReportSummary_profileStartTime,+    findingsReportSummary_profilingGroupName,+    findingsReportSummary_totalNumberOfFindings,++    -- * FrameMetric+    FrameMetric (..),+    newFrameMetric,+    frameMetric_frameName,+    frameMetric_threadStates,+    frameMetric_type,++    -- * FrameMetricDatum+    FrameMetricDatum (..),+    newFrameMetricDatum,+    frameMetricDatum_frameMetric,+    frameMetricDatum_values,++    -- * Match+    Match (..),+    newMatch,+    match_frameAddress,+    match_targetFramesIndex,+    match_thresholdBreachValue,++    -- * Metric+    Metric (..),+    newMetric,+    metric_frameName,+    metric_threadStates,+    metric_type,++    -- * NotificationConfiguration+    NotificationConfiguration (..),+    newNotificationConfiguration,+    notificationConfiguration_channels,++    -- * Pattern+    Pattern (..),+    newPattern,+    pattern_countersToAggregate,+    pattern_description,+    pattern_id,+    pattern_name,+    pattern_resolutionSteps,+    pattern_targetFrames,+    pattern_thresholdPercent,++    -- * ProfileTime+    ProfileTime (..),+    newProfileTime,+    profileTime_start,++    -- * ProfilingGroupDescription+    ProfilingGroupDescription (..),+    newProfilingGroupDescription,+    profilingGroupDescription_agentOrchestrationConfig,+    profilingGroupDescription_arn,+    profilingGroupDescription_computePlatform,+    profilingGroupDescription_createdAt,+    profilingGroupDescription_name,+    profilingGroupDescription_profilingStatus,+    profilingGroupDescription_tags,+    profilingGroupDescription_updatedAt,++    -- * ProfilingStatus+    ProfilingStatus (..),+    newProfilingStatus,+    profilingStatus_latestAgentOrchestratedAt,+    profilingStatus_latestAgentProfileReportedAt,+    profilingStatus_latestAggregatedProfile,++    -- * Recommendation+    Recommendation (..),+    newRecommendation,+    recommendation_allMatchesCount,+    recommendation_allMatchesSum,+    recommendation_endTime,+    recommendation_pattern,+    recommendation_startTime,+    recommendation_topMatches,++    -- * TimestampStructure+    TimestampStructure (..),+    newTimestampStructure,+    timestampStructure_value,++    -- * UserFeedback+    UserFeedback (..),+    newUserFeedback,+    userFeedback_type,+  )+where++import Amazonka.CodeGuruProfiler.Types.ActionGroup+import Amazonka.CodeGuruProfiler.Types.AgentConfiguration+import Amazonka.CodeGuruProfiler.Types.AgentOrchestrationConfig+import Amazonka.CodeGuruProfiler.Types.AgentParameterField+import Amazonka.CodeGuruProfiler.Types.AggregatedProfileTime+import Amazonka.CodeGuruProfiler.Types.AggregationPeriod+import Amazonka.CodeGuruProfiler.Types.Anomaly+import Amazonka.CodeGuruProfiler.Types.AnomalyInstance+import Amazonka.CodeGuruProfiler.Types.Channel+import Amazonka.CodeGuruProfiler.Types.ComputePlatform+import Amazonka.CodeGuruProfiler.Types.EventPublisher+import Amazonka.CodeGuruProfiler.Types.FeedbackType+import Amazonka.CodeGuruProfiler.Types.FindingsReportSummary+import Amazonka.CodeGuruProfiler.Types.FrameMetric+import Amazonka.CodeGuruProfiler.Types.FrameMetricDatum+import Amazonka.CodeGuruProfiler.Types.Match+import Amazonka.CodeGuruProfiler.Types.MetadataField+import Amazonka.CodeGuruProfiler.Types.Metric+import Amazonka.CodeGuruProfiler.Types.MetricType+import Amazonka.CodeGuruProfiler.Types.NotificationConfiguration+import Amazonka.CodeGuruProfiler.Types.OrderBy+import Amazonka.CodeGuruProfiler.Types.Pattern+import Amazonka.CodeGuruProfiler.Types.ProfileTime+import Amazonka.CodeGuruProfiler.Types.ProfilingGroupDescription+import Amazonka.CodeGuruProfiler.Types.ProfilingStatus+import Amazonka.CodeGuruProfiler.Types.Recommendation+import Amazonka.CodeGuruProfiler.Types.TimestampStructure+import Amazonka.CodeGuruProfiler.Types.UserFeedback+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2019-07-18@ of the Amazon CodeGuru Profiler SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "CodeGuruProfiler",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "codeguru-profiler",+      Core.signingName = "codeguru-profiler",+      Core.version = "2019-07-18",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "CodeGuruProfiler",+      Core.retry = retry+    }+  where+    retry =+      Core.Exponential+        { Core.base = 5.0e-2,+          Core.growth = 2,+          Core.attempts = 5,+          Core.check = check+        }+    check e+      | Lens.has (Core.hasStatus 502) e =+          Prelude.Just "bad_gateway"+      | Lens.has (Core.hasStatus 504) e =+          Prelude.Just "gateway_timeout"+      | Lens.has (Core.hasStatus 500) e =+          Prelude.Just "general_server_error"+      | Lens.has (Core.hasStatus 509) e =+          Prelude.Just "limit_exceeded"+      | Lens.has+          ( Core.hasCode "RequestThrottledException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "request_throttled_exception"+      | Lens.has (Core.hasStatus 503) e =+          Prelude.Just "service_unavailable"+      | Lens.has+          ( Core.hasCode "ThrottledException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttled_exception"+      | Lens.has+          ( Core.hasCode "Throttling"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttling"+      | Lens.has+          ( Core.hasCode "ThrottlingException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttling_exception"+      | Lens.has+          ( Core.hasCode+              "ProvisionedThroughputExceededException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throughput_exceeded"+      | Lens.has (Core.hasStatus 429) e =+          Prelude.Just "too_many_requests"+      | Prelude.otherwise = Prelude.Nothing++-- | The requested operation would cause a conflict with the current state of+-- a service resource associated with the request. Resolve the conflict+-- before retrying this request.+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConflictException =+  Core._MatchServiceError+    defaultService+    "ConflictException"+    Prelude.. Core.hasStatus 409++-- | The server encountered an internal error and is unable to complete the+-- request.+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalServerException =+  Core._MatchServiceError+    defaultService+    "InternalServerException"+    Prelude.. Core.hasStatus 500++-- | The resource specified in the request does not exist.+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceNotFoundException =+  Core._MatchServiceError+    defaultService+    "ResourceNotFoundException"+    Prelude.. Core.hasStatus 404++-- | You have exceeded your service quota. To perform the requested action,+-- remove some of the relevant resources, or use+-- <https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html Service Quotas>+-- to request a service quota increase.+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceQuotaExceededException =+  Core._MatchServiceError+    defaultService+    "ServiceQuotaExceededException"+    Prelude.. Core.hasStatus 402++-- | The request was denied due to request throttling.+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ThrottlingException =+  Core._MatchServiceError+    defaultService+    "ThrottlingException"+    Prelude.. Core.hasStatus 429++-- | The parameter is not valid.+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ValidationException =+  Core._MatchServiceError+    defaultService+    "ValidationException"+    Prelude.. Core.hasStatus 400
+ gen/Amazonka/CodeGuruProfiler/Types/ActionGroup.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.ActionGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.ActionGroup+  ( ActionGroup+      ( ..,+        ActionGroup_AgentPermissions+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ActionGroup = ActionGroup'+  { fromActionGroup ::+      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 ActionGroup_AgentPermissions :: ActionGroup+pattern ActionGroup_AgentPermissions = ActionGroup' "agentPermissions"++{-# COMPLETE+  ActionGroup_AgentPermissions,+  ActionGroup'+  #-}
+ gen/Amazonka/CodeGuruProfiler/Types/AgentConfiguration.hs view
@@ -0,0 +1,182 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.AgentConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.AgentConfiguration where++import Amazonka.CodeGuruProfiler.Types.AgentParameterField+import qualified 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 response of+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ConfigureAgent.html ConfigureAgent>+-- that specifies if an agent profiles or not and for how long to return+-- profiling data.+--+-- /See:/ 'newAgentConfiguration' smart constructor.+data AgentConfiguration = AgentConfiguration'+  { -- | Parameters used by the profiler. The valid parameters are:+    --+    -- -   @MaxStackDepth@ - The maximum depth of the stacks in the code that+    --     is represented in the profile. For example, if CodeGuru Profiler+    --     finds a method @A@, which calls method @B@, which calls method @C@,+    --     which calls method @D@, then the depth is 4. If the @maxDepth@ is+    --     set to 2, then the profiler evaluates @A@ and @B@.+    --+    -- -   @MemoryUsageLimitPercent@ - The percentage of memory that is used by+    --     the profiler.+    --+    -- -   @MinimumTimeForReportingInMilliseconds@ - The minimum time in+    --     milliseconds between sending reports.+    --+    -- -   @ReportingIntervalInMilliseconds@ - The reporting interval in+    --     milliseconds used to report profiles.+    --+    -- -   @SamplingIntervalInMilliseconds@ - The sampling interval in+    --     milliseconds that is used to profile samples.+    agentParameters :: Prelude.Maybe (Prelude.HashMap AgentParameterField Prelude.Text),+    -- | How long a profiling agent should send profiling data using+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ConfigureAgent.html ConfigureAgent>+    -- . For example, if this is set to 300, the profiling agent calls+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ConfigureAgent.html ConfigureAgent>+    -- every 5 minutes to submit the profiled data collected during that+    -- period.+    periodInSeconds :: Prelude.Int,+    -- | A @Boolean@ that specifies whether the profiling agent collects+    -- profiling data or not. Set to @true@ to enable profiling.+    shouldProfile :: Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AgentConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'agentParameters', 'agentConfiguration_agentParameters' - Parameters used by the profiler. The valid parameters are:+--+-- -   @MaxStackDepth@ - The maximum depth of the stacks in the code that+--     is represented in the profile. For example, if CodeGuru Profiler+--     finds a method @A@, which calls method @B@, which calls method @C@,+--     which calls method @D@, then the depth is 4. If the @maxDepth@ is+--     set to 2, then the profiler evaluates @A@ and @B@.+--+-- -   @MemoryUsageLimitPercent@ - The percentage of memory that is used by+--     the profiler.+--+-- -   @MinimumTimeForReportingInMilliseconds@ - The minimum time in+--     milliseconds between sending reports.+--+-- -   @ReportingIntervalInMilliseconds@ - The reporting interval in+--     milliseconds used to report profiles.+--+-- -   @SamplingIntervalInMilliseconds@ - The sampling interval in+--     milliseconds that is used to profile samples.+--+-- 'periodInSeconds', 'agentConfiguration_periodInSeconds' - How long a profiling agent should send profiling data using+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ConfigureAgent.html ConfigureAgent>+-- . For example, if this is set to 300, the profiling agent calls+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ConfigureAgent.html ConfigureAgent>+-- every 5 minutes to submit the profiled data collected during that+-- period.+--+-- 'shouldProfile', 'agentConfiguration_shouldProfile' - A @Boolean@ that specifies whether the profiling agent collects+-- profiling data or not. Set to @true@ to enable profiling.+newAgentConfiguration ::+  -- | 'periodInSeconds'+  Prelude.Int ->+  -- | 'shouldProfile'+  Prelude.Bool ->+  AgentConfiguration+newAgentConfiguration+  pPeriodInSeconds_+  pShouldProfile_ =+    AgentConfiguration'+      { agentParameters =+          Prelude.Nothing,+        periodInSeconds = pPeriodInSeconds_,+        shouldProfile = pShouldProfile_+      }++-- | Parameters used by the profiler. The valid parameters are:+--+-- -   @MaxStackDepth@ - The maximum depth of the stacks in the code that+--     is represented in the profile. For example, if CodeGuru Profiler+--     finds a method @A@, which calls method @B@, which calls method @C@,+--     which calls method @D@, then the depth is 4. If the @maxDepth@ is+--     set to 2, then the profiler evaluates @A@ and @B@.+--+-- -   @MemoryUsageLimitPercent@ - The percentage of memory that is used by+--     the profiler.+--+-- -   @MinimumTimeForReportingInMilliseconds@ - The minimum time in+--     milliseconds between sending reports.+--+-- -   @ReportingIntervalInMilliseconds@ - The reporting interval in+--     milliseconds used to report profiles.+--+-- -   @SamplingIntervalInMilliseconds@ - The sampling interval in+--     milliseconds that is used to profile samples.+agentConfiguration_agentParameters :: Lens.Lens' AgentConfiguration (Prelude.Maybe (Prelude.HashMap AgentParameterField Prelude.Text))+agentConfiguration_agentParameters = Lens.lens (\AgentConfiguration' {agentParameters} -> agentParameters) (\s@AgentConfiguration' {} a -> s {agentParameters = a} :: AgentConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | How long a profiling agent should send profiling data using+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ConfigureAgent.html ConfigureAgent>+-- . For example, if this is set to 300, the profiling agent calls+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ConfigureAgent.html ConfigureAgent>+-- every 5 minutes to submit the profiled data collected during that+-- period.+agentConfiguration_periodInSeconds :: Lens.Lens' AgentConfiguration Prelude.Int+agentConfiguration_periodInSeconds = Lens.lens (\AgentConfiguration' {periodInSeconds} -> periodInSeconds) (\s@AgentConfiguration' {} a -> s {periodInSeconds = a} :: AgentConfiguration)++-- | A @Boolean@ that specifies whether the profiling agent collects+-- profiling data or not. Set to @true@ to enable profiling.+agentConfiguration_shouldProfile :: Lens.Lens' AgentConfiguration Prelude.Bool+agentConfiguration_shouldProfile = Lens.lens (\AgentConfiguration' {shouldProfile} -> shouldProfile) (\s@AgentConfiguration' {} a -> s {shouldProfile = a} :: AgentConfiguration)++instance Data.FromJSON AgentConfiguration where+  parseJSON =+    Data.withObject+      "AgentConfiguration"+      ( \x ->+          AgentConfiguration'+            Prelude.<$> ( x+                            Data..:? "agentParameters"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..: "periodInSeconds")+            Prelude.<*> (x Data..: "shouldProfile")+      )++instance Prelude.Hashable AgentConfiguration where+  hashWithSalt _salt AgentConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` agentParameters+      `Prelude.hashWithSalt` periodInSeconds+      `Prelude.hashWithSalt` shouldProfile++instance Prelude.NFData AgentConfiguration where+  rnf AgentConfiguration' {..} =+    Prelude.rnf agentParameters+      `Prelude.seq` Prelude.rnf periodInSeconds+      `Prelude.seq` Prelude.rnf shouldProfile
+ gen/Amazonka/CodeGuruProfiler/Types/AgentOrchestrationConfig.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.CodeGuruProfiler.Types.AgentOrchestrationConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.AgentOrchestrationConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies whether profiling is enabled or disabled for a profiling+-- group. It is used by+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ConfigureAgent.html ConfigureAgent>+-- to enable or disable profiling for a profiling group.+--+-- /See:/ 'newAgentOrchestrationConfig' smart constructor.+data AgentOrchestrationConfig = AgentOrchestrationConfig'+  { -- | A @Boolean@ that specifies whether the profiling agent collects+    -- profiling data or not. Set to @true@ to enable profiling.+    profilingEnabled :: Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AgentOrchestrationConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'profilingEnabled', 'agentOrchestrationConfig_profilingEnabled' - A @Boolean@ that specifies whether the profiling agent collects+-- profiling data or not. Set to @true@ to enable profiling.+newAgentOrchestrationConfig ::+  -- | 'profilingEnabled'+  Prelude.Bool ->+  AgentOrchestrationConfig+newAgentOrchestrationConfig pProfilingEnabled_ =+  AgentOrchestrationConfig'+    { profilingEnabled =+        pProfilingEnabled_+    }++-- | A @Boolean@ that specifies whether the profiling agent collects+-- profiling data or not. Set to @true@ to enable profiling.+agentOrchestrationConfig_profilingEnabled :: Lens.Lens' AgentOrchestrationConfig Prelude.Bool+agentOrchestrationConfig_profilingEnabled = Lens.lens (\AgentOrchestrationConfig' {profilingEnabled} -> profilingEnabled) (\s@AgentOrchestrationConfig' {} a -> s {profilingEnabled = a} :: AgentOrchestrationConfig)++instance Data.FromJSON AgentOrchestrationConfig where+  parseJSON =+    Data.withObject+      "AgentOrchestrationConfig"+      ( \x ->+          AgentOrchestrationConfig'+            Prelude.<$> (x Data..: "profilingEnabled")+      )++instance Prelude.Hashable AgentOrchestrationConfig where+  hashWithSalt _salt AgentOrchestrationConfig' {..} =+    _salt `Prelude.hashWithSalt` profilingEnabled++instance Prelude.NFData AgentOrchestrationConfig where+  rnf AgentOrchestrationConfig' {..} =+    Prelude.rnf profilingEnabled++instance Data.ToJSON AgentOrchestrationConfig where+  toJSON AgentOrchestrationConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("profilingEnabled" Data..= profilingEnabled)+          ]+      )
+ gen/Amazonka/CodeGuruProfiler/Types/AgentParameterField.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.CodeGuruProfiler.Types.AgentParameterField+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.AgentParameterField+  ( AgentParameterField+      ( ..,+        AgentParameterField_MaxStackDepth,+        AgentParameterField_MemoryUsageLimitPercent,+        AgentParameterField_MinimumTimeForReportingInMilliseconds,+        AgentParameterField_ReportingIntervalInMilliseconds,+        AgentParameterField_SamplingIntervalInMilliseconds+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AgentParameterField = AgentParameterField'+  { fromAgentParameterField ::+      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 AgentParameterField_MaxStackDepth :: AgentParameterField+pattern AgentParameterField_MaxStackDepth = AgentParameterField' "MaxStackDepth"++pattern AgentParameterField_MemoryUsageLimitPercent :: AgentParameterField+pattern AgentParameterField_MemoryUsageLimitPercent = AgentParameterField' "MemoryUsageLimitPercent"++pattern AgentParameterField_MinimumTimeForReportingInMilliseconds :: AgentParameterField+pattern AgentParameterField_MinimumTimeForReportingInMilliseconds = AgentParameterField' "MinimumTimeForReportingInMilliseconds"++pattern AgentParameterField_ReportingIntervalInMilliseconds :: AgentParameterField+pattern AgentParameterField_ReportingIntervalInMilliseconds = AgentParameterField' "ReportingIntervalInMilliseconds"++pattern AgentParameterField_SamplingIntervalInMilliseconds :: AgentParameterField+pattern AgentParameterField_SamplingIntervalInMilliseconds = AgentParameterField' "SamplingIntervalInMilliseconds"++{-# COMPLETE+  AgentParameterField_MaxStackDepth,+  AgentParameterField_MemoryUsageLimitPercent,+  AgentParameterField_MinimumTimeForReportingInMilliseconds,+  AgentParameterField_ReportingIntervalInMilliseconds,+  AgentParameterField_SamplingIntervalInMilliseconds,+  AgentParameterField'+  #-}
+ gen/Amazonka/CodeGuruProfiler/Types/AggregatedProfileTime.hs view
@@ -0,0 +1,135 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.AggregatedProfileTime+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.AggregatedProfileTime where++import Amazonka.CodeGuruProfiler.Types.AggregationPeriod+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies the aggregation period and aggregation start time for an+-- aggregated profile. An aggregated profile is used to collect posted+-- agent profiles during an aggregation period. There are three possible+-- aggregation periods (1 day, 1 hour, or 5 minutes).+--+-- /See:/ 'newAggregatedProfileTime' smart constructor.+data AggregatedProfileTime = AggregatedProfileTime'+  { -- | The aggregation period. This indicates the period during which an+    -- aggregation profile collects posted agent profiles for a profiling+    -- group. Use one of three valid durations that are specified using the ISO+    -- 8601 format.+    --+    -- -   @P1D@ — 1 day+    --+    -- -   @PT1H@ — 1 hour+    --+    -- -   @PT5M@ — 5 minutes+    period :: Prelude.Maybe AggregationPeriod,+    -- | The time that aggregation of posted agent profiles for a profiling group+    -- starts. The aggregation profile contains profiles posted by the agent+    -- starting at this time for an aggregation period specified by the+    -- @period@ property of the @AggregatedProfileTime@ object.+    --+    -- Specify @start@ using the ISO 8601 format. For example,+    -- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+    -- 1:15:02 PM UTC.+    start :: Prelude.Maybe Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AggregatedProfileTime' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'period', 'aggregatedProfileTime_period' - The aggregation period. This indicates the period during which an+-- aggregation profile collects posted agent profiles for a profiling+-- group. Use one of three valid durations that are specified using the ISO+-- 8601 format.+--+-- -   @P1D@ — 1 day+--+-- -   @PT1H@ — 1 hour+--+-- -   @PT5M@ — 5 minutes+--+-- 'start', 'aggregatedProfileTime_start' - The time that aggregation of posted agent profiles for a profiling group+-- starts. The aggregation profile contains profiles posted by the agent+-- starting at this time for an aggregation period specified by the+-- @period@ property of the @AggregatedProfileTime@ object.+--+-- Specify @start@ using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+newAggregatedProfileTime ::+  AggregatedProfileTime+newAggregatedProfileTime =+  AggregatedProfileTime'+    { period = Prelude.Nothing,+      start = Prelude.Nothing+    }++-- | The aggregation period. This indicates the period during which an+-- aggregation profile collects posted agent profiles for a profiling+-- group. Use one of three valid durations that are specified using the ISO+-- 8601 format.+--+-- -   @P1D@ — 1 day+--+-- -   @PT1H@ — 1 hour+--+-- -   @PT5M@ — 5 minutes+aggregatedProfileTime_period :: Lens.Lens' AggregatedProfileTime (Prelude.Maybe AggregationPeriod)+aggregatedProfileTime_period = Lens.lens (\AggregatedProfileTime' {period} -> period) (\s@AggregatedProfileTime' {} a -> s {period = a} :: AggregatedProfileTime)++-- | The time that aggregation of posted agent profiles for a profiling group+-- starts. The aggregation profile contains profiles posted by the agent+-- starting at this time for an aggregation period specified by the+-- @period@ property of the @AggregatedProfileTime@ object.+--+-- Specify @start@ using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+aggregatedProfileTime_start :: Lens.Lens' AggregatedProfileTime (Prelude.Maybe Prelude.UTCTime)+aggregatedProfileTime_start = Lens.lens (\AggregatedProfileTime' {start} -> start) (\s@AggregatedProfileTime' {} a -> s {start = a} :: AggregatedProfileTime) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON AggregatedProfileTime where+  parseJSON =+    Data.withObject+      "AggregatedProfileTime"+      ( \x ->+          AggregatedProfileTime'+            Prelude.<$> (x Data..:? "period")+            Prelude.<*> (x Data..:? "start")+      )++instance Prelude.Hashable AggregatedProfileTime where+  hashWithSalt _salt AggregatedProfileTime' {..} =+    _salt+      `Prelude.hashWithSalt` period+      `Prelude.hashWithSalt` start++instance Prelude.NFData AggregatedProfileTime where+  rnf AggregatedProfileTime' {..} =+    Prelude.rnf period `Prelude.seq` Prelude.rnf start
+ gen/Amazonka/CodeGuruProfiler/Types/AggregationPeriod.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.CodeGuruProfiler.Types.AggregationPeriod+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.AggregationPeriod+  ( AggregationPeriod+      ( ..,+        AggregationPeriod_P1D,+        AggregationPeriod_PT1H,+        AggregationPeriod_PT5M+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AggregationPeriod = AggregationPeriod'+  { fromAggregationPeriod ::+      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 AggregationPeriod_P1D :: AggregationPeriod+pattern AggregationPeriod_P1D = AggregationPeriod' "P1D"++pattern AggregationPeriod_PT1H :: AggregationPeriod+pattern AggregationPeriod_PT1H = AggregationPeriod' "PT1H"++pattern AggregationPeriod_PT5M :: AggregationPeriod+pattern AggregationPeriod_PT5M = AggregationPeriod' "PT5M"++{-# COMPLETE+  AggregationPeriod_P1D,+  AggregationPeriod_PT1H,+  AggregationPeriod_PT5M,+  AggregationPeriod'+  #-}
+ gen/Amazonka/CodeGuruProfiler/Types/Anomaly.hs view
@@ -0,0 +1,116 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.Anomaly+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.Anomaly where++import Amazonka.CodeGuruProfiler.Types.AnomalyInstance+import Amazonka.CodeGuruProfiler.Types.Metric+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Details about an anomaly in a specific metric of application profile.+-- The anomaly is detected using analysis of the metric data over a period+-- of time.+--+-- /See:/ 'newAnomaly' smart constructor.+data Anomaly = Anomaly'+  { -- | A list of the instances of the detected anomalies during the requested+    -- period.+    instances :: [AnomalyInstance],+    -- | Details about the metric that the analysis used when it detected the+    -- anomaly. The metric includes the name of the frame that was analyzed+    -- with the type and thread states used to derive the metric value for that+    -- frame.+    metric :: Metric,+    -- | The reason for which metric was flagged as anomalous.+    reason :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Anomaly' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'instances', 'anomaly_instances' - A list of the instances of the detected anomalies during the requested+-- period.+--+-- 'metric', 'anomaly_metric' - Details about the metric that the analysis used when it detected the+-- anomaly. The metric includes the name of the frame that was analyzed+-- with the type and thread states used to derive the metric value for that+-- frame.+--+-- 'reason', 'anomaly_reason' - The reason for which metric was flagged as anomalous.+newAnomaly ::+  -- | 'metric'+  Metric ->+  -- | 'reason'+  Prelude.Text ->+  Anomaly+newAnomaly pMetric_ pReason_ =+  Anomaly'+    { instances = Prelude.mempty,+      metric = pMetric_,+      reason = pReason_+    }++-- | A list of the instances of the detected anomalies during the requested+-- period.+anomaly_instances :: Lens.Lens' Anomaly [AnomalyInstance]+anomaly_instances = Lens.lens (\Anomaly' {instances} -> instances) (\s@Anomaly' {} a -> s {instances = a} :: Anomaly) Prelude.. Lens.coerced++-- | Details about the metric that the analysis used when it detected the+-- anomaly. The metric includes the name of the frame that was analyzed+-- with the type and thread states used to derive the metric value for that+-- frame.+anomaly_metric :: Lens.Lens' Anomaly Metric+anomaly_metric = Lens.lens (\Anomaly' {metric} -> metric) (\s@Anomaly' {} a -> s {metric = a} :: Anomaly)++-- | The reason for which metric was flagged as anomalous.+anomaly_reason :: Lens.Lens' Anomaly Prelude.Text+anomaly_reason = Lens.lens (\Anomaly' {reason} -> reason) (\s@Anomaly' {} a -> s {reason = a} :: Anomaly)++instance Data.FromJSON Anomaly where+  parseJSON =+    Data.withObject+      "Anomaly"+      ( \x ->+          Anomaly'+            Prelude.<$> (x Data..:? "instances" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "metric")+            Prelude.<*> (x Data..: "reason")+      )++instance Prelude.Hashable Anomaly where+  hashWithSalt _salt Anomaly' {..} =+    _salt+      `Prelude.hashWithSalt` instances+      `Prelude.hashWithSalt` metric+      `Prelude.hashWithSalt` reason++instance Prelude.NFData Anomaly where+  rnf Anomaly' {..} =+    Prelude.rnf instances+      `Prelude.seq` Prelude.rnf metric+      `Prelude.seq` Prelude.rnf reason
+ gen/Amazonka/CodeGuruProfiler/Types/AnomalyInstance.hs view
@@ -0,0 +1,134 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.AnomalyInstance+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.AnomalyInstance where++import Amazonka.CodeGuruProfiler.Types.UserFeedback+import qualified 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 specific duration in which the metric is flagged as anomalous.+--+-- /See:/ 'newAnomalyInstance' smart constructor.+data AnomalyInstance = AnomalyInstance'+  { -- | The end time of the period during which the metric is flagged as+    -- anomalous. This is specified using the ISO 8601 format. For example,+    -- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+    -- 1:15:02 PM UTC.+    endTime :: Prelude.Maybe Data.ISO8601,+    -- | Feedback type on a specific instance of anomaly submitted by the user.+    userFeedback :: Prelude.Maybe UserFeedback,+    -- | The universally unique identifier (UUID) of an instance of an anomaly in+    -- a metric.+    id :: Prelude.Text,+    -- | The start time of the period during which the metric is flagged as+    -- anomalous. This is specified using the ISO 8601 format. For example,+    -- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+    -- 1:15:02 PM UTC.+    startTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AnomalyInstance' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'anomalyInstance_endTime' - The end time of the period during which the metric is flagged as+-- anomalous. This is specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+--+-- 'userFeedback', 'anomalyInstance_userFeedback' - Feedback type on a specific instance of anomaly submitted by the user.+--+-- 'id', 'anomalyInstance_id' - The universally unique identifier (UUID) of an instance of an anomaly in+-- a metric.+--+-- 'startTime', 'anomalyInstance_startTime' - The start time of the period during which the metric is flagged as+-- anomalous. This is specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+newAnomalyInstance ::+  -- | 'id'+  Prelude.Text ->+  -- | 'startTime'+  Prelude.UTCTime ->+  AnomalyInstance+newAnomalyInstance pId_ pStartTime_ =+  AnomalyInstance'+    { endTime = Prelude.Nothing,+      userFeedback = Prelude.Nothing,+      id = pId_,+      startTime = Data._Time Lens.# pStartTime_+    }++-- | The end time of the period during which the metric is flagged as+-- anomalous. This is specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+anomalyInstance_endTime :: Lens.Lens' AnomalyInstance (Prelude.Maybe Prelude.UTCTime)+anomalyInstance_endTime = Lens.lens (\AnomalyInstance' {endTime} -> endTime) (\s@AnomalyInstance' {} a -> s {endTime = a} :: AnomalyInstance) Prelude.. Lens.mapping Data._Time++-- | Feedback type on a specific instance of anomaly submitted by the user.+anomalyInstance_userFeedback :: Lens.Lens' AnomalyInstance (Prelude.Maybe UserFeedback)+anomalyInstance_userFeedback = Lens.lens (\AnomalyInstance' {userFeedback} -> userFeedback) (\s@AnomalyInstance' {} a -> s {userFeedback = a} :: AnomalyInstance)++-- | The universally unique identifier (UUID) of an instance of an anomaly in+-- a metric.+anomalyInstance_id :: Lens.Lens' AnomalyInstance Prelude.Text+anomalyInstance_id = Lens.lens (\AnomalyInstance' {id} -> id) (\s@AnomalyInstance' {} a -> s {id = a} :: AnomalyInstance)++-- | The start time of the period during which the metric is flagged as+-- anomalous. This is specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+anomalyInstance_startTime :: Lens.Lens' AnomalyInstance Prelude.UTCTime+anomalyInstance_startTime = Lens.lens (\AnomalyInstance' {startTime} -> startTime) (\s@AnomalyInstance' {} a -> s {startTime = a} :: AnomalyInstance) Prelude.. Data._Time++instance Data.FromJSON AnomalyInstance where+  parseJSON =+    Data.withObject+      "AnomalyInstance"+      ( \x ->+          AnomalyInstance'+            Prelude.<$> (x Data..:? "endTime")+            Prelude.<*> (x Data..:? "userFeedback")+            Prelude.<*> (x Data..: "id")+            Prelude.<*> (x Data..: "startTime")+      )++instance Prelude.Hashable AnomalyInstance where+  hashWithSalt _salt AnomalyInstance' {..} =+    _salt+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` userFeedback+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` startTime++instance Prelude.NFData AnomalyInstance where+  rnf AnomalyInstance' {..} =+    Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf userFeedback+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf startTime
+ gen/Amazonka/CodeGuruProfiler/Types/Channel.hs view
@@ -0,0 +1,132 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.Channel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.Channel where++import Amazonka.CodeGuruProfiler.Types.EventPublisher+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Notification medium for users to get alerted for events that occur in+-- application profile. We support SNS topic as a notification channel.+--+-- /See:/ 'newChannel' smart constructor.+data Channel = Channel'+  { -- | Unique identifier for each @Channel@ in the notification configuration+    -- of a Profiling Group. A random UUID for channelId is used when adding a+    -- channel to the notification configuration if not specified in the+    -- request.+    id :: Prelude.Maybe Prelude.Text,+    -- | List of publishers for different type of events that may be detected in+    -- an application from the profile. Anomaly detection is the only event+    -- publisher in Profiler.+    eventPublishers :: Prelude.NonEmpty EventPublisher,+    -- | Unique arn of the resource to be used for notifications. We support a+    -- valid SNS topic arn as a channel uri.+    uri :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Channel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'channel_id' - Unique identifier for each @Channel@ in the notification configuration+-- of a Profiling Group. A random UUID for channelId is used when adding a+-- channel to the notification configuration if not specified in the+-- request.+--+-- 'eventPublishers', 'channel_eventPublishers' - List of publishers for different type of events that may be detected in+-- an application from the profile. Anomaly detection is the only event+-- publisher in Profiler.+--+-- 'uri', 'channel_uri' - Unique arn of the resource to be used for notifications. We support a+-- valid SNS topic arn as a channel uri.+newChannel ::+  -- | 'eventPublishers'+  Prelude.NonEmpty EventPublisher ->+  -- | 'uri'+  Prelude.Text ->+  Channel+newChannel pEventPublishers_ pUri_ =+  Channel'+    { id = Prelude.Nothing,+      eventPublishers =+        Lens.coerced Lens.# pEventPublishers_,+      uri = pUri_+    }++-- | Unique identifier for each @Channel@ in the notification configuration+-- of a Profiling Group. A random UUID for channelId is used when adding a+-- channel to the notification configuration if not specified in the+-- request.+channel_id :: Lens.Lens' Channel (Prelude.Maybe Prelude.Text)+channel_id = Lens.lens (\Channel' {id} -> id) (\s@Channel' {} a -> s {id = a} :: Channel)++-- | List of publishers for different type of events that may be detected in+-- an application from the profile. Anomaly detection is the only event+-- publisher in Profiler.+channel_eventPublishers :: Lens.Lens' Channel (Prelude.NonEmpty EventPublisher)+channel_eventPublishers = Lens.lens (\Channel' {eventPublishers} -> eventPublishers) (\s@Channel' {} a -> s {eventPublishers = a} :: Channel) Prelude.. Lens.coerced++-- | Unique arn of the resource to be used for notifications. We support a+-- valid SNS topic arn as a channel uri.+channel_uri :: Lens.Lens' Channel Prelude.Text+channel_uri = Lens.lens (\Channel' {uri} -> uri) (\s@Channel' {} a -> s {uri = a} :: Channel)++instance Data.FromJSON Channel where+  parseJSON =+    Data.withObject+      "Channel"+      ( \x ->+          Channel'+            Prelude.<$> (x Data..:? "id")+            Prelude.<*> (x Data..: "eventPublishers")+            Prelude.<*> (x Data..: "uri")+      )++instance Prelude.Hashable Channel where+  hashWithSalt _salt Channel' {..} =+    _salt+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` eventPublishers+      `Prelude.hashWithSalt` uri++instance Prelude.NFData Channel where+  rnf Channel' {..} =+    Prelude.rnf id+      `Prelude.seq` Prelude.rnf eventPublishers+      `Prelude.seq` Prelude.rnf uri++instance Data.ToJSON Channel where+  toJSON Channel' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("id" Data..=) Prelude.<$> id,+            Prelude.Just+              ("eventPublishers" Data..= eventPublishers),+            Prelude.Just ("uri" Data..= uri)+          ]+      )
+ gen/Amazonka/CodeGuruProfiler/Types/ComputePlatform.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.CodeGuruProfiler.Types.ComputePlatform+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.ComputePlatform+  ( ComputePlatform+      ( ..,+        ComputePlatform_AWSLambda,+        ComputePlatform_Default+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ComputePlatform = ComputePlatform'+  { fromComputePlatform ::+      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 ComputePlatform_AWSLambda :: ComputePlatform+pattern ComputePlatform_AWSLambda = ComputePlatform' "AWSLambda"++pattern ComputePlatform_Default :: ComputePlatform+pattern ComputePlatform_Default = ComputePlatform' "Default"++{-# COMPLETE+  ComputePlatform_AWSLambda,+  ComputePlatform_Default,+  ComputePlatform'+  #-}
+ gen/Amazonka/CodeGuruProfiler/Types/EventPublisher.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.EventPublisher+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.EventPublisher+  ( EventPublisher+      ( ..,+        EventPublisher_AnomalyDetection+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype EventPublisher = EventPublisher'+  { fromEventPublisher ::+      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 EventPublisher_AnomalyDetection :: EventPublisher+pattern EventPublisher_AnomalyDetection = EventPublisher' "AnomalyDetection"++{-# COMPLETE+  EventPublisher_AnomalyDetection,+  EventPublisher'+  #-}
+ gen/Amazonka/CodeGuruProfiler/Types/FeedbackType.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.CodeGuruProfiler.Types.FeedbackType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.FeedbackType+  ( FeedbackType+      ( ..,+        FeedbackType_Negative,+        FeedbackType_Positive+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FeedbackType = FeedbackType'+  { fromFeedbackType ::+      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 FeedbackType_Negative :: FeedbackType+pattern FeedbackType_Negative = FeedbackType' "Negative"++pattern FeedbackType_Positive :: FeedbackType+pattern FeedbackType_Positive = FeedbackType' "Positive"++{-# COMPLETE+  FeedbackType_Negative,+  FeedbackType_Positive,+  FeedbackType'+  #-}
+ gen/Amazonka/CodeGuruProfiler/Types/FindingsReportSummary.hs view
@@ -0,0 +1,145 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.FindingsReportSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.FindingsReportSummary where++import qualified 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 potential recommendations that might be created from+-- the analysis of profiling data.+--+-- /See:/ 'newFindingsReportSummary' smart constructor.+data FindingsReportSummary = FindingsReportSummary'+  { -- | The universally unique identifier (UUID) of the recommendation report.+    id :: Prelude.Maybe Prelude.Text,+    -- | The end time of the period during which the metric is flagged as+    -- anomalous. This is specified using the ISO 8601 format. For example,+    -- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+    -- 1:15:02 PM UTC.+    profileEndTime :: Prelude.Maybe Data.ISO8601,+    -- | The start time of the profile the analysis data is about. This is+    -- specified using the ISO 8601 format. For example,+    -- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+    -- 1:15:02 PM UTC.+    profileStartTime :: Prelude.Maybe Data.ISO8601,+    -- | The name of the profiling group that is associated with the analysis+    -- data.+    profilingGroupName :: Prelude.Maybe Prelude.Text,+    -- | The total number of different recommendations that were found by the+    -- analysis.+    totalNumberOfFindings :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FindingsReportSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'findingsReportSummary_id' - The universally unique identifier (UUID) of the recommendation report.+--+-- 'profileEndTime', 'findingsReportSummary_profileEndTime' - The end time of the period during which the metric is flagged as+-- anomalous. This is specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+--+-- 'profileStartTime', 'findingsReportSummary_profileStartTime' - The start time of the profile the analysis data is about. This is+-- specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+--+-- 'profilingGroupName', 'findingsReportSummary_profilingGroupName' - The name of the profiling group that is associated with the analysis+-- data.+--+-- 'totalNumberOfFindings', 'findingsReportSummary_totalNumberOfFindings' - The total number of different recommendations that were found by the+-- analysis.+newFindingsReportSummary ::+  FindingsReportSummary+newFindingsReportSummary =+  FindingsReportSummary'+    { id = Prelude.Nothing,+      profileEndTime = Prelude.Nothing,+      profileStartTime = Prelude.Nothing,+      profilingGroupName = Prelude.Nothing,+      totalNumberOfFindings = Prelude.Nothing+    }++-- | The universally unique identifier (UUID) of the recommendation report.+findingsReportSummary_id :: Lens.Lens' FindingsReportSummary (Prelude.Maybe Prelude.Text)+findingsReportSummary_id = Lens.lens (\FindingsReportSummary' {id} -> id) (\s@FindingsReportSummary' {} a -> s {id = a} :: FindingsReportSummary)++-- | The end time of the period during which the metric is flagged as+-- anomalous. This is specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+findingsReportSummary_profileEndTime :: Lens.Lens' FindingsReportSummary (Prelude.Maybe Prelude.UTCTime)+findingsReportSummary_profileEndTime = Lens.lens (\FindingsReportSummary' {profileEndTime} -> profileEndTime) (\s@FindingsReportSummary' {} a -> s {profileEndTime = a} :: FindingsReportSummary) Prelude.. Lens.mapping Data._Time++-- | The start time of the profile the analysis data is about. This is+-- specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+findingsReportSummary_profileStartTime :: Lens.Lens' FindingsReportSummary (Prelude.Maybe Prelude.UTCTime)+findingsReportSummary_profileStartTime = Lens.lens (\FindingsReportSummary' {profileStartTime} -> profileStartTime) (\s@FindingsReportSummary' {} a -> s {profileStartTime = a} :: FindingsReportSummary) Prelude.. Lens.mapping Data._Time++-- | The name of the profiling group that is associated with the analysis+-- data.+findingsReportSummary_profilingGroupName :: Lens.Lens' FindingsReportSummary (Prelude.Maybe Prelude.Text)+findingsReportSummary_profilingGroupName = Lens.lens (\FindingsReportSummary' {profilingGroupName} -> profilingGroupName) (\s@FindingsReportSummary' {} a -> s {profilingGroupName = a} :: FindingsReportSummary)++-- | The total number of different recommendations that were found by the+-- analysis.+findingsReportSummary_totalNumberOfFindings :: Lens.Lens' FindingsReportSummary (Prelude.Maybe Prelude.Int)+findingsReportSummary_totalNumberOfFindings = Lens.lens (\FindingsReportSummary' {totalNumberOfFindings} -> totalNumberOfFindings) (\s@FindingsReportSummary' {} a -> s {totalNumberOfFindings = a} :: FindingsReportSummary)++instance Data.FromJSON FindingsReportSummary where+  parseJSON =+    Data.withObject+      "FindingsReportSummary"+      ( \x ->+          FindingsReportSummary'+            Prelude.<$> (x Data..:? "id")+            Prelude.<*> (x Data..:? "profileEndTime")+            Prelude.<*> (x Data..:? "profileStartTime")+            Prelude.<*> (x Data..:? "profilingGroupName")+            Prelude.<*> (x Data..:? "totalNumberOfFindings")+      )++instance Prelude.Hashable FindingsReportSummary where+  hashWithSalt _salt FindingsReportSummary' {..} =+    _salt+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` profileEndTime+      `Prelude.hashWithSalt` profileStartTime+      `Prelude.hashWithSalt` profilingGroupName+      `Prelude.hashWithSalt` totalNumberOfFindings++instance Prelude.NFData FindingsReportSummary where+  rnf FindingsReportSummary' {..} =+    Prelude.rnf id+      `Prelude.seq` Prelude.rnf profileEndTime+      `Prelude.seq` Prelude.rnf profileStartTime+      `Prelude.seq` Prelude.rnf profilingGroupName+      `Prelude.seq` Prelude.rnf totalNumberOfFindings
+ gen/Amazonka/CodeGuruProfiler/Types/FrameMetric.hs view
@@ -0,0 +1,127 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.FrameMetric+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.FrameMetric where++import Amazonka.CodeGuruProfiler.Types.MetricType+import qualified 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 frame name, metric type, and thread states. These are used to derive+-- the value of the metric for the frame.+--+-- /See:/ 'newFrameMetric' smart constructor.+data FrameMetric = FrameMetric'+  { -- | Name of the method common across the multiple occurrences of a frame in+    -- an application profile.+    frameName :: Prelude.Text,+    -- | List of application runtime thread states used to get the counts for a+    -- frame a derive a metric value.+    threadStates :: [Prelude.Text],+    -- | A type of aggregation that specifies how a metric for a frame is+    -- analyzed. The supported value @AggregatedRelativeTotalTime@ is an+    -- aggregation of the metric value for one frame that is calculated across+    -- the occurrences of all frames in a profile.+    type' :: MetricType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FrameMetric' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'frameName', 'frameMetric_frameName' - Name of the method common across the multiple occurrences of a frame in+-- an application profile.+--+-- 'threadStates', 'frameMetric_threadStates' - List of application runtime thread states used to get the counts for a+-- frame a derive a metric value.+--+-- 'type'', 'frameMetric_type' - A type of aggregation that specifies how a metric for a frame is+-- analyzed. The supported value @AggregatedRelativeTotalTime@ is an+-- aggregation of the metric value for one frame that is calculated across+-- the occurrences of all frames in a profile.+newFrameMetric ::+  -- | 'frameName'+  Prelude.Text ->+  -- | 'type''+  MetricType ->+  FrameMetric+newFrameMetric pFrameName_ pType_ =+  FrameMetric'+    { frameName = pFrameName_,+      threadStates = Prelude.mempty,+      type' = pType_+    }++-- | Name of the method common across the multiple occurrences of a frame in+-- an application profile.+frameMetric_frameName :: Lens.Lens' FrameMetric Prelude.Text+frameMetric_frameName = Lens.lens (\FrameMetric' {frameName} -> frameName) (\s@FrameMetric' {} a -> s {frameName = a} :: FrameMetric)++-- | List of application runtime thread states used to get the counts for a+-- frame a derive a metric value.+frameMetric_threadStates :: Lens.Lens' FrameMetric [Prelude.Text]+frameMetric_threadStates = Lens.lens (\FrameMetric' {threadStates} -> threadStates) (\s@FrameMetric' {} a -> s {threadStates = a} :: FrameMetric) Prelude.. Lens.coerced++-- | A type of aggregation that specifies how a metric for a frame is+-- analyzed. The supported value @AggregatedRelativeTotalTime@ is an+-- aggregation of the metric value for one frame that is calculated across+-- the occurrences of all frames in a profile.+frameMetric_type :: Lens.Lens' FrameMetric MetricType+frameMetric_type = Lens.lens (\FrameMetric' {type'} -> type') (\s@FrameMetric' {} a -> s {type' = a} :: FrameMetric)++instance Data.FromJSON FrameMetric where+  parseJSON =+    Data.withObject+      "FrameMetric"+      ( \x ->+          FrameMetric'+            Prelude.<$> (x Data..: "frameName")+            Prelude.<*> (x Data..:? "threadStates" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "type")+      )++instance Prelude.Hashable FrameMetric where+  hashWithSalt _salt FrameMetric' {..} =+    _salt+      `Prelude.hashWithSalt` frameName+      `Prelude.hashWithSalt` threadStates+      `Prelude.hashWithSalt` type'++instance Prelude.NFData FrameMetric where+  rnf FrameMetric' {..} =+    Prelude.rnf frameName+      `Prelude.seq` Prelude.rnf threadStates+      `Prelude.seq` Prelude.rnf type'++instance Data.ToJSON FrameMetric where+  toJSON FrameMetric' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("frameName" Data..= frameName),+            Prelude.Just ("threadStates" Data..= threadStates),+            Prelude.Just ("type" Data..= type')+          ]+      )
+ gen/Amazonka/CodeGuruProfiler/Types/FrameMetricDatum.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.CodeGuruProfiler.Types.FrameMetricDatum+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.FrameMetricDatum where++import Amazonka.CodeGuruProfiler.Types.FrameMetric+import qualified 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 frame metric and its values.+--+-- /See:/ 'newFrameMetricDatum' smart constructor.+data FrameMetricDatum = FrameMetricDatum'+  { frameMetric :: FrameMetric,+    -- | A list of values that are associated with a frame metric.+    values :: [Prelude.Double]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FrameMetricDatum' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'frameMetric', 'frameMetricDatum_frameMetric' - Undocumented member.+--+-- 'values', 'frameMetricDatum_values' - A list of values that are associated with a frame metric.+newFrameMetricDatum ::+  -- | 'frameMetric'+  FrameMetric ->+  FrameMetricDatum+newFrameMetricDatum pFrameMetric_ =+  FrameMetricDatum'+    { frameMetric = pFrameMetric_,+      values = Prelude.mempty+    }++-- | Undocumented member.+frameMetricDatum_frameMetric :: Lens.Lens' FrameMetricDatum FrameMetric+frameMetricDatum_frameMetric = Lens.lens (\FrameMetricDatum' {frameMetric} -> frameMetric) (\s@FrameMetricDatum' {} a -> s {frameMetric = a} :: FrameMetricDatum)++-- | A list of values that are associated with a frame metric.+frameMetricDatum_values :: Lens.Lens' FrameMetricDatum [Prelude.Double]+frameMetricDatum_values = Lens.lens (\FrameMetricDatum' {values} -> values) (\s@FrameMetricDatum' {} a -> s {values = a} :: FrameMetricDatum) Prelude.. Lens.coerced++instance Data.FromJSON FrameMetricDatum where+  parseJSON =+    Data.withObject+      "FrameMetricDatum"+      ( \x ->+          FrameMetricDatum'+            Prelude.<$> (x Data..: "frameMetric")+            Prelude.<*> (x Data..:? "values" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable FrameMetricDatum where+  hashWithSalt _salt FrameMetricDatum' {..} =+    _salt+      `Prelude.hashWithSalt` frameMetric+      `Prelude.hashWithSalt` values++instance Prelude.NFData FrameMetricDatum where+  rnf FrameMetricDatum' {..} =+    Prelude.rnf frameMetric+      `Prelude.seq` Prelude.rnf values
+ gen/Amazonka/CodeGuruProfiler/Types/Match.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.CodeGuruProfiler.Types.Match+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.Match where++import qualified 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 part of a profile that contains a recommendation found during+-- analysis.+--+-- /See:/ 'newMatch' smart constructor.+data Match = Match'+  { -- | The location in the profiling graph that contains a recommendation found+    -- during analysis.+    frameAddress :: Prelude.Maybe Prelude.Text,+    -- | The target frame that triggered a match.+    targetFramesIndex :: Prelude.Maybe Prelude.Int,+    -- | The value in the profile data that exceeded the recommendation+    -- threshold.+    thresholdBreachValue :: Prelude.Maybe Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Match' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'frameAddress', 'match_frameAddress' - The location in the profiling graph that contains a recommendation found+-- during analysis.+--+-- 'targetFramesIndex', 'match_targetFramesIndex' - The target frame that triggered a match.+--+-- 'thresholdBreachValue', 'match_thresholdBreachValue' - The value in the profile data that exceeded the recommendation+-- threshold.+newMatch ::+  Match+newMatch =+  Match'+    { frameAddress = Prelude.Nothing,+      targetFramesIndex = Prelude.Nothing,+      thresholdBreachValue = Prelude.Nothing+    }++-- | The location in the profiling graph that contains a recommendation found+-- during analysis.+match_frameAddress :: Lens.Lens' Match (Prelude.Maybe Prelude.Text)+match_frameAddress = Lens.lens (\Match' {frameAddress} -> frameAddress) (\s@Match' {} a -> s {frameAddress = a} :: Match)++-- | The target frame that triggered a match.+match_targetFramesIndex :: Lens.Lens' Match (Prelude.Maybe Prelude.Int)+match_targetFramesIndex = Lens.lens (\Match' {targetFramesIndex} -> targetFramesIndex) (\s@Match' {} a -> s {targetFramesIndex = a} :: Match)++-- | The value in the profile data that exceeded the recommendation+-- threshold.+match_thresholdBreachValue :: Lens.Lens' Match (Prelude.Maybe Prelude.Double)+match_thresholdBreachValue = Lens.lens (\Match' {thresholdBreachValue} -> thresholdBreachValue) (\s@Match' {} a -> s {thresholdBreachValue = a} :: Match)++instance Data.FromJSON Match where+  parseJSON =+    Data.withObject+      "Match"+      ( \x ->+          Match'+            Prelude.<$> (x Data..:? "frameAddress")+            Prelude.<*> (x Data..:? "targetFramesIndex")+            Prelude.<*> (x Data..:? "thresholdBreachValue")+      )++instance Prelude.Hashable Match where+  hashWithSalt _salt Match' {..} =+    _salt+      `Prelude.hashWithSalt` frameAddress+      `Prelude.hashWithSalt` targetFramesIndex+      `Prelude.hashWithSalt` thresholdBreachValue++instance Prelude.NFData Match where+  rnf Match' {..} =+    Prelude.rnf frameAddress+      `Prelude.seq` Prelude.rnf targetFramesIndex+      `Prelude.seq` Prelude.rnf thresholdBreachValue
+ gen/Amazonka/CodeGuruProfiler/Types/MetadataField.hs view
@@ -0,0 +1,106 @@+{-# 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.CodeGuruProfiler.Types.MetadataField+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.MetadataField+  ( MetadataField+      ( ..,+        MetadataField_AgentId,+        MetadataField_AwsRequestId,+        MetadataField_ComputePlatform,+        MetadataField_ExecutionEnvironment,+        MetadataField_LambdaFunctionArn,+        MetadataField_LambdaMemoryLimitInMB,+        MetadataField_LambdaPreviousExecutionTimeInMilliseconds,+        MetadataField_LambdaRemainingTimeInMilliseconds,+        MetadataField_LambdaTimeGapBetweenInvokesInMilliseconds+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype MetadataField = MetadataField'+  { fromMetadataField ::+      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 MetadataField_AgentId :: MetadataField+pattern MetadataField_AgentId = MetadataField' "AgentId"++pattern MetadataField_AwsRequestId :: MetadataField+pattern MetadataField_AwsRequestId = MetadataField' "AwsRequestId"++pattern MetadataField_ComputePlatform :: MetadataField+pattern MetadataField_ComputePlatform = MetadataField' "ComputePlatform"++pattern MetadataField_ExecutionEnvironment :: MetadataField+pattern MetadataField_ExecutionEnvironment = MetadataField' "ExecutionEnvironment"++pattern MetadataField_LambdaFunctionArn :: MetadataField+pattern MetadataField_LambdaFunctionArn = MetadataField' "LambdaFunctionArn"++pattern MetadataField_LambdaMemoryLimitInMB :: MetadataField+pattern MetadataField_LambdaMemoryLimitInMB = MetadataField' "LambdaMemoryLimitInMB"++pattern MetadataField_LambdaPreviousExecutionTimeInMilliseconds :: MetadataField+pattern MetadataField_LambdaPreviousExecutionTimeInMilliseconds = MetadataField' "LambdaPreviousExecutionTimeInMilliseconds"++pattern MetadataField_LambdaRemainingTimeInMilliseconds :: MetadataField+pattern MetadataField_LambdaRemainingTimeInMilliseconds = MetadataField' "LambdaRemainingTimeInMilliseconds"++pattern MetadataField_LambdaTimeGapBetweenInvokesInMilliseconds :: MetadataField+pattern MetadataField_LambdaTimeGapBetweenInvokesInMilliseconds = MetadataField' "LambdaTimeGapBetweenInvokesInMilliseconds"++{-# COMPLETE+  MetadataField_AgentId,+  MetadataField_AwsRequestId,+  MetadataField_ComputePlatform,+  MetadataField_ExecutionEnvironment,+  MetadataField_LambdaFunctionArn,+  MetadataField_LambdaMemoryLimitInMB,+  MetadataField_LambdaPreviousExecutionTimeInMilliseconds,+  MetadataField_LambdaRemainingTimeInMilliseconds,+  MetadataField_LambdaTimeGapBetweenInvokesInMilliseconds,+  MetadataField'+  #-}
+ gen/Amazonka/CodeGuruProfiler/Types/Metric.hs view
@@ -0,0 +1,119 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.Metric+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.Metric where++import Amazonka.CodeGuruProfiler.Types.MetricType+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Details about the metric that the analysis used when it detected the+-- anomaly. The metric what is analyzed to create recommendations. It+-- includes the name of the frame that was analyzed and the type and thread+-- states used to derive the metric value for that frame.+--+-- /See:/ 'newMetric' smart constructor.+data Metric = Metric'+  { -- | The name of the method that appears as a frame in any stack in a+    -- profile.+    frameName :: Prelude.Text,+    -- | The list of application runtime thread states that is used to calculate+    -- the metric value for the frame.+    threadStates :: [Prelude.Text],+    -- | A type that specifies how a metric for a frame is analyzed. The+    -- supported value @AggregatedRelativeTotalTime@ is an aggregation of the+    -- metric value for one frame that is calculated across the occurences of+    -- all frames in a profile.+    type' :: MetricType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Metric' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'frameName', 'metric_frameName' - The name of the method that appears as a frame in any stack in a+-- profile.+--+-- 'threadStates', 'metric_threadStates' - The list of application runtime thread states that is used to calculate+-- the metric value for the frame.+--+-- 'type'', 'metric_type' - A type that specifies how a metric for a frame is analyzed. The+-- supported value @AggregatedRelativeTotalTime@ is an aggregation of the+-- metric value for one frame that is calculated across the occurences of+-- all frames in a profile.+newMetric ::+  -- | 'frameName'+  Prelude.Text ->+  -- | 'type''+  MetricType ->+  Metric+newMetric pFrameName_ pType_ =+  Metric'+    { frameName = pFrameName_,+      threadStates = Prelude.mempty,+      type' = pType_+    }++-- | The name of the method that appears as a frame in any stack in a+-- profile.+metric_frameName :: Lens.Lens' Metric Prelude.Text+metric_frameName = Lens.lens (\Metric' {frameName} -> frameName) (\s@Metric' {} a -> s {frameName = a} :: Metric)++-- | The list of application runtime thread states that is used to calculate+-- the metric value for the frame.+metric_threadStates :: Lens.Lens' Metric [Prelude.Text]+metric_threadStates = Lens.lens (\Metric' {threadStates} -> threadStates) (\s@Metric' {} a -> s {threadStates = a} :: Metric) Prelude.. Lens.coerced++-- | A type that specifies how a metric for a frame is analyzed. The+-- supported value @AggregatedRelativeTotalTime@ is an aggregation of the+-- metric value for one frame that is calculated across the occurences of+-- all frames in a profile.+metric_type :: Lens.Lens' Metric MetricType+metric_type = Lens.lens (\Metric' {type'} -> type') (\s@Metric' {} a -> s {type' = a} :: Metric)++instance Data.FromJSON Metric where+  parseJSON =+    Data.withObject+      "Metric"+      ( \x ->+          Metric'+            Prelude.<$> (x Data..: "frameName")+            Prelude.<*> (x Data..:? "threadStates" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "type")+      )++instance Prelude.Hashable Metric where+  hashWithSalt _salt Metric' {..} =+    _salt+      `Prelude.hashWithSalt` frameName+      `Prelude.hashWithSalt` threadStates+      `Prelude.hashWithSalt` type'++instance Prelude.NFData Metric where+  rnf Metric' {..} =+    Prelude.rnf frameName+      `Prelude.seq` Prelude.rnf threadStates+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/CodeGuruProfiler/Types/MetricType.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.MetricType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.MetricType+  ( MetricType+      ( ..,+        MetricType_AggregatedRelativeTotalTime+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype MetricType = MetricType'+  { fromMetricType ::+      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 MetricType_AggregatedRelativeTotalTime :: MetricType+pattern MetricType_AggregatedRelativeTotalTime = MetricType' "AggregatedRelativeTotalTime"++{-# COMPLETE+  MetricType_AggregatedRelativeTotalTime,+  MetricType'+  #-}
+ gen/Amazonka/CodeGuruProfiler/Types/NotificationConfiguration.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.CodeGuruProfiler.Types.NotificationConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.NotificationConfiguration where++import Amazonka.CodeGuruProfiler.Types.Channel+import qualified 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 configuration for notifications stored for each profiling group.+-- This includes up to to two channels and a list of event publishers+-- associated with each channel.+--+-- /See:/ 'newNotificationConfiguration' smart constructor.+data NotificationConfiguration = NotificationConfiguration'+  { -- | List of up to two channels to be used for sending notifications for+    -- events detected from the application profile.+    channels :: Prelude.Maybe (Prelude.NonEmpty Channel)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'NotificationConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'notificationConfiguration_channels' - List of up to two channels to be used for sending notifications for+-- events detected from the application profile.+newNotificationConfiguration ::+  NotificationConfiguration+newNotificationConfiguration =+  NotificationConfiguration'+    { channels =+        Prelude.Nothing+    }++-- | List of up to two channels to be used for sending notifications for+-- events detected from the application profile.+notificationConfiguration_channels :: Lens.Lens' NotificationConfiguration (Prelude.Maybe (Prelude.NonEmpty Channel))+notificationConfiguration_channels = Lens.lens (\NotificationConfiguration' {channels} -> channels) (\s@NotificationConfiguration' {} a -> s {channels = a} :: NotificationConfiguration) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON NotificationConfiguration where+  parseJSON =+    Data.withObject+      "NotificationConfiguration"+      ( \x ->+          NotificationConfiguration'+            Prelude.<$> (x Data..:? "channels")+      )++instance Prelude.Hashable NotificationConfiguration where+  hashWithSalt _salt NotificationConfiguration' {..} =+    _salt `Prelude.hashWithSalt` channels++instance Prelude.NFData NotificationConfiguration where+  rnf NotificationConfiguration' {..} =+    Prelude.rnf channels
+ gen/Amazonka/CodeGuruProfiler/Types/OrderBy.hs view
@@ -0,0 +1,68 @@+{-# 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.CodeGuruProfiler.Types.OrderBy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.OrderBy+  ( OrderBy+      ( ..,+        OrderBy_TimestampAscending,+        OrderBy_TimestampDescending+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype OrderBy = OrderBy' {fromOrderBy :: 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 OrderBy_TimestampAscending :: OrderBy+pattern OrderBy_TimestampAscending = OrderBy' "TimestampAscending"++pattern OrderBy_TimestampDescending :: OrderBy+pattern OrderBy_TimestampDescending = OrderBy' "TimestampDescending"++{-# COMPLETE+  OrderBy_TimestampAscending,+  OrderBy_TimestampDescending,+  OrderBy'+  #-}
+ gen/Amazonka/CodeGuruProfiler/Types/Pattern.hs view
@@ -0,0 +1,162 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.Pattern+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.Pattern where++import qualified 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 set of rules used to make a recommendation during an analysis.+--+-- /See:/ 'newPattern' smart constructor.+data Pattern = Pattern'+  { -- | A list of the different counters used to determine if there is a match.+    countersToAggregate :: Prelude.Maybe [Prelude.Text],+    -- | The description of the recommendation. This explains a potential+    -- inefficiency in a profiled application.+    description :: Prelude.Maybe Prelude.Text,+    -- | The universally unique identifier (UUID) of this pattern.+    id :: Prelude.Maybe Prelude.Text,+    -- | The name for this pattern.+    name :: Prelude.Maybe Prelude.Text,+    -- | A string that contains the steps recommended to address the potential+    -- inefficiency.+    resolutionSteps :: Prelude.Maybe Prelude.Text,+    -- | A list of frame names that were searched during the analysis that+    -- generated a recommendation.+    targetFrames :: Prelude.Maybe [[Prelude.Text]],+    -- | The percentage of time an application spends in one method that triggers+    -- a recommendation. The percentage of time is the same as the percentage+    -- of the total gathered sample counts during analysis.+    thresholdPercent :: Prelude.Maybe Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Pattern' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'countersToAggregate', 'pattern_countersToAggregate' - A list of the different counters used to determine if there is a match.+--+-- 'description', 'pattern_description' - The description of the recommendation. This explains a potential+-- inefficiency in a profiled application.+--+-- 'id', 'pattern_id' - The universally unique identifier (UUID) of this pattern.+--+-- 'name', 'pattern_name' - The name for this pattern.+--+-- 'resolutionSteps', 'pattern_resolutionSteps' - A string that contains the steps recommended to address the potential+-- inefficiency.+--+-- 'targetFrames', 'pattern_targetFrames' - A list of frame names that were searched during the analysis that+-- generated a recommendation.+--+-- 'thresholdPercent', 'pattern_thresholdPercent' - The percentage of time an application spends in one method that triggers+-- a recommendation. The percentage of time is the same as the percentage+-- of the total gathered sample counts during analysis.+newPattern ::+  Pattern+newPattern =+  Pattern'+    { countersToAggregate = Prelude.Nothing,+      description = Prelude.Nothing,+      id = Prelude.Nothing,+      name = Prelude.Nothing,+      resolutionSteps = Prelude.Nothing,+      targetFrames = Prelude.Nothing,+      thresholdPercent = Prelude.Nothing+    }++-- | A list of the different counters used to determine if there is a match.+pattern_countersToAggregate :: Lens.Lens' Pattern (Prelude.Maybe [Prelude.Text])+pattern_countersToAggregate = Lens.lens (\Pattern' {countersToAggregate} -> countersToAggregate) (\s@Pattern' {} a -> s {countersToAggregate = a} :: Pattern) Prelude.. Lens.mapping Lens.coerced++-- | The description of the recommendation. This explains a potential+-- inefficiency in a profiled application.+pattern_description :: Lens.Lens' Pattern (Prelude.Maybe Prelude.Text)+pattern_description = Lens.lens (\Pattern' {description} -> description) (\s@Pattern' {} a -> s {description = a} :: Pattern)++-- | The universally unique identifier (UUID) of this pattern.+pattern_id :: Lens.Lens' Pattern (Prelude.Maybe Prelude.Text)+pattern_id = Lens.lens (\Pattern' {id} -> id) (\s@Pattern' {} a -> s {id = a} :: Pattern)++-- | The name for this pattern.+pattern_name :: Lens.Lens' Pattern (Prelude.Maybe Prelude.Text)+pattern_name = Lens.lens (\Pattern' {name} -> name) (\s@Pattern' {} a -> s {name = a} :: Pattern)++-- | A string that contains the steps recommended to address the potential+-- inefficiency.+pattern_resolutionSteps :: Lens.Lens' Pattern (Prelude.Maybe Prelude.Text)+pattern_resolutionSteps = Lens.lens (\Pattern' {resolutionSteps} -> resolutionSteps) (\s@Pattern' {} a -> s {resolutionSteps = a} :: Pattern)++-- | A list of frame names that were searched during the analysis that+-- generated a recommendation.+pattern_targetFrames :: Lens.Lens' Pattern (Prelude.Maybe [[Prelude.Text]])+pattern_targetFrames = Lens.lens (\Pattern' {targetFrames} -> targetFrames) (\s@Pattern' {} a -> s {targetFrames = a} :: Pattern) Prelude.. Lens.mapping Lens.coerced++-- | The percentage of time an application spends in one method that triggers+-- a recommendation. The percentage of time is the same as the percentage+-- of the total gathered sample counts during analysis.+pattern_thresholdPercent :: Lens.Lens' Pattern (Prelude.Maybe Prelude.Double)+pattern_thresholdPercent = Lens.lens (\Pattern' {thresholdPercent} -> thresholdPercent) (\s@Pattern' {} a -> s {thresholdPercent = a} :: Pattern)++instance Data.FromJSON Pattern where+  parseJSON =+    Data.withObject+      "Pattern"+      ( \x ->+          Pattern'+            Prelude.<$> ( x+                            Data..:? "countersToAggregate"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "id")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "resolutionSteps")+            Prelude.<*> (x Data..:? "targetFrames" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "thresholdPercent")+      )++instance Prelude.Hashable Pattern where+  hashWithSalt _salt Pattern' {..} =+    _salt+      `Prelude.hashWithSalt` countersToAggregate+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` resolutionSteps+      `Prelude.hashWithSalt` targetFrames+      `Prelude.hashWithSalt` thresholdPercent++instance Prelude.NFData Pattern where+  rnf Pattern' {..} =+    Prelude.rnf countersToAggregate+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf resolutionSteps+      `Prelude.seq` Prelude.rnf targetFrames+      `Prelude.seq` Prelude.rnf thresholdPercent
+ gen/Amazonka/CodeGuruProfiler/Types/ProfileTime.hs view
@@ -0,0 +1,73 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.ProfileTime+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.ProfileTime where++import qualified 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 start time of a profile.+--+-- /See:/ 'newProfileTime' smart constructor.+data ProfileTime = ProfileTime'+  { -- | The start time of a profile. It is specified using the ISO 8601 format.+    -- For example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June+    -- 1, 2020 1:15:02 PM UTC.+    start :: Prelude.Maybe Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProfileTime' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'start', 'profileTime_start' - The start time of a profile. It is specified using the ISO 8601 format.+-- For example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June+-- 1, 2020 1:15:02 PM UTC.+newProfileTime ::+  ProfileTime+newProfileTime =+  ProfileTime' {start = Prelude.Nothing}++-- | The start time of a profile. It is specified using the ISO 8601 format.+-- For example, 2020-06-01T13:15:02.001Z represents 1 millisecond past June+-- 1, 2020 1:15:02 PM UTC.+profileTime_start :: Lens.Lens' ProfileTime (Prelude.Maybe Prelude.UTCTime)+profileTime_start = Lens.lens (\ProfileTime' {start} -> start) (\s@ProfileTime' {} a -> s {start = a} :: ProfileTime) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON ProfileTime where+  parseJSON =+    Data.withObject+      "ProfileTime"+      ( \x ->+          ProfileTime' Prelude.<$> (x Data..:? "start")+      )++instance Prelude.Hashable ProfileTime where+  hashWithSalt _salt ProfileTime' {..} =+    _salt `Prelude.hashWithSalt` start++instance Prelude.NFData ProfileTime where+  rnf ProfileTime' {..} = Prelude.rnf start
+ gen/Amazonka/CodeGuruProfiler/Types/ProfilingGroupDescription.hs view
@@ -0,0 +1,205 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.ProfilingGroupDescription+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.ProfilingGroupDescription where++import Amazonka.CodeGuruProfiler.Types.AgentOrchestrationConfig+import Amazonka.CodeGuruProfiler.Types.ComputePlatform+import Amazonka.CodeGuruProfiler.Types.ProfilingStatus+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a profiling group.+--+-- /See:/ 'newProfilingGroupDescription' smart constructor.+data ProfilingGroupDescription = ProfilingGroupDescription'+  { -- | An+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AgentOrchestrationConfig.html AgentOrchestrationConfig>+    -- object that indicates if the profiling group is enabled for profiled or+    -- not.+    agentOrchestrationConfig :: Prelude.Maybe AgentOrchestrationConfig,+    -- | The Amazon Resource Name (ARN) identifying the profiling group resource.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The compute platform of the profiling group. If it is set to+    -- @AWSLambda@, then the profiled application runs on AWS Lambda. If it is+    -- set to @Default@, then the profiled application runs on a compute+    -- platform that is not AWS Lambda, such an Amazon EC2 instance, an+    -- on-premises server, or a different platform. The default is @Default@.+    computePlatform :: Prelude.Maybe ComputePlatform,+    -- | The time when the profiling group was created. Specify using the ISO+    -- 8601 format. For example, 2020-06-01T13:15:02.001Z represents 1+    -- millisecond past June 1, 2020 1:15:02 PM UTC.+    createdAt :: Prelude.Maybe Data.ISO8601,+    -- | The name of the profiling group.+    name :: Prelude.Maybe Prelude.Text,+    -- | A+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingStatus.html ProfilingStatus>+    -- object that includes information about the last time a profile agent+    -- pinged back, the last time a profile was received, and the aggregation+    -- period and start time for the most recent aggregated profile.+    profilingStatus :: Prelude.Maybe ProfilingStatus,+    -- | A list of the tags that belong to this profiling group.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The date and time when the profiling group was last updated. Specify+    -- using the ISO 8601 format. For example, 2020-06-01T13:15:02.001Z+    -- represents 1 millisecond past June 1, 2020 1:15:02 PM UTC.+    updatedAt :: Prelude.Maybe Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProfilingGroupDescription' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'agentOrchestrationConfig', 'profilingGroupDescription_agentOrchestrationConfig' - An+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AgentOrchestrationConfig.html AgentOrchestrationConfig>+-- object that indicates if the profiling group is enabled for profiled or+-- not.+--+-- 'arn', 'profilingGroupDescription_arn' - The Amazon Resource Name (ARN) identifying the profiling group resource.+--+-- 'computePlatform', 'profilingGroupDescription_computePlatform' - The compute platform of the profiling group. If it is set to+-- @AWSLambda@, then the profiled application runs on AWS Lambda. If it is+-- set to @Default@, then the profiled application runs on a compute+-- platform that is not AWS Lambda, such an Amazon EC2 instance, an+-- on-premises server, or a different platform. The default is @Default@.+--+-- 'createdAt', 'profilingGroupDescription_createdAt' - The time when the profiling group was created. Specify using the ISO+-- 8601 format. For example, 2020-06-01T13:15:02.001Z represents 1+-- millisecond past June 1, 2020 1:15:02 PM UTC.+--+-- 'name', 'profilingGroupDescription_name' - The name of the profiling group.+--+-- 'profilingStatus', 'profilingGroupDescription_profilingStatus' - A+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingStatus.html ProfilingStatus>+-- object that includes information about the last time a profile agent+-- pinged back, the last time a profile was received, and the aggregation+-- period and start time for the most recent aggregated profile.+--+-- 'tags', 'profilingGroupDescription_tags' - A list of the tags that belong to this profiling group.+--+-- 'updatedAt', 'profilingGroupDescription_updatedAt' - The date and time when the profiling group was last updated. Specify+-- using the ISO 8601 format. For example, 2020-06-01T13:15:02.001Z+-- represents 1 millisecond past June 1, 2020 1:15:02 PM UTC.+newProfilingGroupDescription ::+  ProfilingGroupDescription+newProfilingGroupDescription =+  ProfilingGroupDescription'+    { agentOrchestrationConfig =+        Prelude.Nothing,+      arn = Prelude.Nothing,+      computePlatform = Prelude.Nothing,+      createdAt = Prelude.Nothing,+      name = Prelude.Nothing,+      profilingStatus = Prelude.Nothing,+      tags = Prelude.Nothing,+      updatedAt = Prelude.Nothing+    }++-- | An+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AgentOrchestrationConfig.html AgentOrchestrationConfig>+-- object that indicates if the profiling group is enabled for profiled or+-- not.+profilingGroupDescription_agentOrchestrationConfig :: Lens.Lens' ProfilingGroupDescription (Prelude.Maybe AgentOrchestrationConfig)+profilingGroupDescription_agentOrchestrationConfig = Lens.lens (\ProfilingGroupDescription' {agentOrchestrationConfig} -> agentOrchestrationConfig) (\s@ProfilingGroupDescription' {} a -> s {agentOrchestrationConfig = a} :: ProfilingGroupDescription)++-- | The Amazon Resource Name (ARN) identifying the profiling group resource.+profilingGroupDescription_arn :: Lens.Lens' ProfilingGroupDescription (Prelude.Maybe Prelude.Text)+profilingGroupDescription_arn = Lens.lens (\ProfilingGroupDescription' {arn} -> arn) (\s@ProfilingGroupDescription' {} a -> s {arn = a} :: ProfilingGroupDescription)++-- | The compute platform of the profiling group. If it is set to+-- @AWSLambda@, then the profiled application runs on AWS Lambda. If it is+-- set to @Default@, then the profiled application runs on a compute+-- platform that is not AWS Lambda, such an Amazon EC2 instance, an+-- on-premises server, or a different platform. The default is @Default@.+profilingGroupDescription_computePlatform :: Lens.Lens' ProfilingGroupDescription (Prelude.Maybe ComputePlatform)+profilingGroupDescription_computePlatform = Lens.lens (\ProfilingGroupDescription' {computePlatform} -> computePlatform) (\s@ProfilingGroupDescription' {} a -> s {computePlatform = a} :: ProfilingGroupDescription)++-- | The time when the profiling group was created. Specify using the ISO+-- 8601 format. For example, 2020-06-01T13:15:02.001Z represents 1+-- millisecond past June 1, 2020 1:15:02 PM UTC.+profilingGroupDescription_createdAt :: Lens.Lens' ProfilingGroupDescription (Prelude.Maybe Prelude.UTCTime)+profilingGroupDescription_createdAt = Lens.lens (\ProfilingGroupDescription' {createdAt} -> createdAt) (\s@ProfilingGroupDescription' {} a -> s {createdAt = a} :: ProfilingGroupDescription) Prelude.. Lens.mapping Data._Time++-- | The name of the profiling group.+profilingGroupDescription_name :: Lens.Lens' ProfilingGroupDescription (Prelude.Maybe Prelude.Text)+profilingGroupDescription_name = Lens.lens (\ProfilingGroupDescription' {name} -> name) (\s@ProfilingGroupDescription' {} a -> s {name = a} :: ProfilingGroupDescription)++-- | A+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingStatus.html ProfilingStatus>+-- object that includes information about the last time a profile agent+-- pinged back, the last time a profile was received, and the aggregation+-- period and start time for the most recent aggregated profile.+profilingGroupDescription_profilingStatus :: Lens.Lens' ProfilingGroupDescription (Prelude.Maybe ProfilingStatus)+profilingGroupDescription_profilingStatus = Lens.lens (\ProfilingGroupDescription' {profilingStatus} -> profilingStatus) (\s@ProfilingGroupDescription' {} a -> s {profilingStatus = a} :: ProfilingGroupDescription)++-- | A list of the tags that belong to this profiling group.+profilingGroupDescription_tags :: Lens.Lens' ProfilingGroupDescription (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+profilingGroupDescription_tags = Lens.lens (\ProfilingGroupDescription' {tags} -> tags) (\s@ProfilingGroupDescription' {} a -> s {tags = a} :: ProfilingGroupDescription) Prelude.. Lens.mapping Lens.coerced++-- | The date and time when the profiling group was last updated. Specify+-- using the ISO 8601 format. For example, 2020-06-01T13:15:02.001Z+-- represents 1 millisecond past June 1, 2020 1:15:02 PM UTC.+profilingGroupDescription_updatedAt :: Lens.Lens' ProfilingGroupDescription (Prelude.Maybe Prelude.UTCTime)+profilingGroupDescription_updatedAt = Lens.lens (\ProfilingGroupDescription' {updatedAt} -> updatedAt) (\s@ProfilingGroupDescription' {} a -> s {updatedAt = a} :: ProfilingGroupDescription) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON ProfilingGroupDescription where+  parseJSON =+    Data.withObject+      "ProfilingGroupDescription"+      ( \x ->+          ProfilingGroupDescription'+            Prelude.<$> (x Data..:? "agentOrchestrationConfig")+            Prelude.<*> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "computePlatform")+            Prelude.<*> (x Data..:? "createdAt")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "profilingStatus")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "updatedAt")+      )++instance Prelude.Hashable ProfilingGroupDescription where+  hashWithSalt _salt ProfilingGroupDescription' {..} =+    _salt+      `Prelude.hashWithSalt` agentOrchestrationConfig+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` computePlatform+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` profilingStatus+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` updatedAt++instance Prelude.NFData ProfilingGroupDescription where+  rnf ProfilingGroupDescription' {..} =+    Prelude.rnf agentOrchestrationConfig+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf computePlatform+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf profilingStatus+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf updatedAt
+ gen/Amazonka/CodeGuruProfiler/Types/ProfilingStatus.hs view
@@ -0,0 +1,122 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.ProfilingStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.ProfilingStatus where++import Amazonka.CodeGuruProfiler.Types.AggregatedProfileTime+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Profiling status includes information about the last time a profile+-- agent pinged back, the last time a profile was received, and the+-- aggregation period and start time for the most recent aggregated+-- profile.+--+-- /See:/ 'newProfilingStatus' smart constructor.+data ProfilingStatus = ProfilingStatus'+  { -- | The date and time when the profiling agent most recently pinged back.+    -- Specify using the ISO 8601 format. For example, 2020-06-01T13:15:02.001Z+    -- represents 1 millisecond past June 1, 2020 1:15:02 PM UTC.+    latestAgentOrchestratedAt :: Prelude.Maybe Data.ISO8601,+    -- | The date and time when the most recent profile was received. Specify+    -- using the ISO 8601 format. For example, 2020-06-01T13:15:02.001Z+    -- represents 1 millisecond past June 1, 2020 1:15:02 PM UTC.+    latestAgentProfileReportedAt :: Prelude.Maybe Data.ISO8601,+    -- | An+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AggregatedProfileTime.html AggregatedProfileTime>+    -- object that contains the aggregation period and start time for an+    -- aggregated profile.+    latestAggregatedProfile :: Prelude.Maybe AggregatedProfileTime+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProfilingStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'latestAgentOrchestratedAt', 'profilingStatus_latestAgentOrchestratedAt' - The date and time when the profiling agent most recently pinged back.+-- Specify using the ISO 8601 format. For example, 2020-06-01T13:15:02.001Z+-- represents 1 millisecond past June 1, 2020 1:15:02 PM UTC.+--+-- 'latestAgentProfileReportedAt', 'profilingStatus_latestAgentProfileReportedAt' - The date and time when the most recent profile was received. Specify+-- using the ISO 8601 format. For example, 2020-06-01T13:15:02.001Z+-- represents 1 millisecond past June 1, 2020 1:15:02 PM UTC.+--+-- 'latestAggregatedProfile', 'profilingStatus_latestAggregatedProfile' - An+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AggregatedProfileTime.html AggregatedProfileTime>+-- object that contains the aggregation period and start time for an+-- aggregated profile.+newProfilingStatus ::+  ProfilingStatus+newProfilingStatus =+  ProfilingStatus'+    { latestAgentOrchestratedAt =+        Prelude.Nothing,+      latestAgentProfileReportedAt = Prelude.Nothing,+      latestAggregatedProfile = Prelude.Nothing+    }++-- | The date and time when the profiling agent most recently pinged back.+-- Specify using the ISO 8601 format. For example, 2020-06-01T13:15:02.001Z+-- represents 1 millisecond past June 1, 2020 1:15:02 PM UTC.+profilingStatus_latestAgentOrchestratedAt :: Lens.Lens' ProfilingStatus (Prelude.Maybe Prelude.UTCTime)+profilingStatus_latestAgentOrchestratedAt = Lens.lens (\ProfilingStatus' {latestAgentOrchestratedAt} -> latestAgentOrchestratedAt) (\s@ProfilingStatus' {} a -> s {latestAgentOrchestratedAt = a} :: ProfilingStatus) Prelude.. Lens.mapping Data._Time++-- | The date and time when the most recent profile was received. Specify+-- using the ISO 8601 format. For example, 2020-06-01T13:15:02.001Z+-- represents 1 millisecond past June 1, 2020 1:15:02 PM UTC.+profilingStatus_latestAgentProfileReportedAt :: Lens.Lens' ProfilingStatus (Prelude.Maybe Prelude.UTCTime)+profilingStatus_latestAgentProfileReportedAt = Lens.lens (\ProfilingStatus' {latestAgentProfileReportedAt} -> latestAgentProfileReportedAt) (\s@ProfilingStatus' {} a -> s {latestAgentProfileReportedAt = a} :: ProfilingStatus) Prelude.. Lens.mapping Data._Time++-- | An+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AggregatedProfileTime.html AggregatedProfileTime>+-- object that contains the aggregation period and start time for an+-- aggregated profile.+profilingStatus_latestAggregatedProfile :: Lens.Lens' ProfilingStatus (Prelude.Maybe AggregatedProfileTime)+profilingStatus_latestAggregatedProfile = Lens.lens (\ProfilingStatus' {latestAggregatedProfile} -> latestAggregatedProfile) (\s@ProfilingStatus' {} a -> s {latestAggregatedProfile = a} :: ProfilingStatus)++instance Data.FromJSON ProfilingStatus where+  parseJSON =+    Data.withObject+      "ProfilingStatus"+      ( \x ->+          ProfilingStatus'+            Prelude.<$> (x Data..:? "latestAgentOrchestratedAt")+            Prelude.<*> (x Data..:? "latestAgentProfileReportedAt")+            Prelude.<*> (x Data..:? "latestAggregatedProfile")+      )++instance Prelude.Hashable ProfilingStatus where+  hashWithSalt _salt ProfilingStatus' {..} =+    _salt+      `Prelude.hashWithSalt` latestAgentOrchestratedAt+      `Prelude.hashWithSalt` latestAgentProfileReportedAt+      `Prelude.hashWithSalt` latestAggregatedProfile++instance Prelude.NFData ProfilingStatus where+  rnf ProfilingStatus' {..} =+    Prelude.rnf latestAgentOrchestratedAt+      `Prelude.seq` Prelude.rnf latestAgentProfileReportedAt+      `Prelude.seq` Prelude.rnf latestAggregatedProfile
+ gen/Amazonka/CodeGuruProfiler/Types/Recommendation.hs view
@@ -0,0 +1,172 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.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.CodeGuruProfiler.Types.Recommendation where++import Amazonka.CodeGuruProfiler.Types.Match+import Amazonka.CodeGuruProfiler.Types.Pattern+import qualified 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 potential improvement that was found from analyzing the profiling+-- data.+--+-- /See:/ 'newRecommendation' smart constructor.+data Recommendation = Recommendation'+  { -- | How many different places in the profile graph triggered a match.+    allMatchesCount :: Prelude.Int,+    -- | How much of the total sample count is potentially affected.+    allMatchesSum :: Prelude.Double,+    -- | End time of the profile that was used by this analysis. This is+    -- specified using the ISO 8601 format. For example,+    -- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+    -- 1:15:02 PM UTC.+    endTime :: Data.ISO8601,+    -- | The pattern that analysis recognized in the profile to make this+    -- recommendation.+    pattern' :: Pattern,+    -- | The start time of the profile that was used by this analysis. This is+    -- specified using the ISO 8601 format. For example,+    -- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+    -- 1:15:02 PM UTC.+    startTime :: Data.ISO8601,+    -- | List of the matches with most impact.+    topMatches :: [Match]+  }+  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:+--+-- 'allMatchesCount', 'recommendation_allMatchesCount' - How many different places in the profile graph triggered a match.+--+-- 'allMatchesSum', 'recommendation_allMatchesSum' - How much of the total sample count is potentially affected.+--+-- 'endTime', 'recommendation_endTime' - End time of the profile that was used by this analysis. This is+-- specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+--+-- 'pattern'', 'recommendation_pattern' - The pattern that analysis recognized in the profile to make this+-- recommendation.+--+-- 'startTime', 'recommendation_startTime' - The start time of the profile that was used by this analysis. This is+-- specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+--+-- 'topMatches', 'recommendation_topMatches' - List of the matches with most impact.+newRecommendation ::+  -- | 'allMatchesCount'+  Prelude.Int ->+  -- | 'allMatchesSum'+  Prelude.Double ->+  -- | 'endTime'+  Prelude.UTCTime ->+  -- | 'pattern''+  Pattern ->+  -- | 'startTime'+  Prelude.UTCTime ->+  Recommendation+newRecommendation+  pAllMatchesCount_+  pAllMatchesSum_+  pEndTime_+  pPattern_+  pStartTime_ =+    Recommendation'+      { allMatchesCount =+          pAllMatchesCount_,+        allMatchesSum = pAllMatchesSum_,+        endTime = Data._Time Lens.# pEndTime_,+        pattern' = pPattern_,+        startTime = Data._Time Lens.# pStartTime_,+        topMatches = Prelude.mempty+      }++-- | How many different places in the profile graph triggered a match.+recommendation_allMatchesCount :: Lens.Lens' Recommendation Prelude.Int+recommendation_allMatchesCount = Lens.lens (\Recommendation' {allMatchesCount} -> allMatchesCount) (\s@Recommendation' {} a -> s {allMatchesCount = a} :: Recommendation)++-- | How much of the total sample count is potentially affected.+recommendation_allMatchesSum :: Lens.Lens' Recommendation Prelude.Double+recommendation_allMatchesSum = Lens.lens (\Recommendation' {allMatchesSum} -> allMatchesSum) (\s@Recommendation' {} a -> s {allMatchesSum = a} :: Recommendation)++-- | End time of the profile that was used by this analysis. This is+-- specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+recommendation_endTime :: Lens.Lens' Recommendation Prelude.UTCTime+recommendation_endTime = Lens.lens (\Recommendation' {endTime} -> endTime) (\s@Recommendation' {} a -> s {endTime = a} :: Recommendation) Prelude.. Data._Time++-- | The pattern that analysis recognized in the profile to make this+-- recommendation.+recommendation_pattern :: Lens.Lens' Recommendation Pattern+recommendation_pattern = Lens.lens (\Recommendation' {pattern'} -> pattern') (\s@Recommendation' {} a -> s {pattern' = a} :: Recommendation)++-- | The start time of the profile that was used by this analysis. This is+-- specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+recommendation_startTime :: Lens.Lens' Recommendation Prelude.UTCTime+recommendation_startTime = Lens.lens (\Recommendation' {startTime} -> startTime) (\s@Recommendation' {} a -> s {startTime = a} :: Recommendation) Prelude.. Data._Time++-- | List of the matches with most impact.+recommendation_topMatches :: Lens.Lens' Recommendation [Match]+recommendation_topMatches = Lens.lens (\Recommendation' {topMatches} -> topMatches) (\s@Recommendation' {} a -> s {topMatches = a} :: Recommendation) Prelude.. Lens.coerced++instance Data.FromJSON Recommendation where+  parseJSON =+    Data.withObject+      "Recommendation"+      ( \x ->+          Recommendation'+            Prelude.<$> (x Data..: "allMatchesCount")+            Prelude.<*> (x Data..: "allMatchesSum")+            Prelude.<*> (x Data..: "endTime")+            Prelude.<*> (x Data..: "pattern")+            Prelude.<*> (x Data..: "startTime")+            Prelude.<*> (x Data..:? "topMatches" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable Recommendation where+  hashWithSalt _salt Recommendation' {..} =+    _salt+      `Prelude.hashWithSalt` allMatchesCount+      `Prelude.hashWithSalt` allMatchesSum+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` pattern'+      `Prelude.hashWithSalt` startTime+      `Prelude.hashWithSalt` topMatches++instance Prelude.NFData Recommendation where+  rnf Recommendation' {..} =+    Prelude.rnf allMatchesCount+      `Prelude.seq` Prelude.rnf allMatchesSum+      `Prelude.seq` Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf pattern'+      `Prelude.seq` Prelude.rnf startTime+      `Prelude.seq` Prelude.rnf topMatches
+ gen/Amazonka/CodeGuruProfiler/Types/TimestampStructure.hs view
@@ -0,0 +1,80 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.TimestampStructure+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.TimestampStructure where++import qualified 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 data type that contains a @Timestamp@ object. This is specified using+-- the ISO 8601 format. For example, 2020-06-01T13:15:02.001Z represents 1+-- millisecond past June 1, 2020 1:15:02 PM UTC.+--+-- /See:/ 'newTimestampStructure' smart constructor.+data TimestampStructure = TimestampStructure'+  { -- | A @Timestamp@. This is specified using the ISO 8601 format. For example,+    -- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+    -- 1:15:02 PM UTC.+    value :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TimestampStructure' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'timestampStructure_value' - A @Timestamp@. This is specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+newTimestampStructure ::+  -- | 'value'+  Prelude.UTCTime ->+  TimestampStructure+newTimestampStructure pValue_ =+  TimestampStructure'+    { value =+        Data._Time Lens.# pValue_+    }++-- | A @Timestamp@. This is specified using the ISO 8601 format. For example,+-- 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020+-- 1:15:02 PM UTC.+timestampStructure_value :: Lens.Lens' TimestampStructure Prelude.UTCTime+timestampStructure_value = Lens.lens (\TimestampStructure' {value} -> value) (\s@TimestampStructure' {} a -> s {value = a} :: TimestampStructure) Prelude.. Data._Time++instance Data.FromJSON TimestampStructure where+  parseJSON =+    Data.withObject+      "TimestampStructure"+      ( \x ->+          TimestampStructure' Prelude.<$> (x Data..: "value")+      )++instance Prelude.Hashable TimestampStructure where+  hashWithSalt _salt TimestampStructure' {..} =+    _salt `Prelude.hashWithSalt` value++instance Prelude.NFData TimestampStructure where+  rnf TimestampStructure' {..} = Prelude.rnf value
+ gen/Amazonka/CodeGuruProfiler/Types/UserFeedback.hs view
@@ -0,0 +1,73 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.Types.UserFeedback+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.CodeGuruProfiler.Types.UserFeedback where++import Amazonka.CodeGuruProfiler.Types.FeedbackType+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Feedback that can be submitted for each instance of an anomaly by the+-- user. Feedback is be used for improvements in generating recommendations+-- for the application.+--+-- /See:/ 'newUserFeedback' smart constructor.+data UserFeedback = UserFeedback'+  { -- | Optional @Positive@ or @Negative@ feedback submitted by the user about+    -- whether the recommendation is useful or not.+    type' :: FeedbackType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UserFeedback' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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'', 'userFeedback_type' - Optional @Positive@ or @Negative@ feedback submitted by the user about+-- whether the recommendation is useful or not.+newUserFeedback ::+  -- | 'type''+  FeedbackType ->+  UserFeedback+newUserFeedback pType_ =+  UserFeedback' {type' = pType_}++-- | Optional @Positive@ or @Negative@ feedback submitted by the user about+-- whether the recommendation is useful or not.+userFeedback_type :: Lens.Lens' UserFeedback FeedbackType+userFeedback_type = Lens.lens (\UserFeedback' {type'} -> type') (\s@UserFeedback' {} a -> s {type' = a} :: UserFeedback)++instance Data.FromJSON UserFeedback where+  parseJSON =+    Data.withObject+      "UserFeedback"+      (\x -> UserFeedback' Prelude.<$> (x Data..: "type"))++instance Prelude.Hashable UserFeedback where+  hashWithSalt _salt UserFeedback' {..} =+    _salt `Prelude.hashWithSalt` type'++instance Prelude.NFData UserFeedback where+  rnf UserFeedback' {..} = Prelude.rnf type'
+ gen/Amazonka/CodeGuruProfiler/UntagResource.hs view
@@ -0,0 +1,167 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.CodeGuruProfiler.UntagResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Use to remove one or more tags from a resource.+module Amazonka.CodeGuruProfiler.UntagResource+  ( -- * Creating a Request+    UntagResource (..),+    newUntagResource,++    -- * Request Lenses+    untagResource_resourceArn,+    untagResource_tagKeys,++    -- * Destructuring the Response+    UntagResourceResponse (..),+    newUntagResourceResponse,++    -- * Response Lenses+    untagResourceResponse_httpStatus,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUntagResource' smart constructor.+data UntagResource = UntagResource'+  { -- | The Amazon Resource Name (ARN) of the resource that contains the tags to+    -- remove.+    resourceArn :: Prelude.Text,+    -- | A list of tag keys. Existing tags of resources with keys in this list+    -- are removed from the specified resource.+    tagKeys :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that contains the tags to+-- remove.+--+-- 'tagKeys', 'untagResource_tagKeys' - A list of tag keys. Existing tags of resources with keys in this list+-- are removed from the specified resource.+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the resource that contains the tags to+-- remove.+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | A list of tag keys. Existing tags of resources with keys in this list+-- are removed from the specified resource.+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced++instance Core.AWSRequest UntagResource where+  type+    AWSResponse UntagResource =+      UntagResourceResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UntagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UntagResource where+  hashWithSalt _salt UntagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tagKeys++instance Prelude.NFData UntagResource where+  rnf UntagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tagKeys++instance Data.ToHeaders UntagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath UntagResource where+  toPath UntagResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery UntagResource where+  toQuery UntagResource' {..} =+    Prelude.mconcat+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]++-- | /See:/ 'newUntagResourceResponse' smart constructor.+data UntagResourceResponse = UntagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.+newUntagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UntagResourceResponse+newUntagResourceResponse pHttpStatus_ =+  UntagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)++instance Prelude.NFData UntagResourceResponse where+  rnf UntagResourceResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/CodeGuruProfiler/UpdateProfilingGroup.hs view
@@ -0,0 +1,208 @@+{-# 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.CodeGuruProfiler.UpdateProfilingGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates a profiling group.+module Amazonka.CodeGuruProfiler.UpdateProfilingGroup+  ( -- * Creating a Request+    UpdateProfilingGroup (..),+    newUpdateProfilingGroup,++    -- * Request Lenses+    updateProfilingGroup_agentOrchestrationConfig,+    updateProfilingGroup_profilingGroupName,++    -- * Destructuring the Response+    UpdateProfilingGroupResponse (..),+    newUpdateProfilingGroupResponse,++    -- * Response Lenses+    updateProfilingGroupResponse_httpStatus,+    updateProfilingGroupResponse_profilingGroup,+  )+where++import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | The structure representing the updateProfilingGroupRequest.+--+-- /See:/ 'newUpdateProfilingGroup' smart constructor.+data UpdateProfilingGroup = UpdateProfilingGroup'+  { -- | Specifies whether profiling is enabled or disabled for a profiling+    -- group.+    agentOrchestrationConfig :: AgentOrchestrationConfig,+    -- | The name of the profiling group to update.+    profilingGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateProfilingGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'agentOrchestrationConfig', 'updateProfilingGroup_agentOrchestrationConfig' - Specifies whether profiling is enabled or disabled for a profiling+-- group.+--+-- 'profilingGroupName', 'updateProfilingGroup_profilingGroupName' - The name of the profiling group to update.+newUpdateProfilingGroup ::+  -- | 'agentOrchestrationConfig'+  AgentOrchestrationConfig ->+  -- | 'profilingGroupName'+  Prelude.Text ->+  UpdateProfilingGroup+newUpdateProfilingGroup+  pAgentOrchestrationConfig_+  pProfilingGroupName_ =+    UpdateProfilingGroup'+      { agentOrchestrationConfig =+          pAgentOrchestrationConfig_,+        profilingGroupName = pProfilingGroupName_+      }++-- | Specifies whether profiling is enabled or disabled for a profiling+-- group.+updateProfilingGroup_agentOrchestrationConfig :: Lens.Lens' UpdateProfilingGroup AgentOrchestrationConfig+updateProfilingGroup_agentOrchestrationConfig = Lens.lens (\UpdateProfilingGroup' {agentOrchestrationConfig} -> agentOrchestrationConfig) (\s@UpdateProfilingGroup' {} a -> s {agentOrchestrationConfig = a} :: UpdateProfilingGroup)++-- | The name of the profiling group to update.+updateProfilingGroup_profilingGroupName :: Lens.Lens' UpdateProfilingGroup Prelude.Text+updateProfilingGroup_profilingGroupName = Lens.lens (\UpdateProfilingGroup' {profilingGroupName} -> profilingGroupName) (\s@UpdateProfilingGroup' {} a -> s {profilingGroupName = a} :: UpdateProfilingGroup)++instance Core.AWSRequest UpdateProfilingGroup where+  type+    AWSResponse UpdateProfilingGroup =+      UpdateProfilingGroupResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateProfilingGroupResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable UpdateProfilingGroup where+  hashWithSalt _salt UpdateProfilingGroup' {..} =+    _salt+      `Prelude.hashWithSalt` agentOrchestrationConfig+      `Prelude.hashWithSalt` profilingGroupName++instance Prelude.NFData UpdateProfilingGroup where+  rnf UpdateProfilingGroup' {..} =+    Prelude.rnf agentOrchestrationConfig+      `Prelude.seq` Prelude.rnf profilingGroupName++instance Data.ToHeaders UpdateProfilingGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateProfilingGroup where+  toJSON UpdateProfilingGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "agentOrchestrationConfig"+                  Data..= agentOrchestrationConfig+              )+          ]+      )++instance Data.ToPath UpdateProfilingGroup where+  toPath UpdateProfilingGroup' {..} =+    Prelude.mconcat+      ["/profilingGroups/", Data.toBS profilingGroupName]++instance Data.ToQuery UpdateProfilingGroup where+  toQuery = Prelude.const Prelude.mempty++-- | The structure representing the updateProfilingGroupResponse.+--+-- /See:/ 'newUpdateProfilingGroupResponse' smart constructor.+data UpdateProfilingGroupResponse = UpdateProfilingGroupResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A+    -- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+    -- that contains information about the returned updated profiling group.+    profilingGroup :: ProfilingGroupDescription+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateProfilingGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateProfilingGroupResponse_httpStatus' - The response's http status code.+--+-- 'profilingGroup', 'updateProfilingGroupResponse_profilingGroup' - A+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- that contains information about the returned updated profiling group.+newUpdateProfilingGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'profilingGroup'+  ProfilingGroupDescription ->+  UpdateProfilingGroupResponse+newUpdateProfilingGroupResponse+  pHttpStatus_+  pProfilingGroup_ =+    UpdateProfilingGroupResponse'+      { httpStatus =+          pHttpStatus_,+        profilingGroup = pProfilingGroup_+      }++-- | The response's http status code.+updateProfilingGroupResponse_httpStatus :: Lens.Lens' UpdateProfilingGroupResponse Prelude.Int+updateProfilingGroupResponse_httpStatus = Lens.lens (\UpdateProfilingGroupResponse' {httpStatus} -> httpStatus) (\s@UpdateProfilingGroupResponse' {} a -> s {httpStatus = a} :: UpdateProfilingGroupResponse)++-- | A+-- <https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ProfilingGroupDescription.html ProfilingGroupDescription>+-- that contains information about the returned updated profiling group.+updateProfilingGroupResponse_profilingGroup :: Lens.Lens' UpdateProfilingGroupResponse ProfilingGroupDescription+updateProfilingGroupResponse_profilingGroup = Lens.lens (\UpdateProfilingGroupResponse' {profilingGroup} -> profilingGroup) (\s@UpdateProfilingGroupResponse' {} a -> s {profilingGroup = a} :: UpdateProfilingGroupResponse)++instance Prelude.NFData UpdateProfilingGroupResponse where+  rnf UpdateProfilingGroupResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf profilingGroup
+ gen/Amazonka/CodeGuruProfiler/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.CodeGuruProfiler.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.CodeGuruProfiler.Waiters where++import Amazonka.CodeGuruProfiler.Lens+import Amazonka.CodeGuruProfiler.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+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.CodeGuruProfiler+import Test.Amazonka.CodeGuruProfiler.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "CodeGuruProfiler"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/CodeGuruProfiler.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.CodeGuruProfiler+-- Copyright   : (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.CodeGuruProfiler+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/CodeGuruProfiler/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.CodeGuruProfiler.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.CodeGuruProfiler.Internal where
+ test/Test/Amazonka/Gen/CodeGuruProfiler.hs view
@@ -0,0 +1,498 @@+{-# 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.CodeGuruProfiler+-- Copyright   : (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.CodeGuruProfiler where++import Amazonka.CodeGuruProfiler+import qualified Data.Proxy as Proxy+import Test.Amazonka.CodeGuruProfiler.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"+--         [ requestAddNotificationChannels $+--             newAddNotificationChannels+--+--         , requestBatchGetFrameMetricData $+--             newBatchGetFrameMetricData+--+--         , requestConfigureAgent $+--             newConfigureAgent+--+--         , requestCreateProfilingGroup $+--             newCreateProfilingGroup+--+--         , requestDeleteProfilingGroup $+--             newDeleteProfilingGroup+--+--         , requestDescribeProfilingGroup $+--             newDescribeProfilingGroup+--+--         , requestGetFindingsReportAccountSummary $+--             newGetFindingsReportAccountSummary+--+--         , requestGetNotificationConfiguration $+--             newGetNotificationConfiguration+--+--         , requestGetPolicy $+--             newGetPolicy+--+--         , requestGetProfile $+--             newGetProfile+--+--         , requestGetRecommendations $+--             newGetRecommendations+--+--         , requestListFindingsReports $+--             newListFindingsReports+--+--         , requestListProfileTimes $+--             newListProfileTimes+--+--         , requestListProfilingGroups $+--             newListProfilingGroups+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestPostAgentProfile $+--             newPostAgentProfile+--+--         , requestPutPermission $+--             newPutPermission+--+--         , requestRemoveNotificationChannel $+--             newRemoveNotificationChannel+--+--         , requestRemovePermission $+--             newRemovePermission+--+--         , requestSubmitFeedback $+--             newSubmitFeedback+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateProfilingGroup $+--             newUpdateProfilingGroup+--+--           ]++--     , testGroup "response"+--         [ responseAddNotificationChannels $+--             newAddNotificationChannelsResponse+--+--         , responseBatchGetFrameMetricData $+--             newBatchGetFrameMetricDataResponse+--+--         , responseConfigureAgent $+--             newConfigureAgentResponse+--+--         , responseCreateProfilingGroup $+--             newCreateProfilingGroupResponse+--+--         , responseDeleteProfilingGroup $+--             newDeleteProfilingGroupResponse+--+--         , responseDescribeProfilingGroup $+--             newDescribeProfilingGroupResponse+--+--         , responseGetFindingsReportAccountSummary $+--             newGetFindingsReportAccountSummaryResponse+--+--         , responseGetNotificationConfiguration $+--             newGetNotificationConfigurationResponse+--+--         , responseGetPolicy $+--             newGetPolicyResponse+--+--         , responseGetProfile $+--             newGetProfileResponse+--+--         , responseGetRecommendations $+--             newGetRecommendationsResponse+--+--         , responseListFindingsReports $+--             newListFindingsReportsResponse+--+--         , responseListProfileTimes $+--             newListProfileTimesResponse+--+--         , responseListProfilingGroups $+--             newListProfilingGroupsResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responsePostAgentProfile $+--             newPostAgentProfileResponse+--+--         , responsePutPermission $+--             newPutPermissionResponse+--+--         , responseRemoveNotificationChannel $+--             newRemoveNotificationChannelResponse+--+--         , responseRemovePermission $+--             newRemovePermissionResponse+--+--         , responseSubmitFeedback $+--             newSubmitFeedbackResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateProfilingGroup $+--             newUpdateProfilingGroupResponse+--+--           ]+--     ]++-- Requests++requestAddNotificationChannels :: AddNotificationChannels -> TestTree+requestAddNotificationChannels =+  req+    "AddNotificationChannels"+    "fixture/AddNotificationChannels.yaml"++requestBatchGetFrameMetricData :: BatchGetFrameMetricData -> TestTree+requestBatchGetFrameMetricData =+  req+    "BatchGetFrameMetricData"+    "fixture/BatchGetFrameMetricData.yaml"++requestConfigureAgent :: ConfigureAgent -> TestTree+requestConfigureAgent =+  req+    "ConfigureAgent"+    "fixture/ConfigureAgent.yaml"++requestCreateProfilingGroup :: CreateProfilingGroup -> TestTree+requestCreateProfilingGroup =+  req+    "CreateProfilingGroup"+    "fixture/CreateProfilingGroup.yaml"++requestDeleteProfilingGroup :: DeleteProfilingGroup -> TestTree+requestDeleteProfilingGroup =+  req+    "DeleteProfilingGroup"+    "fixture/DeleteProfilingGroup.yaml"++requestDescribeProfilingGroup :: DescribeProfilingGroup -> TestTree+requestDescribeProfilingGroup =+  req+    "DescribeProfilingGroup"+    "fixture/DescribeProfilingGroup.yaml"++requestGetFindingsReportAccountSummary :: GetFindingsReportAccountSummary -> TestTree+requestGetFindingsReportAccountSummary =+  req+    "GetFindingsReportAccountSummary"+    "fixture/GetFindingsReportAccountSummary.yaml"++requestGetNotificationConfiguration :: GetNotificationConfiguration -> TestTree+requestGetNotificationConfiguration =+  req+    "GetNotificationConfiguration"+    "fixture/GetNotificationConfiguration.yaml"++requestGetPolicy :: GetPolicy -> TestTree+requestGetPolicy =+  req+    "GetPolicy"+    "fixture/GetPolicy.yaml"++requestGetProfile :: GetProfile -> TestTree+requestGetProfile =+  req+    "GetProfile"+    "fixture/GetProfile.yaml"++requestGetRecommendations :: GetRecommendations -> TestTree+requestGetRecommendations =+  req+    "GetRecommendations"+    "fixture/GetRecommendations.yaml"++requestListFindingsReports :: ListFindingsReports -> TestTree+requestListFindingsReports =+  req+    "ListFindingsReports"+    "fixture/ListFindingsReports.yaml"++requestListProfileTimes :: ListProfileTimes -> TestTree+requestListProfileTimes =+  req+    "ListProfileTimes"+    "fixture/ListProfileTimes.yaml"++requestListProfilingGroups :: ListProfilingGroups -> TestTree+requestListProfilingGroups =+  req+    "ListProfilingGroups"+    "fixture/ListProfilingGroups.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestPostAgentProfile :: PostAgentProfile -> TestTree+requestPostAgentProfile =+  req+    "PostAgentProfile"+    "fixture/PostAgentProfile.yaml"++requestPutPermission :: PutPermission -> TestTree+requestPutPermission =+  req+    "PutPermission"+    "fixture/PutPermission.yaml"++requestRemoveNotificationChannel :: RemoveNotificationChannel -> TestTree+requestRemoveNotificationChannel =+  req+    "RemoveNotificationChannel"+    "fixture/RemoveNotificationChannel.yaml"++requestRemovePermission :: RemovePermission -> TestTree+requestRemovePermission =+  req+    "RemovePermission"+    "fixture/RemovePermission.yaml"++requestSubmitFeedback :: SubmitFeedback -> TestTree+requestSubmitFeedback =+  req+    "SubmitFeedback"+    "fixture/SubmitFeedback.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateProfilingGroup :: UpdateProfilingGroup -> TestTree+requestUpdateProfilingGroup =+  req+    "UpdateProfilingGroup"+    "fixture/UpdateProfilingGroup.yaml"++-- Responses++responseAddNotificationChannels :: AddNotificationChannelsResponse -> TestTree+responseAddNotificationChannels =+  res+    "AddNotificationChannelsResponse"+    "fixture/AddNotificationChannelsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AddNotificationChannels)++responseBatchGetFrameMetricData :: BatchGetFrameMetricDataResponse -> TestTree+responseBatchGetFrameMetricData =+  res+    "BatchGetFrameMetricDataResponse"+    "fixture/BatchGetFrameMetricDataResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchGetFrameMetricData)++responseConfigureAgent :: ConfigureAgentResponse -> TestTree+responseConfigureAgent =+  res+    "ConfigureAgentResponse"+    "fixture/ConfigureAgentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ConfigureAgent)++responseCreateProfilingGroup :: CreateProfilingGroupResponse -> TestTree+responseCreateProfilingGroup =+  res+    "CreateProfilingGroupResponse"+    "fixture/CreateProfilingGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateProfilingGroup)++responseDeleteProfilingGroup :: DeleteProfilingGroupResponse -> TestTree+responseDeleteProfilingGroup =+  res+    "DeleteProfilingGroupResponse"+    "fixture/DeleteProfilingGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteProfilingGroup)++responseDescribeProfilingGroup :: DescribeProfilingGroupResponse -> TestTree+responseDescribeProfilingGroup =+  res+    "DescribeProfilingGroupResponse"+    "fixture/DescribeProfilingGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeProfilingGroup)++responseGetFindingsReportAccountSummary :: GetFindingsReportAccountSummaryResponse -> TestTree+responseGetFindingsReportAccountSummary =+  res+    "GetFindingsReportAccountSummaryResponse"+    "fixture/GetFindingsReportAccountSummaryResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetFindingsReportAccountSummary)++responseGetNotificationConfiguration :: GetNotificationConfigurationResponse -> TestTree+responseGetNotificationConfiguration =+  res+    "GetNotificationConfigurationResponse"+    "fixture/GetNotificationConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetNotificationConfiguration)++responseGetPolicy :: GetPolicyResponse -> TestTree+responseGetPolicy =+  res+    "GetPolicyResponse"+    "fixture/GetPolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetPolicy)++responseGetProfile :: GetProfileResponse -> TestTree+responseGetProfile =+  res+    "GetProfileResponse"+    "fixture/GetProfileResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetProfile)++responseGetRecommendations :: GetRecommendationsResponse -> TestTree+responseGetRecommendations =+  res+    "GetRecommendationsResponse"+    "fixture/GetRecommendationsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetRecommendations)++responseListFindingsReports :: ListFindingsReportsResponse -> TestTree+responseListFindingsReports =+  res+    "ListFindingsReportsResponse"+    "fixture/ListFindingsReportsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListFindingsReports)++responseListProfileTimes :: ListProfileTimesResponse -> TestTree+responseListProfileTimes =+  res+    "ListProfileTimesResponse"+    "fixture/ListProfileTimesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListProfileTimes)++responseListProfilingGroups :: ListProfilingGroupsResponse -> TestTree+responseListProfilingGroups =+  res+    "ListProfilingGroupsResponse"+    "fixture/ListProfilingGroupsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListProfilingGroups)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responsePostAgentProfile :: PostAgentProfileResponse -> TestTree+responsePostAgentProfile =+  res+    "PostAgentProfileResponse"+    "fixture/PostAgentProfileResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PostAgentProfile)++responsePutPermission :: PutPermissionResponse -> TestTree+responsePutPermission =+  res+    "PutPermissionResponse"+    "fixture/PutPermissionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutPermission)++responseRemoveNotificationChannel :: RemoveNotificationChannelResponse -> TestTree+responseRemoveNotificationChannel =+  res+    "RemoveNotificationChannelResponse"+    "fixture/RemoveNotificationChannelResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy RemoveNotificationChannel)++responseRemovePermission :: RemovePermissionResponse -> TestTree+responseRemovePermission =+  res+    "RemovePermissionResponse"+    "fixture/RemovePermissionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy RemovePermission)++responseSubmitFeedback :: SubmitFeedbackResponse -> TestTree+responseSubmitFeedback =+  res+    "SubmitFeedbackResponse"+    "fixture/SubmitFeedbackResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy SubmitFeedback)++responseTagResource :: TagResourceResponse -> TestTree+responseTagResource =+  res+    "TagResourceResponse"+    "fixture/TagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy TagResource)++responseUntagResource :: UntagResourceResponse -> TestTree+responseUntagResource =+  res+    "UntagResourceResponse"+    "fixture/UntagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UntagResource)++responseUpdateProfilingGroup :: UpdateProfilingGroupResponse -> TestTree+responseUpdateProfilingGroup =+  res+    "UpdateProfilingGroupResponse"+    "fixture/UpdateProfilingGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateProfilingGroup)