diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -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.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,44 @@
+# Amazon CloudWatch Application Insights SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2018-11-25@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-application-insights)
+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.ApplicationInsights](http://hackage.haskell.org/package/amazonka-application-insights/docs/Amazonka-ApplicationInsights.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-application-insights` 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.
diff --git a/amazonka-application-insights.cabal b/amazonka-application-insights.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-application-insights.cabal
@@ -0,0 +1,130 @@
+cabal-version:      2.2
+name:               amazonka-application-insights
+version:            2.0
+synopsis:           Amazon CloudWatch Application Insights SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
+description:
+  Derived from API version @2018-11-25@ 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.ApplicationInsights.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.ApplicationInsights" 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-application-insights
+
+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.ApplicationInsights
+    Amazonka.ApplicationInsights.CreateApplication
+    Amazonka.ApplicationInsights.CreateComponent
+    Amazonka.ApplicationInsights.CreateLogPattern
+    Amazonka.ApplicationInsights.DeleteApplication
+    Amazonka.ApplicationInsights.DeleteComponent
+    Amazonka.ApplicationInsights.DeleteLogPattern
+    Amazonka.ApplicationInsights.DescribeApplication
+    Amazonka.ApplicationInsights.DescribeComponent
+    Amazonka.ApplicationInsights.DescribeComponentConfiguration
+    Amazonka.ApplicationInsights.DescribeComponentConfigurationRecommendation
+    Amazonka.ApplicationInsights.DescribeLogPattern
+    Amazonka.ApplicationInsights.DescribeObservation
+    Amazonka.ApplicationInsights.DescribeProblem
+    Amazonka.ApplicationInsights.DescribeProblemObservations
+    Amazonka.ApplicationInsights.Lens
+    Amazonka.ApplicationInsights.ListApplications
+    Amazonka.ApplicationInsights.ListComponents
+    Amazonka.ApplicationInsights.ListConfigurationHistory
+    Amazonka.ApplicationInsights.ListLogPatterns
+    Amazonka.ApplicationInsights.ListLogPatternSets
+    Amazonka.ApplicationInsights.ListProblems
+    Amazonka.ApplicationInsights.ListTagsForResource
+    Amazonka.ApplicationInsights.TagResource
+    Amazonka.ApplicationInsights.Types
+    Amazonka.ApplicationInsights.Types.ApplicationComponent
+    Amazonka.ApplicationInsights.Types.ApplicationInfo
+    Amazonka.ApplicationInsights.Types.CloudWatchEventSource
+    Amazonka.ApplicationInsights.Types.ConfigurationEvent
+    Amazonka.ApplicationInsights.Types.ConfigurationEventResourceType
+    Amazonka.ApplicationInsights.Types.ConfigurationEventStatus
+    Amazonka.ApplicationInsights.Types.DiscoveryType
+    Amazonka.ApplicationInsights.Types.FeedbackKey
+    Amazonka.ApplicationInsights.Types.FeedbackValue
+    Amazonka.ApplicationInsights.Types.GroupingType
+    Amazonka.ApplicationInsights.Types.LogFilter
+    Amazonka.ApplicationInsights.Types.LogPattern
+    Amazonka.ApplicationInsights.Types.Observation
+    Amazonka.ApplicationInsights.Types.OsType
+    Amazonka.ApplicationInsights.Types.Problem
+    Amazonka.ApplicationInsights.Types.RelatedObservations
+    Amazonka.ApplicationInsights.Types.SeverityLevel
+    Amazonka.ApplicationInsights.Types.Status
+    Amazonka.ApplicationInsights.Types.Tag
+    Amazonka.ApplicationInsights.Types.Tier
+    Amazonka.ApplicationInsights.UntagResource
+    Amazonka.ApplicationInsights.UpdateApplication
+    Amazonka.ApplicationInsights.UpdateComponent
+    Amazonka.ApplicationInsights.UpdateComponentConfiguration
+    Amazonka.ApplicationInsights.UpdateLogPattern
+    Amazonka.ApplicationInsights.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-application-insights-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.ApplicationInsights
+    Test.Amazonka.ApplicationInsights.Internal
+    Test.Amazonka.Gen.ApplicationInsights
+
+  build-depends:
+    , amazonka-application-insights
+    , amazonka-core                  >=2.0 && <2.1
+    , amazonka-test                  >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/CreateApplication.yaml b/fixture/CreateApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/CreateApplicationResponse.proto b/fixture/CreateApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateApplicationResponse.proto
diff --git a/fixture/CreateComponent.yaml b/fixture/CreateComponent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateComponent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/CreateComponentResponse.proto b/fixture/CreateComponentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateComponentResponse.proto
diff --git a/fixture/CreateLogPattern.yaml b/fixture/CreateLogPattern.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateLogPattern.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/CreateLogPatternResponse.proto b/fixture/CreateLogPatternResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateLogPatternResponse.proto
diff --git a/fixture/DeleteApplication.yaml b/fixture/DeleteApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/DeleteApplicationResponse.proto b/fixture/DeleteApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteApplicationResponse.proto
diff --git a/fixture/DeleteComponent.yaml b/fixture/DeleteComponent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteComponent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/DeleteComponentResponse.proto b/fixture/DeleteComponentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteComponentResponse.proto
diff --git a/fixture/DeleteLogPattern.yaml b/fixture/DeleteLogPattern.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteLogPattern.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/DeleteLogPatternResponse.proto b/fixture/DeleteLogPatternResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteLogPatternResponse.proto
diff --git a/fixture/DescribeApplication.yaml b/fixture/DescribeApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/DescribeApplicationResponse.proto b/fixture/DescribeApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeApplicationResponse.proto
diff --git a/fixture/DescribeComponent.yaml b/fixture/DescribeComponent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeComponent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/DescribeComponentConfiguration.yaml b/fixture/DescribeComponentConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeComponentConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/DescribeComponentConfigurationRecommendation.yaml b/fixture/DescribeComponentConfigurationRecommendation.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeComponentConfigurationRecommendation.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/DescribeComponentConfigurationRecommendationResponse.proto b/fixture/DescribeComponentConfigurationRecommendationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeComponentConfigurationRecommendationResponse.proto
diff --git a/fixture/DescribeComponentConfigurationResponse.proto b/fixture/DescribeComponentConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeComponentConfigurationResponse.proto
diff --git a/fixture/DescribeComponentResponse.proto b/fixture/DescribeComponentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeComponentResponse.proto
diff --git a/fixture/DescribeLogPattern.yaml b/fixture/DescribeLogPattern.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeLogPattern.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/DescribeLogPatternResponse.proto b/fixture/DescribeLogPatternResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeLogPatternResponse.proto
diff --git a/fixture/DescribeObservation.yaml b/fixture/DescribeObservation.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeObservation.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/DescribeObservationResponse.proto b/fixture/DescribeObservationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeObservationResponse.proto
diff --git a/fixture/DescribeProblem.yaml b/fixture/DescribeProblem.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeProblem.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/DescribeProblemObservations.yaml b/fixture/DescribeProblemObservations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeProblemObservations.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/DescribeProblemObservationsResponse.proto b/fixture/DescribeProblemObservationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeProblemObservationsResponse.proto
diff --git a/fixture/DescribeProblemResponse.proto b/fixture/DescribeProblemResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeProblemResponse.proto
diff --git a/fixture/ListApplications.yaml b/fixture/ListApplications.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListApplications.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/ListApplicationsResponse.proto b/fixture/ListApplicationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListApplicationsResponse.proto
diff --git a/fixture/ListComponents.yaml b/fixture/ListComponents.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListComponents.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/ListComponentsResponse.proto b/fixture/ListComponentsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListComponentsResponse.proto
diff --git a/fixture/ListConfigurationHistory.yaml b/fixture/ListConfigurationHistory.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListConfigurationHistory.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/ListConfigurationHistoryResponse.proto b/fixture/ListConfigurationHistoryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListConfigurationHistoryResponse.proto
diff --git a/fixture/ListLogPatternSets.yaml b/fixture/ListLogPatternSets.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListLogPatternSets.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/ListLogPatternSetsResponse.proto b/fixture/ListLogPatternSetsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListLogPatternSetsResponse.proto
diff --git a/fixture/ListLogPatterns.yaml b/fixture/ListLogPatterns.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListLogPatterns.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/ListLogPatternsResponse.proto b/fixture/ListLogPatternsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListLogPatternsResponse.proto
diff --git a/fixture/ListProblems.yaml b/fixture/ListProblems.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListProblems.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/ListProblemsResponse.proto b/fixture/ListProblemsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListProblemsResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/ListTagsForResourceResponse.proto b/fixture/ListTagsForResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResourceResponse.proto
diff --git a/fixture/TagResource.yaml b/fixture/TagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/fixture/UpdateApplication.yaml b/fixture/UpdateApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/UpdateApplicationResponse.proto b/fixture/UpdateApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateApplicationResponse.proto
diff --git a/fixture/UpdateComponent.yaml b/fixture/UpdateComponent.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateComponent.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/UpdateComponentConfiguration.yaml b/fixture/UpdateComponentConfiguration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateComponentConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/UpdateComponentConfigurationResponse.proto b/fixture/UpdateComponentConfigurationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateComponentConfigurationResponse.proto
diff --git a/fixture/UpdateComponentResponse.proto b/fixture/UpdateComponentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateComponentResponse.proto
diff --git a/fixture/UpdateLogPattern.yaml b/fixture/UpdateLogPattern.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateLogPattern.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/applicationinsights/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  applicationinsights.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:
+  ''
diff --git a/fixture/UpdateLogPatternResponse.proto b/fixture/UpdateLogPatternResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateLogPatternResponse.proto
diff --git a/gen/Amazonka/ApplicationInsights.hs b/gen/Amazonka/ApplicationInsights.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights.hs
@@ -0,0 +1,357 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.ApplicationInsights
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2018-11-25@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon CloudWatch Application Insights
+--
+-- Amazon CloudWatch Application Insights is a service that helps you
+-- detect common problems with your applications. It enables you to
+-- pinpoint the source of issues in your applications (built with
+-- technologies such as Microsoft IIS, .NET, and Microsoft SQL Server), by
+-- providing key insights into detected problems.
+--
+-- After you onboard your application, CloudWatch Application Insights
+-- identifies, recommends, and sets up metrics and logs. It continuously
+-- analyzes and correlates your metrics and logs for unusual behavior to
+-- surface actionable problems with your application. For example, if your
+-- application is slow and unresponsive and leading to HTTP 500 errors in
+-- your Application Load Balancer (ALB), Application Insights informs you
+-- that a memory pressure problem with your SQL Server database is
+-- occurring. It bases this analysis on impactful metrics and log errors.
+module Amazonka.ApplicationInsights
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** BadRequestException
+    _BadRequestException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** ResourceInUseException
+    _ResourceInUseException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** TagsAlreadyExistException
+    _TagsAlreadyExistException,
+
+    -- ** TooManyTagsException
+    _TooManyTagsException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** CreateApplication
+    CreateApplication (CreateApplication'),
+    newCreateApplication,
+    CreateApplicationResponse (CreateApplicationResponse'),
+    newCreateApplicationResponse,
+
+    -- ** CreateComponent
+    CreateComponent (CreateComponent'),
+    newCreateComponent,
+    CreateComponentResponse (CreateComponentResponse'),
+    newCreateComponentResponse,
+
+    -- ** CreateLogPattern
+    CreateLogPattern (CreateLogPattern'),
+    newCreateLogPattern,
+    CreateLogPatternResponse (CreateLogPatternResponse'),
+    newCreateLogPatternResponse,
+
+    -- ** DeleteApplication
+    DeleteApplication (DeleteApplication'),
+    newDeleteApplication,
+    DeleteApplicationResponse (DeleteApplicationResponse'),
+    newDeleteApplicationResponse,
+
+    -- ** DeleteComponent
+    DeleteComponent (DeleteComponent'),
+    newDeleteComponent,
+    DeleteComponentResponse (DeleteComponentResponse'),
+    newDeleteComponentResponse,
+
+    -- ** DeleteLogPattern
+    DeleteLogPattern (DeleteLogPattern'),
+    newDeleteLogPattern,
+    DeleteLogPatternResponse (DeleteLogPatternResponse'),
+    newDeleteLogPatternResponse,
+
+    -- ** DescribeApplication
+    DescribeApplication (DescribeApplication'),
+    newDescribeApplication,
+    DescribeApplicationResponse (DescribeApplicationResponse'),
+    newDescribeApplicationResponse,
+
+    -- ** DescribeComponent
+    DescribeComponent (DescribeComponent'),
+    newDescribeComponent,
+    DescribeComponentResponse (DescribeComponentResponse'),
+    newDescribeComponentResponse,
+
+    -- ** DescribeComponentConfiguration
+    DescribeComponentConfiguration (DescribeComponentConfiguration'),
+    newDescribeComponentConfiguration,
+    DescribeComponentConfigurationResponse (DescribeComponentConfigurationResponse'),
+    newDescribeComponentConfigurationResponse,
+
+    -- ** DescribeComponentConfigurationRecommendation
+    DescribeComponentConfigurationRecommendation (DescribeComponentConfigurationRecommendation'),
+    newDescribeComponentConfigurationRecommendation,
+    DescribeComponentConfigurationRecommendationResponse (DescribeComponentConfigurationRecommendationResponse'),
+    newDescribeComponentConfigurationRecommendationResponse,
+
+    -- ** DescribeLogPattern
+    DescribeLogPattern (DescribeLogPattern'),
+    newDescribeLogPattern,
+    DescribeLogPatternResponse (DescribeLogPatternResponse'),
+    newDescribeLogPatternResponse,
+
+    -- ** DescribeObservation
+    DescribeObservation (DescribeObservation'),
+    newDescribeObservation,
+    DescribeObservationResponse (DescribeObservationResponse'),
+    newDescribeObservationResponse,
+
+    -- ** DescribeProblem
+    DescribeProblem (DescribeProblem'),
+    newDescribeProblem,
+    DescribeProblemResponse (DescribeProblemResponse'),
+    newDescribeProblemResponse,
+
+    -- ** DescribeProblemObservations
+    DescribeProblemObservations (DescribeProblemObservations'),
+    newDescribeProblemObservations,
+    DescribeProblemObservationsResponse (DescribeProblemObservationsResponse'),
+    newDescribeProblemObservationsResponse,
+
+    -- ** ListApplications
+    ListApplications (ListApplications'),
+    newListApplications,
+    ListApplicationsResponse (ListApplicationsResponse'),
+    newListApplicationsResponse,
+
+    -- ** ListComponents
+    ListComponents (ListComponents'),
+    newListComponents,
+    ListComponentsResponse (ListComponentsResponse'),
+    newListComponentsResponse,
+
+    -- ** ListConfigurationHistory
+    ListConfigurationHistory (ListConfigurationHistory'),
+    newListConfigurationHistory,
+    ListConfigurationHistoryResponse (ListConfigurationHistoryResponse'),
+    newListConfigurationHistoryResponse,
+
+    -- ** ListLogPatternSets
+    ListLogPatternSets (ListLogPatternSets'),
+    newListLogPatternSets,
+    ListLogPatternSetsResponse (ListLogPatternSetsResponse'),
+    newListLogPatternSetsResponse,
+
+    -- ** ListLogPatterns
+    ListLogPatterns (ListLogPatterns'),
+    newListLogPatterns,
+    ListLogPatternsResponse (ListLogPatternsResponse'),
+    newListLogPatternsResponse,
+
+    -- ** ListProblems
+    ListProblems (ListProblems'),
+    newListProblems,
+    ListProblemsResponse (ListProblemsResponse'),
+    newListProblemsResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateApplication
+    UpdateApplication (UpdateApplication'),
+    newUpdateApplication,
+    UpdateApplicationResponse (UpdateApplicationResponse'),
+    newUpdateApplicationResponse,
+
+    -- ** UpdateComponent
+    UpdateComponent (UpdateComponent'),
+    newUpdateComponent,
+    UpdateComponentResponse (UpdateComponentResponse'),
+    newUpdateComponentResponse,
+
+    -- ** UpdateComponentConfiguration
+    UpdateComponentConfiguration (UpdateComponentConfiguration'),
+    newUpdateComponentConfiguration,
+    UpdateComponentConfigurationResponse (UpdateComponentConfigurationResponse'),
+    newUpdateComponentConfigurationResponse,
+
+    -- ** UpdateLogPattern
+    UpdateLogPattern (UpdateLogPattern'),
+    newUpdateLogPattern,
+    UpdateLogPatternResponse (UpdateLogPatternResponse'),
+    newUpdateLogPatternResponse,
+
+    -- * Types
+
+    -- ** CloudWatchEventSource
+    CloudWatchEventSource (..),
+
+    -- ** ConfigurationEventResourceType
+    ConfigurationEventResourceType (..),
+
+    -- ** ConfigurationEventStatus
+    ConfigurationEventStatus (..),
+
+    -- ** DiscoveryType
+    DiscoveryType (..),
+
+    -- ** FeedbackKey
+    FeedbackKey (..),
+
+    -- ** FeedbackValue
+    FeedbackValue (..),
+
+    -- ** GroupingType
+    GroupingType (..),
+
+    -- ** LogFilter
+    LogFilter (..),
+
+    -- ** OsType
+    OsType (..),
+
+    -- ** SeverityLevel
+    SeverityLevel (..),
+
+    -- ** Status
+    Status (..),
+
+    -- ** Tier
+    Tier (..),
+
+    -- ** ApplicationComponent
+    ApplicationComponent (ApplicationComponent'),
+    newApplicationComponent,
+
+    -- ** ApplicationInfo
+    ApplicationInfo (ApplicationInfo'),
+    newApplicationInfo,
+
+    -- ** ConfigurationEvent
+    ConfigurationEvent (ConfigurationEvent'),
+    newConfigurationEvent,
+
+    -- ** LogPattern
+    LogPattern (LogPattern'),
+    newLogPattern,
+
+    -- ** Observation
+    Observation (Observation'),
+    newObservation,
+
+    -- ** Problem
+    Problem (Problem'),
+    newProblem,
+
+    -- ** RelatedObservations
+    RelatedObservations (RelatedObservations'),
+    newRelatedObservations,
+
+    -- ** Tag
+    Tag (Tag'),
+    newTag,
+  )
+where
+
+import Amazonka.ApplicationInsights.CreateApplication
+import Amazonka.ApplicationInsights.CreateComponent
+import Amazonka.ApplicationInsights.CreateLogPattern
+import Amazonka.ApplicationInsights.DeleteApplication
+import Amazonka.ApplicationInsights.DeleteComponent
+import Amazonka.ApplicationInsights.DeleteLogPattern
+import Amazonka.ApplicationInsights.DescribeApplication
+import Amazonka.ApplicationInsights.DescribeComponent
+import Amazonka.ApplicationInsights.DescribeComponentConfiguration
+import Amazonka.ApplicationInsights.DescribeComponentConfigurationRecommendation
+import Amazonka.ApplicationInsights.DescribeLogPattern
+import Amazonka.ApplicationInsights.DescribeObservation
+import Amazonka.ApplicationInsights.DescribeProblem
+import Amazonka.ApplicationInsights.DescribeProblemObservations
+import Amazonka.ApplicationInsights.Lens
+import Amazonka.ApplicationInsights.ListApplications
+import Amazonka.ApplicationInsights.ListComponents
+import Amazonka.ApplicationInsights.ListConfigurationHistory
+import Amazonka.ApplicationInsights.ListLogPatternSets
+import Amazonka.ApplicationInsights.ListLogPatterns
+import Amazonka.ApplicationInsights.ListProblems
+import Amazonka.ApplicationInsights.ListTagsForResource
+import Amazonka.ApplicationInsights.TagResource
+import Amazonka.ApplicationInsights.Types
+import Amazonka.ApplicationInsights.UntagResource
+import Amazonka.ApplicationInsights.UpdateApplication
+import Amazonka.ApplicationInsights.UpdateComponent
+import Amazonka.ApplicationInsights.UpdateComponentConfiguration
+import Amazonka.ApplicationInsights.UpdateLogPattern
+import Amazonka.ApplicationInsights.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 'ApplicationInsights'.
+
+-- $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.
diff --git a/gen/Amazonka/ApplicationInsights/CreateApplication.hs b/gen/Amazonka/ApplicationInsights/CreateApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/CreateApplication.hs
@@ -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.ApplicationInsights.CreateApplication
+-- 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 an application that is created from a resource group.
+module Amazonka.ApplicationInsights.CreateApplication
+  ( -- * Creating a Request
+    CreateApplication (..),
+    newCreateApplication,
+
+    -- * Request Lenses
+    createApplication_autoConfigEnabled,
+    createApplication_autoCreate,
+    createApplication_cWEMonitorEnabled,
+    createApplication_groupingType,
+    createApplication_opsCenterEnabled,
+    createApplication_opsItemSNSTopicArn,
+    createApplication_resourceGroupName,
+    createApplication_tags,
+
+    -- * Destructuring the Response
+    CreateApplicationResponse (..),
+    newCreateApplicationResponse,
+
+    -- * Response Lenses
+    createApplicationResponse_applicationInfo,
+    createApplicationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newCreateApplication' smart constructor.
+data CreateApplication = CreateApplication'
+  { -- | Indicates whether Application Insights automatically configures
+    -- unmonitored resources in the resource group.
+    autoConfigEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | Configures all of the resources in the resource group by applying the
+    -- recommended configurations.
+    autoCreate :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether Application Insights can listen to CloudWatch events
+    -- for the application resources, such as @instance terminated@,
+    -- @failed deployment@, and others.
+    cWEMonitorEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | Application Insights can create applications based on a resource group
+    -- or on an account. To create an account-based application using all of
+    -- the resources in the account, set this parameter to @ACCOUNT_BASED@.
+    groupingType :: Prelude.Maybe GroupingType,
+    -- | When set to @true@, creates opsItems for any problems detected on an
+    -- application.
+    opsCenterEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | The SNS topic provided to Application Insights that is associated to the
+    -- created opsItem. Allows you to receive notifications for updates to the
+    -- opsItem.
+    opsItemSNSTopicArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the resource group.
+    resourceGroupName :: Prelude.Maybe Prelude.Text,
+    -- | List of tags to add to the application. tag key (@Key@) and an
+    -- associated tag value (@Value@). The maximum length of a tag key is 128
+    -- characters. The maximum length of a tag value is 256 characters.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'autoConfigEnabled', 'createApplication_autoConfigEnabled' - Indicates whether Application Insights automatically configures
+-- unmonitored resources in the resource group.
+--
+-- 'autoCreate', 'createApplication_autoCreate' - Configures all of the resources in the resource group by applying the
+-- recommended configurations.
+--
+-- 'cWEMonitorEnabled', 'createApplication_cWEMonitorEnabled' - Indicates whether Application Insights can listen to CloudWatch events
+-- for the application resources, such as @instance terminated@,
+-- @failed deployment@, and others.
+--
+-- 'groupingType', 'createApplication_groupingType' - Application Insights can create applications based on a resource group
+-- or on an account. To create an account-based application using all of
+-- the resources in the account, set this parameter to @ACCOUNT_BASED@.
+--
+-- 'opsCenterEnabled', 'createApplication_opsCenterEnabled' - When set to @true@, creates opsItems for any problems detected on an
+-- application.
+--
+-- 'opsItemSNSTopicArn', 'createApplication_opsItemSNSTopicArn' - The SNS topic provided to Application Insights that is associated to the
+-- created opsItem. Allows you to receive notifications for updates to the
+-- opsItem.
+--
+-- 'resourceGroupName', 'createApplication_resourceGroupName' - The name of the resource group.
+--
+-- 'tags', 'createApplication_tags' - List of tags to add to the application. tag key (@Key@) and an
+-- associated tag value (@Value@). The maximum length of a tag key is 128
+-- characters. The maximum length of a tag value is 256 characters.
+newCreateApplication ::
+  CreateApplication
+newCreateApplication =
+  CreateApplication'
+    { autoConfigEnabled =
+        Prelude.Nothing,
+      autoCreate = Prelude.Nothing,
+      cWEMonitorEnabled = Prelude.Nothing,
+      groupingType = Prelude.Nothing,
+      opsCenterEnabled = Prelude.Nothing,
+      opsItemSNSTopicArn = Prelude.Nothing,
+      resourceGroupName = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | Indicates whether Application Insights automatically configures
+-- unmonitored resources in the resource group.
+createApplication_autoConfigEnabled :: Lens.Lens' CreateApplication (Prelude.Maybe Prelude.Bool)
+createApplication_autoConfigEnabled = Lens.lens (\CreateApplication' {autoConfigEnabled} -> autoConfigEnabled) (\s@CreateApplication' {} a -> s {autoConfigEnabled = a} :: CreateApplication)
+
+-- | Configures all of the resources in the resource group by applying the
+-- recommended configurations.
+createApplication_autoCreate :: Lens.Lens' CreateApplication (Prelude.Maybe Prelude.Bool)
+createApplication_autoCreate = Lens.lens (\CreateApplication' {autoCreate} -> autoCreate) (\s@CreateApplication' {} a -> s {autoCreate = a} :: CreateApplication)
+
+-- | Indicates whether Application Insights can listen to CloudWatch events
+-- for the application resources, such as @instance terminated@,
+-- @failed deployment@, and others.
+createApplication_cWEMonitorEnabled :: Lens.Lens' CreateApplication (Prelude.Maybe Prelude.Bool)
+createApplication_cWEMonitorEnabled = Lens.lens (\CreateApplication' {cWEMonitorEnabled} -> cWEMonitorEnabled) (\s@CreateApplication' {} a -> s {cWEMonitorEnabled = a} :: CreateApplication)
+
+-- | Application Insights can create applications based on a resource group
+-- or on an account. To create an account-based application using all of
+-- the resources in the account, set this parameter to @ACCOUNT_BASED@.
+createApplication_groupingType :: Lens.Lens' CreateApplication (Prelude.Maybe GroupingType)
+createApplication_groupingType = Lens.lens (\CreateApplication' {groupingType} -> groupingType) (\s@CreateApplication' {} a -> s {groupingType = a} :: CreateApplication)
+
+-- | When set to @true@, creates opsItems for any problems detected on an
+-- application.
+createApplication_opsCenterEnabled :: Lens.Lens' CreateApplication (Prelude.Maybe Prelude.Bool)
+createApplication_opsCenterEnabled = Lens.lens (\CreateApplication' {opsCenterEnabled} -> opsCenterEnabled) (\s@CreateApplication' {} a -> s {opsCenterEnabled = a} :: CreateApplication)
+
+-- | The SNS topic provided to Application Insights that is associated to the
+-- created opsItem. Allows you to receive notifications for updates to the
+-- opsItem.
+createApplication_opsItemSNSTopicArn :: Lens.Lens' CreateApplication (Prelude.Maybe Prelude.Text)
+createApplication_opsItemSNSTopicArn = Lens.lens (\CreateApplication' {opsItemSNSTopicArn} -> opsItemSNSTopicArn) (\s@CreateApplication' {} a -> s {opsItemSNSTopicArn = a} :: CreateApplication)
+
+-- | The name of the resource group.
+createApplication_resourceGroupName :: Lens.Lens' CreateApplication (Prelude.Maybe Prelude.Text)
+createApplication_resourceGroupName = Lens.lens (\CreateApplication' {resourceGroupName} -> resourceGroupName) (\s@CreateApplication' {} a -> s {resourceGroupName = a} :: CreateApplication)
+
+-- | List of tags to add to the application. tag key (@Key@) and an
+-- associated tag value (@Value@). The maximum length of a tag key is 128
+-- characters. The maximum length of a tag value is 256 characters.
+createApplication_tags :: Lens.Lens' CreateApplication (Prelude.Maybe [Tag])
+createApplication_tags = Lens.lens (\CreateApplication' {tags} -> tags) (\s@CreateApplication' {} a -> s {tags = a} :: CreateApplication) Prelude.. Lens.mapping Lens.coerced
+
+instance Core.AWSRequest CreateApplication where
+  type
+    AWSResponse CreateApplication =
+      CreateApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateApplicationResponse'
+            Prelude.<$> (x Data..?> "ApplicationInfo")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateApplication where
+  hashWithSalt _salt CreateApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoConfigEnabled
+      `Prelude.hashWithSalt` autoCreate
+      `Prelude.hashWithSalt` cWEMonitorEnabled
+      `Prelude.hashWithSalt` groupingType
+      `Prelude.hashWithSalt` opsCenterEnabled
+      `Prelude.hashWithSalt` opsItemSNSTopicArn
+      `Prelude.hashWithSalt` resourceGroupName
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData CreateApplication where
+  rnf CreateApplication' {..} =
+    Prelude.rnf autoConfigEnabled
+      `Prelude.seq` Prelude.rnf autoCreate
+      `Prelude.seq` Prelude.rnf cWEMonitorEnabled
+      `Prelude.seq` Prelude.rnf groupingType
+      `Prelude.seq` Prelude.rnf opsCenterEnabled
+      `Prelude.seq` Prelude.rnf opsItemSNSTopicArn
+      `Prelude.seq` Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders CreateApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.CreateApplication" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateApplication where
+  toJSON CreateApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AutoConfigEnabled" Data..=)
+              Prelude.<$> autoConfigEnabled,
+            ("AutoCreate" Data..=) Prelude.<$> autoCreate,
+            ("CWEMonitorEnabled" Data..=)
+              Prelude.<$> cWEMonitorEnabled,
+            ("GroupingType" Data..=) Prelude.<$> groupingType,
+            ("OpsCenterEnabled" Data..=)
+              Prelude.<$> opsCenterEnabled,
+            ("OpsItemSNSTopicArn" Data..=)
+              Prelude.<$> opsItemSNSTopicArn,
+            ("ResourceGroupName" Data..=)
+              Prelude.<$> resourceGroupName,
+            ("Tags" Data..=) Prelude.<$> tags
+          ]
+      )
+
+instance Data.ToPath CreateApplication where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateApplicationResponse' smart constructor.
+data CreateApplicationResponse = CreateApplicationResponse'
+  { -- | Information about the application.
+    applicationInfo :: Prelude.Maybe ApplicationInfo,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationInfo', 'createApplicationResponse_applicationInfo' - Information about the application.
+--
+-- 'httpStatus', 'createApplicationResponse_httpStatus' - The response's http status code.
+newCreateApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateApplicationResponse
+newCreateApplicationResponse pHttpStatus_ =
+  CreateApplicationResponse'
+    { applicationInfo =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the application.
+createApplicationResponse_applicationInfo :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe ApplicationInfo)
+createApplicationResponse_applicationInfo = Lens.lens (\CreateApplicationResponse' {applicationInfo} -> applicationInfo) (\s@CreateApplicationResponse' {} a -> s {applicationInfo = a} :: CreateApplicationResponse)
+
+-- | The response's http status code.
+createApplicationResponse_httpStatus :: Lens.Lens' CreateApplicationResponse Prelude.Int
+createApplicationResponse_httpStatus = Lens.lens (\CreateApplicationResponse' {httpStatus} -> httpStatus) (\s@CreateApplicationResponse' {} a -> s {httpStatus = a} :: CreateApplicationResponse)
+
+instance Prelude.NFData CreateApplicationResponse where
+  rnf CreateApplicationResponse' {..} =
+    Prelude.rnf applicationInfo
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/CreateComponent.hs b/gen/Amazonka/ApplicationInsights/CreateComponent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/CreateComponent.hs
@@ -0,0 +1,191 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.CreateComponent
+-- 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 custom component by grouping similar standalone instances to
+-- monitor.
+module Amazonka.ApplicationInsights.CreateComponent
+  ( -- * Creating a Request
+    CreateComponent (..),
+    newCreateComponent,
+
+    -- * Request Lenses
+    createComponent_resourceGroupName,
+    createComponent_componentName,
+    createComponent_resourceList,
+
+    -- * Destructuring the Response
+    CreateComponentResponse (..),
+    newCreateComponentResponse,
+
+    -- * Response Lenses
+    createComponentResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newCreateComponent' smart constructor.
+data CreateComponent = CreateComponent'
+  { -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text,
+    -- | The name of the component.
+    componentName :: Prelude.Text,
+    -- | The list of resource ARNs that belong to the component.
+    resourceList :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateComponent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceGroupName', 'createComponent_resourceGroupName' - The name of the resource group.
+--
+-- 'componentName', 'createComponent_componentName' - The name of the component.
+--
+-- 'resourceList', 'createComponent_resourceList' - The list of resource ARNs that belong to the component.
+newCreateComponent ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  -- | 'componentName'
+  Prelude.Text ->
+  CreateComponent
+newCreateComponent
+  pResourceGroupName_
+  pComponentName_ =
+    CreateComponent'
+      { resourceGroupName =
+          pResourceGroupName_,
+        componentName = pComponentName_,
+        resourceList = Prelude.mempty
+      }
+
+-- | The name of the resource group.
+createComponent_resourceGroupName :: Lens.Lens' CreateComponent Prelude.Text
+createComponent_resourceGroupName = Lens.lens (\CreateComponent' {resourceGroupName} -> resourceGroupName) (\s@CreateComponent' {} a -> s {resourceGroupName = a} :: CreateComponent)
+
+-- | The name of the component.
+createComponent_componentName :: Lens.Lens' CreateComponent Prelude.Text
+createComponent_componentName = Lens.lens (\CreateComponent' {componentName} -> componentName) (\s@CreateComponent' {} a -> s {componentName = a} :: CreateComponent)
+
+-- | The list of resource ARNs that belong to the component.
+createComponent_resourceList :: Lens.Lens' CreateComponent [Prelude.Text]
+createComponent_resourceList = Lens.lens (\CreateComponent' {resourceList} -> resourceList) (\s@CreateComponent' {} a -> s {resourceList = a} :: CreateComponent) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateComponent where
+  type
+    AWSResponse CreateComponent =
+      CreateComponentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          CreateComponentResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateComponent where
+  hashWithSalt _salt CreateComponent' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceGroupName
+      `Prelude.hashWithSalt` componentName
+      `Prelude.hashWithSalt` resourceList
+
+instance Prelude.NFData CreateComponent where
+  rnf CreateComponent' {..} =
+    Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf componentName
+      `Prelude.seq` Prelude.rnf resourceList
+
+instance Data.ToHeaders CreateComponent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.CreateComponent" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateComponent where
+  toJSON CreateComponent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName),
+            Prelude.Just ("ComponentName" Data..= componentName),
+            Prelude.Just ("ResourceList" Data..= resourceList)
+          ]
+      )
+
+instance Data.ToPath CreateComponent where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateComponent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateComponentResponse' smart constructor.
+data CreateComponentResponse = CreateComponentResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateComponentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createComponentResponse_httpStatus' - The response's http status code.
+newCreateComponentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateComponentResponse
+newCreateComponentResponse pHttpStatus_ =
+  CreateComponentResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+createComponentResponse_httpStatus :: Lens.Lens' CreateComponentResponse Prelude.Int
+createComponentResponse_httpStatus = Lens.lens (\CreateComponentResponse' {httpStatus} -> httpStatus) (\s@CreateComponentResponse' {} a -> s {httpStatus = a} :: CreateComponentResponse)
+
+instance Prelude.NFData CreateComponentResponse where
+  rnf CreateComponentResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/CreateLogPattern.hs b/gen/Amazonka/ApplicationInsights/CreateLogPattern.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/CreateLogPattern.hs
@@ -0,0 +1,286 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.CreateLogPattern
+-- 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 an log pattern to a @LogPatternSet@.
+module Amazonka.ApplicationInsights.CreateLogPattern
+  ( -- * Creating a Request
+    CreateLogPattern (..),
+    newCreateLogPattern,
+
+    -- * Request Lenses
+    createLogPattern_resourceGroupName,
+    createLogPattern_patternSetName,
+    createLogPattern_patternName,
+    createLogPattern_pattern,
+    createLogPattern_rank,
+
+    -- * Destructuring the Response
+    CreateLogPatternResponse (..),
+    newCreateLogPatternResponse,
+
+    -- * Response Lenses
+    createLogPatternResponse_logPattern,
+    createLogPatternResponse_resourceGroupName,
+    createLogPatternResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newCreateLogPattern' smart constructor.
+data CreateLogPattern = CreateLogPattern'
+  { -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text,
+    -- | The name of the log pattern set.
+    patternSetName :: Prelude.Text,
+    -- | The name of the log pattern.
+    patternName :: Prelude.Text,
+    -- | The log pattern. The pattern must be DFA compatible. Patterns that
+    -- utilize forward lookahead or backreference constructions are not
+    -- supported.
+    pattern' :: Prelude.Text,
+    -- | Rank of the log pattern. Must be a value between @1@ and @1,000,000@.
+    -- The patterns are sorted by rank, so we recommend that you set your
+    -- highest priority patterns with the lowest rank. A pattern of rank @1@
+    -- will be the first to get matched to a log line. A pattern of rank
+    -- @1,000,000@ will be last to get matched. When you configure custom log
+    -- patterns from the console, a @Low@ severity pattern translates to a
+    -- @750,000@ rank. A @Medium@ severity pattern translates to a @500,000@
+    -- rank. And a @High@ severity pattern translates to a @250,000@ rank. Rank
+    -- values less than @1@ or greater than @1,000,000@ are reserved for
+    -- AWS-provided patterns.
+    rank :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateLogPattern' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceGroupName', 'createLogPattern_resourceGroupName' - The name of the resource group.
+--
+-- 'patternSetName', 'createLogPattern_patternSetName' - The name of the log pattern set.
+--
+-- 'patternName', 'createLogPattern_patternName' - The name of the log pattern.
+--
+-- 'pattern'', 'createLogPattern_pattern' - The log pattern. The pattern must be DFA compatible. Patterns that
+-- utilize forward lookahead or backreference constructions are not
+-- supported.
+--
+-- 'rank', 'createLogPattern_rank' - Rank of the log pattern. Must be a value between @1@ and @1,000,000@.
+-- The patterns are sorted by rank, so we recommend that you set your
+-- highest priority patterns with the lowest rank. A pattern of rank @1@
+-- will be the first to get matched to a log line. A pattern of rank
+-- @1,000,000@ will be last to get matched. When you configure custom log
+-- patterns from the console, a @Low@ severity pattern translates to a
+-- @750,000@ rank. A @Medium@ severity pattern translates to a @500,000@
+-- rank. And a @High@ severity pattern translates to a @250,000@ rank. Rank
+-- values less than @1@ or greater than @1,000,000@ are reserved for
+-- AWS-provided patterns.
+newCreateLogPattern ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  -- | 'patternSetName'
+  Prelude.Text ->
+  -- | 'patternName'
+  Prelude.Text ->
+  -- | 'pattern''
+  Prelude.Text ->
+  -- | 'rank'
+  Prelude.Int ->
+  CreateLogPattern
+newCreateLogPattern
+  pResourceGroupName_
+  pPatternSetName_
+  pPatternName_
+  pPattern_
+  pRank_ =
+    CreateLogPattern'
+      { resourceGroupName =
+          pResourceGroupName_,
+        patternSetName = pPatternSetName_,
+        patternName = pPatternName_,
+        pattern' = pPattern_,
+        rank = pRank_
+      }
+
+-- | The name of the resource group.
+createLogPattern_resourceGroupName :: Lens.Lens' CreateLogPattern Prelude.Text
+createLogPattern_resourceGroupName = Lens.lens (\CreateLogPattern' {resourceGroupName} -> resourceGroupName) (\s@CreateLogPattern' {} a -> s {resourceGroupName = a} :: CreateLogPattern)
+
+-- | The name of the log pattern set.
+createLogPattern_patternSetName :: Lens.Lens' CreateLogPattern Prelude.Text
+createLogPattern_patternSetName = Lens.lens (\CreateLogPattern' {patternSetName} -> patternSetName) (\s@CreateLogPattern' {} a -> s {patternSetName = a} :: CreateLogPattern)
+
+-- | The name of the log pattern.
+createLogPattern_patternName :: Lens.Lens' CreateLogPattern Prelude.Text
+createLogPattern_patternName = Lens.lens (\CreateLogPattern' {patternName} -> patternName) (\s@CreateLogPattern' {} a -> s {patternName = a} :: CreateLogPattern)
+
+-- | The log pattern. The pattern must be DFA compatible. Patterns that
+-- utilize forward lookahead or backreference constructions are not
+-- supported.
+createLogPattern_pattern :: Lens.Lens' CreateLogPattern Prelude.Text
+createLogPattern_pattern = Lens.lens (\CreateLogPattern' {pattern'} -> pattern') (\s@CreateLogPattern' {} a -> s {pattern' = a} :: CreateLogPattern)
+
+-- | Rank of the log pattern. Must be a value between @1@ and @1,000,000@.
+-- The patterns are sorted by rank, so we recommend that you set your
+-- highest priority patterns with the lowest rank. A pattern of rank @1@
+-- will be the first to get matched to a log line. A pattern of rank
+-- @1,000,000@ will be last to get matched. When you configure custom log
+-- patterns from the console, a @Low@ severity pattern translates to a
+-- @750,000@ rank. A @Medium@ severity pattern translates to a @500,000@
+-- rank. And a @High@ severity pattern translates to a @250,000@ rank. Rank
+-- values less than @1@ or greater than @1,000,000@ are reserved for
+-- AWS-provided patterns.
+createLogPattern_rank :: Lens.Lens' CreateLogPattern Prelude.Int
+createLogPattern_rank = Lens.lens (\CreateLogPattern' {rank} -> rank) (\s@CreateLogPattern' {} a -> s {rank = a} :: CreateLogPattern)
+
+instance Core.AWSRequest CreateLogPattern where
+  type
+    AWSResponse CreateLogPattern =
+      CreateLogPatternResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateLogPatternResponse'
+            Prelude.<$> (x Data..?> "LogPattern")
+            Prelude.<*> (x Data..?> "ResourceGroupName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateLogPattern where
+  hashWithSalt _salt CreateLogPattern' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceGroupName
+      `Prelude.hashWithSalt` patternSetName
+      `Prelude.hashWithSalt` patternName
+      `Prelude.hashWithSalt` pattern'
+      `Prelude.hashWithSalt` rank
+
+instance Prelude.NFData CreateLogPattern where
+  rnf CreateLogPattern' {..} =
+    Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf patternSetName
+      `Prelude.seq` Prelude.rnf patternName
+      `Prelude.seq` Prelude.rnf pattern'
+      `Prelude.seq` Prelude.rnf rank
+
+instance Data.ToHeaders CreateLogPattern where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.CreateLogPattern" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateLogPattern where
+  toJSON CreateLogPattern' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName),
+            Prelude.Just
+              ("PatternSetName" Data..= patternSetName),
+            Prelude.Just ("PatternName" Data..= patternName),
+            Prelude.Just ("Pattern" Data..= pattern'),
+            Prelude.Just ("Rank" Data..= rank)
+          ]
+      )
+
+instance Data.ToPath CreateLogPattern where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateLogPattern where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateLogPatternResponse' smart constructor.
+data CreateLogPatternResponse = CreateLogPatternResponse'
+  { -- | The successfully created log pattern.
+    logPattern :: Prelude.Maybe LogPattern,
+    -- | The name of the resource group.
+    resourceGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateLogPatternResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'logPattern', 'createLogPatternResponse_logPattern' - The successfully created log pattern.
+--
+-- 'resourceGroupName', 'createLogPatternResponse_resourceGroupName' - The name of the resource group.
+--
+-- 'httpStatus', 'createLogPatternResponse_httpStatus' - The response's http status code.
+newCreateLogPatternResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateLogPatternResponse
+newCreateLogPatternResponse pHttpStatus_ =
+  CreateLogPatternResponse'
+    { logPattern =
+        Prelude.Nothing,
+      resourceGroupName = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The successfully created log pattern.
+createLogPatternResponse_logPattern :: Lens.Lens' CreateLogPatternResponse (Prelude.Maybe LogPattern)
+createLogPatternResponse_logPattern = Lens.lens (\CreateLogPatternResponse' {logPattern} -> logPattern) (\s@CreateLogPatternResponse' {} a -> s {logPattern = a} :: CreateLogPatternResponse)
+
+-- | The name of the resource group.
+createLogPatternResponse_resourceGroupName :: Lens.Lens' CreateLogPatternResponse (Prelude.Maybe Prelude.Text)
+createLogPatternResponse_resourceGroupName = Lens.lens (\CreateLogPatternResponse' {resourceGroupName} -> resourceGroupName) (\s@CreateLogPatternResponse' {} a -> s {resourceGroupName = a} :: CreateLogPatternResponse)
+
+-- | The response's http status code.
+createLogPatternResponse_httpStatus :: Lens.Lens' CreateLogPatternResponse Prelude.Int
+createLogPatternResponse_httpStatus = Lens.lens (\CreateLogPatternResponse' {httpStatus} -> httpStatus) (\s@CreateLogPatternResponse' {} a -> s {httpStatus = a} :: CreateLogPatternResponse)
+
+instance Prelude.NFData CreateLogPatternResponse where
+  rnf CreateLogPatternResponse' {..} =
+    Prelude.rnf logPattern
+      `Prelude.seq` Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/DeleteApplication.hs b/gen/Amazonka/ApplicationInsights/DeleteApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/DeleteApplication.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.DeleteApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes the specified application from monitoring. Does not delete the
+-- application.
+module Amazonka.ApplicationInsights.DeleteApplication
+  ( -- * Creating a Request
+    DeleteApplication (..),
+    newDeleteApplication,
+
+    -- * Request Lenses
+    deleteApplication_resourceGroupName,
+
+    -- * Destructuring the Response
+    DeleteApplicationResponse (..),
+    newDeleteApplicationResponse,
+
+    -- * Response Lenses
+    deleteApplicationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newDeleteApplication' smart constructor.
+data DeleteApplication = DeleteApplication'
+  { -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceGroupName', 'deleteApplication_resourceGroupName' - The name of the resource group.
+newDeleteApplication ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  DeleteApplication
+newDeleteApplication pResourceGroupName_ =
+  DeleteApplication'
+    { resourceGroupName =
+        pResourceGroupName_
+    }
+
+-- | The name of the resource group.
+deleteApplication_resourceGroupName :: Lens.Lens' DeleteApplication Prelude.Text
+deleteApplication_resourceGroupName = Lens.lens (\DeleteApplication' {resourceGroupName} -> resourceGroupName) (\s@DeleteApplication' {} a -> s {resourceGroupName = a} :: DeleteApplication)
+
+instance Core.AWSRequest DeleteApplication where
+  type
+    AWSResponse DeleteApplication =
+      DeleteApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteApplicationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteApplication where
+  hashWithSalt _salt DeleteApplication' {..} =
+    _salt `Prelude.hashWithSalt` resourceGroupName
+
+instance Prelude.NFData DeleteApplication where
+  rnf DeleteApplication' {..} =
+    Prelude.rnf resourceGroupName
+
+instance Data.ToHeaders DeleteApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.DeleteApplication" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteApplication where
+  toJSON DeleteApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName)
+          ]
+      )
+
+instance Data.ToPath DeleteApplication where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteApplicationResponse' smart constructor.
+data DeleteApplicationResponse = DeleteApplicationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteApplicationResponse_httpStatus' - The response's http status code.
+newDeleteApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteApplicationResponse
+newDeleteApplicationResponse pHttpStatus_ =
+  DeleteApplicationResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteApplicationResponse_httpStatus :: Lens.Lens' DeleteApplicationResponse Prelude.Int
+deleteApplicationResponse_httpStatus = Lens.lens (\DeleteApplicationResponse' {httpStatus} -> httpStatus) (\s@DeleteApplicationResponse' {} a -> s {httpStatus = a} :: DeleteApplicationResponse)
+
+instance Prelude.NFData DeleteApplicationResponse where
+  rnf DeleteApplicationResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/DeleteComponent.hs b/gen/Amazonka/ApplicationInsights/DeleteComponent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/DeleteComponent.hs
@@ -0,0 +1,180 @@
+{-# 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.ApplicationInsights.DeleteComponent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Ungroups a custom component. When you ungroup custom components, all
+-- applicable monitors that are set up for the component are removed and
+-- the instances revert to their standalone status.
+module Amazonka.ApplicationInsights.DeleteComponent
+  ( -- * Creating a Request
+    DeleteComponent (..),
+    newDeleteComponent,
+
+    -- * Request Lenses
+    deleteComponent_resourceGroupName,
+    deleteComponent_componentName,
+
+    -- * Destructuring the Response
+    DeleteComponentResponse (..),
+    newDeleteComponentResponse,
+
+    -- * Response Lenses
+    deleteComponentResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newDeleteComponent' smart constructor.
+data DeleteComponent = DeleteComponent'
+  { -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text,
+    -- | The name of the component.
+    componentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteComponent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceGroupName', 'deleteComponent_resourceGroupName' - The name of the resource group.
+--
+-- 'componentName', 'deleteComponent_componentName' - The name of the component.
+newDeleteComponent ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  -- | 'componentName'
+  Prelude.Text ->
+  DeleteComponent
+newDeleteComponent
+  pResourceGroupName_
+  pComponentName_ =
+    DeleteComponent'
+      { resourceGroupName =
+          pResourceGroupName_,
+        componentName = pComponentName_
+      }
+
+-- | The name of the resource group.
+deleteComponent_resourceGroupName :: Lens.Lens' DeleteComponent Prelude.Text
+deleteComponent_resourceGroupName = Lens.lens (\DeleteComponent' {resourceGroupName} -> resourceGroupName) (\s@DeleteComponent' {} a -> s {resourceGroupName = a} :: DeleteComponent)
+
+-- | The name of the component.
+deleteComponent_componentName :: Lens.Lens' DeleteComponent Prelude.Text
+deleteComponent_componentName = Lens.lens (\DeleteComponent' {componentName} -> componentName) (\s@DeleteComponent' {} a -> s {componentName = a} :: DeleteComponent)
+
+instance Core.AWSRequest DeleteComponent where
+  type
+    AWSResponse DeleteComponent =
+      DeleteComponentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteComponentResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteComponent where
+  hashWithSalt _salt DeleteComponent' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceGroupName
+      `Prelude.hashWithSalt` componentName
+
+instance Prelude.NFData DeleteComponent where
+  rnf DeleteComponent' {..} =
+    Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf componentName
+
+instance Data.ToHeaders DeleteComponent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.DeleteComponent" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteComponent where
+  toJSON DeleteComponent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName),
+            Prelude.Just
+              ("ComponentName" Data..= componentName)
+          ]
+      )
+
+instance Data.ToPath DeleteComponent where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteComponent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteComponentResponse' smart constructor.
+data DeleteComponentResponse = DeleteComponentResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteComponentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteComponentResponse_httpStatus' - The response's http status code.
+newDeleteComponentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteComponentResponse
+newDeleteComponentResponse pHttpStatus_ =
+  DeleteComponentResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteComponentResponse_httpStatus :: Lens.Lens' DeleteComponentResponse Prelude.Int
+deleteComponentResponse_httpStatus = Lens.lens (\DeleteComponentResponse' {httpStatus} -> httpStatus) (\s@DeleteComponentResponse' {} a -> s {httpStatus = a} :: DeleteComponentResponse)
+
+instance Prelude.NFData DeleteComponentResponse where
+  rnf DeleteComponentResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/DeleteLogPattern.hs b/gen/Amazonka/ApplicationInsights/DeleteLogPattern.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/DeleteLogPattern.hs
@@ -0,0 +1,197 @@
+{-# 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.ApplicationInsights.DeleteLogPattern
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes the specified log pattern from a @LogPatternSet@.
+module Amazonka.ApplicationInsights.DeleteLogPattern
+  ( -- * Creating a Request
+    DeleteLogPattern (..),
+    newDeleteLogPattern,
+
+    -- * Request Lenses
+    deleteLogPattern_resourceGroupName,
+    deleteLogPattern_patternSetName,
+    deleteLogPattern_patternName,
+
+    -- * Destructuring the Response
+    DeleteLogPatternResponse (..),
+    newDeleteLogPatternResponse,
+
+    -- * Response Lenses
+    deleteLogPatternResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newDeleteLogPattern' smart constructor.
+data DeleteLogPattern = DeleteLogPattern'
+  { -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text,
+    -- | The name of the log pattern set.
+    patternSetName :: Prelude.Text,
+    -- | The name of the log pattern.
+    patternName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteLogPattern' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceGroupName', 'deleteLogPattern_resourceGroupName' - The name of the resource group.
+--
+-- 'patternSetName', 'deleteLogPattern_patternSetName' - The name of the log pattern set.
+--
+-- 'patternName', 'deleteLogPattern_patternName' - The name of the log pattern.
+newDeleteLogPattern ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  -- | 'patternSetName'
+  Prelude.Text ->
+  -- | 'patternName'
+  Prelude.Text ->
+  DeleteLogPattern
+newDeleteLogPattern
+  pResourceGroupName_
+  pPatternSetName_
+  pPatternName_ =
+    DeleteLogPattern'
+      { resourceGroupName =
+          pResourceGroupName_,
+        patternSetName = pPatternSetName_,
+        patternName = pPatternName_
+      }
+
+-- | The name of the resource group.
+deleteLogPattern_resourceGroupName :: Lens.Lens' DeleteLogPattern Prelude.Text
+deleteLogPattern_resourceGroupName = Lens.lens (\DeleteLogPattern' {resourceGroupName} -> resourceGroupName) (\s@DeleteLogPattern' {} a -> s {resourceGroupName = a} :: DeleteLogPattern)
+
+-- | The name of the log pattern set.
+deleteLogPattern_patternSetName :: Lens.Lens' DeleteLogPattern Prelude.Text
+deleteLogPattern_patternSetName = Lens.lens (\DeleteLogPattern' {patternSetName} -> patternSetName) (\s@DeleteLogPattern' {} a -> s {patternSetName = a} :: DeleteLogPattern)
+
+-- | The name of the log pattern.
+deleteLogPattern_patternName :: Lens.Lens' DeleteLogPattern Prelude.Text
+deleteLogPattern_patternName = Lens.lens (\DeleteLogPattern' {patternName} -> patternName) (\s@DeleteLogPattern' {} a -> s {patternName = a} :: DeleteLogPattern)
+
+instance Core.AWSRequest DeleteLogPattern where
+  type
+    AWSResponse DeleteLogPattern =
+      DeleteLogPatternResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteLogPatternResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteLogPattern where
+  hashWithSalt _salt DeleteLogPattern' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceGroupName
+      `Prelude.hashWithSalt` patternSetName
+      `Prelude.hashWithSalt` patternName
+
+instance Prelude.NFData DeleteLogPattern where
+  rnf DeleteLogPattern' {..} =
+    Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf patternSetName
+      `Prelude.seq` Prelude.rnf patternName
+
+instance Data.ToHeaders DeleteLogPattern where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.DeleteLogPattern" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteLogPattern where
+  toJSON DeleteLogPattern' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName),
+            Prelude.Just
+              ("PatternSetName" Data..= patternSetName),
+            Prelude.Just ("PatternName" Data..= patternName)
+          ]
+      )
+
+instance Data.ToPath DeleteLogPattern where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteLogPattern where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteLogPatternResponse' smart constructor.
+data DeleteLogPatternResponse = DeleteLogPatternResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteLogPatternResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteLogPatternResponse_httpStatus' - The response's http status code.
+newDeleteLogPatternResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteLogPatternResponse
+newDeleteLogPatternResponse pHttpStatus_ =
+  DeleteLogPatternResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteLogPatternResponse_httpStatus :: Lens.Lens' DeleteLogPatternResponse Prelude.Int
+deleteLogPatternResponse_httpStatus = Lens.lens (\DeleteLogPatternResponse' {httpStatus} -> httpStatus) (\s@DeleteLogPatternResponse' {} a -> s {httpStatus = a} :: DeleteLogPatternResponse)
+
+instance Prelude.NFData DeleteLogPatternResponse where
+  rnf DeleteLogPatternResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/DescribeApplication.hs b/gen/Amazonka/ApplicationInsights/DescribeApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/DescribeApplication.hs
@@ -0,0 +1,174 @@
+{-# 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.ApplicationInsights.DescribeApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the application.
+module Amazonka.ApplicationInsights.DescribeApplication
+  ( -- * Creating a Request
+    DescribeApplication (..),
+    newDescribeApplication,
+
+    -- * Request Lenses
+    describeApplication_resourceGroupName,
+
+    -- * Destructuring the Response
+    DescribeApplicationResponse (..),
+    newDescribeApplicationResponse,
+
+    -- * Response Lenses
+    describeApplicationResponse_applicationInfo,
+    describeApplicationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newDescribeApplication' smart constructor.
+data DescribeApplication = DescribeApplication'
+  { -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceGroupName', 'describeApplication_resourceGroupName' - The name of the resource group.
+newDescribeApplication ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  DescribeApplication
+newDescribeApplication pResourceGroupName_ =
+  DescribeApplication'
+    { resourceGroupName =
+        pResourceGroupName_
+    }
+
+-- | The name of the resource group.
+describeApplication_resourceGroupName :: Lens.Lens' DescribeApplication Prelude.Text
+describeApplication_resourceGroupName = Lens.lens (\DescribeApplication' {resourceGroupName} -> resourceGroupName) (\s@DescribeApplication' {} a -> s {resourceGroupName = a} :: DescribeApplication)
+
+instance Core.AWSRequest DescribeApplication where
+  type
+    AWSResponse DescribeApplication =
+      DescribeApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeApplicationResponse'
+            Prelude.<$> (x Data..?> "ApplicationInfo")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeApplication where
+  hashWithSalt _salt DescribeApplication' {..} =
+    _salt `Prelude.hashWithSalt` resourceGroupName
+
+instance Prelude.NFData DescribeApplication where
+  rnf DescribeApplication' {..} =
+    Prelude.rnf resourceGroupName
+
+instance Data.ToHeaders DescribeApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.DescribeApplication" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeApplication where
+  toJSON DescribeApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName)
+          ]
+      )
+
+instance Data.ToPath DescribeApplication where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeApplicationResponse' smart constructor.
+data DescribeApplicationResponse = DescribeApplicationResponse'
+  { -- | Information about the application.
+    applicationInfo :: Prelude.Maybe ApplicationInfo,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationInfo', 'describeApplicationResponse_applicationInfo' - Information about the application.
+--
+-- 'httpStatus', 'describeApplicationResponse_httpStatus' - The response's http status code.
+newDescribeApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeApplicationResponse
+newDescribeApplicationResponse pHttpStatus_ =
+  DescribeApplicationResponse'
+    { applicationInfo =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the application.
+describeApplicationResponse_applicationInfo :: Lens.Lens' DescribeApplicationResponse (Prelude.Maybe ApplicationInfo)
+describeApplicationResponse_applicationInfo = Lens.lens (\DescribeApplicationResponse' {applicationInfo} -> applicationInfo) (\s@DescribeApplicationResponse' {} a -> s {applicationInfo = a} :: DescribeApplicationResponse)
+
+-- | The response's http status code.
+describeApplicationResponse_httpStatus :: Lens.Lens' DescribeApplicationResponse Prelude.Int
+describeApplicationResponse_httpStatus = Lens.lens (\DescribeApplicationResponse' {httpStatus} -> httpStatus) (\s@DescribeApplicationResponse' {} a -> s {httpStatus = a} :: DescribeApplicationResponse)
+
+instance Prelude.NFData DescribeApplicationResponse where
+  rnf DescribeApplicationResponse' {..} =
+    Prelude.rnf applicationInfo
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/DescribeComponent.hs b/gen/Amazonka/ApplicationInsights/DescribeComponent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/DescribeComponent.hs
@@ -0,0 +1,205 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.DescribeComponent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a component and lists the resources that are grouped together
+-- in a component.
+module Amazonka.ApplicationInsights.DescribeComponent
+  ( -- * Creating a Request
+    DescribeComponent (..),
+    newDescribeComponent,
+
+    -- * Request Lenses
+    describeComponent_resourceGroupName,
+    describeComponent_componentName,
+
+    -- * Destructuring the Response
+    DescribeComponentResponse (..),
+    newDescribeComponentResponse,
+
+    -- * Response Lenses
+    describeComponentResponse_applicationComponent,
+    describeComponentResponse_resourceList,
+    describeComponentResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newDescribeComponent' smart constructor.
+data DescribeComponent = DescribeComponent'
+  { -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text,
+    -- | The name of the component.
+    componentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeComponent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceGroupName', 'describeComponent_resourceGroupName' - The name of the resource group.
+--
+-- 'componentName', 'describeComponent_componentName' - The name of the component.
+newDescribeComponent ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  -- | 'componentName'
+  Prelude.Text ->
+  DescribeComponent
+newDescribeComponent
+  pResourceGroupName_
+  pComponentName_ =
+    DescribeComponent'
+      { resourceGroupName =
+          pResourceGroupName_,
+        componentName = pComponentName_
+      }
+
+-- | The name of the resource group.
+describeComponent_resourceGroupName :: Lens.Lens' DescribeComponent Prelude.Text
+describeComponent_resourceGroupName = Lens.lens (\DescribeComponent' {resourceGroupName} -> resourceGroupName) (\s@DescribeComponent' {} a -> s {resourceGroupName = a} :: DescribeComponent)
+
+-- | The name of the component.
+describeComponent_componentName :: Lens.Lens' DescribeComponent Prelude.Text
+describeComponent_componentName = Lens.lens (\DescribeComponent' {componentName} -> componentName) (\s@DescribeComponent' {} a -> s {componentName = a} :: DescribeComponent)
+
+instance Core.AWSRequest DescribeComponent where
+  type
+    AWSResponse DescribeComponent =
+      DescribeComponentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeComponentResponse'
+            Prelude.<$> (x Data..?> "ApplicationComponent")
+            Prelude.<*> (x Data..?> "ResourceList" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeComponent where
+  hashWithSalt _salt DescribeComponent' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceGroupName
+      `Prelude.hashWithSalt` componentName
+
+instance Prelude.NFData DescribeComponent where
+  rnf DescribeComponent' {..} =
+    Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf componentName
+
+instance Data.ToHeaders DescribeComponent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.DescribeComponent" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeComponent where
+  toJSON DescribeComponent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName),
+            Prelude.Just
+              ("ComponentName" Data..= componentName)
+          ]
+      )
+
+instance Data.ToPath DescribeComponent where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeComponent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeComponentResponse' smart constructor.
+data DescribeComponentResponse = DescribeComponentResponse'
+  { applicationComponent :: Prelude.Maybe ApplicationComponent,
+    -- | The list of resource ARNs that belong to the component.
+    resourceList :: Prelude.Maybe [Prelude.Text],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeComponentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationComponent', 'describeComponentResponse_applicationComponent' - Undocumented member.
+--
+-- 'resourceList', 'describeComponentResponse_resourceList' - The list of resource ARNs that belong to the component.
+--
+-- 'httpStatus', 'describeComponentResponse_httpStatus' - The response's http status code.
+newDescribeComponentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeComponentResponse
+newDescribeComponentResponse pHttpStatus_ =
+  DescribeComponentResponse'
+    { applicationComponent =
+        Prelude.Nothing,
+      resourceList = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+describeComponentResponse_applicationComponent :: Lens.Lens' DescribeComponentResponse (Prelude.Maybe ApplicationComponent)
+describeComponentResponse_applicationComponent = Lens.lens (\DescribeComponentResponse' {applicationComponent} -> applicationComponent) (\s@DescribeComponentResponse' {} a -> s {applicationComponent = a} :: DescribeComponentResponse)
+
+-- | The list of resource ARNs that belong to the component.
+describeComponentResponse_resourceList :: Lens.Lens' DescribeComponentResponse (Prelude.Maybe [Prelude.Text])
+describeComponentResponse_resourceList = Lens.lens (\DescribeComponentResponse' {resourceList} -> resourceList) (\s@DescribeComponentResponse' {} a -> s {resourceList = a} :: DescribeComponentResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeComponentResponse_httpStatus :: Lens.Lens' DescribeComponentResponse Prelude.Int
+describeComponentResponse_httpStatus = Lens.lens (\DescribeComponentResponse' {httpStatus} -> httpStatus) (\s@DescribeComponentResponse' {} a -> s {httpStatus = a} :: DescribeComponentResponse)
+
+instance Prelude.NFData DescribeComponentResponse where
+  rnf DescribeComponentResponse' {..} =
+    Prelude.rnf applicationComponent
+      `Prelude.seq` Prelude.rnf resourceList
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/DescribeComponentConfiguration.hs b/gen/Amazonka/ApplicationInsights/DescribeComponentConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/DescribeComponentConfiguration.hs
@@ -0,0 +1,244 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.DescribeComponentConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the monitoring configuration of the component.
+module Amazonka.ApplicationInsights.DescribeComponentConfiguration
+  ( -- * Creating a Request
+    DescribeComponentConfiguration (..),
+    newDescribeComponentConfiguration,
+
+    -- * Request Lenses
+    describeComponentConfiguration_resourceGroupName,
+    describeComponentConfiguration_componentName,
+
+    -- * Destructuring the Response
+    DescribeComponentConfigurationResponse (..),
+    newDescribeComponentConfigurationResponse,
+
+    -- * Response Lenses
+    describeComponentConfigurationResponse_componentConfiguration,
+    describeComponentConfigurationResponse_monitor,
+    describeComponentConfigurationResponse_tier,
+    describeComponentConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newDescribeComponentConfiguration' smart constructor.
+data DescribeComponentConfiguration = DescribeComponentConfiguration'
+  { -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text,
+    -- | The name of the component.
+    componentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeComponentConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceGroupName', 'describeComponentConfiguration_resourceGroupName' - The name of the resource group.
+--
+-- 'componentName', 'describeComponentConfiguration_componentName' - The name of the component.
+newDescribeComponentConfiguration ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  -- | 'componentName'
+  Prelude.Text ->
+  DescribeComponentConfiguration
+newDescribeComponentConfiguration
+  pResourceGroupName_
+  pComponentName_ =
+    DescribeComponentConfiguration'
+      { resourceGroupName =
+          pResourceGroupName_,
+        componentName = pComponentName_
+      }
+
+-- | The name of the resource group.
+describeComponentConfiguration_resourceGroupName :: Lens.Lens' DescribeComponentConfiguration Prelude.Text
+describeComponentConfiguration_resourceGroupName = Lens.lens (\DescribeComponentConfiguration' {resourceGroupName} -> resourceGroupName) (\s@DescribeComponentConfiguration' {} a -> s {resourceGroupName = a} :: DescribeComponentConfiguration)
+
+-- | The name of the component.
+describeComponentConfiguration_componentName :: Lens.Lens' DescribeComponentConfiguration Prelude.Text
+describeComponentConfiguration_componentName = Lens.lens (\DescribeComponentConfiguration' {componentName} -> componentName) (\s@DescribeComponentConfiguration' {} a -> s {componentName = a} :: DescribeComponentConfiguration)
+
+instance
+  Core.AWSRequest
+    DescribeComponentConfiguration
+  where
+  type
+    AWSResponse DescribeComponentConfiguration =
+      DescribeComponentConfigurationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeComponentConfigurationResponse'
+            Prelude.<$> (x Data..?> "ComponentConfiguration")
+            Prelude.<*> (x Data..?> "Monitor")
+            Prelude.<*> (x Data..?> "Tier")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeComponentConfiguration
+  where
+  hashWithSalt
+    _salt
+    DescribeComponentConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` resourceGroupName
+        `Prelude.hashWithSalt` componentName
+
+instance
+  Prelude.NFData
+    DescribeComponentConfiguration
+  where
+  rnf DescribeComponentConfiguration' {..} =
+    Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf componentName
+
+instance
+  Data.ToHeaders
+    DescribeComponentConfiguration
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.DescribeComponentConfiguration" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeComponentConfiguration where
+  toJSON DescribeComponentConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName),
+            Prelude.Just
+              ("ComponentName" Data..= componentName)
+          ]
+      )
+
+instance Data.ToPath DescribeComponentConfiguration where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeComponentConfiguration where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeComponentConfigurationResponse' smart constructor.
+data DescribeComponentConfigurationResponse = DescribeComponentConfigurationResponse'
+  { -- | The configuration settings of the component. The value is the escaped
+    -- JSON of the configuration.
+    componentConfiguration :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether the application component is monitored.
+    monitor :: Prelude.Maybe Prelude.Bool,
+    -- | The tier of the application component. Supported tiers include
+    -- @DOT_NET_CORE@, @DOT_NET_WORKER@, @DOT_NET_WEB@, @SQL_SERVER@, and
+    -- @DEFAULT@
+    tier :: Prelude.Maybe Tier,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeComponentConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'componentConfiguration', 'describeComponentConfigurationResponse_componentConfiguration' - The configuration settings of the component. The value is the escaped
+-- JSON of the configuration.
+--
+-- 'monitor', 'describeComponentConfigurationResponse_monitor' - Indicates whether the application component is monitored.
+--
+-- 'tier', 'describeComponentConfigurationResponse_tier' - The tier of the application component. Supported tiers include
+-- @DOT_NET_CORE@, @DOT_NET_WORKER@, @DOT_NET_WEB@, @SQL_SERVER@, and
+-- @DEFAULT@
+--
+-- 'httpStatus', 'describeComponentConfigurationResponse_httpStatus' - The response's http status code.
+newDescribeComponentConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeComponentConfigurationResponse
+newDescribeComponentConfigurationResponse
+  pHttpStatus_ =
+    DescribeComponentConfigurationResponse'
+      { componentConfiguration =
+          Prelude.Nothing,
+        monitor = Prelude.Nothing,
+        tier = Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The configuration settings of the component. The value is the escaped
+-- JSON of the configuration.
+describeComponentConfigurationResponse_componentConfiguration :: Lens.Lens' DescribeComponentConfigurationResponse (Prelude.Maybe Prelude.Text)
+describeComponentConfigurationResponse_componentConfiguration = Lens.lens (\DescribeComponentConfigurationResponse' {componentConfiguration} -> componentConfiguration) (\s@DescribeComponentConfigurationResponse' {} a -> s {componentConfiguration = a} :: DescribeComponentConfigurationResponse)
+
+-- | Indicates whether the application component is monitored.
+describeComponentConfigurationResponse_monitor :: Lens.Lens' DescribeComponentConfigurationResponse (Prelude.Maybe Prelude.Bool)
+describeComponentConfigurationResponse_monitor = Lens.lens (\DescribeComponentConfigurationResponse' {monitor} -> monitor) (\s@DescribeComponentConfigurationResponse' {} a -> s {monitor = a} :: DescribeComponentConfigurationResponse)
+
+-- | The tier of the application component. Supported tiers include
+-- @DOT_NET_CORE@, @DOT_NET_WORKER@, @DOT_NET_WEB@, @SQL_SERVER@, and
+-- @DEFAULT@
+describeComponentConfigurationResponse_tier :: Lens.Lens' DescribeComponentConfigurationResponse (Prelude.Maybe Tier)
+describeComponentConfigurationResponse_tier = Lens.lens (\DescribeComponentConfigurationResponse' {tier} -> tier) (\s@DescribeComponentConfigurationResponse' {} a -> s {tier = a} :: DescribeComponentConfigurationResponse)
+
+-- | The response's http status code.
+describeComponentConfigurationResponse_httpStatus :: Lens.Lens' DescribeComponentConfigurationResponse Prelude.Int
+describeComponentConfigurationResponse_httpStatus = Lens.lens (\DescribeComponentConfigurationResponse' {httpStatus} -> httpStatus) (\s@DescribeComponentConfigurationResponse' {} a -> s {httpStatus = a} :: DescribeComponentConfigurationResponse)
+
+instance
+  Prelude.NFData
+    DescribeComponentConfigurationResponse
+  where
+  rnf DescribeComponentConfigurationResponse' {..} =
+    Prelude.rnf componentConfiguration
+      `Prelude.seq` Prelude.rnf monitor
+      `Prelude.seq` Prelude.rnf tier
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/DescribeComponentConfigurationRecommendation.hs b/gen/Amazonka/ApplicationInsights/DescribeComponentConfigurationRecommendation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/DescribeComponentConfigurationRecommendation.hs
@@ -0,0 +1,243 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.DescribeComponentConfigurationRecommendation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the recommended monitoring configuration of the component.
+module Amazonka.ApplicationInsights.DescribeComponentConfigurationRecommendation
+  ( -- * Creating a Request
+    DescribeComponentConfigurationRecommendation (..),
+    newDescribeComponentConfigurationRecommendation,
+
+    -- * Request Lenses
+    describeComponentConfigurationRecommendation_resourceGroupName,
+    describeComponentConfigurationRecommendation_componentName,
+    describeComponentConfigurationRecommendation_tier,
+
+    -- * Destructuring the Response
+    DescribeComponentConfigurationRecommendationResponse (..),
+    newDescribeComponentConfigurationRecommendationResponse,
+
+    -- * Response Lenses
+    describeComponentConfigurationRecommendationResponse_componentConfiguration,
+    describeComponentConfigurationRecommendationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newDescribeComponentConfigurationRecommendation' smart constructor.
+data DescribeComponentConfigurationRecommendation = DescribeComponentConfigurationRecommendation'
+  { -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text,
+    -- | The name of the component.
+    componentName :: Prelude.Text,
+    -- | The tier of the application component.
+    tier :: Tier
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeComponentConfigurationRecommendation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceGroupName', 'describeComponentConfigurationRecommendation_resourceGroupName' - The name of the resource group.
+--
+-- 'componentName', 'describeComponentConfigurationRecommendation_componentName' - The name of the component.
+--
+-- 'tier', 'describeComponentConfigurationRecommendation_tier' - The tier of the application component.
+newDescribeComponentConfigurationRecommendation ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  -- | 'componentName'
+  Prelude.Text ->
+  -- | 'tier'
+  Tier ->
+  DescribeComponentConfigurationRecommendation
+newDescribeComponentConfigurationRecommendation
+  pResourceGroupName_
+  pComponentName_
+  pTier_ =
+    DescribeComponentConfigurationRecommendation'
+      { resourceGroupName =
+          pResourceGroupName_,
+        componentName =
+          pComponentName_,
+        tier = pTier_
+      }
+
+-- | The name of the resource group.
+describeComponentConfigurationRecommendation_resourceGroupName :: Lens.Lens' DescribeComponentConfigurationRecommendation Prelude.Text
+describeComponentConfigurationRecommendation_resourceGroupName = Lens.lens (\DescribeComponentConfigurationRecommendation' {resourceGroupName} -> resourceGroupName) (\s@DescribeComponentConfigurationRecommendation' {} a -> s {resourceGroupName = a} :: DescribeComponentConfigurationRecommendation)
+
+-- | The name of the component.
+describeComponentConfigurationRecommendation_componentName :: Lens.Lens' DescribeComponentConfigurationRecommendation Prelude.Text
+describeComponentConfigurationRecommendation_componentName = Lens.lens (\DescribeComponentConfigurationRecommendation' {componentName} -> componentName) (\s@DescribeComponentConfigurationRecommendation' {} a -> s {componentName = a} :: DescribeComponentConfigurationRecommendation)
+
+-- | The tier of the application component.
+describeComponentConfigurationRecommendation_tier :: Lens.Lens' DescribeComponentConfigurationRecommendation Tier
+describeComponentConfigurationRecommendation_tier = Lens.lens (\DescribeComponentConfigurationRecommendation' {tier} -> tier) (\s@DescribeComponentConfigurationRecommendation' {} a -> s {tier = a} :: DescribeComponentConfigurationRecommendation)
+
+instance
+  Core.AWSRequest
+    DescribeComponentConfigurationRecommendation
+  where
+  type
+    AWSResponse
+      DescribeComponentConfigurationRecommendation =
+      DescribeComponentConfigurationRecommendationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeComponentConfigurationRecommendationResponse'
+            Prelude.<$> (x Data..?> "ComponentConfiguration")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeComponentConfigurationRecommendation
+  where
+  hashWithSalt
+    _salt
+    DescribeComponentConfigurationRecommendation' {..} =
+      _salt
+        `Prelude.hashWithSalt` resourceGroupName
+        `Prelude.hashWithSalt` componentName
+        `Prelude.hashWithSalt` tier
+
+instance
+  Prelude.NFData
+    DescribeComponentConfigurationRecommendation
+  where
+  rnf DescribeComponentConfigurationRecommendation' {..} =
+    Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf componentName
+      `Prelude.seq` Prelude.rnf tier
+
+instance
+  Data.ToHeaders
+    DescribeComponentConfigurationRecommendation
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.DescribeComponentConfigurationRecommendation" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DescribeComponentConfigurationRecommendation
+  where
+  toJSON
+    DescribeComponentConfigurationRecommendation' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just
+                ("ResourceGroupName" Data..= resourceGroupName),
+              Prelude.Just ("ComponentName" Data..= componentName),
+              Prelude.Just ("Tier" Data..= tier)
+            ]
+        )
+
+instance
+  Data.ToPath
+    DescribeComponentConfigurationRecommendation
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DescribeComponentConfigurationRecommendation
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeComponentConfigurationRecommendationResponse' smart constructor.
+data DescribeComponentConfigurationRecommendationResponse = DescribeComponentConfigurationRecommendationResponse'
+  { -- | The recommended configuration settings of the component. The value is
+    -- the escaped JSON of the configuration.
+    componentConfiguration :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeComponentConfigurationRecommendationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'componentConfiguration', 'describeComponentConfigurationRecommendationResponse_componentConfiguration' - The recommended configuration settings of the component. The value is
+-- the escaped JSON of the configuration.
+--
+-- 'httpStatus', 'describeComponentConfigurationRecommendationResponse_httpStatus' - The response's http status code.
+newDescribeComponentConfigurationRecommendationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeComponentConfigurationRecommendationResponse
+newDescribeComponentConfigurationRecommendationResponse
+  pHttpStatus_ =
+    DescribeComponentConfigurationRecommendationResponse'
+      { componentConfiguration =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | The recommended configuration settings of the component. The value is
+-- the escaped JSON of the configuration.
+describeComponentConfigurationRecommendationResponse_componentConfiguration :: Lens.Lens' DescribeComponentConfigurationRecommendationResponse (Prelude.Maybe Prelude.Text)
+describeComponentConfigurationRecommendationResponse_componentConfiguration = Lens.lens (\DescribeComponentConfigurationRecommendationResponse' {componentConfiguration} -> componentConfiguration) (\s@DescribeComponentConfigurationRecommendationResponse' {} a -> s {componentConfiguration = a} :: DescribeComponentConfigurationRecommendationResponse)
+
+-- | The response's http status code.
+describeComponentConfigurationRecommendationResponse_httpStatus :: Lens.Lens' DescribeComponentConfigurationRecommendationResponse Prelude.Int
+describeComponentConfigurationRecommendationResponse_httpStatus = Lens.lens (\DescribeComponentConfigurationRecommendationResponse' {httpStatus} -> httpStatus) (\s@DescribeComponentConfigurationRecommendationResponse' {} a -> s {httpStatus = a} :: DescribeComponentConfigurationRecommendationResponse)
+
+instance
+  Prelude.NFData
+    DescribeComponentConfigurationRecommendationResponse
+  where
+  rnf
+    DescribeComponentConfigurationRecommendationResponse' {..} =
+      Prelude.rnf componentConfiguration
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/DescribeLogPattern.hs b/gen/Amazonka/ApplicationInsights/DescribeLogPattern.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/DescribeLogPattern.hs
@@ -0,0 +1,221 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.DescribeLogPattern
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describe a specific log pattern from a @LogPatternSet@.
+module Amazonka.ApplicationInsights.DescribeLogPattern
+  ( -- * Creating a Request
+    DescribeLogPattern (..),
+    newDescribeLogPattern,
+
+    -- * Request Lenses
+    describeLogPattern_resourceGroupName,
+    describeLogPattern_patternSetName,
+    describeLogPattern_patternName,
+
+    -- * Destructuring the Response
+    DescribeLogPatternResponse (..),
+    newDescribeLogPatternResponse,
+
+    -- * Response Lenses
+    describeLogPatternResponse_logPattern,
+    describeLogPatternResponse_resourceGroupName,
+    describeLogPatternResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newDescribeLogPattern' smart constructor.
+data DescribeLogPattern = DescribeLogPattern'
+  { -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text,
+    -- | The name of the log pattern set.
+    patternSetName :: Prelude.Text,
+    -- | The name of the log pattern.
+    patternName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeLogPattern' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceGroupName', 'describeLogPattern_resourceGroupName' - The name of the resource group.
+--
+-- 'patternSetName', 'describeLogPattern_patternSetName' - The name of the log pattern set.
+--
+-- 'patternName', 'describeLogPattern_patternName' - The name of the log pattern.
+newDescribeLogPattern ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  -- | 'patternSetName'
+  Prelude.Text ->
+  -- | 'patternName'
+  Prelude.Text ->
+  DescribeLogPattern
+newDescribeLogPattern
+  pResourceGroupName_
+  pPatternSetName_
+  pPatternName_ =
+    DescribeLogPattern'
+      { resourceGroupName =
+          pResourceGroupName_,
+        patternSetName = pPatternSetName_,
+        patternName = pPatternName_
+      }
+
+-- | The name of the resource group.
+describeLogPattern_resourceGroupName :: Lens.Lens' DescribeLogPattern Prelude.Text
+describeLogPattern_resourceGroupName = Lens.lens (\DescribeLogPattern' {resourceGroupName} -> resourceGroupName) (\s@DescribeLogPattern' {} a -> s {resourceGroupName = a} :: DescribeLogPattern)
+
+-- | The name of the log pattern set.
+describeLogPattern_patternSetName :: Lens.Lens' DescribeLogPattern Prelude.Text
+describeLogPattern_patternSetName = Lens.lens (\DescribeLogPattern' {patternSetName} -> patternSetName) (\s@DescribeLogPattern' {} a -> s {patternSetName = a} :: DescribeLogPattern)
+
+-- | The name of the log pattern.
+describeLogPattern_patternName :: Lens.Lens' DescribeLogPattern Prelude.Text
+describeLogPattern_patternName = Lens.lens (\DescribeLogPattern' {patternName} -> patternName) (\s@DescribeLogPattern' {} a -> s {patternName = a} :: DescribeLogPattern)
+
+instance Core.AWSRequest DescribeLogPattern where
+  type
+    AWSResponse DescribeLogPattern =
+      DescribeLogPatternResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeLogPatternResponse'
+            Prelude.<$> (x Data..?> "LogPattern")
+            Prelude.<*> (x Data..?> "ResourceGroupName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeLogPattern where
+  hashWithSalt _salt DescribeLogPattern' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceGroupName
+      `Prelude.hashWithSalt` patternSetName
+      `Prelude.hashWithSalt` patternName
+
+instance Prelude.NFData DescribeLogPattern where
+  rnf DescribeLogPattern' {..} =
+    Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf patternSetName
+      `Prelude.seq` Prelude.rnf patternName
+
+instance Data.ToHeaders DescribeLogPattern where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.DescribeLogPattern" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeLogPattern where
+  toJSON DescribeLogPattern' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName),
+            Prelude.Just
+              ("PatternSetName" Data..= patternSetName),
+            Prelude.Just ("PatternName" Data..= patternName)
+          ]
+      )
+
+instance Data.ToPath DescribeLogPattern where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeLogPattern where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeLogPatternResponse' smart constructor.
+data DescribeLogPatternResponse = DescribeLogPatternResponse'
+  { -- | The successfully created log pattern.
+    logPattern :: Prelude.Maybe LogPattern,
+    -- | The name of the resource group.
+    resourceGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeLogPatternResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'logPattern', 'describeLogPatternResponse_logPattern' - The successfully created log pattern.
+--
+-- 'resourceGroupName', 'describeLogPatternResponse_resourceGroupName' - The name of the resource group.
+--
+-- 'httpStatus', 'describeLogPatternResponse_httpStatus' - The response's http status code.
+newDescribeLogPatternResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeLogPatternResponse
+newDescribeLogPatternResponse pHttpStatus_ =
+  DescribeLogPatternResponse'
+    { logPattern =
+        Prelude.Nothing,
+      resourceGroupName = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The successfully created log pattern.
+describeLogPatternResponse_logPattern :: Lens.Lens' DescribeLogPatternResponse (Prelude.Maybe LogPattern)
+describeLogPatternResponse_logPattern = Lens.lens (\DescribeLogPatternResponse' {logPattern} -> logPattern) (\s@DescribeLogPatternResponse' {} a -> s {logPattern = a} :: DescribeLogPatternResponse)
+
+-- | The name of the resource group.
+describeLogPatternResponse_resourceGroupName :: Lens.Lens' DescribeLogPatternResponse (Prelude.Maybe Prelude.Text)
+describeLogPatternResponse_resourceGroupName = Lens.lens (\DescribeLogPatternResponse' {resourceGroupName} -> resourceGroupName) (\s@DescribeLogPatternResponse' {} a -> s {resourceGroupName = a} :: DescribeLogPatternResponse)
+
+-- | The response's http status code.
+describeLogPatternResponse_httpStatus :: Lens.Lens' DescribeLogPatternResponse Prelude.Int
+describeLogPatternResponse_httpStatus = Lens.lens (\DescribeLogPatternResponse' {httpStatus} -> httpStatus) (\s@DescribeLogPatternResponse' {} a -> s {httpStatus = a} :: DescribeLogPatternResponse)
+
+instance Prelude.NFData DescribeLogPatternResponse where
+  rnf DescribeLogPatternResponse' {..} =
+    Prelude.rnf logPattern
+      `Prelude.seq` Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/DescribeObservation.hs b/gen/Amazonka/ApplicationInsights/DescribeObservation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/DescribeObservation.hs
@@ -0,0 +1,174 @@
+{-# 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.ApplicationInsights.DescribeObservation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes an anomaly or error with the application.
+module Amazonka.ApplicationInsights.DescribeObservation
+  ( -- * Creating a Request
+    DescribeObservation (..),
+    newDescribeObservation,
+
+    -- * Request Lenses
+    describeObservation_observationId,
+
+    -- * Destructuring the Response
+    DescribeObservationResponse (..),
+    newDescribeObservationResponse,
+
+    -- * Response Lenses
+    describeObservationResponse_observation,
+    describeObservationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newDescribeObservation' smart constructor.
+data DescribeObservation = DescribeObservation'
+  { -- | The ID of the observation.
+    observationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeObservation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'observationId', 'describeObservation_observationId' - The ID of the observation.
+newDescribeObservation ::
+  -- | 'observationId'
+  Prelude.Text ->
+  DescribeObservation
+newDescribeObservation pObservationId_ =
+  DescribeObservation'
+    { observationId =
+        pObservationId_
+    }
+
+-- | The ID of the observation.
+describeObservation_observationId :: Lens.Lens' DescribeObservation Prelude.Text
+describeObservation_observationId = Lens.lens (\DescribeObservation' {observationId} -> observationId) (\s@DescribeObservation' {} a -> s {observationId = a} :: DescribeObservation)
+
+instance Core.AWSRequest DescribeObservation where
+  type
+    AWSResponse DescribeObservation =
+      DescribeObservationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeObservationResponse'
+            Prelude.<$> (x Data..?> "Observation")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeObservation where
+  hashWithSalt _salt DescribeObservation' {..} =
+    _salt `Prelude.hashWithSalt` observationId
+
+instance Prelude.NFData DescribeObservation where
+  rnf DescribeObservation' {..} =
+    Prelude.rnf observationId
+
+instance Data.ToHeaders DescribeObservation where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.DescribeObservation" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeObservation where
+  toJSON DescribeObservation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ObservationId" Data..= observationId)
+          ]
+      )
+
+instance Data.ToPath DescribeObservation where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeObservation where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeObservationResponse' smart constructor.
+data DescribeObservationResponse = DescribeObservationResponse'
+  { -- | Information about the observation.
+    observation :: Prelude.Maybe Observation,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeObservationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'observation', 'describeObservationResponse_observation' - Information about the observation.
+--
+-- 'httpStatus', 'describeObservationResponse_httpStatus' - The response's http status code.
+newDescribeObservationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeObservationResponse
+newDescribeObservationResponse pHttpStatus_ =
+  DescribeObservationResponse'
+    { observation =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the observation.
+describeObservationResponse_observation :: Lens.Lens' DescribeObservationResponse (Prelude.Maybe Observation)
+describeObservationResponse_observation = Lens.lens (\DescribeObservationResponse' {observation} -> observation) (\s@DescribeObservationResponse' {} a -> s {observation = a} :: DescribeObservationResponse)
+
+-- | The response's http status code.
+describeObservationResponse_httpStatus :: Lens.Lens' DescribeObservationResponse Prelude.Int
+describeObservationResponse_httpStatus = Lens.lens (\DescribeObservationResponse' {httpStatus} -> httpStatus) (\s@DescribeObservationResponse' {} a -> s {httpStatus = a} :: DescribeObservationResponse)
+
+instance Prelude.NFData DescribeObservationResponse where
+  rnf DescribeObservationResponse' {..} =
+    Prelude.rnf observation
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/DescribeProblem.hs b/gen/Amazonka/ApplicationInsights/DescribeProblem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/DescribeProblem.hs
@@ -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.ApplicationInsights.DescribeProblem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes an application problem.
+module Amazonka.ApplicationInsights.DescribeProblem
+  ( -- * Creating a Request
+    DescribeProblem (..),
+    newDescribeProblem,
+
+    -- * Request Lenses
+    describeProblem_problemId,
+
+    -- * Destructuring the Response
+    DescribeProblemResponse (..),
+    newDescribeProblemResponse,
+
+    -- * Response Lenses
+    describeProblemResponse_problem,
+    describeProblemResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newDescribeProblem' smart constructor.
+data DescribeProblem = DescribeProblem'
+  { -- | The ID of the problem.
+    problemId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeProblem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'problemId', 'describeProblem_problemId' - The ID of the problem.
+newDescribeProblem ::
+  -- | 'problemId'
+  Prelude.Text ->
+  DescribeProblem
+newDescribeProblem pProblemId_ =
+  DescribeProblem' {problemId = pProblemId_}
+
+-- | The ID of the problem.
+describeProblem_problemId :: Lens.Lens' DescribeProblem Prelude.Text
+describeProblem_problemId = Lens.lens (\DescribeProblem' {problemId} -> problemId) (\s@DescribeProblem' {} a -> s {problemId = a} :: DescribeProblem)
+
+instance Core.AWSRequest DescribeProblem where
+  type
+    AWSResponse DescribeProblem =
+      DescribeProblemResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeProblemResponse'
+            Prelude.<$> (x Data..?> "Problem")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeProblem where
+  hashWithSalt _salt DescribeProblem' {..} =
+    _salt `Prelude.hashWithSalt` problemId
+
+instance Prelude.NFData DescribeProblem where
+  rnf DescribeProblem' {..} = Prelude.rnf problemId
+
+instance Data.ToHeaders DescribeProblem where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.DescribeProblem" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeProblem where
+  toJSON DescribeProblem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ProblemId" Data..= problemId)]
+      )
+
+instance Data.ToPath DescribeProblem where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeProblem where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeProblemResponse' smart constructor.
+data DescribeProblemResponse = DescribeProblemResponse'
+  { -- | Information about the problem.
+    problem :: Prelude.Maybe Problem,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeProblemResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'problem', 'describeProblemResponse_problem' - Information about the problem.
+--
+-- 'httpStatus', 'describeProblemResponse_httpStatus' - The response's http status code.
+newDescribeProblemResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeProblemResponse
+newDescribeProblemResponse pHttpStatus_ =
+  DescribeProblemResponse'
+    { problem = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the problem.
+describeProblemResponse_problem :: Lens.Lens' DescribeProblemResponse (Prelude.Maybe Problem)
+describeProblemResponse_problem = Lens.lens (\DescribeProblemResponse' {problem} -> problem) (\s@DescribeProblemResponse' {} a -> s {problem = a} :: DescribeProblemResponse)
+
+-- | The response's http status code.
+describeProblemResponse_httpStatus :: Lens.Lens' DescribeProblemResponse Prelude.Int
+describeProblemResponse_httpStatus = Lens.lens (\DescribeProblemResponse' {httpStatus} -> httpStatus) (\s@DescribeProblemResponse' {} a -> s {httpStatus = a} :: DescribeProblemResponse)
+
+instance Prelude.NFData DescribeProblemResponse where
+  rnf DescribeProblemResponse' {..} =
+    Prelude.rnf problem
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/DescribeProblemObservations.hs b/gen/Amazonka/ApplicationInsights/DescribeProblemObservations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/DescribeProblemObservations.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.DescribeProblemObservations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the anomalies or errors associated with the problem.
+module Amazonka.ApplicationInsights.DescribeProblemObservations
+  ( -- * Creating a Request
+    DescribeProblemObservations (..),
+    newDescribeProblemObservations,
+
+    -- * Request Lenses
+    describeProblemObservations_problemId,
+
+    -- * Destructuring the Response
+    DescribeProblemObservationsResponse (..),
+    newDescribeProblemObservationsResponse,
+
+    -- * Response Lenses
+    describeProblemObservationsResponse_relatedObservations,
+    describeProblemObservationsResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newDescribeProblemObservations' smart constructor.
+data DescribeProblemObservations = DescribeProblemObservations'
+  { -- | The ID of the problem.
+    problemId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeProblemObservations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'problemId', 'describeProblemObservations_problemId' - The ID of the problem.
+newDescribeProblemObservations ::
+  -- | 'problemId'
+  Prelude.Text ->
+  DescribeProblemObservations
+newDescribeProblemObservations pProblemId_ =
+  DescribeProblemObservations'
+    { problemId =
+        pProblemId_
+    }
+
+-- | The ID of the problem.
+describeProblemObservations_problemId :: Lens.Lens' DescribeProblemObservations Prelude.Text
+describeProblemObservations_problemId = Lens.lens (\DescribeProblemObservations' {problemId} -> problemId) (\s@DescribeProblemObservations' {} a -> s {problemId = a} :: DescribeProblemObservations)
+
+instance Core.AWSRequest DescribeProblemObservations where
+  type
+    AWSResponse DescribeProblemObservations =
+      DescribeProblemObservationsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeProblemObservationsResponse'
+            Prelude.<$> (x Data..?> "RelatedObservations")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeProblemObservations where
+  hashWithSalt _salt DescribeProblemObservations' {..} =
+    _salt `Prelude.hashWithSalt` problemId
+
+instance Prelude.NFData DescribeProblemObservations where
+  rnf DescribeProblemObservations' {..} =
+    Prelude.rnf problemId
+
+instance Data.ToHeaders DescribeProblemObservations where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.DescribeProblemObservations" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeProblemObservations where
+  toJSON DescribeProblemObservations' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ProblemId" Data..= problemId)]
+      )
+
+instance Data.ToPath DescribeProblemObservations where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeProblemObservations where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeProblemObservationsResponse' smart constructor.
+data DescribeProblemObservationsResponse = DescribeProblemObservationsResponse'
+  { -- | Observations related to the problem.
+    relatedObservations :: Prelude.Maybe RelatedObservations,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeProblemObservationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'relatedObservations', 'describeProblemObservationsResponse_relatedObservations' - Observations related to the problem.
+--
+-- 'httpStatus', 'describeProblemObservationsResponse_httpStatus' - The response's http status code.
+newDescribeProblemObservationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeProblemObservationsResponse
+newDescribeProblemObservationsResponse pHttpStatus_ =
+  DescribeProblemObservationsResponse'
+    { relatedObservations =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Observations related to the problem.
+describeProblemObservationsResponse_relatedObservations :: Lens.Lens' DescribeProblemObservationsResponse (Prelude.Maybe RelatedObservations)
+describeProblemObservationsResponse_relatedObservations = Lens.lens (\DescribeProblemObservationsResponse' {relatedObservations} -> relatedObservations) (\s@DescribeProblemObservationsResponse' {} a -> s {relatedObservations = a} :: DescribeProblemObservationsResponse)
+
+-- | The response's http status code.
+describeProblemObservationsResponse_httpStatus :: Lens.Lens' DescribeProblemObservationsResponse Prelude.Int
+describeProblemObservationsResponse_httpStatus = Lens.lens (\DescribeProblemObservationsResponse' {httpStatus} -> httpStatus) (\s@DescribeProblemObservationsResponse' {} a -> s {httpStatus = a} :: DescribeProblemObservationsResponse)
+
+instance
+  Prelude.NFData
+    DescribeProblemObservationsResponse
+  where
+  rnf DescribeProblemObservationsResponse' {..} =
+    Prelude.rnf relatedObservations
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/Lens.hs b/gen/Amazonka/ApplicationInsights/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Lens.hs
@@ -0,0 +1,357 @@
+{-# 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.ApplicationInsights.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.ApplicationInsights.Lens
+  ( -- * Operations
+
+    -- ** CreateApplication
+    createApplication_autoConfigEnabled,
+    createApplication_autoCreate,
+    createApplication_cWEMonitorEnabled,
+    createApplication_groupingType,
+    createApplication_opsCenterEnabled,
+    createApplication_opsItemSNSTopicArn,
+    createApplication_resourceGroupName,
+    createApplication_tags,
+    createApplicationResponse_applicationInfo,
+    createApplicationResponse_httpStatus,
+
+    -- ** CreateComponent
+    createComponent_resourceGroupName,
+    createComponent_componentName,
+    createComponent_resourceList,
+    createComponentResponse_httpStatus,
+
+    -- ** CreateLogPattern
+    createLogPattern_resourceGroupName,
+    createLogPattern_patternSetName,
+    createLogPattern_patternName,
+    createLogPattern_pattern,
+    createLogPattern_rank,
+    createLogPatternResponse_logPattern,
+    createLogPatternResponse_resourceGroupName,
+    createLogPatternResponse_httpStatus,
+
+    -- ** DeleteApplication
+    deleteApplication_resourceGroupName,
+    deleteApplicationResponse_httpStatus,
+
+    -- ** DeleteComponent
+    deleteComponent_resourceGroupName,
+    deleteComponent_componentName,
+    deleteComponentResponse_httpStatus,
+
+    -- ** DeleteLogPattern
+    deleteLogPattern_resourceGroupName,
+    deleteLogPattern_patternSetName,
+    deleteLogPattern_patternName,
+    deleteLogPatternResponse_httpStatus,
+
+    -- ** DescribeApplication
+    describeApplication_resourceGroupName,
+    describeApplicationResponse_applicationInfo,
+    describeApplicationResponse_httpStatus,
+
+    -- ** DescribeComponent
+    describeComponent_resourceGroupName,
+    describeComponent_componentName,
+    describeComponentResponse_applicationComponent,
+    describeComponentResponse_resourceList,
+    describeComponentResponse_httpStatus,
+
+    -- ** DescribeComponentConfiguration
+    describeComponentConfiguration_resourceGroupName,
+    describeComponentConfiguration_componentName,
+    describeComponentConfigurationResponse_componentConfiguration,
+    describeComponentConfigurationResponse_monitor,
+    describeComponentConfigurationResponse_tier,
+    describeComponentConfigurationResponse_httpStatus,
+
+    -- ** DescribeComponentConfigurationRecommendation
+    describeComponentConfigurationRecommendation_resourceGroupName,
+    describeComponentConfigurationRecommendation_componentName,
+    describeComponentConfigurationRecommendation_tier,
+    describeComponentConfigurationRecommendationResponse_componentConfiguration,
+    describeComponentConfigurationRecommendationResponse_httpStatus,
+
+    -- ** DescribeLogPattern
+    describeLogPattern_resourceGroupName,
+    describeLogPattern_patternSetName,
+    describeLogPattern_patternName,
+    describeLogPatternResponse_logPattern,
+    describeLogPatternResponse_resourceGroupName,
+    describeLogPatternResponse_httpStatus,
+
+    -- ** DescribeObservation
+    describeObservation_observationId,
+    describeObservationResponse_observation,
+    describeObservationResponse_httpStatus,
+
+    -- ** DescribeProblem
+    describeProblem_problemId,
+    describeProblemResponse_problem,
+    describeProblemResponse_httpStatus,
+
+    -- ** DescribeProblemObservations
+    describeProblemObservations_problemId,
+    describeProblemObservationsResponse_relatedObservations,
+    describeProblemObservationsResponse_httpStatus,
+
+    -- ** ListApplications
+    listApplications_maxResults,
+    listApplications_nextToken,
+    listApplicationsResponse_applicationInfoList,
+    listApplicationsResponse_nextToken,
+    listApplicationsResponse_httpStatus,
+
+    -- ** ListComponents
+    listComponents_maxResults,
+    listComponents_nextToken,
+    listComponents_resourceGroupName,
+    listComponentsResponse_applicationComponentList,
+    listComponentsResponse_nextToken,
+    listComponentsResponse_httpStatus,
+
+    -- ** ListConfigurationHistory
+    listConfigurationHistory_endTime,
+    listConfigurationHistory_eventStatus,
+    listConfigurationHistory_maxResults,
+    listConfigurationHistory_nextToken,
+    listConfigurationHistory_resourceGroupName,
+    listConfigurationHistory_startTime,
+    listConfigurationHistoryResponse_eventList,
+    listConfigurationHistoryResponse_nextToken,
+    listConfigurationHistoryResponse_httpStatus,
+
+    -- ** ListLogPatternSets
+    listLogPatternSets_maxResults,
+    listLogPatternSets_nextToken,
+    listLogPatternSets_resourceGroupName,
+    listLogPatternSetsResponse_logPatternSets,
+    listLogPatternSetsResponse_nextToken,
+    listLogPatternSetsResponse_resourceGroupName,
+    listLogPatternSetsResponse_httpStatus,
+
+    -- ** ListLogPatterns
+    listLogPatterns_maxResults,
+    listLogPatterns_nextToken,
+    listLogPatterns_patternSetName,
+    listLogPatterns_resourceGroupName,
+    listLogPatternsResponse_logPatterns,
+    listLogPatternsResponse_nextToken,
+    listLogPatternsResponse_resourceGroupName,
+    listLogPatternsResponse_httpStatus,
+
+    -- ** ListProblems
+    listProblems_componentName,
+    listProblems_endTime,
+    listProblems_maxResults,
+    listProblems_nextToken,
+    listProblems_resourceGroupName,
+    listProblems_startTime,
+    listProblemsResponse_nextToken,
+    listProblemsResponse_problemList,
+    listProblemsResponse_resourceGroupName,
+    listProblemsResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceARN,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceARN,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceARN,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdateApplication
+    updateApplication_autoConfigEnabled,
+    updateApplication_cWEMonitorEnabled,
+    updateApplication_opsCenterEnabled,
+    updateApplication_opsItemSNSTopicArn,
+    updateApplication_removeSNSTopic,
+    updateApplication_resourceGroupName,
+    updateApplicationResponse_applicationInfo,
+    updateApplicationResponse_httpStatus,
+
+    -- ** UpdateComponent
+    updateComponent_newComponentName,
+    updateComponent_resourceList,
+    updateComponent_resourceGroupName,
+    updateComponent_componentName,
+    updateComponentResponse_httpStatus,
+
+    -- ** UpdateComponentConfiguration
+    updateComponentConfiguration_autoConfigEnabled,
+    updateComponentConfiguration_componentConfiguration,
+    updateComponentConfiguration_monitor,
+    updateComponentConfiguration_tier,
+    updateComponentConfiguration_resourceGroupName,
+    updateComponentConfiguration_componentName,
+    updateComponentConfigurationResponse_httpStatus,
+
+    -- ** UpdateLogPattern
+    updateLogPattern_pattern,
+    updateLogPattern_rank,
+    updateLogPattern_resourceGroupName,
+    updateLogPattern_patternSetName,
+    updateLogPattern_patternName,
+    updateLogPatternResponse_logPattern,
+    updateLogPatternResponse_resourceGroupName,
+    updateLogPatternResponse_httpStatus,
+
+    -- * Types
+
+    -- ** ApplicationComponent
+    applicationComponent_componentName,
+    applicationComponent_componentRemarks,
+    applicationComponent_detectedWorkload,
+    applicationComponent_monitor,
+    applicationComponent_osType,
+    applicationComponent_resourceType,
+    applicationComponent_tier,
+
+    -- ** ApplicationInfo
+    applicationInfo_autoConfigEnabled,
+    applicationInfo_cWEMonitorEnabled,
+    applicationInfo_discoveryType,
+    applicationInfo_lifeCycle,
+    applicationInfo_opsCenterEnabled,
+    applicationInfo_opsItemSNSTopicArn,
+    applicationInfo_remarks,
+    applicationInfo_resourceGroupName,
+
+    -- ** ConfigurationEvent
+    configurationEvent_eventDetail,
+    configurationEvent_eventResourceName,
+    configurationEvent_eventResourceType,
+    configurationEvent_eventStatus,
+    configurationEvent_eventTime,
+    configurationEvent_monitoredResourceARN,
+
+    -- ** LogPattern
+    logPattern_pattern,
+    logPattern_patternName,
+    logPattern_patternSetName,
+    logPattern_rank,
+
+    -- ** Observation
+    observation_cloudWatchEventDetailType,
+    observation_cloudWatchEventId,
+    observation_cloudWatchEventSource,
+    observation_codeDeployApplication,
+    observation_codeDeployDeploymentGroup,
+    observation_codeDeployDeploymentId,
+    observation_codeDeployInstanceGroupId,
+    observation_codeDeployState,
+    observation_ebsCause,
+    observation_ebsEvent,
+    observation_ebsRequestId,
+    observation_ebsResult,
+    observation_ec2State,
+    observation_endTime,
+    observation_healthEventArn,
+    observation_healthEventDescription,
+    observation_healthEventTypeCategory,
+    observation_healthEventTypeCode,
+    observation_healthService,
+    observation_id,
+    observation_lineTime,
+    observation_logFilter,
+    observation_logGroup,
+    observation_logText,
+    observation_metricName,
+    observation_metricNamespace,
+    observation_rdsEventCategories,
+    observation_rdsEventMessage,
+    observation_s3EventName,
+    observation_sourceARN,
+    observation_sourceType,
+    observation_startTime,
+    observation_statesArn,
+    observation_statesExecutionArn,
+    observation_statesInput,
+    observation_statesStatus,
+    observation_unit,
+    observation_value,
+    observation_xRayErrorPercent,
+    observation_xRayFaultPercent,
+    observation_xRayNodeName,
+    observation_xRayNodeType,
+    observation_xRayRequestAverageLatency,
+    observation_xRayRequestCount,
+    observation_xRayThrottlePercent,
+
+    -- ** Problem
+    problem_affectedResource,
+    problem_endTime,
+    problem_feedback,
+    problem_id,
+    problem_insights,
+    problem_lastRecurrenceTime,
+    problem_recurringCount,
+    problem_resourceGroupName,
+    problem_severityLevel,
+    problem_startTime,
+    problem_status,
+    problem_title,
+
+    -- ** RelatedObservations
+    relatedObservations_observationList,
+
+    -- ** Tag
+    tag_key,
+    tag_value,
+  )
+where
+
+import Amazonka.ApplicationInsights.CreateApplication
+import Amazonka.ApplicationInsights.CreateComponent
+import Amazonka.ApplicationInsights.CreateLogPattern
+import Amazonka.ApplicationInsights.DeleteApplication
+import Amazonka.ApplicationInsights.DeleteComponent
+import Amazonka.ApplicationInsights.DeleteLogPattern
+import Amazonka.ApplicationInsights.DescribeApplication
+import Amazonka.ApplicationInsights.DescribeComponent
+import Amazonka.ApplicationInsights.DescribeComponentConfiguration
+import Amazonka.ApplicationInsights.DescribeComponentConfigurationRecommendation
+import Amazonka.ApplicationInsights.DescribeLogPattern
+import Amazonka.ApplicationInsights.DescribeObservation
+import Amazonka.ApplicationInsights.DescribeProblem
+import Amazonka.ApplicationInsights.DescribeProblemObservations
+import Amazonka.ApplicationInsights.ListApplications
+import Amazonka.ApplicationInsights.ListComponents
+import Amazonka.ApplicationInsights.ListConfigurationHistory
+import Amazonka.ApplicationInsights.ListLogPatternSets
+import Amazonka.ApplicationInsights.ListLogPatterns
+import Amazonka.ApplicationInsights.ListProblems
+import Amazonka.ApplicationInsights.ListTagsForResource
+import Amazonka.ApplicationInsights.TagResource
+import Amazonka.ApplicationInsights.Types.ApplicationComponent
+import Amazonka.ApplicationInsights.Types.ApplicationInfo
+import Amazonka.ApplicationInsights.Types.ConfigurationEvent
+import Amazonka.ApplicationInsights.Types.LogPattern
+import Amazonka.ApplicationInsights.Types.Observation
+import Amazonka.ApplicationInsights.Types.Problem
+import Amazonka.ApplicationInsights.Types.RelatedObservations
+import Amazonka.ApplicationInsights.Types.Tag
+import Amazonka.ApplicationInsights.UntagResource
+import Amazonka.ApplicationInsights.UpdateApplication
+import Amazonka.ApplicationInsights.UpdateComponent
+import Amazonka.ApplicationInsights.UpdateComponentConfiguration
+import Amazonka.ApplicationInsights.UpdateLogPattern
diff --git a/gen/Amazonka/ApplicationInsights/ListApplications.hs b/gen/Amazonka/ApplicationInsights/ListApplications.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/ListApplications.hs
@@ -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.ApplicationInsights.ListApplications
+-- 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 IDs of the applications that you are monitoring.
+module Amazonka.ApplicationInsights.ListApplications
+  ( -- * Creating a Request
+    ListApplications (..),
+    newListApplications,
+
+    -- * Request Lenses
+    listApplications_maxResults,
+    listApplications_nextToken,
+
+    -- * Destructuring the Response
+    ListApplicationsResponse (..),
+    newListApplicationsResponse,
+
+    -- * Response Lenses
+    listApplicationsResponse_applicationInfoList,
+    listApplicationsResponse_nextToken,
+    listApplicationsResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newListApplications' smart constructor.
+data ListApplications = ListApplications'
+  { -- | The maximum number of results to return in a single call. To retrieve
+    -- the remaining results, make another call with the returned @NextToken@
+    -- value.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to request the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListApplications' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listApplications_maxResults' - The maximum number of results to return in a single call. To retrieve
+-- the remaining results, make another call with the returned @NextToken@
+-- value.
+--
+-- 'nextToken', 'listApplications_nextToken' - The token to request the next page of results.
+newListApplications ::
+  ListApplications
+newListApplications =
+  ListApplications'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return in a single call. To retrieve
+-- the remaining results, make another call with the returned @NextToken@
+-- value.
+listApplications_maxResults :: Lens.Lens' ListApplications (Prelude.Maybe Prelude.Natural)
+listApplications_maxResults = Lens.lens (\ListApplications' {maxResults} -> maxResults) (\s@ListApplications' {} a -> s {maxResults = a} :: ListApplications)
+
+-- | The token to request the next page of results.
+listApplications_nextToken :: Lens.Lens' ListApplications (Prelude.Maybe Prelude.Text)
+listApplications_nextToken = Lens.lens (\ListApplications' {nextToken} -> nextToken) (\s@ListApplications' {} a -> s {nextToken = a} :: ListApplications)
+
+instance Core.AWSRequest ListApplications where
+  type
+    AWSResponse ListApplications =
+      ListApplicationsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListApplicationsResponse'
+            Prelude.<$> ( x
+                            Data..?> "ApplicationInfoList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListApplications where
+  hashWithSalt _salt ListApplications' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListApplications where
+  rnf ListApplications' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListApplications where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.ListApplications" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListApplications where
+  toJSON ListApplications' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListApplications where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListApplications where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListApplicationsResponse' smart constructor.
+data ListApplicationsResponse = ListApplicationsResponse'
+  { -- | The list of applications.
+    applicationInfoList :: Prelude.Maybe [ApplicationInfo],
+    -- | The token 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
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListApplicationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationInfoList', 'listApplicationsResponse_applicationInfoList' - The list of applications.
+--
+-- 'nextToken', 'listApplicationsResponse_nextToken' - The token used to retrieve the next page of results. This value is
+-- @null@ when there are no more results to return.
+--
+-- 'httpStatus', 'listApplicationsResponse_httpStatus' - The response's http status code.
+newListApplicationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListApplicationsResponse
+newListApplicationsResponse pHttpStatus_ =
+  ListApplicationsResponse'
+    { applicationInfoList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of applications.
+listApplicationsResponse_applicationInfoList :: Lens.Lens' ListApplicationsResponse (Prelude.Maybe [ApplicationInfo])
+listApplicationsResponse_applicationInfoList = Lens.lens (\ListApplicationsResponse' {applicationInfoList} -> applicationInfoList) (\s@ListApplicationsResponse' {} a -> s {applicationInfoList = a} :: ListApplicationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token used to retrieve the next page of results. This value is
+-- @null@ when there are no more results to return.
+listApplicationsResponse_nextToken :: Lens.Lens' ListApplicationsResponse (Prelude.Maybe Prelude.Text)
+listApplicationsResponse_nextToken = Lens.lens (\ListApplicationsResponse' {nextToken} -> nextToken) (\s@ListApplicationsResponse' {} a -> s {nextToken = a} :: ListApplicationsResponse)
+
+-- | The response's http status code.
+listApplicationsResponse_httpStatus :: Lens.Lens' ListApplicationsResponse Prelude.Int
+listApplicationsResponse_httpStatus = Lens.lens (\ListApplicationsResponse' {httpStatus} -> httpStatus) (\s@ListApplicationsResponse' {} a -> s {httpStatus = a} :: ListApplicationsResponse)
+
+instance Prelude.NFData ListApplicationsResponse where
+  rnf ListApplicationsResponse' {..} =
+    Prelude.rnf applicationInfoList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/ListComponents.hs b/gen/Amazonka/ApplicationInsights/ListComponents.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/ListComponents.hs
@@ -0,0 +1,222 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.ListComponents
+-- 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 auto-grouped, standalone, and custom components of the
+-- application.
+module Amazonka.ApplicationInsights.ListComponents
+  ( -- * Creating a Request
+    ListComponents (..),
+    newListComponents,
+
+    -- * Request Lenses
+    listComponents_maxResults,
+    listComponents_nextToken,
+    listComponents_resourceGroupName,
+
+    -- * Destructuring the Response
+    ListComponentsResponse (..),
+    newListComponentsResponse,
+
+    -- * Response Lenses
+    listComponentsResponse_applicationComponentList,
+    listComponentsResponse_nextToken,
+    listComponentsResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newListComponents' smart constructor.
+data ListComponents = ListComponents'
+  { -- | The maximum number of results to return in a single call. To retrieve
+    -- the remaining results, make another call with the returned @NextToken@
+    -- value.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to request the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListComponents' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listComponents_maxResults' - The maximum number of results to return in a single call. To retrieve
+-- the remaining results, make another call with the returned @NextToken@
+-- value.
+--
+-- 'nextToken', 'listComponents_nextToken' - The token to request the next page of results.
+--
+-- 'resourceGroupName', 'listComponents_resourceGroupName' - The name of the resource group.
+newListComponents ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  ListComponents
+newListComponents pResourceGroupName_ =
+  ListComponents'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      resourceGroupName = pResourceGroupName_
+    }
+
+-- | The maximum number of results to return in a single call. To retrieve
+-- the remaining results, make another call with the returned @NextToken@
+-- value.
+listComponents_maxResults :: Lens.Lens' ListComponents (Prelude.Maybe Prelude.Natural)
+listComponents_maxResults = Lens.lens (\ListComponents' {maxResults} -> maxResults) (\s@ListComponents' {} a -> s {maxResults = a} :: ListComponents)
+
+-- | The token to request the next page of results.
+listComponents_nextToken :: Lens.Lens' ListComponents (Prelude.Maybe Prelude.Text)
+listComponents_nextToken = Lens.lens (\ListComponents' {nextToken} -> nextToken) (\s@ListComponents' {} a -> s {nextToken = a} :: ListComponents)
+
+-- | The name of the resource group.
+listComponents_resourceGroupName :: Lens.Lens' ListComponents Prelude.Text
+listComponents_resourceGroupName = Lens.lens (\ListComponents' {resourceGroupName} -> resourceGroupName) (\s@ListComponents' {} a -> s {resourceGroupName = a} :: ListComponents)
+
+instance Core.AWSRequest ListComponents where
+  type
+    AWSResponse ListComponents =
+      ListComponentsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListComponentsResponse'
+            Prelude.<$> ( x
+                            Data..?> "ApplicationComponentList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListComponents where
+  hashWithSalt _salt ListComponents' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` resourceGroupName
+
+instance Prelude.NFData ListComponents where
+  rnf ListComponents' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf resourceGroupName
+
+instance Data.ToHeaders ListComponents where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.ListComponents" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListComponents where
+  toJSON ListComponents' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName)
+          ]
+      )
+
+instance Data.ToPath ListComponents where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListComponents where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListComponentsResponse' smart constructor.
+data ListComponentsResponse = ListComponentsResponse'
+  { -- | The list of application components.
+    applicationComponentList :: Prelude.Maybe [ApplicationComponent],
+    -- | The token to request the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListComponentsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationComponentList', 'listComponentsResponse_applicationComponentList' - The list of application components.
+--
+-- 'nextToken', 'listComponentsResponse_nextToken' - The token to request the next page of results.
+--
+-- 'httpStatus', 'listComponentsResponse_httpStatus' - The response's http status code.
+newListComponentsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListComponentsResponse
+newListComponentsResponse pHttpStatus_ =
+  ListComponentsResponse'
+    { applicationComponentList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of application components.
+listComponentsResponse_applicationComponentList :: Lens.Lens' ListComponentsResponse (Prelude.Maybe [ApplicationComponent])
+listComponentsResponse_applicationComponentList = Lens.lens (\ListComponentsResponse' {applicationComponentList} -> applicationComponentList) (\s@ListComponentsResponse' {} a -> s {applicationComponentList = a} :: ListComponentsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token to request the next page of results.
+listComponentsResponse_nextToken :: Lens.Lens' ListComponentsResponse (Prelude.Maybe Prelude.Text)
+listComponentsResponse_nextToken = Lens.lens (\ListComponentsResponse' {nextToken} -> nextToken) (\s@ListComponentsResponse' {} a -> s {nextToken = a} :: ListComponentsResponse)
+
+-- | The response's http status code.
+listComponentsResponse_httpStatus :: Lens.Lens' ListComponentsResponse Prelude.Int
+listComponentsResponse_httpStatus = Lens.lens (\ListComponentsResponse' {httpStatus} -> httpStatus) (\s@ListComponentsResponse' {} a -> s {httpStatus = a} :: ListComponentsResponse)
+
+instance Prelude.NFData ListComponentsResponse where
+  rnf ListComponentsResponse' {..} =
+    Prelude.rnf applicationComponentList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/ListConfigurationHistory.hs b/gen/Amazonka/ApplicationInsights/ListConfigurationHistory.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/ListConfigurationHistory.hs
@@ -0,0 +1,308 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.ListConfigurationHistory
+-- 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 INFO, WARN, and ERROR events for periodic configuration
+-- updates performed by Application Insights. Examples of events
+-- represented are:
+--
+-- -   INFO: creating a new alarm or updating an alarm threshold.
+--
+-- -   WARN: alarm not created due to insufficient data points used to
+--     predict thresholds.
+--
+-- -   ERROR: alarm not created due to permission errors or exceeding
+--     quotas.
+module Amazonka.ApplicationInsights.ListConfigurationHistory
+  ( -- * Creating a Request
+    ListConfigurationHistory (..),
+    newListConfigurationHistory,
+
+    -- * Request Lenses
+    listConfigurationHistory_endTime,
+    listConfigurationHistory_eventStatus,
+    listConfigurationHistory_maxResults,
+    listConfigurationHistory_nextToken,
+    listConfigurationHistory_resourceGroupName,
+    listConfigurationHistory_startTime,
+
+    -- * Destructuring the Response
+    ListConfigurationHistoryResponse (..),
+    newListConfigurationHistoryResponse,
+
+    -- * Response Lenses
+    listConfigurationHistoryResponse_eventList,
+    listConfigurationHistoryResponse_nextToken,
+    listConfigurationHistoryResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newListConfigurationHistory' smart constructor.
+data ListConfigurationHistory = ListConfigurationHistory'
+  { -- | The end time of the event.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | The status of the configuration update event. Possible values include
+    -- INFO, WARN, and ERROR.
+    eventStatus :: Prelude.Maybe ConfigurationEventStatus,
+    -- | The maximum number of results returned by @ListConfigurationHistory@ in
+    -- paginated output. When this parameter is used,
+    -- @ListConfigurationHistory@ returns only @MaxResults@ in a single page
+    -- along with a @NextToken@ response element. The remaining results of the
+    -- initial request can be seen by sending another
+    -- @ListConfigurationHistory@ request with the returned @NextToken@ value.
+    -- If this parameter is not used, then @ListConfigurationHistory@ returns
+    -- all results.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The @NextToken@ value returned from a previous paginated
+    -- @ListConfigurationHistory@ 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 value is @null@ when there are no more results to return.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Resource group to which the application belongs.
+    resourceGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The start time of the event.
+    startTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListConfigurationHistory' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listConfigurationHistory_endTime' - The end time of the event.
+--
+-- 'eventStatus', 'listConfigurationHistory_eventStatus' - The status of the configuration update event. Possible values include
+-- INFO, WARN, and ERROR.
+--
+-- 'maxResults', 'listConfigurationHistory_maxResults' - The maximum number of results returned by @ListConfigurationHistory@ in
+-- paginated output. When this parameter is used,
+-- @ListConfigurationHistory@ returns only @MaxResults@ in a single page
+-- along with a @NextToken@ response element. The remaining results of the
+-- initial request can be seen by sending another
+-- @ListConfigurationHistory@ request with the returned @NextToken@ value.
+-- If this parameter is not used, then @ListConfigurationHistory@ returns
+-- all results.
+--
+-- 'nextToken', 'listConfigurationHistory_nextToken' - The @NextToken@ value returned from a previous paginated
+-- @ListConfigurationHistory@ 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 value is @null@ when there are no more results to return.
+--
+-- 'resourceGroupName', 'listConfigurationHistory_resourceGroupName' - Resource group to which the application belongs.
+--
+-- 'startTime', 'listConfigurationHistory_startTime' - The start time of the event.
+newListConfigurationHistory ::
+  ListConfigurationHistory
+newListConfigurationHistory =
+  ListConfigurationHistory'
+    { endTime =
+        Prelude.Nothing,
+      eventStatus = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      resourceGroupName = Prelude.Nothing,
+      startTime = Prelude.Nothing
+    }
+
+-- | The end time of the event.
+listConfigurationHistory_endTime :: Lens.Lens' ListConfigurationHistory (Prelude.Maybe Prelude.UTCTime)
+listConfigurationHistory_endTime = Lens.lens (\ListConfigurationHistory' {endTime} -> endTime) (\s@ListConfigurationHistory' {} a -> s {endTime = a} :: ListConfigurationHistory) Prelude.. Lens.mapping Data._Time
+
+-- | The status of the configuration update event. Possible values include
+-- INFO, WARN, and ERROR.
+listConfigurationHistory_eventStatus :: Lens.Lens' ListConfigurationHistory (Prelude.Maybe ConfigurationEventStatus)
+listConfigurationHistory_eventStatus = Lens.lens (\ListConfigurationHistory' {eventStatus} -> eventStatus) (\s@ListConfigurationHistory' {} a -> s {eventStatus = a} :: ListConfigurationHistory)
+
+-- | The maximum number of results returned by @ListConfigurationHistory@ in
+-- paginated output. When this parameter is used,
+-- @ListConfigurationHistory@ returns only @MaxResults@ in a single page
+-- along with a @NextToken@ response element. The remaining results of the
+-- initial request can be seen by sending another
+-- @ListConfigurationHistory@ request with the returned @NextToken@ value.
+-- If this parameter is not used, then @ListConfigurationHistory@ returns
+-- all results.
+listConfigurationHistory_maxResults :: Lens.Lens' ListConfigurationHistory (Prelude.Maybe Prelude.Natural)
+listConfigurationHistory_maxResults = Lens.lens (\ListConfigurationHistory' {maxResults} -> maxResults) (\s@ListConfigurationHistory' {} a -> s {maxResults = a} :: ListConfigurationHistory)
+
+-- | The @NextToken@ value returned from a previous paginated
+-- @ListConfigurationHistory@ 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 value is @null@ when there are no more results to return.
+listConfigurationHistory_nextToken :: Lens.Lens' ListConfigurationHistory (Prelude.Maybe Prelude.Text)
+listConfigurationHistory_nextToken = Lens.lens (\ListConfigurationHistory' {nextToken} -> nextToken) (\s@ListConfigurationHistory' {} a -> s {nextToken = a} :: ListConfigurationHistory)
+
+-- | Resource group to which the application belongs.
+listConfigurationHistory_resourceGroupName :: Lens.Lens' ListConfigurationHistory (Prelude.Maybe Prelude.Text)
+listConfigurationHistory_resourceGroupName = Lens.lens (\ListConfigurationHistory' {resourceGroupName} -> resourceGroupName) (\s@ListConfigurationHistory' {} a -> s {resourceGroupName = a} :: ListConfigurationHistory)
+
+-- | The start time of the event.
+listConfigurationHistory_startTime :: Lens.Lens' ListConfigurationHistory (Prelude.Maybe Prelude.UTCTime)
+listConfigurationHistory_startTime = Lens.lens (\ListConfigurationHistory' {startTime} -> startTime) (\s@ListConfigurationHistory' {} a -> s {startTime = a} :: ListConfigurationHistory) Prelude.. Lens.mapping Data._Time
+
+instance Core.AWSRequest ListConfigurationHistory where
+  type
+    AWSResponse ListConfigurationHistory =
+      ListConfigurationHistoryResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListConfigurationHistoryResponse'
+            Prelude.<$> (x Data..?> "EventList" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListConfigurationHistory where
+  hashWithSalt _salt ListConfigurationHistory' {..} =
+    _salt
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` eventStatus
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` resourceGroupName
+      `Prelude.hashWithSalt` startTime
+
+instance Prelude.NFData ListConfigurationHistory where
+  rnf ListConfigurationHistory' {..} =
+    Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf eventStatus
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf startTime
+
+instance Data.ToHeaders ListConfigurationHistory where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.ListConfigurationHistory" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListConfigurationHistory where
+  toJSON ListConfigurationHistory' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EndTime" Data..=) Prelude.<$> endTime,
+            ("EventStatus" Data..=) Prelude.<$> eventStatus,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("ResourceGroupName" Data..=)
+              Prelude.<$> resourceGroupName,
+            ("StartTime" Data..=) Prelude.<$> startTime
+          ]
+      )
+
+instance Data.ToPath ListConfigurationHistory where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListConfigurationHistory where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListConfigurationHistoryResponse' smart constructor.
+data ListConfigurationHistoryResponse = ListConfigurationHistoryResponse'
+  { -- | The list of configuration events and their corresponding details.
+    eventList :: Prelude.Maybe [ConfigurationEvent],
+    -- | The @NextToken@ value to include in a future @ListConfigurationHistory@
+    -- request. When the results of a @ListConfigurationHistory@ 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
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListConfigurationHistoryResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'eventList', 'listConfigurationHistoryResponse_eventList' - The list of configuration events and their corresponding details.
+--
+-- 'nextToken', 'listConfigurationHistoryResponse_nextToken' - The @NextToken@ value to include in a future @ListConfigurationHistory@
+-- request. When the results of a @ListConfigurationHistory@ 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', 'listConfigurationHistoryResponse_httpStatus' - The response's http status code.
+newListConfigurationHistoryResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListConfigurationHistoryResponse
+newListConfigurationHistoryResponse pHttpStatus_ =
+  ListConfigurationHistoryResponse'
+    { eventList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of configuration events and their corresponding details.
+listConfigurationHistoryResponse_eventList :: Lens.Lens' ListConfigurationHistoryResponse (Prelude.Maybe [ConfigurationEvent])
+listConfigurationHistoryResponse_eventList = Lens.lens (\ListConfigurationHistoryResponse' {eventList} -> eventList) (\s@ListConfigurationHistoryResponse' {} a -> s {eventList = a} :: ListConfigurationHistoryResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The @NextToken@ value to include in a future @ListConfigurationHistory@
+-- request. When the results of a @ListConfigurationHistory@ 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.
+listConfigurationHistoryResponse_nextToken :: Lens.Lens' ListConfigurationHistoryResponse (Prelude.Maybe Prelude.Text)
+listConfigurationHistoryResponse_nextToken = Lens.lens (\ListConfigurationHistoryResponse' {nextToken} -> nextToken) (\s@ListConfigurationHistoryResponse' {} a -> s {nextToken = a} :: ListConfigurationHistoryResponse)
+
+-- | The response's http status code.
+listConfigurationHistoryResponse_httpStatus :: Lens.Lens' ListConfigurationHistoryResponse Prelude.Int
+listConfigurationHistoryResponse_httpStatus = Lens.lens (\ListConfigurationHistoryResponse' {httpStatus} -> httpStatus) (\s@ListConfigurationHistoryResponse' {} a -> s {httpStatus = a} :: ListConfigurationHistoryResponse)
+
+instance
+  Prelude.NFData
+    ListConfigurationHistoryResponse
+  where
+  rnf ListConfigurationHistoryResponse' {..} =
+    Prelude.rnf eventList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/ListLogPatternSets.hs b/gen/Amazonka/ApplicationInsights/ListLogPatternSets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/ListLogPatternSets.hs
@@ -0,0 +1,233 @@
+{-# 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.ApplicationInsights.ListLogPatternSets
+-- 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 log pattern sets in the specific application.
+module Amazonka.ApplicationInsights.ListLogPatternSets
+  ( -- * Creating a Request
+    ListLogPatternSets (..),
+    newListLogPatternSets,
+
+    -- * Request Lenses
+    listLogPatternSets_maxResults,
+    listLogPatternSets_nextToken,
+    listLogPatternSets_resourceGroupName,
+
+    -- * Destructuring the Response
+    ListLogPatternSetsResponse (..),
+    newListLogPatternSetsResponse,
+
+    -- * Response Lenses
+    listLogPatternSetsResponse_logPatternSets,
+    listLogPatternSetsResponse_nextToken,
+    listLogPatternSetsResponse_resourceGroupName,
+    listLogPatternSetsResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newListLogPatternSets' smart constructor.
+data ListLogPatternSets = ListLogPatternSets'
+  { -- | The maximum number of results to return in a single call. To retrieve
+    -- the remaining results, make another call with the returned @NextToken@
+    -- value.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to request the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLogPatternSets' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listLogPatternSets_maxResults' - The maximum number of results to return in a single call. To retrieve
+-- the remaining results, make another call with the returned @NextToken@
+-- value.
+--
+-- 'nextToken', 'listLogPatternSets_nextToken' - The token to request the next page of results.
+--
+-- 'resourceGroupName', 'listLogPatternSets_resourceGroupName' - The name of the resource group.
+newListLogPatternSets ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  ListLogPatternSets
+newListLogPatternSets pResourceGroupName_ =
+  ListLogPatternSets'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      resourceGroupName = pResourceGroupName_
+    }
+
+-- | The maximum number of results to return in a single call. To retrieve
+-- the remaining results, make another call with the returned @NextToken@
+-- value.
+listLogPatternSets_maxResults :: Lens.Lens' ListLogPatternSets (Prelude.Maybe Prelude.Natural)
+listLogPatternSets_maxResults = Lens.lens (\ListLogPatternSets' {maxResults} -> maxResults) (\s@ListLogPatternSets' {} a -> s {maxResults = a} :: ListLogPatternSets)
+
+-- | The token to request the next page of results.
+listLogPatternSets_nextToken :: Lens.Lens' ListLogPatternSets (Prelude.Maybe Prelude.Text)
+listLogPatternSets_nextToken = Lens.lens (\ListLogPatternSets' {nextToken} -> nextToken) (\s@ListLogPatternSets' {} a -> s {nextToken = a} :: ListLogPatternSets)
+
+-- | The name of the resource group.
+listLogPatternSets_resourceGroupName :: Lens.Lens' ListLogPatternSets Prelude.Text
+listLogPatternSets_resourceGroupName = Lens.lens (\ListLogPatternSets' {resourceGroupName} -> resourceGroupName) (\s@ListLogPatternSets' {} a -> s {resourceGroupName = a} :: ListLogPatternSets)
+
+instance Core.AWSRequest ListLogPatternSets where
+  type
+    AWSResponse ListLogPatternSets =
+      ListLogPatternSetsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListLogPatternSetsResponse'
+            Prelude.<$> (x Data..?> "LogPatternSets" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "ResourceGroupName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListLogPatternSets where
+  hashWithSalt _salt ListLogPatternSets' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` resourceGroupName
+
+instance Prelude.NFData ListLogPatternSets where
+  rnf ListLogPatternSets' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf resourceGroupName
+
+instance Data.ToHeaders ListLogPatternSets where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.ListLogPatternSets" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListLogPatternSets where
+  toJSON ListLogPatternSets' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName)
+          ]
+      )
+
+instance Data.ToPath ListLogPatternSets where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListLogPatternSets where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListLogPatternSetsResponse' smart constructor.
+data ListLogPatternSetsResponse = ListLogPatternSetsResponse'
+  { -- | The list of log pattern sets.
+    logPatternSets :: Prelude.Maybe [Prelude.Text],
+    -- | The token 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 name of the resource group.
+    resourceGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLogPatternSetsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'logPatternSets', 'listLogPatternSetsResponse_logPatternSets' - The list of log pattern sets.
+--
+-- 'nextToken', 'listLogPatternSetsResponse_nextToken' - The token used to retrieve the next page of results. This value is
+-- @null@ when there are no more results to return.
+--
+-- 'resourceGroupName', 'listLogPatternSetsResponse_resourceGroupName' - The name of the resource group.
+--
+-- 'httpStatus', 'listLogPatternSetsResponse_httpStatus' - The response's http status code.
+newListLogPatternSetsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListLogPatternSetsResponse
+newListLogPatternSetsResponse pHttpStatus_ =
+  ListLogPatternSetsResponse'
+    { logPatternSets =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      resourceGroupName = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of log pattern sets.
+listLogPatternSetsResponse_logPatternSets :: Lens.Lens' ListLogPatternSetsResponse (Prelude.Maybe [Prelude.Text])
+listLogPatternSetsResponse_logPatternSets = Lens.lens (\ListLogPatternSetsResponse' {logPatternSets} -> logPatternSets) (\s@ListLogPatternSetsResponse' {} a -> s {logPatternSets = a} :: ListLogPatternSetsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token used to retrieve the next page of results. This value is
+-- @null@ when there are no more results to return.
+listLogPatternSetsResponse_nextToken :: Lens.Lens' ListLogPatternSetsResponse (Prelude.Maybe Prelude.Text)
+listLogPatternSetsResponse_nextToken = Lens.lens (\ListLogPatternSetsResponse' {nextToken} -> nextToken) (\s@ListLogPatternSetsResponse' {} a -> s {nextToken = a} :: ListLogPatternSetsResponse)
+
+-- | The name of the resource group.
+listLogPatternSetsResponse_resourceGroupName :: Lens.Lens' ListLogPatternSetsResponse (Prelude.Maybe Prelude.Text)
+listLogPatternSetsResponse_resourceGroupName = Lens.lens (\ListLogPatternSetsResponse' {resourceGroupName} -> resourceGroupName) (\s@ListLogPatternSetsResponse' {} a -> s {resourceGroupName = a} :: ListLogPatternSetsResponse)
+
+-- | The response's http status code.
+listLogPatternSetsResponse_httpStatus :: Lens.Lens' ListLogPatternSetsResponse Prelude.Int
+listLogPatternSetsResponse_httpStatus = Lens.lens (\ListLogPatternSetsResponse' {httpStatus} -> httpStatus) (\s@ListLogPatternSetsResponse' {} a -> s {httpStatus = a} :: ListLogPatternSetsResponse)
+
+instance Prelude.NFData ListLogPatternSetsResponse where
+  rnf ListLogPatternSetsResponse' {..} =
+    Prelude.rnf logPatternSets
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/ListLogPatterns.hs b/gen/Amazonka/ApplicationInsights/ListLogPatterns.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/ListLogPatterns.hs
@@ -0,0 +1,247 @@
+{-# 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.ApplicationInsights.ListLogPatterns
+-- 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 log patterns in the specific log @LogPatternSet@.
+module Amazonka.ApplicationInsights.ListLogPatterns
+  ( -- * Creating a Request
+    ListLogPatterns (..),
+    newListLogPatterns,
+
+    -- * Request Lenses
+    listLogPatterns_maxResults,
+    listLogPatterns_nextToken,
+    listLogPatterns_patternSetName,
+    listLogPatterns_resourceGroupName,
+
+    -- * Destructuring the Response
+    ListLogPatternsResponse (..),
+    newListLogPatternsResponse,
+
+    -- * Response Lenses
+    listLogPatternsResponse_logPatterns,
+    listLogPatternsResponse_nextToken,
+    listLogPatternsResponse_resourceGroupName,
+    listLogPatternsResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newListLogPatterns' smart constructor.
+data ListLogPatterns = ListLogPatterns'
+  { -- | The maximum number of results to return in a single call. To retrieve
+    -- the remaining results, make another call with the returned @NextToken@
+    -- value.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to request the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the log pattern set.
+    patternSetName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLogPatterns' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listLogPatterns_maxResults' - The maximum number of results to return in a single call. To retrieve
+-- the remaining results, make another call with the returned @NextToken@
+-- value.
+--
+-- 'nextToken', 'listLogPatterns_nextToken' - The token to request the next page of results.
+--
+-- 'patternSetName', 'listLogPatterns_patternSetName' - The name of the log pattern set.
+--
+-- 'resourceGroupName', 'listLogPatterns_resourceGroupName' - The name of the resource group.
+newListLogPatterns ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  ListLogPatterns
+newListLogPatterns pResourceGroupName_ =
+  ListLogPatterns'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      patternSetName = Prelude.Nothing,
+      resourceGroupName = pResourceGroupName_
+    }
+
+-- | The maximum number of results to return in a single call. To retrieve
+-- the remaining results, make another call with the returned @NextToken@
+-- value.
+listLogPatterns_maxResults :: Lens.Lens' ListLogPatterns (Prelude.Maybe Prelude.Natural)
+listLogPatterns_maxResults = Lens.lens (\ListLogPatterns' {maxResults} -> maxResults) (\s@ListLogPatterns' {} a -> s {maxResults = a} :: ListLogPatterns)
+
+-- | The token to request the next page of results.
+listLogPatterns_nextToken :: Lens.Lens' ListLogPatterns (Prelude.Maybe Prelude.Text)
+listLogPatterns_nextToken = Lens.lens (\ListLogPatterns' {nextToken} -> nextToken) (\s@ListLogPatterns' {} a -> s {nextToken = a} :: ListLogPatterns)
+
+-- | The name of the log pattern set.
+listLogPatterns_patternSetName :: Lens.Lens' ListLogPatterns (Prelude.Maybe Prelude.Text)
+listLogPatterns_patternSetName = Lens.lens (\ListLogPatterns' {patternSetName} -> patternSetName) (\s@ListLogPatterns' {} a -> s {patternSetName = a} :: ListLogPatterns)
+
+-- | The name of the resource group.
+listLogPatterns_resourceGroupName :: Lens.Lens' ListLogPatterns Prelude.Text
+listLogPatterns_resourceGroupName = Lens.lens (\ListLogPatterns' {resourceGroupName} -> resourceGroupName) (\s@ListLogPatterns' {} a -> s {resourceGroupName = a} :: ListLogPatterns)
+
+instance Core.AWSRequest ListLogPatterns where
+  type
+    AWSResponse ListLogPatterns =
+      ListLogPatternsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListLogPatternsResponse'
+            Prelude.<$> (x Data..?> "LogPatterns" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "ResourceGroupName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListLogPatterns where
+  hashWithSalt _salt ListLogPatterns' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` patternSetName
+      `Prelude.hashWithSalt` resourceGroupName
+
+instance Prelude.NFData ListLogPatterns where
+  rnf ListLogPatterns' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf patternSetName
+      `Prelude.seq` Prelude.rnf resourceGroupName
+
+instance Data.ToHeaders ListLogPatterns where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.ListLogPatterns" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListLogPatterns where
+  toJSON ListLogPatterns' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("PatternSetName" Data..=)
+              Prelude.<$> patternSetName,
+            Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName)
+          ]
+      )
+
+instance Data.ToPath ListLogPatterns where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListLogPatterns where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListLogPatternsResponse' smart constructor.
+data ListLogPatternsResponse = ListLogPatternsResponse'
+  { -- | The list of log patterns.
+    logPatterns :: Prelude.Maybe [LogPattern],
+    -- | The token 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 name of the resource group.
+    resourceGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLogPatternsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'logPatterns', 'listLogPatternsResponse_logPatterns' - The list of log patterns.
+--
+-- 'nextToken', 'listLogPatternsResponse_nextToken' - The token used to retrieve the next page of results. This value is
+-- @null@ when there are no more results to return.
+--
+-- 'resourceGroupName', 'listLogPatternsResponse_resourceGroupName' - The name of the resource group.
+--
+-- 'httpStatus', 'listLogPatternsResponse_httpStatus' - The response's http status code.
+newListLogPatternsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListLogPatternsResponse
+newListLogPatternsResponse pHttpStatus_ =
+  ListLogPatternsResponse'
+    { logPatterns =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      resourceGroupName = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of log patterns.
+listLogPatternsResponse_logPatterns :: Lens.Lens' ListLogPatternsResponse (Prelude.Maybe [LogPattern])
+listLogPatternsResponse_logPatterns = Lens.lens (\ListLogPatternsResponse' {logPatterns} -> logPatterns) (\s@ListLogPatternsResponse' {} a -> s {logPatterns = a} :: ListLogPatternsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token used to retrieve the next page of results. This value is
+-- @null@ when there are no more results to return.
+listLogPatternsResponse_nextToken :: Lens.Lens' ListLogPatternsResponse (Prelude.Maybe Prelude.Text)
+listLogPatternsResponse_nextToken = Lens.lens (\ListLogPatternsResponse' {nextToken} -> nextToken) (\s@ListLogPatternsResponse' {} a -> s {nextToken = a} :: ListLogPatternsResponse)
+
+-- | The name of the resource group.
+listLogPatternsResponse_resourceGroupName :: Lens.Lens' ListLogPatternsResponse (Prelude.Maybe Prelude.Text)
+listLogPatternsResponse_resourceGroupName = Lens.lens (\ListLogPatternsResponse' {resourceGroupName} -> resourceGroupName) (\s@ListLogPatternsResponse' {} a -> s {resourceGroupName = a} :: ListLogPatternsResponse)
+
+-- | The response's http status code.
+listLogPatternsResponse_httpStatus :: Lens.Lens' ListLogPatternsResponse Prelude.Int
+listLogPatternsResponse_httpStatus = Lens.lens (\ListLogPatternsResponse' {httpStatus} -> httpStatus) (\s@ListLogPatternsResponse' {} a -> s {httpStatus = a} :: ListLogPatternsResponse)
+
+instance Prelude.NFData ListLogPatternsResponse where
+  rnf ListLogPatternsResponse' {..} =
+    Prelude.rnf logPatterns
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/ListProblems.hs b/gen/Amazonka/ApplicationInsights/ListProblems.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/ListProblems.hs
@@ -0,0 +1,276 @@
+{-# 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.ApplicationInsights.ListProblems
+-- 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 problems with your application.
+module Amazonka.ApplicationInsights.ListProblems
+  ( -- * Creating a Request
+    ListProblems (..),
+    newListProblems,
+
+    -- * Request Lenses
+    listProblems_componentName,
+    listProblems_endTime,
+    listProblems_maxResults,
+    listProblems_nextToken,
+    listProblems_resourceGroupName,
+    listProblems_startTime,
+
+    -- * Destructuring the Response
+    ListProblemsResponse (..),
+    newListProblemsResponse,
+
+    -- * Response Lenses
+    listProblemsResponse_nextToken,
+    listProblemsResponse_problemList,
+    listProblemsResponse_resourceGroupName,
+    listProblemsResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newListProblems' smart constructor.
+data ListProblems = ListProblems'
+  { -- | The name of the component.
+    componentName :: Prelude.Maybe Prelude.Text,
+    -- | The time when the problem ended, in epoch seconds. If not specified,
+    -- problems within the past seven days are returned.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | The maximum number of results to return in a single call. To retrieve
+    -- the remaining results, make another call with the returned @NextToken@
+    -- value.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to request the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the resource group.
+    resourceGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The time when the problem was detected, in epoch seconds. If you don\'t
+    -- specify a time frame for the request, problems within the past seven
+    -- days are returned.
+    startTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListProblems' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'componentName', 'listProblems_componentName' - The name of the component.
+--
+-- 'endTime', 'listProblems_endTime' - The time when the problem ended, in epoch seconds. If not specified,
+-- problems within the past seven days are returned.
+--
+-- 'maxResults', 'listProblems_maxResults' - The maximum number of results to return in a single call. To retrieve
+-- the remaining results, make another call with the returned @NextToken@
+-- value.
+--
+-- 'nextToken', 'listProblems_nextToken' - The token to request the next page of results.
+--
+-- 'resourceGroupName', 'listProblems_resourceGroupName' - The name of the resource group.
+--
+-- 'startTime', 'listProblems_startTime' - The time when the problem was detected, in epoch seconds. If you don\'t
+-- specify a time frame for the request, problems within the past seven
+-- days are returned.
+newListProblems ::
+  ListProblems
+newListProblems =
+  ListProblems'
+    { componentName = Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      resourceGroupName = Prelude.Nothing,
+      startTime = Prelude.Nothing
+    }
+
+-- | The name of the component.
+listProblems_componentName :: Lens.Lens' ListProblems (Prelude.Maybe Prelude.Text)
+listProblems_componentName = Lens.lens (\ListProblems' {componentName} -> componentName) (\s@ListProblems' {} a -> s {componentName = a} :: ListProblems)
+
+-- | The time when the problem ended, in epoch seconds. If not specified,
+-- problems within the past seven days are returned.
+listProblems_endTime :: Lens.Lens' ListProblems (Prelude.Maybe Prelude.UTCTime)
+listProblems_endTime = Lens.lens (\ListProblems' {endTime} -> endTime) (\s@ListProblems' {} a -> s {endTime = a} :: ListProblems) Prelude.. Lens.mapping Data._Time
+
+-- | The maximum number of results to return in a single call. To retrieve
+-- the remaining results, make another call with the returned @NextToken@
+-- value.
+listProblems_maxResults :: Lens.Lens' ListProblems (Prelude.Maybe Prelude.Natural)
+listProblems_maxResults = Lens.lens (\ListProblems' {maxResults} -> maxResults) (\s@ListProblems' {} a -> s {maxResults = a} :: ListProblems)
+
+-- | The token to request the next page of results.
+listProblems_nextToken :: Lens.Lens' ListProblems (Prelude.Maybe Prelude.Text)
+listProblems_nextToken = Lens.lens (\ListProblems' {nextToken} -> nextToken) (\s@ListProblems' {} a -> s {nextToken = a} :: ListProblems)
+
+-- | The name of the resource group.
+listProblems_resourceGroupName :: Lens.Lens' ListProblems (Prelude.Maybe Prelude.Text)
+listProblems_resourceGroupName = Lens.lens (\ListProblems' {resourceGroupName} -> resourceGroupName) (\s@ListProblems' {} a -> s {resourceGroupName = a} :: ListProblems)
+
+-- | The time when the problem was detected, in epoch seconds. If you don\'t
+-- specify a time frame for the request, problems within the past seven
+-- days are returned.
+listProblems_startTime :: Lens.Lens' ListProblems (Prelude.Maybe Prelude.UTCTime)
+listProblems_startTime = Lens.lens (\ListProblems' {startTime} -> startTime) (\s@ListProblems' {} a -> s {startTime = a} :: ListProblems) Prelude.. Lens.mapping Data._Time
+
+instance Core.AWSRequest ListProblems where
+  type AWSResponse ListProblems = ListProblemsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListProblemsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "ProblemList" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "ResourceGroupName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListProblems where
+  hashWithSalt _salt ListProblems' {..} =
+    _salt
+      `Prelude.hashWithSalt` componentName
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` resourceGroupName
+      `Prelude.hashWithSalt` startTime
+
+instance Prelude.NFData ListProblems where
+  rnf ListProblems' {..} =
+    Prelude.rnf componentName
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf startTime
+
+instance Data.ToHeaders ListProblems where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.ListProblems" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListProblems where
+  toJSON ListProblems' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ComponentName" Data..=) Prelude.<$> componentName,
+            ("EndTime" Data..=) Prelude.<$> endTime,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("ResourceGroupName" Data..=)
+              Prelude.<$> resourceGroupName,
+            ("StartTime" Data..=) Prelude.<$> startTime
+          ]
+      )
+
+instance Data.ToPath ListProblems where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListProblems where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListProblemsResponse' smart constructor.
+data ListProblemsResponse = ListProblemsResponse'
+  { -- | The token 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 list of problems.
+    problemList :: Prelude.Maybe [Problem],
+    -- | The name of the resource group.
+    resourceGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListProblemsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listProblemsResponse_nextToken' - The token used to retrieve the next page of results. This value is
+-- @null@ when there are no more results to return.
+--
+-- 'problemList', 'listProblemsResponse_problemList' - The list of problems.
+--
+-- 'resourceGroupName', 'listProblemsResponse_resourceGroupName' - The name of the resource group.
+--
+-- 'httpStatus', 'listProblemsResponse_httpStatus' - The response's http status code.
+newListProblemsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListProblemsResponse
+newListProblemsResponse pHttpStatus_ =
+  ListProblemsResponse'
+    { nextToken = Prelude.Nothing,
+      problemList = Prelude.Nothing,
+      resourceGroupName = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token used to retrieve the next page of results. This value is
+-- @null@ when there are no more results to return.
+listProblemsResponse_nextToken :: Lens.Lens' ListProblemsResponse (Prelude.Maybe Prelude.Text)
+listProblemsResponse_nextToken = Lens.lens (\ListProblemsResponse' {nextToken} -> nextToken) (\s@ListProblemsResponse' {} a -> s {nextToken = a} :: ListProblemsResponse)
+
+-- | The list of problems.
+listProblemsResponse_problemList :: Lens.Lens' ListProblemsResponse (Prelude.Maybe [Problem])
+listProblemsResponse_problemList = Lens.lens (\ListProblemsResponse' {problemList} -> problemList) (\s@ListProblemsResponse' {} a -> s {problemList = a} :: ListProblemsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the resource group.
+listProblemsResponse_resourceGroupName :: Lens.Lens' ListProblemsResponse (Prelude.Maybe Prelude.Text)
+listProblemsResponse_resourceGroupName = Lens.lens (\ListProblemsResponse' {resourceGroupName} -> resourceGroupName) (\s@ListProblemsResponse' {} a -> s {resourceGroupName = a} :: ListProblemsResponse)
+
+-- | The response's http status code.
+listProblemsResponse_httpStatus :: Lens.Lens' ListProblemsResponse Prelude.Int
+listProblemsResponse_httpStatus = Lens.lens (\ListProblemsResponse' {httpStatus} -> httpStatus) (\s@ListProblemsResponse' {} a -> s {httpStatus = a} :: ListProblemsResponse)
+
+instance Prelude.NFData ListProblemsResponse where
+  rnf ListProblemsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf problemList
+      `Prelude.seq` Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/ListTagsForResource.hs b/gen/Amazonka/ApplicationInsights/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/ListTagsForResource.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.ListTagsForResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve a list of the tags (keys and values) that are associated with a
+-- specified application. A /tag/ is a label that you optionally define and
+-- associate with an application. Each tag consists of a required /tag key/
+-- and an optional associated /tag value/. A tag key is a general label
+-- that acts as a category for more specific tag values. A tag value acts
+-- as a descriptor within a tag key.
+module Amazonka.ApplicationInsights.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceARN,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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 application that you want to
+    -- retrieve tag information for.
+    resourceARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARN', 'listTagsForResource_resourceARN' - The Amazon Resource Name (ARN) of the application that you want to
+-- retrieve tag information for.
+newListTagsForResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceARN_ =
+  ListTagsForResource' {resourceARN = pResourceARN_}
+
+-- | The Amazon Resource Name (ARN) of the application that you want to
+-- retrieve tag information for.
+listTagsForResource_resourceARN :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceARN = Lens.lens (\ListTagsForResource' {resourceARN} -> resourceARN) (\s@ListTagsForResource' {} a -> s {resourceARN = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.postJSON (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
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.ListTagsForResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListTagsForResource where
+  toJSON ListTagsForResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ResourceARN" Data..= resourceARN)]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | An array that lists all the tags that are associated with the
+    -- application. Each tag consists of a required tag key (@Key@) and an
+    -- associated tag value (@Value@).
+    tags :: Prelude.Maybe [Tag],
+    -- | 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' - An array that lists all the tags that are associated with the
+-- application. Each tag consists of a required tag key (@Key@) and an
+-- associated tag value (@Value@).
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | An array that lists all the tags that are associated with the
+-- application. Each tag consists of a required tag key (@Key@) and an
+-- associated tag value (@Value@).
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe [Tag])
+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
diff --git a/gen/Amazonka/ApplicationInsights/TagResource.hs b/gen/Amazonka/ApplicationInsights/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/TagResource.hs
@@ -0,0 +1,189 @@
+{-# 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.ApplicationInsights.TagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Add one or more tags (keys and values) to a specified application. A
+-- /tag/ is a label that you optionally define and associate with an
+-- application. Tags can help you categorize and manage application in
+-- different ways, such as by purpose, owner, environment, or other
+-- criteria.
+--
+-- Each tag consists of a required /tag key/ and an associated /tag value/,
+-- both of which you define. A tag key is a general label that acts as a
+-- category for more specific tag values. A tag value acts as a descriptor
+-- within a tag key.
+module Amazonka.ApplicationInsights.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceARN,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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 application that you want to add
+    -- one or more tags to.
+    resourceARN :: Prelude.Text,
+    -- | A list of tags that to add to the application. A tag consists of a
+    -- required tag key (@Key@) and an associated tag value (@Value@). The
+    -- maximum length of a tag key is 128 characters. The maximum length of a
+    -- tag value is 256 characters.
+    tags :: [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARN', 'tagResource_resourceARN' - The Amazon Resource Name (ARN) of the application that you want to add
+-- one or more tags to.
+--
+-- 'tags', 'tagResource_tags' - A list of tags that to add to the application. A tag consists of a
+-- required tag key (@Key@) and an associated tag value (@Value@). The
+-- maximum length of a tag key is 128 characters. The maximum length of a
+-- tag value is 256 characters.
+newTagResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceARN_ =
+  TagResource'
+    { resourceARN = pResourceARN_,
+      tags = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the application that you want to add
+-- one or more tags to.
+tagResource_resourceARN :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceARN = Lens.lens (\TagResource' {resourceARN} -> resourceARN) (\s@TagResource' {} a -> s {resourceARN = a} :: TagResource)
+
+-- | A list of tags that to add to the application. A tag consists of a
+-- required tag key (@Key@) and an associated tag value (@Value@). The
+-- maximum length of a tag key is 128 characters. The maximum length of a
+-- tag value is 256 characters.
+tagResource_tags :: Lens.Lens' TagResource [Tag]
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.TagResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("Tags" Data..= tags)
+          ]
+      )
+
+instance Data.ToPath TagResource where
+  toPath = Prelude.const "/"
+
+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
diff --git a/gen/Amazonka/ApplicationInsights/Types.hs b/gen/Amazonka/ApplicationInsights/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types.hs
@@ -0,0 +1,338 @@
+{-# 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.ApplicationInsights.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.ApplicationInsights.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _BadRequestException,
+    _InternalServerException,
+    _ResourceInUseException,
+    _ResourceNotFoundException,
+    _TagsAlreadyExistException,
+    _TooManyTagsException,
+    _ValidationException,
+
+    -- * CloudWatchEventSource
+    CloudWatchEventSource (..),
+
+    -- * ConfigurationEventResourceType
+    ConfigurationEventResourceType (..),
+
+    -- * ConfigurationEventStatus
+    ConfigurationEventStatus (..),
+
+    -- * DiscoveryType
+    DiscoveryType (..),
+
+    -- * FeedbackKey
+    FeedbackKey (..),
+
+    -- * FeedbackValue
+    FeedbackValue (..),
+
+    -- * GroupingType
+    GroupingType (..),
+
+    -- * LogFilter
+    LogFilter (..),
+
+    -- * OsType
+    OsType (..),
+
+    -- * SeverityLevel
+    SeverityLevel (..),
+
+    -- * Status
+    Status (..),
+
+    -- * Tier
+    Tier (..),
+
+    -- * ApplicationComponent
+    ApplicationComponent (..),
+    newApplicationComponent,
+    applicationComponent_componentName,
+    applicationComponent_componentRemarks,
+    applicationComponent_detectedWorkload,
+    applicationComponent_monitor,
+    applicationComponent_osType,
+    applicationComponent_resourceType,
+    applicationComponent_tier,
+
+    -- * ApplicationInfo
+    ApplicationInfo (..),
+    newApplicationInfo,
+    applicationInfo_autoConfigEnabled,
+    applicationInfo_cWEMonitorEnabled,
+    applicationInfo_discoveryType,
+    applicationInfo_lifeCycle,
+    applicationInfo_opsCenterEnabled,
+    applicationInfo_opsItemSNSTopicArn,
+    applicationInfo_remarks,
+    applicationInfo_resourceGroupName,
+
+    -- * ConfigurationEvent
+    ConfigurationEvent (..),
+    newConfigurationEvent,
+    configurationEvent_eventDetail,
+    configurationEvent_eventResourceName,
+    configurationEvent_eventResourceType,
+    configurationEvent_eventStatus,
+    configurationEvent_eventTime,
+    configurationEvent_monitoredResourceARN,
+
+    -- * LogPattern
+    LogPattern (..),
+    newLogPattern,
+    logPattern_pattern,
+    logPattern_patternName,
+    logPattern_patternSetName,
+    logPattern_rank,
+
+    -- * Observation
+    Observation (..),
+    newObservation,
+    observation_cloudWatchEventDetailType,
+    observation_cloudWatchEventId,
+    observation_cloudWatchEventSource,
+    observation_codeDeployApplication,
+    observation_codeDeployDeploymentGroup,
+    observation_codeDeployDeploymentId,
+    observation_codeDeployInstanceGroupId,
+    observation_codeDeployState,
+    observation_ebsCause,
+    observation_ebsEvent,
+    observation_ebsRequestId,
+    observation_ebsResult,
+    observation_ec2State,
+    observation_endTime,
+    observation_healthEventArn,
+    observation_healthEventDescription,
+    observation_healthEventTypeCategory,
+    observation_healthEventTypeCode,
+    observation_healthService,
+    observation_id,
+    observation_lineTime,
+    observation_logFilter,
+    observation_logGroup,
+    observation_logText,
+    observation_metricName,
+    observation_metricNamespace,
+    observation_rdsEventCategories,
+    observation_rdsEventMessage,
+    observation_s3EventName,
+    observation_sourceARN,
+    observation_sourceType,
+    observation_startTime,
+    observation_statesArn,
+    observation_statesExecutionArn,
+    observation_statesInput,
+    observation_statesStatus,
+    observation_unit,
+    observation_value,
+    observation_xRayErrorPercent,
+    observation_xRayFaultPercent,
+    observation_xRayNodeName,
+    observation_xRayNodeType,
+    observation_xRayRequestAverageLatency,
+    observation_xRayRequestCount,
+    observation_xRayThrottlePercent,
+
+    -- * Problem
+    Problem (..),
+    newProblem,
+    problem_affectedResource,
+    problem_endTime,
+    problem_feedback,
+    problem_id,
+    problem_insights,
+    problem_lastRecurrenceTime,
+    problem_recurringCount,
+    problem_resourceGroupName,
+    problem_severityLevel,
+    problem_startTime,
+    problem_status,
+    problem_title,
+
+    -- * RelatedObservations
+    RelatedObservations (..),
+    newRelatedObservations,
+    relatedObservations_observationList,
+
+    -- * Tag
+    Tag (..),
+    newTag,
+    tag_key,
+    tag_value,
+  )
+where
+
+import Amazonka.ApplicationInsights.Types.ApplicationComponent
+import Amazonka.ApplicationInsights.Types.ApplicationInfo
+import Amazonka.ApplicationInsights.Types.CloudWatchEventSource
+import Amazonka.ApplicationInsights.Types.ConfigurationEvent
+import Amazonka.ApplicationInsights.Types.ConfigurationEventResourceType
+import Amazonka.ApplicationInsights.Types.ConfigurationEventStatus
+import Amazonka.ApplicationInsights.Types.DiscoveryType
+import Amazonka.ApplicationInsights.Types.FeedbackKey
+import Amazonka.ApplicationInsights.Types.FeedbackValue
+import Amazonka.ApplicationInsights.Types.GroupingType
+import Amazonka.ApplicationInsights.Types.LogFilter
+import Amazonka.ApplicationInsights.Types.LogPattern
+import Amazonka.ApplicationInsights.Types.Observation
+import Amazonka.ApplicationInsights.Types.OsType
+import Amazonka.ApplicationInsights.Types.Problem
+import Amazonka.ApplicationInsights.Types.RelatedObservations
+import Amazonka.ApplicationInsights.Types.SeverityLevel
+import Amazonka.ApplicationInsights.Types.Status
+import Amazonka.ApplicationInsights.Types.Tag
+import Amazonka.ApplicationInsights.Types.Tier
+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 @2018-11-25@ of the Amazon CloudWatch Application Insights SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "ApplicationInsights",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "applicationinsights",
+      Core.signingName = "applicationinsights",
+      Core.version = "2018-11-25",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error =
+        Core.parseJSONError "ApplicationInsights",
+      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
+
+-- | User does not have permissions to perform this action.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+
+-- | The request is not understood by the server.
+_BadRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_BadRequestException =
+  Core._MatchServiceError
+    defaultService
+    "BadRequestException"
+
+-- | 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"
+
+-- | The resource is already created or in use.
+_ResourceInUseException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceInUseException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceInUseException"
+
+-- | The resource does not exist in the customer account.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+
+-- | Tags are already registered for the specified application ARN.
+_TagsAlreadyExistException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TagsAlreadyExistException =
+  Core._MatchServiceError
+    defaultService
+    "TagsAlreadyExistException"
+
+-- | The number of the provided tags is beyond the limit, or the number of
+-- total tags you are trying to attach to the specified resource exceeds
+-- the limit.
+_TooManyTagsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TooManyTagsException =
+  Core._MatchServiceError
+    defaultService
+    "TooManyTagsException"
+
+-- | The parameter is not valid.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
diff --git a/gen/Amazonka/ApplicationInsights/Types/ApplicationComponent.hs b/gen/Amazonka/ApplicationInsights/Types/ApplicationComponent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/ApplicationComponent.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.Types.ApplicationComponent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.ApplicationComponent where
+
+import Amazonka.ApplicationInsights.Types.OsType
+import Amazonka.ApplicationInsights.Types.Tier
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a standalone resource or similarly grouped resources that the
+-- application is made up of.
+--
+-- /See:/ 'newApplicationComponent' smart constructor.
+data ApplicationComponent = ApplicationComponent'
+  { -- | The name of the component.
+    componentName :: Prelude.Maybe Prelude.Text,
+    -- | If logging is supported for the resource type, indicates whether the
+    -- component has configured logs to be monitored.
+    componentRemarks :: Prelude.Maybe Prelude.Text,
+    -- | Workloads detected in the application component.
+    detectedWorkload :: Prelude.Maybe (Prelude.HashMap Tier (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | Indicates whether the application component is monitored.
+    monitor :: Prelude.Maybe Prelude.Bool,
+    -- | The operating system of the component.
+    osType :: Prelude.Maybe OsType,
+    -- | The resource type. Supported resource types include EC2 instances, Auto
+    -- Scaling group, Classic ELB, Application ELB, and SQS Queue.
+    resourceType :: Prelude.Maybe Prelude.Text,
+    -- | The stack tier of the application component.
+    tier :: Prelude.Maybe Tier
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ApplicationComponent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'componentName', 'applicationComponent_componentName' - The name of the component.
+--
+-- 'componentRemarks', 'applicationComponent_componentRemarks' - If logging is supported for the resource type, indicates whether the
+-- component has configured logs to be monitored.
+--
+-- 'detectedWorkload', 'applicationComponent_detectedWorkload' - Workloads detected in the application component.
+--
+-- 'monitor', 'applicationComponent_monitor' - Indicates whether the application component is monitored.
+--
+-- 'osType', 'applicationComponent_osType' - The operating system of the component.
+--
+-- 'resourceType', 'applicationComponent_resourceType' - The resource type. Supported resource types include EC2 instances, Auto
+-- Scaling group, Classic ELB, Application ELB, and SQS Queue.
+--
+-- 'tier', 'applicationComponent_tier' - The stack tier of the application component.
+newApplicationComponent ::
+  ApplicationComponent
+newApplicationComponent =
+  ApplicationComponent'
+    { componentName =
+        Prelude.Nothing,
+      componentRemarks = Prelude.Nothing,
+      detectedWorkload = Prelude.Nothing,
+      monitor = Prelude.Nothing,
+      osType = Prelude.Nothing,
+      resourceType = Prelude.Nothing,
+      tier = Prelude.Nothing
+    }
+
+-- | The name of the component.
+applicationComponent_componentName :: Lens.Lens' ApplicationComponent (Prelude.Maybe Prelude.Text)
+applicationComponent_componentName = Lens.lens (\ApplicationComponent' {componentName} -> componentName) (\s@ApplicationComponent' {} a -> s {componentName = a} :: ApplicationComponent)
+
+-- | If logging is supported for the resource type, indicates whether the
+-- component has configured logs to be monitored.
+applicationComponent_componentRemarks :: Lens.Lens' ApplicationComponent (Prelude.Maybe Prelude.Text)
+applicationComponent_componentRemarks = Lens.lens (\ApplicationComponent' {componentRemarks} -> componentRemarks) (\s@ApplicationComponent' {} a -> s {componentRemarks = a} :: ApplicationComponent)
+
+-- | Workloads detected in the application component.
+applicationComponent_detectedWorkload :: Lens.Lens' ApplicationComponent (Prelude.Maybe (Prelude.HashMap Tier (Prelude.HashMap Prelude.Text Prelude.Text)))
+applicationComponent_detectedWorkload = Lens.lens (\ApplicationComponent' {detectedWorkload} -> detectedWorkload) (\s@ApplicationComponent' {} a -> s {detectedWorkload = a} :: ApplicationComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | Indicates whether the application component is monitored.
+applicationComponent_monitor :: Lens.Lens' ApplicationComponent (Prelude.Maybe Prelude.Bool)
+applicationComponent_monitor = Lens.lens (\ApplicationComponent' {monitor} -> monitor) (\s@ApplicationComponent' {} a -> s {monitor = a} :: ApplicationComponent)
+
+-- | The operating system of the component.
+applicationComponent_osType :: Lens.Lens' ApplicationComponent (Prelude.Maybe OsType)
+applicationComponent_osType = Lens.lens (\ApplicationComponent' {osType} -> osType) (\s@ApplicationComponent' {} a -> s {osType = a} :: ApplicationComponent)
+
+-- | The resource type. Supported resource types include EC2 instances, Auto
+-- Scaling group, Classic ELB, Application ELB, and SQS Queue.
+applicationComponent_resourceType :: Lens.Lens' ApplicationComponent (Prelude.Maybe Prelude.Text)
+applicationComponent_resourceType = Lens.lens (\ApplicationComponent' {resourceType} -> resourceType) (\s@ApplicationComponent' {} a -> s {resourceType = a} :: ApplicationComponent)
+
+-- | The stack tier of the application component.
+applicationComponent_tier :: Lens.Lens' ApplicationComponent (Prelude.Maybe Tier)
+applicationComponent_tier = Lens.lens (\ApplicationComponent' {tier} -> tier) (\s@ApplicationComponent' {} a -> s {tier = a} :: ApplicationComponent)
+
+instance Data.FromJSON ApplicationComponent where
+  parseJSON =
+    Data.withObject
+      "ApplicationComponent"
+      ( \x ->
+          ApplicationComponent'
+            Prelude.<$> (x Data..:? "ComponentName")
+            Prelude.<*> (x Data..:? "ComponentRemarks")
+            Prelude.<*> ( x
+                            Data..:? "DetectedWorkload"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Monitor")
+            Prelude.<*> (x Data..:? "OsType")
+            Prelude.<*> (x Data..:? "ResourceType")
+            Prelude.<*> (x Data..:? "Tier")
+      )
+
+instance Prelude.Hashable ApplicationComponent where
+  hashWithSalt _salt ApplicationComponent' {..} =
+    _salt
+      `Prelude.hashWithSalt` componentName
+      `Prelude.hashWithSalt` componentRemarks
+      `Prelude.hashWithSalt` detectedWorkload
+      `Prelude.hashWithSalt` monitor
+      `Prelude.hashWithSalt` osType
+      `Prelude.hashWithSalt` resourceType
+      `Prelude.hashWithSalt` tier
+
+instance Prelude.NFData ApplicationComponent where
+  rnf ApplicationComponent' {..} =
+    Prelude.rnf componentName
+      `Prelude.seq` Prelude.rnf componentRemarks
+      `Prelude.seq` Prelude.rnf detectedWorkload
+      `Prelude.seq` Prelude.rnf monitor
+      `Prelude.seq` Prelude.rnf osType
+      `Prelude.seq` Prelude.rnf resourceType
+      `Prelude.seq` Prelude.rnf tier
diff --git a/gen/Amazonka/ApplicationInsights/Types/ApplicationInfo.hs b/gen/Amazonka/ApplicationInsights/Types/ApplicationInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/ApplicationInfo.hs
@@ -0,0 +1,185 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.Types.ApplicationInfo
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.ApplicationInfo where
+
+import Amazonka.ApplicationInsights.Types.DiscoveryType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the status of the application.
+--
+-- /See:/ 'newApplicationInfo' smart constructor.
+data ApplicationInfo = ApplicationInfo'
+  { -- | Indicates whether auto-configuration is turned on for this application.
+    autoConfigEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether Application Insights can listen to CloudWatch events
+    -- for the application resources, such as @instance terminated@,
+    -- @failed deployment@, and others.
+    cWEMonitorEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | The method used by Application Insights to onboard your resources.
+    discoveryType :: Prelude.Maybe DiscoveryType,
+    -- | The lifecycle of the application.
+    lifeCycle :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether Application Insights will create opsItems for any
+    -- problem detected by Application Insights for an application.
+    opsCenterEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | The SNS topic provided to Application Insights that is associated to the
+    -- created opsItems to receive SNS notifications for opsItem updates.
+    opsItemSNSTopicArn :: Prelude.Maybe Prelude.Text,
+    -- | The issues on the user side that block Application Insights from
+    -- successfully monitoring an application. Example remarks include:
+    --
+    -- -   “Configuring application, detected 1 Errors, 3 Warnings”
+    --
+    -- -   “Configuring application, detected 1 Unconfigured Components”
+    remarks :: Prelude.Maybe Prelude.Text,
+    -- | The name of the resource group used for the application.
+    resourceGroupName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ApplicationInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'autoConfigEnabled', 'applicationInfo_autoConfigEnabled' - Indicates whether auto-configuration is turned on for this application.
+--
+-- 'cWEMonitorEnabled', 'applicationInfo_cWEMonitorEnabled' - Indicates whether Application Insights can listen to CloudWatch events
+-- for the application resources, such as @instance terminated@,
+-- @failed deployment@, and others.
+--
+-- 'discoveryType', 'applicationInfo_discoveryType' - The method used by Application Insights to onboard your resources.
+--
+-- 'lifeCycle', 'applicationInfo_lifeCycle' - The lifecycle of the application.
+--
+-- 'opsCenterEnabled', 'applicationInfo_opsCenterEnabled' - Indicates whether Application Insights will create opsItems for any
+-- problem detected by Application Insights for an application.
+--
+-- 'opsItemSNSTopicArn', 'applicationInfo_opsItemSNSTopicArn' - The SNS topic provided to Application Insights that is associated to the
+-- created opsItems to receive SNS notifications for opsItem updates.
+--
+-- 'remarks', 'applicationInfo_remarks' - The issues on the user side that block Application Insights from
+-- successfully monitoring an application. Example remarks include:
+--
+-- -   “Configuring application, detected 1 Errors, 3 Warnings”
+--
+-- -   “Configuring application, detected 1 Unconfigured Components”
+--
+-- 'resourceGroupName', 'applicationInfo_resourceGroupName' - The name of the resource group used for the application.
+newApplicationInfo ::
+  ApplicationInfo
+newApplicationInfo =
+  ApplicationInfo'
+    { autoConfigEnabled =
+        Prelude.Nothing,
+      cWEMonitorEnabled = Prelude.Nothing,
+      discoveryType = Prelude.Nothing,
+      lifeCycle = Prelude.Nothing,
+      opsCenterEnabled = Prelude.Nothing,
+      opsItemSNSTopicArn = Prelude.Nothing,
+      remarks = Prelude.Nothing,
+      resourceGroupName = Prelude.Nothing
+    }
+
+-- | Indicates whether auto-configuration is turned on for this application.
+applicationInfo_autoConfigEnabled :: Lens.Lens' ApplicationInfo (Prelude.Maybe Prelude.Bool)
+applicationInfo_autoConfigEnabled = Lens.lens (\ApplicationInfo' {autoConfigEnabled} -> autoConfigEnabled) (\s@ApplicationInfo' {} a -> s {autoConfigEnabled = a} :: ApplicationInfo)
+
+-- | Indicates whether Application Insights can listen to CloudWatch events
+-- for the application resources, such as @instance terminated@,
+-- @failed deployment@, and others.
+applicationInfo_cWEMonitorEnabled :: Lens.Lens' ApplicationInfo (Prelude.Maybe Prelude.Bool)
+applicationInfo_cWEMonitorEnabled = Lens.lens (\ApplicationInfo' {cWEMonitorEnabled} -> cWEMonitorEnabled) (\s@ApplicationInfo' {} a -> s {cWEMonitorEnabled = a} :: ApplicationInfo)
+
+-- | The method used by Application Insights to onboard your resources.
+applicationInfo_discoveryType :: Lens.Lens' ApplicationInfo (Prelude.Maybe DiscoveryType)
+applicationInfo_discoveryType = Lens.lens (\ApplicationInfo' {discoveryType} -> discoveryType) (\s@ApplicationInfo' {} a -> s {discoveryType = a} :: ApplicationInfo)
+
+-- | The lifecycle of the application.
+applicationInfo_lifeCycle :: Lens.Lens' ApplicationInfo (Prelude.Maybe Prelude.Text)
+applicationInfo_lifeCycle = Lens.lens (\ApplicationInfo' {lifeCycle} -> lifeCycle) (\s@ApplicationInfo' {} a -> s {lifeCycle = a} :: ApplicationInfo)
+
+-- | Indicates whether Application Insights will create opsItems for any
+-- problem detected by Application Insights for an application.
+applicationInfo_opsCenterEnabled :: Lens.Lens' ApplicationInfo (Prelude.Maybe Prelude.Bool)
+applicationInfo_opsCenterEnabled = Lens.lens (\ApplicationInfo' {opsCenterEnabled} -> opsCenterEnabled) (\s@ApplicationInfo' {} a -> s {opsCenterEnabled = a} :: ApplicationInfo)
+
+-- | The SNS topic provided to Application Insights that is associated to the
+-- created opsItems to receive SNS notifications for opsItem updates.
+applicationInfo_opsItemSNSTopicArn :: Lens.Lens' ApplicationInfo (Prelude.Maybe Prelude.Text)
+applicationInfo_opsItemSNSTopicArn = Lens.lens (\ApplicationInfo' {opsItemSNSTopicArn} -> opsItemSNSTopicArn) (\s@ApplicationInfo' {} a -> s {opsItemSNSTopicArn = a} :: ApplicationInfo)
+
+-- | The issues on the user side that block Application Insights from
+-- successfully monitoring an application. Example remarks include:
+--
+-- -   “Configuring application, detected 1 Errors, 3 Warnings”
+--
+-- -   “Configuring application, detected 1 Unconfigured Components”
+applicationInfo_remarks :: Lens.Lens' ApplicationInfo (Prelude.Maybe Prelude.Text)
+applicationInfo_remarks = Lens.lens (\ApplicationInfo' {remarks} -> remarks) (\s@ApplicationInfo' {} a -> s {remarks = a} :: ApplicationInfo)
+
+-- | The name of the resource group used for the application.
+applicationInfo_resourceGroupName :: Lens.Lens' ApplicationInfo (Prelude.Maybe Prelude.Text)
+applicationInfo_resourceGroupName = Lens.lens (\ApplicationInfo' {resourceGroupName} -> resourceGroupName) (\s@ApplicationInfo' {} a -> s {resourceGroupName = a} :: ApplicationInfo)
+
+instance Data.FromJSON ApplicationInfo where
+  parseJSON =
+    Data.withObject
+      "ApplicationInfo"
+      ( \x ->
+          ApplicationInfo'
+            Prelude.<$> (x Data..:? "AutoConfigEnabled")
+            Prelude.<*> (x Data..:? "CWEMonitorEnabled")
+            Prelude.<*> (x Data..:? "DiscoveryType")
+            Prelude.<*> (x Data..:? "LifeCycle")
+            Prelude.<*> (x Data..:? "OpsCenterEnabled")
+            Prelude.<*> (x Data..:? "OpsItemSNSTopicArn")
+            Prelude.<*> (x Data..:? "Remarks")
+            Prelude.<*> (x Data..:? "ResourceGroupName")
+      )
+
+instance Prelude.Hashable ApplicationInfo where
+  hashWithSalt _salt ApplicationInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoConfigEnabled
+      `Prelude.hashWithSalt` cWEMonitorEnabled
+      `Prelude.hashWithSalt` discoveryType
+      `Prelude.hashWithSalt` lifeCycle
+      `Prelude.hashWithSalt` opsCenterEnabled
+      `Prelude.hashWithSalt` opsItemSNSTopicArn
+      `Prelude.hashWithSalt` remarks
+      `Prelude.hashWithSalt` resourceGroupName
+
+instance Prelude.NFData ApplicationInfo where
+  rnf ApplicationInfo' {..} =
+    Prelude.rnf autoConfigEnabled
+      `Prelude.seq` Prelude.rnf cWEMonitorEnabled
+      `Prelude.seq` Prelude.rnf discoveryType
+      `Prelude.seq` Prelude.rnf lifeCycle
+      `Prelude.seq` Prelude.rnf opsCenterEnabled
+      `Prelude.seq` Prelude.rnf opsItemSNSTopicArn
+      `Prelude.seq` Prelude.rnf remarks
+      `Prelude.seq` Prelude.rnf resourceGroupName
diff --git a/gen/Amazonka/ApplicationInsights/Types/CloudWatchEventSource.hs b/gen/Amazonka/ApplicationInsights/Types/CloudWatchEventSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/CloudWatchEventSource.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.Types.CloudWatchEventSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.CloudWatchEventSource
+  ( CloudWatchEventSource
+      ( ..,
+        CloudWatchEventSource_CODE_DEPLOY,
+        CloudWatchEventSource_EC2,
+        CloudWatchEventSource_HEALTH,
+        CloudWatchEventSource_RDS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CloudWatchEventSource = CloudWatchEventSource'
+  { fromCloudWatchEventSource ::
+      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 CloudWatchEventSource_CODE_DEPLOY :: CloudWatchEventSource
+pattern CloudWatchEventSource_CODE_DEPLOY = CloudWatchEventSource' "CODE_DEPLOY"
+
+pattern CloudWatchEventSource_EC2 :: CloudWatchEventSource
+pattern CloudWatchEventSource_EC2 = CloudWatchEventSource' "EC2"
+
+pattern CloudWatchEventSource_HEALTH :: CloudWatchEventSource
+pattern CloudWatchEventSource_HEALTH = CloudWatchEventSource' "HEALTH"
+
+pattern CloudWatchEventSource_RDS :: CloudWatchEventSource
+pattern CloudWatchEventSource_RDS = CloudWatchEventSource' "RDS"
+
+{-# COMPLETE
+  CloudWatchEventSource_CODE_DEPLOY,
+  CloudWatchEventSource_EC2,
+  CloudWatchEventSource_HEALTH,
+  CloudWatchEventSource_RDS,
+  CloudWatchEventSource'
+  #-}
diff --git a/gen/Amazonka/ApplicationInsights/Types/ConfigurationEvent.hs b/gen/Amazonka/ApplicationInsights/Types/ConfigurationEvent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/ConfigurationEvent.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.Types.ConfigurationEvent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.ConfigurationEvent where
+
+import Amazonka.ApplicationInsights.Types.ConfigurationEventResourceType
+import Amazonka.ApplicationInsights.Types.ConfigurationEventStatus
+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 event information.
+--
+-- /See:/ 'newConfigurationEvent' smart constructor.
+data ConfigurationEvent = ConfigurationEvent'
+  { -- | The details of the event in plain text.
+    eventDetail :: Prelude.Maybe Prelude.Text,
+    -- | The name of the resource Application Insights attempted to configure.
+    eventResourceName :: Prelude.Maybe Prelude.Text,
+    -- | The resource type that Application Insights attempted to configure, for
+    -- example, CLOUDWATCH_ALARM.
+    eventResourceType :: Prelude.Maybe ConfigurationEventResourceType,
+    -- | The status of the configuration update event. Possible values include
+    -- INFO, WARN, and ERROR.
+    eventStatus :: Prelude.Maybe ConfigurationEventStatus,
+    -- | The timestamp of the event.
+    eventTime :: Prelude.Maybe Data.POSIX,
+    -- | The resource monitored by Application Insights.
+    monitoredResourceARN :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConfigurationEvent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'eventDetail', 'configurationEvent_eventDetail' - The details of the event in plain text.
+--
+-- 'eventResourceName', 'configurationEvent_eventResourceName' - The name of the resource Application Insights attempted to configure.
+--
+-- 'eventResourceType', 'configurationEvent_eventResourceType' - The resource type that Application Insights attempted to configure, for
+-- example, CLOUDWATCH_ALARM.
+--
+-- 'eventStatus', 'configurationEvent_eventStatus' - The status of the configuration update event. Possible values include
+-- INFO, WARN, and ERROR.
+--
+-- 'eventTime', 'configurationEvent_eventTime' - The timestamp of the event.
+--
+-- 'monitoredResourceARN', 'configurationEvent_monitoredResourceARN' - The resource monitored by Application Insights.
+newConfigurationEvent ::
+  ConfigurationEvent
+newConfigurationEvent =
+  ConfigurationEvent'
+    { eventDetail = Prelude.Nothing,
+      eventResourceName = Prelude.Nothing,
+      eventResourceType = Prelude.Nothing,
+      eventStatus = Prelude.Nothing,
+      eventTime = Prelude.Nothing,
+      monitoredResourceARN = Prelude.Nothing
+    }
+
+-- | The details of the event in plain text.
+configurationEvent_eventDetail :: Lens.Lens' ConfigurationEvent (Prelude.Maybe Prelude.Text)
+configurationEvent_eventDetail = Lens.lens (\ConfigurationEvent' {eventDetail} -> eventDetail) (\s@ConfigurationEvent' {} a -> s {eventDetail = a} :: ConfigurationEvent)
+
+-- | The name of the resource Application Insights attempted to configure.
+configurationEvent_eventResourceName :: Lens.Lens' ConfigurationEvent (Prelude.Maybe Prelude.Text)
+configurationEvent_eventResourceName = Lens.lens (\ConfigurationEvent' {eventResourceName} -> eventResourceName) (\s@ConfigurationEvent' {} a -> s {eventResourceName = a} :: ConfigurationEvent)
+
+-- | The resource type that Application Insights attempted to configure, for
+-- example, CLOUDWATCH_ALARM.
+configurationEvent_eventResourceType :: Lens.Lens' ConfigurationEvent (Prelude.Maybe ConfigurationEventResourceType)
+configurationEvent_eventResourceType = Lens.lens (\ConfigurationEvent' {eventResourceType} -> eventResourceType) (\s@ConfigurationEvent' {} a -> s {eventResourceType = a} :: ConfigurationEvent)
+
+-- | The status of the configuration update event. Possible values include
+-- INFO, WARN, and ERROR.
+configurationEvent_eventStatus :: Lens.Lens' ConfigurationEvent (Prelude.Maybe ConfigurationEventStatus)
+configurationEvent_eventStatus = Lens.lens (\ConfigurationEvent' {eventStatus} -> eventStatus) (\s@ConfigurationEvent' {} a -> s {eventStatus = a} :: ConfigurationEvent)
+
+-- | The timestamp of the event.
+configurationEvent_eventTime :: Lens.Lens' ConfigurationEvent (Prelude.Maybe Prelude.UTCTime)
+configurationEvent_eventTime = Lens.lens (\ConfigurationEvent' {eventTime} -> eventTime) (\s@ConfigurationEvent' {} a -> s {eventTime = a} :: ConfigurationEvent) Prelude.. Lens.mapping Data._Time
+
+-- | The resource monitored by Application Insights.
+configurationEvent_monitoredResourceARN :: Lens.Lens' ConfigurationEvent (Prelude.Maybe Prelude.Text)
+configurationEvent_monitoredResourceARN = Lens.lens (\ConfigurationEvent' {monitoredResourceARN} -> monitoredResourceARN) (\s@ConfigurationEvent' {} a -> s {monitoredResourceARN = a} :: ConfigurationEvent)
+
+instance Data.FromJSON ConfigurationEvent where
+  parseJSON =
+    Data.withObject
+      "ConfigurationEvent"
+      ( \x ->
+          ConfigurationEvent'
+            Prelude.<$> (x Data..:? "EventDetail")
+            Prelude.<*> (x Data..:? "EventResourceName")
+            Prelude.<*> (x Data..:? "EventResourceType")
+            Prelude.<*> (x Data..:? "EventStatus")
+            Prelude.<*> (x Data..:? "EventTime")
+            Prelude.<*> (x Data..:? "MonitoredResourceARN")
+      )
+
+instance Prelude.Hashable ConfigurationEvent where
+  hashWithSalt _salt ConfigurationEvent' {..} =
+    _salt
+      `Prelude.hashWithSalt` eventDetail
+      `Prelude.hashWithSalt` eventResourceName
+      `Prelude.hashWithSalt` eventResourceType
+      `Prelude.hashWithSalt` eventStatus
+      `Prelude.hashWithSalt` eventTime
+      `Prelude.hashWithSalt` monitoredResourceARN
+
+instance Prelude.NFData ConfigurationEvent where
+  rnf ConfigurationEvent' {..} =
+    Prelude.rnf eventDetail
+      `Prelude.seq` Prelude.rnf eventResourceName
+      `Prelude.seq` Prelude.rnf eventResourceType
+      `Prelude.seq` Prelude.rnf eventStatus
+      `Prelude.seq` Prelude.rnf eventTime
+      `Prelude.seq` Prelude.rnf monitoredResourceARN
diff --git a/gen/Amazonka/ApplicationInsights/Types/ConfigurationEventResourceType.hs b/gen/Amazonka/ApplicationInsights/Types/ConfigurationEventResourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/ConfigurationEventResourceType.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.Types.ConfigurationEventResourceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.ConfigurationEventResourceType
+  ( ConfigurationEventResourceType
+      ( ..,
+        ConfigurationEventResourceType_CLOUDFORMATION,
+        ConfigurationEventResourceType_CLOUDWATCH_ALARM,
+        ConfigurationEventResourceType_CLOUDWATCH_LOG,
+        ConfigurationEventResourceType_SSM_ASSOCIATION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConfigurationEventResourceType = ConfigurationEventResourceType'
+  { fromConfigurationEventResourceType ::
+      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 ConfigurationEventResourceType_CLOUDFORMATION :: ConfigurationEventResourceType
+pattern ConfigurationEventResourceType_CLOUDFORMATION = ConfigurationEventResourceType' "CLOUDFORMATION"
+
+pattern ConfigurationEventResourceType_CLOUDWATCH_ALARM :: ConfigurationEventResourceType
+pattern ConfigurationEventResourceType_CLOUDWATCH_ALARM = ConfigurationEventResourceType' "CLOUDWATCH_ALARM"
+
+pattern ConfigurationEventResourceType_CLOUDWATCH_LOG :: ConfigurationEventResourceType
+pattern ConfigurationEventResourceType_CLOUDWATCH_LOG = ConfigurationEventResourceType' "CLOUDWATCH_LOG"
+
+pattern ConfigurationEventResourceType_SSM_ASSOCIATION :: ConfigurationEventResourceType
+pattern ConfigurationEventResourceType_SSM_ASSOCIATION = ConfigurationEventResourceType' "SSM_ASSOCIATION"
+
+{-# COMPLETE
+  ConfigurationEventResourceType_CLOUDFORMATION,
+  ConfigurationEventResourceType_CLOUDWATCH_ALARM,
+  ConfigurationEventResourceType_CLOUDWATCH_LOG,
+  ConfigurationEventResourceType_SSM_ASSOCIATION,
+  ConfigurationEventResourceType'
+  #-}
diff --git a/gen/Amazonka/ApplicationInsights/Types/ConfigurationEventStatus.hs b/gen/Amazonka/ApplicationInsights/Types/ConfigurationEventStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/ConfigurationEventStatus.hs
@@ -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.ApplicationInsights.Types.ConfigurationEventStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.ConfigurationEventStatus
+  ( ConfigurationEventStatus
+      ( ..,
+        ConfigurationEventStatus_ERROR,
+        ConfigurationEventStatus_INFO,
+        ConfigurationEventStatus_WARN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConfigurationEventStatus = ConfigurationEventStatus'
+  { fromConfigurationEventStatus ::
+      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 ConfigurationEventStatus_ERROR :: ConfigurationEventStatus
+pattern ConfigurationEventStatus_ERROR = ConfigurationEventStatus' "ERROR"
+
+pattern ConfigurationEventStatus_INFO :: ConfigurationEventStatus
+pattern ConfigurationEventStatus_INFO = ConfigurationEventStatus' "INFO"
+
+pattern ConfigurationEventStatus_WARN :: ConfigurationEventStatus
+pattern ConfigurationEventStatus_WARN = ConfigurationEventStatus' "WARN"
+
+{-# COMPLETE
+  ConfigurationEventStatus_ERROR,
+  ConfigurationEventStatus_INFO,
+  ConfigurationEventStatus_WARN,
+  ConfigurationEventStatus'
+  #-}
diff --git a/gen/Amazonka/ApplicationInsights/Types/DiscoveryType.hs b/gen/Amazonka/ApplicationInsights/Types/DiscoveryType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/DiscoveryType.hs
@@ -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.ApplicationInsights.Types.DiscoveryType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.DiscoveryType
+  ( DiscoveryType
+      ( ..,
+        DiscoveryType_ACCOUNT_BASED,
+        DiscoveryType_RESOURCE_GROUP_BASED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DiscoveryType = DiscoveryType'
+  { fromDiscoveryType ::
+      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 DiscoveryType_ACCOUNT_BASED :: DiscoveryType
+pattern DiscoveryType_ACCOUNT_BASED = DiscoveryType' "ACCOUNT_BASED"
+
+pattern DiscoveryType_RESOURCE_GROUP_BASED :: DiscoveryType
+pattern DiscoveryType_RESOURCE_GROUP_BASED = DiscoveryType' "RESOURCE_GROUP_BASED"
+
+{-# COMPLETE
+  DiscoveryType_ACCOUNT_BASED,
+  DiscoveryType_RESOURCE_GROUP_BASED,
+  DiscoveryType'
+  #-}
diff --git a/gen/Amazonka/ApplicationInsights/Types/FeedbackKey.hs b/gen/Amazonka/ApplicationInsights/Types/FeedbackKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/FeedbackKey.hs
@@ -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.ApplicationInsights.Types.FeedbackKey
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.FeedbackKey
+  ( FeedbackKey
+      ( ..,
+        FeedbackKey_INSIGHTS_FEEDBACK
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FeedbackKey = FeedbackKey'
+  { fromFeedbackKey ::
+      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 FeedbackKey_INSIGHTS_FEEDBACK :: FeedbackKey
+pattern FeedbackKey_INSIGHTS_FEEDBACK = FeedbackKey' "INSIGHTS_FEEDBACK"
+
+{-# COMPLETE
+  FeedbackKey_INSIGHTS_FEEDBACK,
+  FeedbackKey'
+  #-}
diff --git a/gen/Amazonka/ApplicationInsights/Types/FeedbackValue.hs b/gen/Amazonka/ApplicationInsights/Types/FeedbackValue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/FeedbackValue.hs
@@ -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.ApplicationInsights.Types.FeedbackValue
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.FeedbackValue
+  ( FeedbackValue
+      ( ..,
+        FeedbackValue_NOT_SPECIFIED,
+        FeedbackValue_NOT_USEFUL,
+        FeedbackValue_USEFUL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FeedbackValue = FeedbackValue'
+  { fromFeedbackValue ::
+      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 FeedbackValue_NOT_SPECIFIED :: FeedbackValue
+pattern FeedbackValue_NOT_SPECIFIED = FeedbackValue' "NOT_SPECIFIED"
+
+pattern FeedbackValue_NOT_USEFUL :: FeedbackValue
+pattern FeedbackValue_NOT_USEFUL = FeedbackValue' "NOT_USEFUL"
+
+pattern FeedbackValue_USEFUL :: FeedbackValue
+pattern FeedbackValue_USEFUL = FeedbackValue' "USEFUL"
+
+{-# COMPLETE
+  FeedbackValue_NOT_SPECIFIED,
+  FeedbackValue_NOT_USEFUL,
+  FeedbackValue_USEFUL,
+  FeedbackValue'
+  #-}
diff --git a/gen/Amazonka/ApplicationInsights/Types/GroupingType.hs b/gen/Amazonka/ApplicationInsights/Types/GroupingType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/GroupingType.hs
@@ -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.ApplicationInsights.Types.GroupingType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.GroupingType
+  ( GroupingType
+      ( ..,
+        GroupingType_ACCOUNT_BASED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype GroupingType = GroupingType'
+  { fromGroupingType ::
+      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 GroupingType_ACCOUNT_BASED :: GroupingType
+pattern GroupingType_ACCOUNT_BASED = GroupingType' "ACCOUNT_BASED"
+
+{-# COMPLETE
+  GroupingType_ACCOUNT_BASED,
+  GroupingType'
+  #-}
diff --git a/gen/Amazonka/ApplicationInsights/Types/LogFilter.hs b/gen/Amazonka/ApplicationInsights/Types/LogFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/LogFilter.hs
@@ -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.ApplicationInsights.Types.LogFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.LogFilter
+  ( LogFilter
+      ( ..,
+        LogFilter_ERROR,
+        LogFilter_INFO,
+        LogFilter_WARN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LogFilter = LogFilter'
+  { fromLogFilter ::
+      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 LogFilter_ERROR :: LogFilter
+pattern LogFilter_ERROR = LogFilter' "ERROR"
+
+pattern LogFilter_INFO :: LogFilter
+pattern LogFilter_INFO = LogFilter' "INFO"
+
+pattern LogFilter_WARN :: LogFilter
+pattern LogFilter_WARN = LogFilter' "WARN"
+
+{-# COMPLETE
+  LogFilter_ERROR,
+  LogFilter_INFO,
+  LogFilter_WARN,
+  LogFilter'
+  #-}
diff --git a/gen/Amazonka/ApplicationInsights/Types/LogPattern.hs b/gen/Amazonka/ApplicationInsights/Types/LogPattern.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/LogPattern.hs
@@ -0,0 +1,163 @@
+{-# 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.ApplicationInsights.Types.LogPattern
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.LogPattern where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | An object that defines the log patterns that belongs to a
+-- @LogPatternSet@.
+--
+-- /See:/ 'newLogPattern' smart constructor.
+data LogPattern = LogPattern'
+  { -- | A regular expression that defines the log pattern. A log pattern can
+    -- contain as many as 50 characters, and it cannot be empty. The pattern
+    -- must be DFA compatible. Patterns that utilize forward lookahead or
+    -- backreference constructions are not supported.
+    pattern' :: Prelude.Maybe Prelude.Text,
+    -- | The name of the log pattern. A log pattern name can contain as many as
+    -- 50 characters, and it cannot be empty. The characters can be Unicode
+    -- letters, digits, or one of the following symbols: period, dash,
+    -- underscore.
+    patternName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the log pattern. A log pattern name can contain as many as
+    -- 30 characters, and it cannot be empty. The characters can be Unicode
+    -- letters, digits, or one of the following symbols: period, dash,
+    -- underscore.
+    patternSetName :: Prelude.Maybe Prelude.Text,
+    -- | Rank of the log pattern. Must be a value between @1@ and @1,000,000@.
+    -- The patterns are sorted by rank, so we recommend that you set your
+    -- highest priority patterns with the lowest rank. A pattern of rank @1@
+    -- will be the first to get matched to a log line. A pattern of rank
+    -- @1,000,000@ will be last to get matched. When you configure custom log
+    -- patterns from the console, a @Low@ severity pattern translates to a
+    -- @750,000@ rank. A @Medium@ severity pattern translates to a @500,000@
+    -- rank. And a @High@ severity pattern translates to a @250,000@ rank. Rank
+    -- values less than @1@ or greater than @1,000,000@ are reserved for
+    -- AWS-provided patterns.
+    rank :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LogPattern' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'pattern'', 'logPattern_pattern' - A regular expression that defines the log pattern. A log pattern can
+-- contain as many as 50 characters, and it cannot be empty. The pattern
+-- must be DFA compatible. Patterns that utilize forward lookahead or
+-- backreference constructions are not supported.
+--
+-- 'patternName', 'logPattern_patternName' - The name of the log pattern. A log pattern name can contain as many as
+-- 50 characters, and it cannot be empty. The characters can be Unicode
+-- letters, digits, or one of the following symbols: period, dash,
+-- underscore.
+--
+-- 'patternSetName', 'logPattern_patternSetName' - The name of the log pattern. A log pattern name can contain as many as
+-- 30 characters, and it cannot be empty. The characters can be Unicode
+-- letters, digits, or one of the following symbols: period, dash,
+-- underscore.
+--
+-- 'rank', 'logPattern_rank' - Rank of the log pattern. Must be a value between @1@ and @1,000,000@.
+-- The patterns are sorted by rank, so we recommend that you set your
+-- highest priority patterns with the lowest rank. A pattern of rank @1@
+-- will be the first to get matched to a log line. A pattern of rank
+-- @1,000,000@ will be last to get matched. When you configure custom log
+-- patterns from the console, a @Low@ severity pattern translates to a
+-- @750,000@ rank. A @Medium@ severity pattern translates to a @500,000@
+-- rank. And a @High@ severity pattern translates to a @250,000@ rank. Rank
+-- values less than @1@ or greater than @1,000,000@ are reserved for
+-- AWS-provided patterns.
+newLogPattern ::
+  LogPattern
+newLogPattern =
+  LogPattern'
+    { pattern' = Prelude.Nothing,
+      patternName = Prelude.Nothing,
+      patternSetName = Prelude.Nothing,
+      rank = Prelude.Nothing
+    }
+
+-- | A regular expression that defines the log pattern. A log pattern can
+-- contain as many as 50 characters, and it cannot be empty. The pattern
+-- must be DFA compatible. Patterns that utilize forward lookahead or
+-- backreference constructions are not supported.
+logPattern_pattern :: Lens.Lens' LogPattern (Prelude.Maybe Prelude.Text)
+logPattern_pattern = Lens.lens (\LogPattern' {pattern'} -> pattern') (\s@LogPattern' {} a -> s {pattern' = a} :: LogPattern)
+
+-- | The name of the log pattern. A log pattern name can contain as many as
+-- 50 characters, and it cannot be empty. The characters can be Unicode
+-- letters, digits, or one of the following symbols: period, dash,
+-- underscore.
+logPattern_patternName :: Lens.Lens' LogPattern (Prelude.Maybe Prelude.Text)
+logPattern_patternName = Lens.lens (\LogPattern' {patternName} -> patternName) (\s@LogPattern' {} a -> s {patternName = a} :: LogPattern)
+
+-- | The name of the log pattern. A log pattern name can contain as many as
+-- 30 characters, and it cannot be empty. The characters can be Unicode
+-- letters, digits, or one of the following symbols: period, dash,
+-- underscore.
+logPattern_patternSetName :: Lens.Lens' LogPattern (Prelude.Maybe Prelude.Text)
+logPattern_patternSetName = Lens.lens (\LogPattern' {patternSetName} -> patternSetName) (\s@LogPattern' {} a -> s {patternSetName = a} :: LogPattern)
+
+-- | Rank of the log pattern. Must be a value between @1@ and @1,000,000@.
+-- The patterns are sorted by rank, so we recommend that you set your
+-- highest priority patterns with the lowest rank. A pattern of rank @1@
+-- will be the first to get matched to a log line. A pattern of rank
+-- @1,000,000@ will be last to get matched. When you configure custom log
+-- patterns from the console, a @Low@ severity pattern translates to a
+-- @750,000@ rank. A @Medium@ severity pattern translates to a @500,000@
+-- rank. And a @High@ severity pattern translates to a @250,000@ rank. Rank
+-- values less than @1@ or greater than @1,000,000@ are reserved for
+-- AWS-provided patterns.
+logPattern_rank :: Lens.Lens' LogPattern (Prelude.Maybe Prelude.Int)
+logPattern_rank = Lens.lens (\LogPattern' {rank} -> rank) (\s@LogPattern' {} a -> s {rank = a} :: LogPattern)
+
+instance Data.FromJSON LogPattern where
+  parseJSON =
+    Data.withObject
+      "LogPattern"
+      ( \x ->
+          LogPattern'
+            Prelude.<$> (x Data..:? "Pattern")
+            Prelude.<*> (x Data..:? "PatternName")
+            Prelude.<*> (x Data..:? "PatternSetName")
+            Prelude.<*> (x Data..:? "Rank")
+      )
+
+instance Prelude.Hashable LogPattern where
+  hashWithSalt _salt LogPattern' {..} =
+    _salt
+      `Prelude.hashWithSalt` pattern'
+      `Prelude.hashWithSalt` patternName
+      `Prelude.hashWithSalt` patternSetName
+      `Prelude.hashWithSalt` rank
+
+instance Prelude.NFData LogPattern where
+  rnf LogPattern' {..} =
+    Prelude.rnf pattern'
+      `Prelude.seq` Prelude.rnf patternName
+      `Prelude.seq` Prelude.rnf patternSetName
+      `Prelude.seq` Prelude.rnf rank
diff --git a/gen/Amazonka/ApplicationInsights/Types/Observation.hs b/gen/Amazonka/ApplicationInsights/Types/Observation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/Observation.hs
@@ -0,0 +1,654 @@
+{-# 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.ApplicationInsights.Types.Observation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.Observation where
+
+import Amazonka.ApplicationInsights.Types.CloudWatchEventSource
+import Amazonka.ApplicationInsights.Types.LogFilter
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes an anomaly or error with the application.
+--
+-- /See:/ 'newObservation' smart constructor.
+data Observation = Observation'
+  { -- | The detail type of the CloudWatch Event-based observation, for example,
+    -- @EC2 Instance State-change Notification@.
+    cloudWatchEventDetailType :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the CloudWatch Event-based observation related to the detected
+    -- problem.
+    cloudWatchEventId :: Prelude.Maybe Prelude.Text,
+    -- | The source of the CloudWatch Event.
+    cloudWatchEventSource :: Prelude.Maybe CloudWatchEventSource,
+    -- | The CodeDeploy application to which the deployment belongs.
+    codeDeployApplication :: Prelude.Maybe Prelude.Text,
+    -- | The deployment group to which the CodeDeploy deployment belongs.
+    codeDeployDeploymentGroup :: Prelude.Maybe Prelude.Text,
+    -- | The deployment ID of the CodeDeploy-based observation related to the
+    -- detected problem.
+    codeDeployDeploymentId :: Prelude.Maybe Prelude.Text,
+    -- | The instance group to which the CodeDeploy instance belongs.
+    codeDeployInstanceGroupId :: Prelude.Maybe Prelude.Text,
+    -- | The status of the CodeDeploy deployment, for example @SUCCESS@ or
+    -- @ FAILURE@.
+    codeDeployState :: Prelude.Maybe Prelude.Text,
+    -- | The cause of an EBS CloudWatch event.
+    ebsCause :: Prelude.Maybe Prelude.Text,
+    -- | The type of EBS CloudWatch event, such as @createVolume@, @deleteVolume@
+    -- or @attachVolume@.
+    ebsEvent :: Prelude.Maybe Prelude.Text,
+    -- | The request ID of an EBS CloudWatch event.
+    ebsRequestId :: Prelude.Maybe Prelude.Text,
+    -- | The result of an EBS CloudWatch event, such as @failed@ or @succeeded@.
+    ebsResult :: Prelude.Maybe Prelude.Text,
+    -- | The state of the instance, such as @STOPPING@ or @TERMINATING@.
+    ec2State :: Prelude.Maybe Prelude.Text,
+    -- | The time when the observation ended, in epoch seconds.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the AWS Health Event-based
+    -- observation.
+    healthEventArn :: Prelude.Maybe Prelude.Text,
+    -- | The description of the AWS Health event provided by the service, such as
+    -- Amazon EC2.
+    healthEventDescription :: Prelude.Maybe Prelude.Text,
+    -- | The category of the AWS Health event, such as @issue@.
+    healthEventTypeCategory :: Prelude.Maybe Prelude.Text,
+    -- | The type of the AWS Health event, for example,
+    -- @AWS_EC2_POWER_CONNECTIVITY_ISSUE@.
+    healthEventTypeCode :: Prelude.Maybe Prelude.Text,
+    -- | The service to which the AWS Health Event belongs, such as EC2.
+    healthService :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the observation type.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp in the CloudWatch Logs that specifies when the matched
+    -- line occurred.
+    lineTime :: Prelude.Maybe Data.POSIX,
+    -- | The log filter of the observation.
+    logFilter :: Prelude.Maybe LogFilter,
+    -- | The log group name.
+    logGroup :: Prelude.Maybe Prelude.Text,
+    -- | The log text of the observation.
+    logText :: Prelude.Maybe Prelude.Text,
+    -- | The name of the observation metric.
+    metricName :: Prelude.Maybe Prelude.Text,
+    -- | The namespace of the observation metric.
+    metricNamespace :: Prelude.Maybe Prelude.Text,
+    -- | The category of an RDS event.
+    rdsEventCategories :: Prelude.Maybe Prelude.Text,
+    -- | The message of an RDS event.
+    rdsEventMessage :: Prelude.Maybe Prelude.Text,
+    -- | The name of the S3 CloudWatch Event-based observation.
+    s3EventName :: Prelude.Maybe Prelude.Text,
+    -- | The source resource ARN of the observation.
+    sourceARN :: Prelude.Maybe Prelude.Text,
+    -- | The source type of the observation.
+    sourceType :: Prelude.Maybe Prelude.Text,
+    -- | The time when the observation was first detected, in epoch seconds.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the step function-based observation.
+    statesArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the step function execution-based
+    -- observation.
+    statesExecutionArn :: Prelude.Maybe Prelude.Text,
+    -- | The input to the step function-based observation.
+    statesInput :: Prelude.Maybe Prelude.Text,
+    -- | The status of the step function-related observation.
+    statesStatus :: Prelude.Maybe Prelude.Text,
+    -- | The unit of the source observation metric.
+    unit :: Prelude.Maybe Prelude.Text,
+    -- | The value of the source observation metric.
+    value :: Prelude.Maybe Prelude.Double,
+    -- | The X-Ray request error percentage for this node.
+    xRayErrorPercent :: Prelude.Maybe Prelude.Int,
+    -- | The X-Ray request fault percentage for this node.
+    xRayFaultPercent :: Prelude.Maybe Prelude.Int,
+    -- | The name of the X-Ray node.
+    xRayNodeName :: Prelude.Maybe Prelude.Text,
+    -- | The type of the X-Ray node.
+    xRayNodeType :: Prelude.Maybe Prelude.Text,
+    -- | The X-Ray node request average latency for this node.
+    xRayRequestAverageLatency :: Prelude.Maybe Prelude.Integer,
+    -- | The X-Ray request count for this node.
+    xRayRequestCount :: Prelude.Maybe Prelude.Int,
+    -- | The X-Ray request throttle percentage for this node.
+    xRayThrottlePercent :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Observation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cloudWatchEventDetailType', 'observation_cloudWatchEventDetailType' - The detail type of the CloudWatch Event-based observation, for example,
+-- @EC2 Instance State-change Notification@.
+--
+-- 'cloudWatchEventId', 'observation_cloudWatchEventId' - The ID of the CloudWatch Event-based observation related to the detected
+-- problem.
+--
+-- 'cloudWatchEventSource', 'observation_cloudWatchEventSource' - The source of the CloudWatch Event.
+--
+-- 'codeDeployApplication', 'observation_codeDeployApplication' - The CodeDeploy application to which the deployment belongs.
+--
+-- 'codeDeployDeploymentGroup', 'observation_codeDeployDeploymentGroup' - The deployment group to which the CodeDeploy deployment belongs.
+--
+-- 'codeDeployDeploymentId', 'observation_codeDeployDeploymentId' - The deployment ID of the CodeDeploy-based observation related to the
+-- detected problem.
+--
+-- 'codeDeployInstanceGroupId', 'observation_codeDeployInstanceGroupId' - The instance group to which the CodeDeploy instance belongs.
+--
+-- 'codeDeployState', 'observation_codeDeployState' - The status of the CodeDeploy deployment, for example @SUCCESS@ or
+-- @ FAILURE@.
+--
+-- 'ebsCause', 'observation_ebsCause' - The cause of an EBS CloudWatch event.
+--
+-- 'ebsEvent', 'observation_ebsEvent' - The type of EBS CloudWatch event, such as @createVolume@, @deleteVolume@
+-- or @attachVolume@.
+--
+-- 'ebsRequestId', 'observation_ebsRequestId' - The request ID of an EBS CloudWatch event.
+--
+-- 'ebsResult', 'observation_ebsResult' - The result of an EBS CloudWatch event, such as @failed@ or @succeeded@.
+--
+-- 'ec2State', 'observation_ec2State' - The state of the instance, such as @STOPPING@ or @TERMINATING@.
+--
+-- 'endTime', 'observation_endTime' - The time when the observation ended, in epoch seconds.
+--
+-- 'healthEventArn', 'observation_healthEventArn' - The Amazon Resource Name (ARN) of the AWS Health Event-based
+-- observation.
+--
+-- 'healthEventDescription', 'observation_healthEventDescription' - The description of the AWS Health event provided by the service, such as
+-- Amazon EC2.
+--
+-- 'healthEventTypeCategory', 'observation_healthEventTypeCategory' - The category of the AWS Health event, such as @issue@.
+--
+-- 'healthEventTypeCode', 'observation_healthEventTypeCode' - The type of the AWS Health event, for example,
+-- @AWS_EC2_POWER_CONNECTIVITY_ISSUE@.
+--
+-- 'healthService', 'observation_healthService' - The service to which the AWS Health Event belongs, such as EC2.
+--
+-- 'id', 'observation_id' - The ID of the observation type.
+--
+-- 'lineTime', 'observation_lineTime' - The timestamp in the CloudWatch Logs that specifies when the matched
+-- line occurred.
+--
+-- 'logFilter', 'observation_logFilter' - The log filter of the observation.
+--
+-- 'logGroup', 'observation_logGroup' - The log group name.
+--
+-- 'logText', 'observation_logText' - The log text of the observation.
+--
+-- 'metricName', 'observation_metricName' - The name of the observation metric.
+--
+-- 'metricNamespace', 'observation_metricNamespace' - The namespace of the observation metric.
+--
+-- 'rdsEventCategories', 'observation_rdsEventCategories' - The category of an RDS event.
+--
+-- 'rdsEventMessage', 'observation_rdsEventMessage' - The message of an RDS event.
+--
+-- 's3EventName', 'observation_s3EventName' - The name of the S3 CloudWatch Event-based observation.
+--
+-- 'sourceARN', 'observation_sourceARN' - The source resource ARN of the observation.
+--
+-- 'sourceType', 'observation_sourceType' - The source type of the observation.
+--
+-- 'startTime', 'observation_startTime' - The time when the observation was first detected, in epoch seconds.
+--
+-- 'statesArn', 'observation_statesArn' - The Amazon Resource Name (ARN) of the step function-based observation.
+--
+-- 'statesExecutionArn', 'observation_statesExecutionArn' - The Amazon Resource Name (ARN) of the step function execution-based
+-- observation.
+--
+-- 'statesInput', 'observation_statesInput' - The input to the step function-based observation.
+--
+-- 'statesStatus', 'observation_statesStatus' - The status of the step function-related observation.
+--
+-- 'unit', 'observation_unit' - The unit of the source observation metric.
+--
+-- 'value', 'observation_value' - The value of the source observation metric.
+--
+-- 'xRayErrorPercent', 'observation_xRayErrorPercent' - The X-Ray request error percentage for this node.
+--
+-- 'xRayFaultPercent', 'observation_xRayFaultPercent' - The X-Ray request fault percentage for this node.
+--
+-- 'xRayNodeName', 'observation_xRayNodeName' - The name of the X-Ray node.
+--
+-- 'xRayNodeType', 'observation_xRayNodeType' - The type of the X-Ray node.
+--
+-- 'xRayRequestAverageLatency', 'observation_xRayRequestAverageLatency' - The X-Ray node request average latency for this node.
+--
+-- 'xRayRequestCount', 'observation_xRayRequestCount' - The X-Ray request count for this node.
+--
+-- 'xRayThrottlePercent', 'observation_xRayThrottlePercent' - The X-Ray request throttle percentage for this node.
+newObservation ::
+  Observation
+newObservation =
+  Observation'
+    { cloudWatchEventDetailType =
+        Prelude.Nothing,
+      cloudWatchEventId = Prelude.Nothing,
+      cloudWatchEventSource = Prelude.Nothing,
+      codeDeployApplication = Prelude.Nothing,
+      codeDeployDeploymentGroup = Prelude.Nothing,
+      codeDeployDeploymentId = Prelude.Nothing,
+      codeDeployInstanceGroupId = Prelude.Nothing,
+      codeDeployState = Prelude.Nothing,
+      ebsCause = Prelude.Nothing,
+      ebsEvent = Prelude.Nothing,
+      ebsRequestId = Prelude.Nothing,
+      ebsResult = Prelude.Nothing,
+      ec2State = Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      healthEventArn = Prelude.Nothing,
+      healthEventDescription = Prelude.Nothing,
+      healthEventTypeCategory = Prelude.Nothing,
+      healthEventTypeCode = Prelude.Nothing,
+      healthService = Prelude.Nothing,
+      id = Prelude.Nothing,
+      lineTime = Prelude.Nothing,
+      logFilter = Prelude.Nothing,
+      logGroup = Prelude.Nothing,
+      logText = Prelude.Nothing,
+      metricName = Prelude.Nothing,
+      metricNamespace = Prelude.Nothing,
+      rdsEventCategories = Prelude.Nothing,
+      rdsEventMessage = Prelude.Nothing,
+      s3EventName = Prelude.Nothing,
+      sourceARN = Prelude.Nothing,
+      sourceType = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      statesArn = Prelude.Nothing,
+      statesExecutionArn = Prelude.Nothing,
+      statesInput = Prelude.Nothing,
+      statesStatus = Prelude.Nothing,
+      unit = Prelude.Nothing,
+      value = Prelude.Nothing,
+      xRayErrorPercent = Prelude.Nothing,
+      xRayFaultPercent = Prelude.Nothing,
+      xRayNodeName = Prelude.Nothing,
+      xRayNodeType = Prelude.Nothing,
+      xRayRequestAverageLatency = Prelude.Nothing,
+      xRayRequestCount = Prelude.Nothing,
+      xRayThrottlePercent = Prelude.Nothing
+    }
+
+-- | The detail type of the CloudWatch Event-based observation, for example,
+-- @EC2 Instance State-change Notification@.
+observation_cloudWatchEventDetailType :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_cloudWatchEventDetailType = Lens.lens (\Observation' {cloudWatchEventDetailType} -> cloudWatchEventDetailType) (\s@Observation' {} a -> s {cloudWatchEventDetailType = a} :: Observation)
+
+-- | The ID of the CloudWatch Event-based observation related to the detected
+-- problem.
+observation_cloudWatchEventId :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_cloudWatchEventId = Lens.lens (\Observation' {cloudWatchEventId} -> cloudWatchEventId) (\s@Observation' {} a -> s {cloudWatchEventId = a} :: Observation)
+
+-- | The source of the CloudWatch Event.
+observation_cloudWatchEventSource :: Lens.Lens' Observation (Prelude.Maybe CloudWatchEventSource)
+observation_cloudWatchEventSource = Lens.lens (\Observation' {cloudWatchEventSource} -> cloudWatchEventSource) (\s@Observation' {} a -> s {cloudWatchEventSource = a} :: Observation)
+
+-- | The CodeDeploy application to which the deployment belongs.
+observation_codeDeployApplication :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_codeDeployApplication = Lens.lens (\Observation' {codeDeployApplication} -> codeDeployApplication) (\s@Observation' {} a -> s {codeDeployApplication = a} :: Observation)
+
+-- | The deployment group to which the CodeDeploy deployment belongs.
+observation_codeDeployDeploymentGroup :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_codeDeployDeploymentGroup = Lens.lens (\Observation' {codeDeployDeploymentGroup} -> codeDeployDeploymentGroup) (\s@Observation' {} a -> s {codeDeployDeploymentGroup = a} :: Observation)
+
+-- | The deployment ID of the CodeDeploy-based observation related to the
+-- detected problem.
+observation_codeDeployDeploymentId :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_codeDeployDeploymentId = Lens.lens (\Observation' {codeDeployDeploymentId} -> codeDeployDeploymentId) (\s@Observation' {} a -> s {codeDeployDeploymentId = a} :: Observation)
+
+-- | The instance group to which the CodeDeploy instance belongs.
+observation_codeDeployInstanceGroupId :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_codeDeployInstanceGroupId = Lens.lens (\Observation' {codeDeployInstanceGroupId} -> codeDeployInstanceGroupId) (\s@Observation' {} a -> s {codeDeployInstanceGroupId = a} :: Observation)
+
+-- | The status of the CodeDeploy deployment, for example @SUCCESS@ or
+-- @ FAILURE@.
+observation_codeDeployState :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_codeDeployState = Lens.lens (\Observation' {codeDeployState} -> codeDeployState) (\s@Observation' {} a -> s {codeDeployState = a} :: Observation)
+
+-- | The cause of an EBS CloudWatch event.
+observation_ebsCause :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_ebsCause = Lens.lens (\Observation' {ebsCause} -> ebsCause) (\s@Observation' {} a -> s {ebsCause = a} :: Observation)
+
+-- | The type of EBS CloudWatch event, such as @createVolume@, @deleteVolume@
+-- or @attachVolume@.
+observation_ebsEvent :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_ebsEvent = Lens.lens (\Observation' {ebsEvent} -> ebsEvent) (\s@Observation' {} a -> s {ebsEvent = a} :: Observation)
+
+-- | The request ID of an EBS CloudWatch event.
+observation_ebsRequestId :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_ebsRequestId = Lens.lens (\Observation' {ebsRequestId} -> ebsRequestId) (\s@Observation' {} a -> s {ebsRequestId = a} :: Observation)
+
+-- | The result of an EBS CloudWatch event, such as @failed@ or @succeeded@.
+observation_ebsResult :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_ebsResult = Lens.lens (\Observation' {ebsResult} -> ebsResult) (\s@Observation' {} a -> s {ebsResult = a} :: Observation)
+
+-- | The state of the instance, such as @STOPPING@ or @TERMINATING@.
+observation_ec2State :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_ec2State = Lens.lens (\Observation' {ec2State} -> ec2State) (\s@Observation' {} a -> s {ec2State = a} :: Observation)
+
+-- | The time when the observation ended, in epoch seconds.
+observation_endTime :: Lens.Lens' Observation (Prelude.Maybe Prelude.UTCTime)
+observation_endTime = Lens.lens (\Observation' {endTime} -> endTime) (\s@Observation' {} a -> s {endTime = a} :: Observation) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the AWS Health Event-based
+-- observation.
+observation_healthEventArn :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_healthEventArn = Lens.lens (\Observation' {healthEventArn} -> healthEventArn) (\s@Observation' {} a -> s {healthEventArn = a} :: Observation)
+
+-- | The description of the AWS Health event provided by the service, such as
+-- Amazon EC2.
+observation_healthEventDescription :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_healthEventDescription = Lens.lens (\Observation' {healthEventDescription} -> healthEventDescription) (\s@Observation' {} a -> s {healthEventDescription = a} :: Observation)
+
+-- | The category of the AWS Health event, such as @issue@.
+observation_healthEventTypeCategory :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_healthEventTypeCategory = Lens.lens (\Observation' {healthEventTypeCategory} -> healthEventTypeCategory) (\s@Observation' {} a -> s {healthEventTypeCategory = a} :: Observation)
+
+-- | The type of the AWS Health event, for example,
+-- @AWS_EC2_POWER_CONNECTIVITY_ISSUE@.
+observation_healthEventTypeCode :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_healthEventTypeCode = Lens.lens (\Observation' {healthEventTypeCode} -> healthEventTypeCode) (\s@Observation' {} a -> s {healthEventTypeCode = a} :: Observation)
+
+-- | The service to which the AWS Health Event belongs, such as EC2.
+observation_healthService :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_healthService = Lens.lens (\Observation' {healthService} -> healthService) (\s@Observation' {} a -> s {healthService = a} :: Observation)
+
+-- | The ID of the observation type.
+observation_id :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_id = Lens.lens (\Observation' {id} -> id) (\s@Observation' {} a -> s {id = a} :: Observation)
+
+-- | The timestamp in the CloudWatch Logs that specifies when the matched
+-- line occurred.
+observation_lineTime :: Lens.Lens' Observation (Prelude.Maybe Prelude.UTCTime)
+observation_lineTime = Lens.lens (\Observation' {lineTime} -> lineTime) (\s@Observation' {} a -> s {lineTime = a} :: Observation) Prelude.. Lens.mapping Data._Time
+
+-- | The log filter of the observation.
+observation_logFilter :: Lens.Lens' Observation (Prelude.Maybe LogFilter)
+observation_logFilter = Lens.lens (\Observation' {logFilter} -> logFilter) (\s@Observation' {} a -> s {logFilter = a} :: Observation)
+
+-- | The log group name.
+observation_logGroup :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_logGroup = Lens.lens (\Observation' {logGroup} -> logGroup) (\s@Observation' {} a -> s {logGroup = a} :: Observation)
+
+-- | The log text of the observation.
+observation_logText :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_logText = Lens.lens (\Observation' {logText} -> logText) (\s@Observation' {} a -> s {logText = a} :: Observation)
+
+-- | The name of the observation metric.
+observation_metricName :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_metricName = Lens.lens (\Observation' {metricName} -> metricName) (\s@Observation' {} a -> s {metricName = a} :: Observation)
+
+-- | The namespace of the observation metric.
+observation_metricNamespace :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_metricNamespace = Lens.lens (\Observation' {metricNamespace} -> metricNamespace) (\s@Observation' {} a -> s {metricNamespace = a} :: Observation)
+
+-- | The category of an RDS event.
+observation_rdsEventCategories :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_rdsEventCategories = Lens.lens (\Observation' {rdsEventCategories} -> rdsEventCategories) (\s@Observation' {} a -> s {rdsEventCategories = a} :: Observation)
+
+-- | The message of an RDS event.
+observation_rdsEventMessage :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_rdsEventMessage = Lens.lens (\Observation' {rdsEventMessage} -> rdsEventMessage) (\s@Observation' {} a -> s {rdsEventMessage = a} :: Observation)
+
+-- | The name of the S3 CloudWatch Event-based observation.
+observation_s3EventName :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_s3EventName = Lens.lens (\Observation' {s3EventName} -> s3EventName) (\s@Observation' {} a -> s {s3EventName = a} :: Observation)
+
+-- | The source resource ARN of the observation.
+observation_sourceARN :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_sourceARN = Lens.lens (\Observation' {sourceARN} -> sourceARN) (\s@Observation' {} a -> s {sourceARN = a} :: Observation)
+
+-- | The source type of the observation.
+observation_sourceType :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_sourceType = Lens.lens (\Observation' {sourceType} -> sourceType) (\s@Observation' {} a -> s {sourceType = a} :: Observation)
+
+-- | The time when the observation was first detected, in epoch seconds.
+observation_startTime :: Lens.Lens' Observation (Prelude.Maybe Prelude.UTCTime)
+observation_startTime = Lens.lens (\Observation' {startTime} -> startTime) (\s@Observation' {} a -> s {startTime = a} :: Observation) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the step function-based observation.
+observation_statesArn :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_statesArn = Lens.lens (\Observation' {statesArn} -> statesArn) (\s@Observation' {} a -> s {statesArn = a} :: Observation)
+
+-- | The Amazon Resource Name (ARN) of the step function execution-based
+-- observation.
+observation_statesExecutionArn :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_statesExecutionArn = Lens.lens (\Observation' {statesExecutionArn} -> statesExecutionArn) (\s@Observation' {} a -> s {statesExecutionArn = a} :: Observation)
+
+-- | The input to the step function-based observation.
+observation_statesInput :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_statesInput = Lens.lens (\Observation' {statesInput} -> statesInput) (\s@Observation' {} a -> s {statesInput = a} :: Observation)
+
+-- | The status of the step function-related observation.
+observation_statesStatus :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_statesStatus = Lens.lens (\Observation' {statesStatus} -> statesStatus) (\s@Observation' {} a -> s {statesStatus = a} :: Observation)
+
+-- | The unit of the source observation metric.
+observation_unit :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_unit = Lens.lens (\Observation' {unit} -> unit) (\s@Observation' {} a -> s {unit = a} :: Observation)
+
+-- | The value of the source observation metric.
+observation_value :: Lens.Lens' Observation (Prelude.Maybe Prelude.Double)
+observation_value = Lens.lens (\Observation' {value} -> value) (\s@Observation' {} a -> s {value = a} :: Observation)
+
+-- | The X-Ray request error percentage for this node.
+observation_xRayErrorPercent :: Lens.Lens' Observation (Prelude.Maybe Prelude.Int)
+observation_xRayErrorPercent = Lens.lens (\Observation' {xRayErrorPercent} -> xRayErrorPercent) (\s@Observation' {} a -> s {xRayErrorPercent = a} :: Observation)
+
+-- | The X-Ray request fault percentage for this node.
+observation_xRayFaultPercent :: Lens.Lens' Observation (Prelude.Maybe Prelude.Int)
+observation_xRayFaultPercent = Lens.lens (\Observation' {xRayFaultPercent} -> xRayFaultPercent) (\s@Observation' {} a -> s {xRayFaultPercent = a} :: Observation)
+
+-- | The name of the X-Ray node.
+observation_xRayNodeName :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_xRayNodeName = Lens.lens (\Observation' {xRayNodeName} -> xRayNodeName) (\s@Observation' {} a -> s {xRayNodeName = a} :: Observation)
+
+-- | The type of the X-Ray node.
+observation_xRayNodeType :: Lens.Lens' Observation (Prelude.Maybe Prelude.Text)
+observation_xRayNodeType = Lens.lens (\Observation' {xRayNodeType} -> xRayNodeType) (\s@Observation' {} a -> s {xRayNodeType = a} :: Observation)
+
+-- | The X-Ray node request average latency for this node.
+observation_xRayRequestAverageLatency :: Lens.Lens' Observation (Prelude.Maybe Prelude.Integer)
+observation_xRayRequestAverageLatency = Lens.lens (\Observation' {xRayRequestAverageLatency} -> xRayRequestAverageLatency) (\s@Observation' {} a -> s {xRayRequestAverageLatency = a} :: Observation)
+
+-- | The X-Ray request count for this node.
+observation_xRayRequestCount :: Lens.Lens' Observation (Prelude.Maybe Prelude.Int)
+observation_xRayRequestCount = Lens.lens (\Observation' {xRayRequestCount} -> xRayRequestCount) (\s@Observation' {} a -> s {xRayRequestCount = a} :: Observation)
+
+-- | The X-Ray request throttle percentage for this node.
+observation_xRayThrottlePercent :: Lens.Lens' Observation (Prelude.Maybe Prelude.Int)
+observation_xRayThrottlePercent = Lens.lens (\Observation' {xRayThrottlePercent} -> xRayThrottlePercent) (\s@Observation' {} a -> s {xRayThrottlePercent = a} :: Observation)
+
+instance Data.FromJSON Observation where
+  parseJSON =
+    Data.withObject
+      "Observation"
+      ( \x ->
+          Observation'
+            Prelude.<$> (x Data..:? "CloudWatchEventDetailType")
+            Prelude.<*> (x Data..:? "CloudWatchEventId")
+            Prelude.<*> (x Data..:? "CloudWatchEventSource")
+            Prelude.<*> (x Data..:? "CodeDeployApplication")
+            Prelude.<*> (x Data..:? "CodeDeployDeploymentGroup")
+            Prelude.<*> (x Data..:? "CodeDeployDeploymentId")
+            Prelude.<*> (x Data..:? "CodeDeployInstanceGroupId")
+            Prelude.<*> (x Data..:? "CodeDeployState")
+            Prelude.<*> (x Data..:? "EbsCause")
+            Prelude.<*> (x Data..:? "EbsEvent")
+            Prelude.<*> (x Data..:? "EbsRequestId")
+            Prelude.<*> (x Data..:? "EbsResult")
+            Prelude.<*> (x Data..:? "Ec2State")
+            Prelude.<*> (x Data..:? "EndTime")
+            Prelude.<*> (x Data..:? "HealthEventArn")
+            Prelude.<*> (x Data..:? "HealthEventDescription")
+            Prelude.<*> (x Data..:? "HealthEventTypeCategory")
+            Prelude.<*> (x Data..:? "HealthEventTypeCode")
+            Prelude.<*> (x Data..:? "HealthService")
+            Prelude.<*> (x Data..:? "Id")
+            Prelude.<*> (x Data..:? "LineTime")
+            Prelude.<*> (x Data..:? "LogFilter")
+            Prelude.<*> (x Data..:? "LogGroup")
+            Prelude.<*> (x Data..:? "LogText")
+            Prelude.<*> (x Data..:? "MetricName")
+            Prelude.<*> (x Data..:? "MetricNamespace")
+            Prelude.<*> (x Data..:? "RdsEventCategories")
+            Prelude.<*> (x Data..:? "RdsEventMessage")
+            Prelude.<*> (x Data..:? "S3EventName")
+            Prelude.<*> (x Data..:? "SourceARN")
+            Prelude.<*> (x Data..:? "SourceType")
+            Prelude.<*> (x Data..:? "StartTime")
+            Prelude.<*> (x Data..:? "StatesArn")
+            Prelude.<*> (x Data..:? "StatesExecutionArn")
+            Prelude.<*> (x Data..:? "StatesInput")
+            Prelude.<*> (x Data..:? "StatesStatus")
+            Prelude.<*> (x Data..:? "Unit")
+            Prelude.<*> (x Data..:? "Value")
+            Prelude.<*> (x Data..:? "XRayErrorPercent")
+            Prelude.<*> (x Data..:? "XRayFaultPercent")
+            Prelude.<*> (x Data..:? "XRayNodeName")
+            Prelude.<*> (x Data..:? "XRayNodeType")
+            Prelude.<*> (x Data..:? "XRayRequestAverageLatency")
+            Prelude.<*> (x Data..:? "XRayRequestCount")
+            Prelude.<*> (x Data..:? "XRayThrottlePercent")
+      )
+
+instance Prelude.Hashable Observation where
+  hashWithSalt _salt Observation' {..} =
+    _salt
+      `Prelude.hashWithSalt` cloudWatchEventDetailType
+      `Prelude.hashWithSalt` cloudWatchEventId
+      `Prelude.hashWithSalt` cloudWatchEventSource
+      `Prelude.hashWithSalt` codeDeployApplication
+      `Prelude.hashWithSalt` codeDeployDeploymentGroup
+      `Prelude.hashWithSalt` codeDeployDeploymentId
+      `Prelude.hashWithSalt` codeDeployInstanceGroupId
+      `Prelude.hashWithSalt` codeDeployState
+      `Prelude.hashWithSalt` ebsCause
+      `Prelude.hashWithSalt` ebsEvent
+      `Prelude.hashWithSalt` ebsRequestId
+      `Prelude.hashWithSalt` ebsResult
+      `Prelude.hashWithSalt` ec2State
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` healthEventArn
+      `Prelude.hashWithSalt` healthEventDescription
+      `Prelude.hashWithSalt` healthEventTypeCategory
+      `Prelude.hashWithSalt` healthEventTypeCode
+      `Prelude.hashWithSalt` healthService
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` lineTime
+      `Prelude.hashWithSalt` logFilter
+      `Prelude.hashWithSalt` logGroup
+      `Prelude.hashWithSalt` logText
+      `Prelude.hashWithSalt` metricName
+      `Prelude.hashWithSalt` metricNamespace
+      `Prelude.hashWithSalt` rdsEventCategories
+      `Prelude.hashWithSalt` rdsEventMessage
+      `Prelude.hashWithSalt` s3EventName
+      `Prelude.hashWithSalt` sourceARN
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` statesArn
+      `Prelude.hashWithSalt` statesExecutionArn
+      `Prelude.hashWithSalt` statesInput
+      `Prelude.hashWithSalt` statesStatus
+      `Prelude.hashWithSalt` unit
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` xRayErrorPercent
+      `Prelude.hashWithSalt` xRayFaultPercent
+      `Prelude.hashWithSalt` xRayNodeName
+      `Prelude.hashWithSalt` xRayNodeType
+      `Prelude.hashWithSalt` xRayRequestAverageLatency
+      `Prelude.hashWithSalt` xRayRequestCount
+      `Prelude.hashWithSalt` xRayThrottlePercent
+
+instance Prelude.NFData Observation where
+  rnf Observation' {..} =
+    Prelude.rnf cloudWatchEventDetailType
+      `Prelude.seq` Prelude.rnf cloudWatchEventId
+      `Prelude.seq` Prelude.rnf cloudWatchEventSource
+      `Prelude.seq` Prelude.rnf codeDeployApplication
+      `Prelude.seq` Prelude.rnf codeDeployDeploymentGroup
+      `Prelude.seq` Prelude.rnf codeDeployDeploymentId
+      `Prelude.seq` Prelude.rnf codeDeployInstanceGroupId
+      `Prelude.seq` Prelude.rnf codeDeployState
+      `Prelude.seq` Prelude.rnf ebsCause
+      `Prelude.seq` Prelude.rnf ebsEvent
+      `Prelude.seq` Prelude.rnf ebsRequestId
+      `Prelude.seq` Prelude.rnf ebsResult
+      `Prelude.seq` Prelude.rnf ec2State
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf healthEventArn
+      `Prelude.seq` Prelude.rnf healthEventDescription
+      `Prelude.seq` Prelude.rnf healthEventTypeCategory
+      `Prelude.seq` Prelude.rnf healthEventTypeCode
+      `Prelude.seq` Prelude.rnf healthService
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf lineTime
+      `Prelude.seq` Prelude.rnf logFilter
+      `Prelude.seq` Prelude.rnf logGroup
+      `Prelude.seq` Prelude.rnf logText
+      `Prelude.seq` Prelude.rnf
+        metricName
+      `Prelude.seq` Prelude.rnf
+        metricNamespace
+      `Prelude.seq` Prelude.rnf
+        rdsEventCategories
+      `Prelude.seq` Prelude.rnf
+        rdsEventMessage
+      `Prelude.seq` Prelude.rnf
+        s3EventName
+      `Prelude.seq` Prelude.rnf
+        sourceARN
+      `Prelude.seq` Prelude.rnf
+        sourceType
+      `Prelude.seq` Prelude.rnf
+        startTime
+      `Prelude.seq` Prelude.rnf
+        statesArn
+      `Prelude.seq` Prelude.rnf
+        statesExecutionArn
+      `Prelude.seq` Prelude.rnf
+        statesInput
+      `Prelude.seq` Prelude.rnf
+        statesStatus
+      `Prelude.seq` Prelude.rnf
+        unit
+      `Prelude.seq` Prelude.rnf
+        value
+      `Prelude.seq` Prelude.rnf
+        xRayErrorPercent
+      `Prelude.seq` Prelude.rnf
+        xRayFaultPercent
+      `Prelude.seq` Prelude.rnf
+        xRayNodeName
+      `Prelude.seq` Prelude.rnf
+        xRayNodeType
+      `Prelude.seq` Prelude.rnf
+        xRayRequestAverageLatency
+      `Prelude.seq` Prelude.rnf
+        xRayRequestCount
+      `Prelude.seq` Prelude.rnf
+        xRayThrottlePercent
diff --git a/gen/Amazonka/ApplicationInsights/Types/OsType.hs b/gen/Amazonka/ApplicationInsights/Types/OsType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/OsType.hs
@@ -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.ApplicationInsights.Types.OsType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.OsType
+  ( OsType
+      ( ..,
+        OsType_LINUX,
+        OsType_WINDOWS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OsType = OsType' {fromOsType :: 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 OsType_LINUX :: OsType
+pattern OsType_LINUX = OsType' "LINUX"
+
+pattern OsType_WINDOWS :: OsType
+pattern OsType_WINDOWS = OsType' "WINDOWS"
+
+{-# COMPLETE
+  OsType_LINUX,
+  OsType_WINDOWS,
+  OsType'
+  #-}
diff --git a/gen/Amazonka/ApplicationInsights/Types/Problem.hs b/gen/Amazonka/ApplicationInsights/Types/Problem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/Problem.hs
@@ -0,0 +1,211 @@
+{-# 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.ApplicationInsights.Types.Problem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.Problem where
+
+import Amazonka.ApplicationInsights.Types.FeedbackKey
+import Amazonka.ApplicationInsights.Types.FeedbackValue
+import Amazonka.ApplicationInsights.Types.SeverityLevel
+import Amazonka.ApplicationInsights.Types.Status
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a problem that is detected by correlating observations.
+--
+-- /See:/ 'newProblem' smart constructor.
+data Problem = Problem'
+  { -- | The resource affected by the problem.
+    affectedResource :: Prelude.Maybe Prelude.Text,
+    -- | The time when the problem ended, in epoch seconds.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | Feedback provided by the user about the problem.
+    feedback :: Prelude.Maybe (Prelude.HashMap FeedbackKey FeedbackValue),
+    -- | The ID of the problem.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | A detailed analysis of the problem using machine learning.
+    insights :: Prelude.Maybe Prelude.Text,
+    -- | The last time that the problem reoccurred after its last resolution.
+    lastRecurrenceTime :: Prelude.Maybe Data.POSIX,
+    -- | The number of times that the same problem reoccurred after the first
+    -- time it was resolved.
+    recurringCount :: Prelude.Maybe Prelude.Integer,
+    -- | The name of the resource group affected by the problem.
+    resourceGroupName :: Prelude.Maybe Prelude.Text,
+    -- | A measure of the level of impact of the problem.
+    severityLevel :: Prelude.Maybe SeverityLevel,
+    -- | The time when the problem started, in epoch seconds.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | The status of the problem.
+    status :: Prelude.Maybe Status,
+    -- | The name of the problem.
+    title :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Problem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'affectedResource', 'problem_affectedResource' - The resource affected by the problem.
+--
+-- 'endTime', 'problem_endTime' - The time when the problem ended, in epoch seconds.
+--
+-- 'feedback', 'problem_feedback' - Feedback provided by the user about the problem.
+--
+-- 'id', 'problem_id' - The ID of the problem.
+--
+-- 'insights', 'problem_insights' - A detailed analysis of the problem using machine learning.
+--
+-- 'lastRecurrenceTime', 'problem_lastRecurrenceTime' - The last time that the problem reoccurred after its last resolution.
+--
+-- 'recurringCount', 'problem_recurringCount' - The number of times that the same problem reoccurred after the first
+-- time it was resolved.
+--
+-- 'resourceGroupName', 'problem_resourceGroupName' - The name of the resource group affected by the problem.
+--
+-- 'severityLevel', 'problem_severityLevel' - A measure of the level of impact of the problem.
+--
+-- 'startTime', 'problem_startTime' - The time when the problem started, in epoch seconds.
+--
+-- 'status', 'problem_status' - The status of the problem.
+--
+-- 'title', 'problem_title' - The name of the problem.
+newProblem ::
+  Problem
+newProblem =
+  Problem'
+    { affectedResource = Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      feedback = Prelude.Nothing,
+      id = Prelude.Nothing,
+      insights = Prelude.Nothing,
+      lastRecurrenceTime = Prelude.Nothing,
+      recurringCount = Prelude.Nothing,
+      resourceGroupName = Prelude.Nothing,
+      severityLevel = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      status = Prelude.Nothing,
+      title = Prelude.Nothing
+    }
+
+-- | The resource affected by the problem.
+problem_affectedResource :: Lens.Lens' Problem (Prelude.Maybe Prelude.Text)
+problem_affectedResource = Lens.lens (\Problem' {affectedResource} -> affectedResource) (\s@Problem' {} a -> s {affectedResource = a} :: Problem)
+
+-- | The time when the problem ended, in epoch seconds.
+problem_endTime :: Lens.Lens' Problem (Prelude.Maybe Prelude.UTCTime)
+problem_endTime = Lens.lens (\Problem' {endTime} -> endTime) (\s@Problem' {} a -> s {endTime = a} :: Problem) Prelude.. Lens.mapping Data._Time
+
+-- | Feedback provided by the user about the problem.
+problem_feedback :: Lens.Lens' Problem (Prelude.Maybe (Prelude.HashMap FeedbackKey FeedbackValue))
+problem_feedback = Lens.lens (\Problem' {feedback} -> feedback) (\s@Problem' {} a -> s {feedback = a} :: Problem) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the problem.
+problem_id :: Lens.Lens' Problem (Prelude.Maybe Prelude.Text)
+problem_id = Lens.lens (\Problem' {id} -> id) (\s@Problem' {} a -> s {id = a} :: Problem)
+
+-- | A detailed analysis of the problem using machine learning.
+problem_insights :: Lens.Lens' Problem (Prelude.Maybe Prelude.Text)
+problem_insights = Lens.lens (\Problem' {insights} -> insights) (\s@Problem' {} a -> s {insights = a} :: Problem)
+
+-- | The last time that the problem reoccurred after its last resolution.
+problem_lastRecurrenceTime :: Lens.Lens' Problem (Prelude.Maybe Prelude.UTCTime)
+problem_lastRecurrenceTime = Lens.lens (\Problem' {lastRecurrenceTime} -> lastRecurrenceTime) (\s@Problem' {} a -> s {lastRecurrenceTime = a} :: Problem) Prelude.. Lens.mapping Data._Time
+
+-- | The number of times that the same problem reoccurred after the first
+-- time it was resolved.
+problem_recurringCount :: Lens.Lens' Problem (Prelude.Maybe Prelude.Integer)
+problem_recurringCount = Lens.lens (\Problem' {recurringCount} -> recurringCount) (\s@Problem' {} a -> s {recurringCount = a} :: Problem)
+
+-- | The name of the resource group affected by the problem.
+problem_resourceGroupName :: Lens.Lens' Problem (Prelude.Maybe Prelude.Text)
+problem_resourceGroupName = Lens.lens (\Problem' {resourceGroupName} -> resourceGroupName) (\s@Problem' {} a -> s {resourceGroupName = a} :: Problem)
+
+-- | A measure of the level of impact of the problem.
+problem_severityLevel :: Lens.Lens' Problem (Prelude.Maybe SeverityLevel)
+problem_severityLevel = Lens.lens (\Problem' {severityLevel} -> severityLevel) (\s@Problem' {} a -> s {severityLevel = a} :: Problem)
+
+-- | The time when the problem started, in epoch seconds.
+problem_startTime :: Lens.Lens' Problem (Prelude.Maybe Prelude.UTCTime)
+problem_startTime = Lens.lens (\Problem' {startTime} -> startTime) (\s@Problem' {} a -> s {startTime = a} :: Problem) Prelude.. Lens.mapping Data._Time
+
+-- | The status of the problem.
+problem_status :: Lens.Lens' Problem (Prelude.Maybe Status)
+problem_status = Lens.lens (\Problem' {status} -> status) (\s@Problem' {} a -> s {status = a} :: Problem)
+
+-- | The name of the problem.
+problem_title :: Lens.Lens' Problem (Prelude.Maybe Prelude.Text)
+problem_title = Lens.lens (\Problem' {title} -> title) (\s@Problem' {} a -> s {title = a} :: Problem)
+
+instance Data.FromJSON Problem where
+  parseJSON =
+    Data.withObject
+      "Problem"
+      ( \x ->
+          Problem'
+            Prelude.<$> (x Data..:? "AffectedResource")
+            Prelude.<*> (x Data..:? "EndTime")
+            Prelude.<*> (x Data..:? "Feedback" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Id")
+            Prelude.<*> (x Data..:? "Insights")
+            Prelude.<*> (x Data..:? "LastRecurrenceTime")
+            Prelude.<*> (x Data..:? "RecurringCount")
+            Prelude.<*> (x Data..:? "ResourceGroupName")
+            Prelude.<*> (x Data..:? "SeverityLevel")
+            Prelude.<*> (x Data..:? "StartTime")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "Title")
+      )
+
+instance Prelude.Hashable Problem where
+  hashWithSalt _salt Problem' {..} =
+    _salt
+      `Prelude.hashWithSalt` affectedResource
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` feedback
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` insights
+      `Prelude.hashWithSalt` lastRecurrenceTime
+      `Prelude.hashWithSalt` recurringCount
+      `Prelude.hashWithSalt` resourceGroupName
+      `Prelude.hashWithSalt` severityLevel
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` title
+
+instance Prelude.NFData Problem where
+  rnf Problem' {..} =
+    Prelude.rnf affectedResource
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf feedback
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf insights
+      `Prelude.seq` Prelude.rnf lastRecurrenceTime
+      `Prelude.seq` Prelude.rnf recurringCount
+      `Prelude.seq` Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf severityLevel
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf title
diff --git a/gen/Amazonka/ApplicationInsights/Types/RelatedObservations.hs b/gen/Amazonka/ApplicationInsights/Types/RelatedObservations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/RelatedObservations.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.Types.RelatedObservations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.RelatedObservations where
+
+import Amazonka.ApplicationInsights.Types.Observation
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes observations related to the problem.
+--
+-- /See:/ 'newRelatedObservations' smart constructor.
+data RelatedObservations = RelatedObservations'
+  { -- | The list of observations related to the problem.
+    observationList :: Prelude.Maybe [Observation]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RelatedObservations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'observationList', 'relatedObservations_observationList' - The list of observations related to the problem.
+newRelatedObservations ::
+  RelatedObservations
+newRelatedObservations =
+  RelatedObservations'
+    { observationList =
+        Prelude.Nothing
+    }
+
+-- | The list of observations related to the problem.
+relatedObservations_observationList :: Lens.Lens' RelatedObservations (Prelude.Maybe [Observation])
+relatedObservations_observationList = Lens.lens (\RelatedObservations' {observationList} -> observationList) (\s@RelatedObservations' {} a -> s {observationList = a} :: RelatedObservations) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON RelatedObservations where
+  parseJSON =
+    Data.withObject
+      "RelatedObservations"
+      ( \x ->
+          RelatedObservations'
+            Prelude.<$> ( x
+                            Data..:? "ObservationList"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable RelatedObservations where
+  hashWithSalt _salt RelatedObservations' {..} =
+    _salt `Prelude.hashWithSalt` observationList
+
+instance Prelude.NFData RelatedObservations where
+  rnf RelatedObservations' {..} =
+    Prelude.rnf observationList
diff --git a/gen/Amazonka/ApplicationInsights/Types/SeverityLevel.hs b/gen/Amazonka/ApplicationInsights/Types/SeverityLevel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/SeverityLevel.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.Types.SeverityLevel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.SeverityLevel
+  ( SeverityLevel
+      ( ..,
+        SeverityLevel_High,
+        SeverityLevel_Informative,
+        SeverityLevel_Low,
+        SeverityLevel_Medium
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SeverityLevel = SeverityLevel'
+  { fromSeverityLevel ::
+      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 SeverityLevel_High :: SeverityLevel
+pattern SeverityLevel_High = SeverityLevel' "High"
+
+pattern SeverityLevel_Informative :: SeverityLevel
+pattern SeverityLevel_Informative = SeverityLevel' "Informative"
+
+pattern SeverityLevel_Low :: SeverityLevel
+pattern SeverityLevel_Low = SeverityLevel' "Low"
+
+pattern SeverityLevel_Medium :: SeverityLevel
+pattern SeverityLevel_Medium = SeverityLevel' "Medium"
+
+{-# COMPLETE
+  SeverityLevel_High,
+  SeverityLevel_Informative,
+  SeverityLevel_Low,
+  SeverityLevel_Medium,
+  SeverityLevel'
+  #-}
diff --git a/gen/Amazonka/ApplicationInsights/Types/Status.hs b/gen/Amazonka/ApplicationInsights/Types/Status.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/Status.hs
@@ -0,0 +1,78 @@
+{-# 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.ApplicationInsights.Types.Status
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.Status
+  ( Status
+      ( ..,
+        Status_IGNORE,
+        Status_PENDING,
+        Status_RECURRING,
+        Status_RESOLVED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Status = Status' {fromStatus :: 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 Status_IGNORE :: Status
+pattern Status_IGNORE = Status' "IGNORE"
+
+pattern Status_PENDING :: Status
+pattern Status_PENDING = Status' "PENDING"
+
+pattern Status_RECURRING :: Status
+pattern Status_RECURRING = Status' "RECURRING"
+
+pattern Status_RESOLVED :: Status
+pattern Status_RESOLVED = Status' "RESOLVED"
+
+{-# COMPLETE
+  Status_IGNORE,
+  Status_PENDING,
+  Status_RECURRING,
+  Status_RESOLVED,
+  Status'
+  #-}
diff --git a/gen/Amazonka/ApplicationInsights/Types/Tag.hs b/gen/Amazonka/ApplicationInsights/Types/Tag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/Tag.hs
@@ -0,0 +1,125 @@
+{-# 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.ApplicationInsights.Types.Tag
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.Tag where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | An object that defines the tags associated with an application. A /tag/
+-- is a label that you optionally define and associate with an application.
+-- Tags can help you categorize and manage resources in different ways,
+-- such as by purpose, owner, environment, or other criteria.
+--
+-- Each tag consists of a required /tag key/ and an associated /tag value/,
+-- both of which you define. A tag key is a general label that acts as a
+-- category for a more specific tag value. A tag value acts as a descriptor
+-- within a tag key. A tag key can contain as many as 128 characters. A tag
+-- value can contain as many as 256 characters. The characters can be
+-- Unicode letters, digits, white space, or one of the following symbols: _
+-- . : \/ = + -. The following additional restrictions apply to tags:
+--
+-- -   Tag keys and values are case sensitive.
+--
+-- -   For each associated resource, each tag key must be unique and it can
+--     have only one value.
+--
+-- -   The @aws:@ prefix is reserved for use by AWS; you can’t use it in
+--     any tag keys or values that you define. In addition, you can\'t edit
+--     or remove tag keys or values that use this prefix.
+--
+-- /See:/ 'newTag' smart constructor.
+data Tag = Tag'
+  { -- | One part of a key-value pair that defines a tag. The maximum length of a
+    -- tag key is 128 characters. The minimum length is 1 character.
+    key :: Prelude.Text,
+    -- | The optional part of a key-value pair that defines a tag. The maximum
+    -- length of a tag value is 256 characters. The minimum length is 0
+    -- characters. If you don\'t want an application to have a specific tag
+    -- value, don\'t specify a value for this parameter.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Tag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'key', 'tag_key' - One part of a key-value pair that defines a tag. The maximum length of a
+-- tag key is 128 characters. The minimum length is 1 character.
+--
+-- 'value', 'tag_value' - The optional part of a key-value pair that defines a tag. The maximum
+-- length of a tag value is 256 characters. The minimum length is 0
+-- characters. If you don\'t want an application to have a specific tag
+-- value, don\'t specify a value for this parameter.
+newTag ::
+  -- | 'key'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  Tag
+newTag pKey_ pValue_ =
+  Tag' {key = pKey_, value = pValue_}
+
+-- | One part of a key-value pair that defines a tag. The maximum length of a
+-- tag key is 128 characters. The minimum length is 1 character.
+tag_key :: Lens.Lens' Tag Prelude.Text
+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)
+
+-- | The optional part of a key-value pair that defines a tag. The maximum
+-- length of a tag value is 256 characters. The minimum length is 0
+-- characters. If you don\'t want an application to have a specific tag
+-- value, don\'t specify a value for this parameter.
+tag_value :: Lens.Lens' Tag Prelude.Text
+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)
+
+instance Data.FromJSON Tag where
+  parseJSON =
+    Data.withObject
+      "Tag"
+      ( \x ->
+          Tag'
+            Prelude.<$> (x Data..: "Key")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable Tag where
+  hashWithSalt _salt Tag' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Tag where
+  rnf Tag' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON Tag where
+  toJSON Tag' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Key" Data..= key),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/ApplicationInsights/Types/Tier.hs b/gen/Amazonka/ApplicationInsights/Types/Tier.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Types/Tier.hs
@@ -0,0 +1,148 @@
+{-# 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.ApplicationInsights.Types.Tier
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ApplicationInsights.Types.Tier
+  ( Tier
+      ( ..,
+        Tier_ACTIVE_DIRECTORY,
+        Tier_CUSTOM,
+        Tier_DEFAULT,
+        Tier_DOT_NET_CORE,
+        Tier_DOT_NET_WEB,
+        Tier_DOT_NET_WEB_TIER,
+        Tier_DOT_NET_WORKER,
+        Tier_JAVA_JMX,
+        Tier_MYSQL,
+        Tier_ORACLE,
+        Tier_POSTGRESQL,
+        Tier_SAP_HANA_HIGH_AVAILABILITY,
+        Tier_SAP_HANA_MULTI_NODE,
+        Tier_SAP_HANA_SINGLE_NODE,
+        Tier_SHAREPOINT,
+        Tier_SQL_SERVER,
+        Tier_SQL_SERVER_ALWAYSON_AVAILABILITY_GROUP,
+        Tier_SQL_SERVER_FAILOVER_CLUSTER_INSTANCE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Tier = Tier' {fromTier :: 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 Tier_ACTIVE_DIRECTORY :: Tier
+pattern Tier_ACTIVE_DIRECTORY = Tier' "ACTIVE_DIRECTORY"
+
+pattern Tier_CUSTOM :: Tier
+pattern Tier_CUSTOM = Tier' "CUSTOM"
+
+pattern Tier_DEFAULT :: Tier
+pattern Tier_DEFAULT = Tier' "DEFAULT"
+
+pattern Tier_DOT_NET_CORE :: Tier
+pattern Tier_DOT_NET_CORE = Tier' "DOT_NET_CORE"
+
+pattern Tier_DOT_NET_WEB :: Tier
+pattern Tier_DOT_NET_WEB = Tier' "DOT_NET_WEB"
+
+pattern Tier_DOT_NET_WEB_TIER :: Tier
+pattern Tier_DOT_NET_WEB_TIER = Tier' "DOT_NET_WEB_TIER"
+
+pattern Tier_DOT_NET_WORKER :: Tier
+pattern Tier_DOT_NET_WORKER = Tier' "DOT_NET_WORKER"
+
+pattern Tier_JAVA_JMX :: Tier
+pattern Tier_JAVA_JMX = Tier' "JAVA_JMX"
+
+pattern Tier_MYSQL :: Tier
+pattern Tier_MYSQL = Tier' "MYSQL"
+
+pattern Tier_ORACLE :: Tier
+pattern Tier_ORACLE = Tier' "ORACLE"
+
+pattern Tier_POSTGRESQL :: Tier
+pattern Tier_POSTGRESQL = Tier' "POSTGRESQL"
+
+pattern Tier_SAP_HANA_HIGH_AVAILABILITY :: Tier
+pattern Tier_SAP_HANA_HIGH_AVAILABILITY = Tier' "SAP_HANA_HIGH_AVAILABILITY"
+
+pattern Tier_SAP_HANA_MULTI_NODE :: Tier
+pattern Tier_SAP_HANA_MULTI_NODE = Tier' "SAP_HANA_MULTI_NODE"
+
+pattern Tier_SAP_HANA_SINGLE_NODE :: Tier
+pattern Tier_SAP_HANA_SINGLE_NODE = Tier' "SAP_HANA_SINGLE_NODE"
+
+pattern Tier_SHAREPOINT :: Tier
+pattern Tier_SHAREPOINT = Tier' "SHAREPOINT"
+
+pattern Tier_SQL_SERVER :: Tier
+pattern Tier_SQL_SERVER = Tier' "SQL_SERVER"
+
+pattern Tier_SQL_SERVER_ALWAYSON_AVAILABILITY_GROUP :: Tier
+pattern Tier_SQL_SERVER_ALWAYSON_AVAILABILITY_GROUP = Tier' "SQL_SERVER_ALWAYSON_AVAILABILITY_GROUP"
+
+pattern Tier_SQL_SERVER_FAILOVER_CLUSTER_INSTANCE :: Tier
+pattern Tier_SQL_SERVER_FAILOVER_CLUSTER_INSTANCE = Tier' "SQL_SERVER_FAILOVER_CLUSTER_INSTANCE"
+
+{-# COMPLETE
+  Tier_ACTIVE_DIRECTORY,
+  Tier_CUSTOM,
+  Tier_DEFAULT,
+  Tier_DOT_NET_CORE,
+  Tier_DOT_NET_WEB,
+  Tier_DOT_NET_WEB_TIER,
+  Tier_DOT_NET_WORKER,
+  Tier_JAVA_JMX,
+  Tier_MYSQL,
+  Tier_ORACLE,
+  Tier_POSTGRESQL,
+  Tier_SAP_HANA_HIGH_AVAILABILITY,
+  Tier_SAP_HANA_MULTI_NODE,
+  Tier_SAP_HANA_SINGLE_NODE,
+  Tier_SHAREPOINT,
+  Tier_SQL_SERVER,
+  Tier_SQL_SERVER_ALWAYSON_AVAILABILITY_GROUP,
+  Tier_SQL_SERVER_FAILOVER_CLUSTER_INSTANCE,
+  Tier'
+  #-}
diff --git a/gen/Amazonka/ApplicationInsights/UntagResource.hs b/gen/Amazonka/ApplicationInsights/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/UntagResource.hs
@@ -0,0 +1,192 @@
+{-# 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.ApplicationInsights.UntagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Remove one or more tags (keys and values) from a specified application.
+module Amazonka.ApplicationInsights.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceARN,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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 application that you want to
+    -- remove one or more tags from.
+    resourceARN :: Prelude.Text,
+    -- | The tags (tag keys) that you want to remove from the resource. When you
+    -- specify a tag key, the action removes both that key and its associated
+    -- tag value.
+    --
+    -- To remove more than one tag from the application, append the @TagKeys@
+    -- parameter and argument for each additional tag to remove, separated by
+    -- an ampersand.
+    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 application that you want to
+-- remove one or more tags from.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The tags (tag keys) that you want to remove from the resource. When you
+-- specify a tag key, the action removes both that key and its associated
+-- tag value.
+--
+-- To remove more than one tag from the application, append the @TagKeys@
+-- parameter and argument for each additional tag to remove, separated by
+-- an ampersand.
+newUntagResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  UntagResource
+newUntagResource pResourceARN_ =
+  UntagResource'
+    { resourceARN = pResourceARN_,
+      tagKeys = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the application that you want to
+-- remove one or more tags from.
+untagResource_resourceARN :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceARN = Lens.lens (\UntagResource' {resourceARN} -> resourceARN) (\s@UntagResource' {} a -> s {resourceARN = a} :: UntagResource)
+
+-- | The tags (tag keys) that you want to remove from the resource. When you
+-- specify a tag key, the action removes both that key and its associated
+-- tag value.
+--
+-- To remove more than one tag from the application, append the @TagKeys@
+-- parameter and argument for each additional tag to remove, separated by
+-- an ampersand.
+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.postJSON (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
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.UntagResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UntagResource where
+  toJSON UntagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("TagKeys" Data..= tagKeys)
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UntagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /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
diff --git a/gen/Amazonka/ApplicationInsights/UpdateApplication.hs b/gen/Amazonka/ApplicationInsights/UpdateApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/UpdateApplication.hs
@@ -0,0 +1,263 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ApplicationInsights.UpdateApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the application.
+module Amazonka.ApplicationInsights.UpdateApplication
+  ( -- * Creating a Request
+    UpdateApplication (..),
+    newUpdateApplication,
+
+    -- * Request Lenses
+    updateApplication_autoConfigEnabled,
+    updateApplication_cWEMonitorEnabled,
+    updateApplication_opsCenterEnabled,
+    updateApplication_opsItemSNSTopicArn,
+    updateApplication_removeSNSTopic,
+    updateApplication_resourceGroupName,
+
+    -- * Destructuring the Response
+    UpdateApplicationResponse (..),
+    newUpdateApplicationResponse,
+
+    -- * Response Lenses
+    updateApplicationResponse_applicationInfo,
+    updateApplicationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newUpdateApplication' smart constructor.
+data UpdateApplication = UpdateApplication'
+  { -- | Turns auto-configuration on or off.
+    autoConfigEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether Application Insights can listen to CloudWatch events
+    -- for the application resources, such as @instance terminated@,
+    -- @failed deployment@, and others.
+    cWEMonitorEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | When set to @true@, creates opsItems for any problems detected on an
+    -- application.
+    opsCenterEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | The SNS topic provided to Application Insights that is associated to the
+    -- created opsItem. Allows you to receive notifications for updates to the
+    -- opsItem.
+    opsItemSNSTopicArn :: Prelude.Maybe Prelude.Text,
+    -- | Disassociates the SNS topic from the opsItem created for detected
+    -- problems.
+    removeSNSTopic :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'autoConfigEnabled', 'updateApplication_autoConfigEnabled' - Turns auto-configuration on or off.
+--
+-- 'cWEMonitorEnabled', 'updateApplication_cWEMonitorEnabled' - Indicates whether Application Insights can listen to CloudWatch events
+-- for the application resources, such as @instance terminated@,
+-- @failed deployment@, and others.
+--
+-- 'opsCenterEnabled', 'updateApplication_opsCenterEnabled' - When set to @true@, creates opsItems for any problems detected on an
+-- application.
+--
+-- 'opsItemSNSTopicArn', 'updateApplication_opsItemSNSTopicArn' - The SNS topic provided to Application Insights that is associated to the
+-- created opsItem. Allows you to receive notifications for updates to the
+-- opsItem.
+--
+-- 'removeSNSTopic', 'updateApplication_removeSNSTopic' - Disassociates the SNS topic from the opsItem created for detected
+-- problems.
+--
+-- 'resourceGroupName', 'updateApplication_resourceGroupName' - The name of the resource group.
+newUpdateApplication ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  UpdateApplication
+newUpdateApplication pResourceGroupName_ =
+  UpdateApplication'
+    { autoConfigEnabled =
+        Prelude.Nothing,
+      cWEMonitorEnabled = Prelude.Nothing,
+      opsCenterEnabled = Prelude.Nothing,
+      opsItemSNSTopicArn = Prelude.Nothing,
+      removeSNSTopic = Prelude.Nothing,
+      resourceGroupName = pResourceGroupName_
+    }
+
+-- | Turns auto-configuration on or off.
+updateApplication_autoConfigEnabled :: Lens.Lens' UpdateApplication (Prelude.Maybe Prelude.Bool)
+updateApplication_autoConfigEnabled = Lens.lens (\UpdateApplication' {autoConfigEnabled} -> autoConfigEnabled) (\s@UpdateApplication' {} a -> s {autoConfigEnabled = a} :: UpdateApplication)
+
+-- | Indicates whether Application Insights can listen to CloudWatch events
+-- for the application resources, such as @instance terminated@,
+-- @failed deployment@, and others.
+updateApplication_cWEMonitorEnabled :: Lens.Lens' UpdateApplication (Prelude.Maybe Prelude.Bool)
+updateApplication_cWEMonitorEnabled = Lens.lens (\UpdateApplication' {cWEMonitorEnabled} -> cWEMonitorEnabled) (\s@UpdateApplication' {} a -> s {cWEMonitorEnabled = a} :: UpdateApplication)
+
+-- | When set to @true@, creates opsItems for any problems detected on an
+-- application.
+updateApplication_opsCenterEnabled :: Lens.Lens' UpdateApplication (Prelude.Maybe Prelude.Bool)
+updateApplication_opsCenterEnabled = Lens.lens (\UpdateApplication' {opsCenterEnabled} -> opsCenterEnabled) (\s@UpdateApplication' {} a -> s {opsCenterEnabled = a} :: UpdateApplication)
+
+-- | The SNS topic provided to Application Insights that is associated to the
+-- created opsItem. Allows you to receive notifications for updates to the
+-- opsItem.
+updateApplication_opsItemSNSTopicArn :: Lens.Lens' UpdateApplication (Prelude.Maybe Prelude.Text)
+updateApplication_opsItemSNSTopicArn = Lens.lens (\UpdateApplication' {opsItemSNSTopicArn} -> opsItemSNSTopicArn) (\s@UpdateApplication' {} a -> s {opsItemSNSTopicArn = a} :: UpdateApplication)
+
+-- | Disassociates the SNS topic from the opsItem created for detected
+-- problems.
+updateApplication_removeSNSTopic :: Lens.Lens' UpdateApplication (Prelude.Maybe Prelude.Bool)
+updateApplication_removeSNSTopic = Lens.lens (\UpdateApplication' {removeSNSTopic} -> removeSNSTopic) (\s@UpdateApplication' {} a -> s {removeSNSTopic = a} :: UpdateApplication)
+
+-- | The name of the resource group.
+updateApplication_resourceGroupName :: Lens.Lens' UpdateApplication Prelude.Text
+updateApplication_resourceGroupName = Lens.lens (\UpdateApplication' {resourceGroupName} -> resourceGroupName) (\s@UpdateApplication' {} a -> s {resourceGroupName = a} :: UpdateApplication)
+
+instance Core.AWSRequest UpdateApplication where
+  type
+    AWSResponse UpdateApplication =
+      UpdateApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateApplicationResponse'
+            Prelude.<$> (x Data..?> "ApplicationInfo")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateApplication where
+  hashWithSalt _salt UpdateApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoConfigEnabled
+      `Prelude.hashWithSalt` cWEMonitorEnabled
+      `Prelude.hashWithSalt` opsCenterEnabled
+      `Prelude.hashWithSalt` opsItemSNSTopicArn
+      `Prelude.hashWithSalt` removeSNSTopic
+      `Prelude.hashWithSalt` resourceGroupName
+
+instance Prelude.NFData UpdateApplication where
+  rnf UpdateApplication' {..} =
+    Prelude.rnf autoConfigEnabled
+      `Prelude.seq` Prelude.rnf cWEMonitorEnabled
+      `Prelude.seq` Prelude.rnf opsCenterEnabled
+      `Prelude.seq` Prelude.rnf opsItemSNSTopicArn
+      `Prelude.seq` Prelude.rnf removeSNSTopic
+      `Prelude.seq` Prelude.rnf resourceGroupName
+
+instance Data.ToHeaders UpdateApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.UpdateApplication" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateApplication where
+  toJSON UpdateApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AutoConfigEnabled" Data..=)
+              Prelude.<$> autoConfigEnabled,
+            ("CWEMonitorEnabled" Data..=)
+              Prelude.<$> cWEMonitorEnabled,
+            ("OpsCenterEnabled" Data..=)
+              Prelude.<$> opsCenterEnabled,
+            ("OpsItemSNSTopicArn" Data..=)
+              Prelude.<$> opsItemSNSTopicArn,
+            ("RemoveSNSTopic" Data..=)
+              Prelude.<$> removeSNSTopic,
+            Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName)
+          ]
+      )
+
+instance Data.ToPath UpdateApplication where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateApplicationResponse' smart constructor.
+data UpdateApplicationResponse = UpdateApplicationResponse'
+  { -- | Information about the application.
+    applicationInfo :: Prelude.Maybe ApplicationInfo,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationInfo', 'updateApplicationResponse_applicationInfo' - Information about the application.
+--
+-- 'httpStatus', 'updateApplicationResponse_httpStatus' - The response's http status code.
+newUpdateApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateApplicationResponse
+newUpdateApplicationResponse pHttpStatus_ =
+  UpdateApplicationResponse'
+    { applicationInfo =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the application.
+updateApplicationResponse_applicationInfo :: Lens.Lens' UpdateApplicationResponse (Prelude.Maybe ApplicationInfo)
+updateApplicationResponse_applicationInfo = Lens.lens (\UpdateApplicationResponse' {applicationInfo} -> applicationInfo) (\s@UpdateApplicationResponse' {} a -> s {applicationInfo = a} :: UpdateApplicationResponse)
+
+-- | The response's http status code.
+updateApplicationResponse_httpStatus :: Lens.Lens' UpdateApplicationResponse Prelude.Int
+updateApplicationResponse_httpStatus = Lens.lens (\UpdateApplicationResponse' {httpStatus} -> httpStatus) (\s@UpdateApplicationResponse' {} a -> s {httpStatus = a} :: UpdateApplicationResponse)
+
+instance Prelude.NFData UpdateApplicationResponse where
+  rnf UpdateApplicationResponse' {..} =
+    Prelude.rnf applicationInfo
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/UpdateComponent.hs b/gen/Amazonka/ApplicationInsights/UpdateComponent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/UpdateComponent.hs
@@ -0,0 +1,206 @@
+{-# 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.ApplicationInsights.UpdateComponent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the custom component name and\/or the list of resources that
+-- make up the component.
+module Amazonka.ApplicationInsights.UpdateComponent
+  ( -- * Creating a Request
+    UpdateComponent (..),
+    newUpdateComponent,
+
+    -- * Request Lenses
+    updateComponent_newComponentName,
+    updateComponent_resourceList,
+    updateComponent_resourceGroupName,
+    updateComponent_componentName,
+
+    -- * Destructuring the Response
+    UpdateComponentResponse (..),
+    newUpdateComponentResponse,
+
+    -- * Response Lenses
+    updateComponentResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newUpdateComponent' smart constructor.
+data UpdateComponent = UpdateComponent'
+  { -- | The new name of the component.
+    newComponentName' :: Prelude.Maybe Prelude.Text,
+    -- | The list of resource ARNs that belong to the component.
+    resourceList :: Prelude.Maybe [Prelude.Text],
+    -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text,
+    -- | The name of the component.
+    componentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateComponent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'newComponentName'', 'updateComponent_newComponentName' - The new name of the component.
+--
+-- 'resourceList', 'updateComponent_resourceList' - The list of resource ARNs that belong to the component.
+--
+-- 'resourceGroupName', 'updateComponent_resourceGroupName' - The name of the resource group.
+--
+-- 'componentName', 'updateComponent_componentName' - The name of the component.
+newUpdateComponent ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  -- | 'componentName'
+  Prelude.Text ->
+  UpdateComponent
+newUpdateComponent
+  pResourceGroupName_
+  pComponentName_ =
+    UpdateComponent'
+      { newComponentName' =
+          Prelude.Nothing,
+        resourceList = Prelude.Nothing,
+        resourceGroupName = pResourceGroupName_,
+        componentName = pComponentName_
+      }
+
+-- | The new name of the component.
+updateComponent_newComponentName :: Lens.Lens' UpdateComponent (Prelude.Maybe Prelude.Text)
+updateComponent_newComponentName = Lens.lens (\UpdateComponent' {newComponentName'} -> newComponentName') (\s@UpdateComponent' {} a -> s {newComponentName' = a} :: UpdateComponent)
+
+-- | The list of resource ARNs that belong to the component.
+updateComponent_resourceList :: Lens.Lens' UpdateComponent (Prelude.Maybe [Prelude.Text])
+updateComponent_resourceList = Lens.lens (\UpdateComponent' {resourceList} -> resourceList) (\s@UpdateComponent' {} a -> s {resourceList = a} :: UpdateComponent) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the resource group.
+updateComponent_resourceGroupName :: Lens.Lens' UpdateComponent Prelude.Text
+updateComponent_resourceGroupName = Lens.lens (\UpdateComponent' {resourceGroupName} -> resourceGroupName) (\s@UpdateComponent' {} a -> s {resourceGroupName = a} :: UpdateComponent)
+
+-- | The name of the component.
+updateComponent_componentName :: Lens.Lens' UpdateComponent Prelude.Text
+updateComponent_componentName = Lens.lens (\UpdateComponent' {componentName} -> componentName) (\s@UpdateComponent' {} a -> s {componentName = a} :: UpdateComponent)
+
+instance Core.AWSRequest UpdateComponent where
+  type
+    AWSResponse UpdateComponent =
+      UpdateComponentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UpdateComponentResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateComponent where
+  hashWithSalt _salt UpdateComponent' {..} =
+    _salt
+      `Prelude.hashWithSalt` newComponentName'
+      `Prelude.hashWithSalt` resourceList
+      `Prelude.hashWithSalt` resourceGroupName
+      `Prelude.hashWithSalt` componentName
+
+instance Prelude.NFData UpdateComponent where
+  rnf UpdateComponent' {..} =
+    Prelude.rnf newComponentName'
+      `Prelude.seq` Prelude.rnf resourceList
+      `Prelude.seq` Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf componentName
+
+instance Data.ToHeaders UpdateComponent where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.UpdateComponent" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateComponent where
+  toJSON UpdateComponent' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NewComponentName" Data..=)
+              Prelude.<$> newComponentName',
+            ("ResourceList" Data..=) Prelude.<$> resourceList,
+            Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName),
+            Prelude.Just
+              ("ComponentName" Data..= componentName)
+          ]
+      )
+
+instance Data.ToPath UpdateComponent where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateComponent where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateComponentResponse' smart constructor.
+data UpdateComponentResponse = UpdateComponentResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateComponentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateComponentResponse_httpStatus' - The response's http status code.
+newUpdateComponentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateComponentResponse
+newUpdateComponentResponse pHttpStatus_ =
+  UpdateComponentResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+updateComponentResponse_httpStatus :: Lens.Lens' UpdateComponentResponse Prelude.Int
+updateComponentResponse_httpStatus = Lens.lens (\UpdateComponentResponse' {httpStatus} -> httpStatus) (\s@UpdateComponentResponse' {} a -> s {httpStatus = a} :: UpdateComponentResponse)
+
+instance Prelude.NFData UpdateComponentResponse where
+  rnf UpdateComponentResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/UpdateComponentConfiguration.hs b/gen/Amazonka/ApplicationInsights/UpdateComponentConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/UpdateComponentConfiguration.hs
@@ -0,0 +1,268 @@
+{-# 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.ApplicationInsights.UpdateComponentConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the monitoring configurations for the component. The
+-- configuration input parameter is an escaped JSON of the configuration
+-- and should match the schema of what is returned by
+-- @DescribeComponentConfigurationRecommendation@.
+module Amazonka.ApplicationInsights.UpdateComponentConfiguration
+  ( -- * Creating a Request
+    UpdateComponentConfiguration (..),
+    newUpdateComponentConfiguration,
+
+    -- * Request Lenses
+    updateComponentConfiguration_autoConfigEnabled,
+    updateComponentConfiguration_componentConfiguration,
+    updateComponentConfiguration_monitor,
+    updateComponentConfiguration_tier,
+    updateComponentConfiguration_resourceGroupName,
+    updateComponentConfiguration_componentName,
+
+    -- * Destructuring the Response
+    UpdateComponentConfigurationResponse (..),
+    newUpdateComponentConfigurationResponse,
+
+    -- * Response Lenses
+    updateComponentConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newUpdateComponentConfiguration' smart constructor.
+data UpdateComponentConfiguration = UpdateComponentConfiguration'
+  { -- | Automatically configures the component by applying the recommended
+    -- configurations.
+    autoConfigEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | The configuration settings of the component. The value is the escaped
+    -- JSON of the configuration. For more information about the JSON format,
+    -- see
+    -- <https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/working-with-json.html Working with JSON>.
+    -- You can send a request to @DescribeComponentConfigurationRecommendation@
+    -- to see the recommended configuration for a component. For the complete
+    -- format of the component configuration file, see
+    -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/component-config.html Component Configuration>.
+    componentConfiguration :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether the application component is monitored.
+    monitor :: Prelude.Maybe Prelude.Bool,
+    -- | The tier of the application component.
+    tier :: Prelude.Maybe Tier,
+    -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text,
+    -- | The name of the component.
+    componentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateComponentConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'autoConfigEnabled', 'updateComponentConfiguration_autoConfigEnabled' - Automatically configures the component by applying the recommended
+-- configurations.
+--
+-- 'componentConfiguration', 'updateComponentConfiguration_componentConfiguration' - The configuration settings of the component. The value is the escaped
+-- JSON of the configuration. For more information about the JSON format,
+-- see
+-- <https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/working-with-json.html Working with JSON>.
+-- You can send a request to @DescribeComponentConfigurationRecommendation@
+-- to see the recommended configuration for a component. For the complete
+-- format of the component configuration file, see
+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/component-config.html Component Configuration>.
+--
+-- 'monitor', 'updateComponentConfiguration_monitor' - Indicates whether the application component is monitored.
+--
+-- 'tier', 'updateComponentConfiguration_tier' - The tier of the application component.
+--
+-- 'resourceGroupName', 'updateComponentConfiguration_resourceGroupName' - The name of the resource group.
+--
+-- 'componentName', 'updateComponentConfiguration_componentName' - The name of the component.
+newUpdateComponentConfiguration ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  -- | 'componentName'
+  Prelude.Text ->
+  UpdateComponentConfiguration
+newUpdateComponentConfiguration
+  pResourceGroupName_
+  pComponentName_ =
+    UpdateComponentConfiguration'
+      { autoConfigEnabled =
+          Prelude.Nothing,
+        componentConfiguration = Prelude.Nothing,
+        monitor = Prelude.Nothing,
+        tier = Prelude.Nothing,
+        resourceGroupName = pResourceGroupName_,
+        componentName = pComponentName_
+      }
+
+-- | Automatically configures the component by applying the recommended
+-- configurations.
+updateComponentConfiguration_autoConfigEnabled :: Lens.Lens' UpdateComponentConfiguration (Prelude.Maybe Prelude.Bool)
+updateComponentConfiguration_autoConfigEnabled = Lens.lens (\UpdateComponentConfiguration' {autoConfigEnabled} -> autoConfigEnabled) (\s@UpdateComponentConfiguration' {} a -> s {autoConfigEnabled = a} :: UpdateComponentConfiguration)
+
+-- | The configuration settings of the component. The value is the escaped
+-- JSON of the configuration. For more information about the JSON format,
+-- see
+-- <https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/working-with-json.html Working with JSON>.
+-- You can send a request to @DescribeComponentConfigurationRecommendation@
+-- to see the recommended configuration for a component. For the complete
+-- format of the component configuration file, see
+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/component-config.html Component Configuration>.
+updateComponentConfiguration_componentConfiguration :: Lens.Lens' UpdateComponentConfiguration (Prelude.Maybe Prelude.Text)
+updateComponentConfiguration_componentConfiguration = Lens.lens (\UpdateComponentConfiguration' {componentConfiguration} -> componentConfiguration) (\s@UpdateComponentConfiguration' {} a -> s {componentConfiguration = a} :: UpdateComponentConfiguration)
+
+-- | Indicates whether the application component is monitored.
+updateComponentConfiguration_monitor :: Lens.Lens' UpdateComponentConfiguration (Prelude.Maybe Prelude.Bool)
+updateComponentConfiguration_monitor = Lens.lens (\UpdateComponentConfiguration' {monitor} -> monitor) (\s@UpdateComponentConfiguration' {} a -> s {monitor = a} :: UpdateComponentConfiguration)
+
+-- | The tier of the application component.
+updateComponentConfiguration_tier :: Lens.Lens' UpdateComponentConfiguration (Prelude.Maybe Tier)
+updateComponentConfiguration_tier = Lens.lens (\UpdateComponentConfiguration' {tier} -> tier) (\s@UpdateComponentConfiguration' {} a -> s {tier = a} :: UpdateComponentConfiguration)
+
+-- | The name of the resource group.
+updateComponentConfiguration_resourceGroupName :: Lens.Lens' UpdateComponentConfiguration Prelude.Text
+updateComponentConfiguration_resourceGroupName = Lens.lens (\UpdateComponentConfiguration' {resourceGroupName} -> resourceGroupName) (\s@UpdateComponentConfiguration' {} a -> s {resourceGroupName = a} :: UpdateComponentConfiguration)
+
+-- | The name of the component.
+updateComponentConfiguration_componentName :: Lens.Lens' UpdateComponentConfiguration Prelude.Text
+updateComponentConfiguration_componentName = Lens.lens (\UpdateComponentConfiguration' {componentName} -> componentName) (\s@UpdateComponentConfiguration' {} a -> s {componentName = a} :: UpdateComponentConfiguration)
+
+instance Core.AWSRequest UpdateComponentConfiguration where
+  type
+    AWSResponse UpdateComponentConfiguration =
+      UpdateComponentConfigurationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UpdateComponentConfigurationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    UpdateComponentConfiguration
+  where
+  hashWithSalt _salt UpdateComponentConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoConfigEnabled
+      `Prelude.hashWithSalt` componentConfiguration
+      `Prelude.hashWithSalt` monitor
+      `Prelude.hashWithSalt` tier
+      `Prelude.hashWithSalt` resourceGroupName
+      `Prelude.hashWithSalt` componentName
+
+instance Prelude.NFData UpdateComponentConfiguration where
+  rnf UpdateComponentConfiguration' {..} =
+    Prelude.rnf autoConfigEnabled
+      `Prelude.seq` Prelude.rnf componentConfiguration
+      `Prelude.seq` Prelude.rnf monitor
+      `Prelude.seq` Prelude.rnf tier
+      `Prelude.seq` Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf componentName
+
+instance Data.ToHeaders UpdateComponentConfiguration where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.UpdateComponentConfiguration" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateComponentConfiguration where
+  toJSON UpdateComponentConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AutoConfigEnabled" Data..=)
+              Prelude.<$> autoConfigEnabled,
+            ("ComponentConfiguration" Data..=)
+              Prelude.<$> componentConfiguration,
+            ("Monitor" Data..=) Prelude.<$> monitor,
+            ("Tier" Data..=) Prelude.<$> tier,
+            Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName),
+            Prelude.Just
+              ("ComponentName" Data..= componentName)
+          ]
+      )
+
+instance Data.ToPath UpdateComponentConfiguration where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateComponentConfiguration where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateComponentConfigurationResponse' smart constructor.
+data UpdateComponentConfigurationResponse = UpdateComponentConfigurationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateComponentConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateComponentConfigurationResponse_httpStatus' - The response's http status code.
+newUpdateComponentConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateComponentConfigurationResponse
+newUpdateComponentConfigurationResponse pHttpStatus_ =
+  UpdateComponentConfigurationResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+updateComponentConfigurationResponse_httpStatus :: Lens.Lens' UpdateComponentConfigurationResponse Prelude.Int
+updateComponentConfigurationResponse_httpStatus = Lens.lens (\UpdateComponentConfigurationResponse' {httpStatus} -> httpStatus) (\s@UpdateComponentConfigurationResponse' {} a -> s {httpStatus = a} :: UpdateComponentConfigurationResponse)
+
+instance
+  Prelude.NFData
+    UpdateComponentConfigurationResponse
+  where
+  rnf UpdateComponentConfigurationResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/UpdateLogPattern.hs b/gen/Amazonka/ApplicationInsights/UpdateLogPattern.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/UpdateLogPattern.hs
@@ -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.ApplicationInsights.UpdateLogPattern
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a log pattern to a @LogPatternSet@.
+module Amazonka.ApplicationInsights.UpdateLogPattern
+  ( -- * Creating a Request
+    UpdateLogPattern (..),
+    newUpdateLogPattern,
+
+    -- * Request Lenses
+    updateLogPattern_pattern,
+    updateLogPattern_rank,
+    updateLogPattern_resourceGroupName,
+    updateLogPattern_patternSetName,
+    updateLogPattern_patternName,
+
+    -- * Destructuring the Response
+    UpdateLogPatternResponse (..),
+    newUpdateLogPatternResponse,
+
+    -- * Response Lenses
+    updateLogPatternResponse_logPattern,
+    updateLogPatternResponse_resourceGroupName,
+    updateLogPatternResponse_httpStatus,
+  )
+where
+
+import Amazonka.ApplicationInsights.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:/ 'newUpdateLogPattern' smart constructor.
+data UpdateLogPattern = UpdateLogPattern'
+  { -- | The log pattern. The pattern must be DFA compatible. Patterns that
+    -- utilize forward lookahead or backreference constructions are not
+    -- supported.
+    pattern' :: Prelude.Maybe Prelude.Text,
+    -- | Rank of the log pattern. Must be a value between @1@ and @1,000,000@.
+    -- The patterns are sorted by rank, so we recommend that you set your
+    -- highest priority patterns with the lowest rank. A pattern of rank @1@
+    -- will be the first to get matched to a log line. A pattern of rank
+    -- @1,000,000@ will be last to get matched. When you configure custom log
+    -- patterns from the console, a @Low@ severity pattern translates to a
+    -- @750,000@ rank. A @Medium@ severity pattern translates to a @500,000@
+    -- rank. And a @High@ severity pattern translates to a @250,000@ rank. Rank
+    -- values less than @1@ or greater than @1,000,000@ are reserved for
+    -- AWS-provided patterns.
+    rank :: Prelude.Maybe Prelude.Int,
+    -- | The name of the resource group.
+    resourceGroupName :: Prelude.Text,
+    -- | The name of the log pattern set.
+    patternSetName :: Prelude.Text,
+    -- | The name of the log pattern.
+    patternName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateLogPattern' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'pattern'', 'updateLogPattern_pattern' - The log pattern. The pattern must be DFA compatible. Patterns that
+-- utilize forward lookahead or backreference constructions are not
+-- supported.
+--
+-- 'rank', 'updateLogPattern_rank' - Rank of the log pattern. Must be a value between @1@ and @1,000,000@.
+-- The patterns are sorted by rank, so we recommend that you set your
+-- highest priority patterns with the lowest rank. A pattern of rank @1@
+-- will be the first to get matched to a log line. A pattern of rank
+-- @1,000,000@ will be last to get matched. When you configure custom log
+-- patterns from the console, a @Low@ severity pattern translates to a
+-- @750,000@ rank. A @Medium@ severity pattern translates to a @500,000@
+-- rank. And a @High@ severity pattern translates to a @250,000@ rank. Rank
+-- values less than @1@ or greater than @1,000,000@ are reserved for
+-- AWS-provided patterns.
+--
+-- 'resourceGroupName', 'updateLogPattern_resourceGroupName' - The name of the resource group.
+--
+-- 'patternSetName', 'updateLogPattern_patternSetName' - The name of the log pattern set.
+--
+-- 'patternName', 'updateLogPattern_patternName' - The name of the log pattern.
+newUpdateLogPattern ::
+  -- | 'resourceGroupName'
+  Prelude.Text ->
+  -- | 'patternSetName'
+  Prelude.Text ->
+  -- | 'patternName'
+  Prelude.Text ->
+  UpdateLogPattern
+newUpdateLogPattern
+  pResourceGroupName_
+  pPatternSetName_
+  pPatternName_ =
+    UpdateLogPattern'
+      { pattern' = Prelude.Nothing,
+        rank = Prelude.Nothing,
+        resourceGroupName = pResourceGroupName_,
+        patternSetName = pPatternSetName_,
+        patternName = pPatternName_
+      }
+
+-- | The log pattern. The pattern must be DFA compatible. Patterns that
+-- utilize forward lookahead or backreference constructions are not
+-- supported.
+updateLogPattern_pattern :: Lens.Lens' UpdateLogPattern (Prelude.Maybe Prelude.Text)
+updateLogPattern_pattern = Lens.lens (\UpdateLogPattern' {pattern'} -> pattern') (\s@UpdateLogPattern' {} a -> s {pattern' = a} :: UpdateLogPattern)
+
+-- | Rank of the log pattern. Must be a value between @1@ and @1,000,000@.
+-- The patterns are sorted by rank, so we recommend that you set your
+-- highest priority patterns with the lowest rank. A pattern of rank @1@
+-- will be the first to get matched to a log line. A pattern of rank
+-- @1,000,000@ will be last to get matched. When you configure custom log
+-- patterns from the console, a @Low@ severity pattern translates to a
+-- @750,000@ rank. A @Medium@ severity pattern translates to a @500,000@
+-- rank. And a @High@ severity pattern translates to a @250,000@ rank. Rank
+-- values less than @1@ or greater than @1,000,000@ are reserved for
+-- AWS-provided patterns.
+updateLogPattern_rank :: Lens.Lens' UpdateLogPattern (Prelude.Maybe Prelude.Int)
+updateLogPattern_rank = Lens.lens (\UpdateLogPattern' {rank} -> rank) (\s@UpdateLogPattern' {} a -> s {rank = a} :: UpdateLogPattern)
+
+-- | The name of the resource group.
+updateLogPattern_resourceGroupName :: Lens.Lens' UpdateLogPattern Prelude.Text
+updateLogPattern_resourceGroupName = Lens.lens (\UpdateLogPattern' {resourceGroupName} -> resourceGroupName) (\s@UpdateLogPattern' {} a -> s {resourceGroupName = a} :: UpdateLogPattern)
+
+-- | The name of the log pattern set.
+updateLogPattern_patternSetName :: Lens.Lens' UpdateLogPattern Prelude.Text
+updateLogPattern_patternSetName = Lens.lens (\UpdateLogPattern' {patternSetName} -> patternSetName) (\s@UpdateLogPattern' {} a -> s {patternSetName = a} :: UpdateLogPattern)
+
+-- | The name of the log pattern.
+updateLogPattern_patternName :: Lens.Lens' UpdateLogPattern Prelude.Text
+updateLogPattern_patternName = Lens.lens (\UpdateLogPattern' {patternName} -> patternName) (\s@UpdateLogPattern' {} a -> s {patternName = a} :: UpdateLogPattern)
+
+instance Core.AWSRequest UpdateLogPattern where
+  type
+    AWSResponse UpdateLogPattern =
+      UpdateLogPatternResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateLogPatternResponse'
+            Prelude.<$> (x Data..?> "LogPattern")
+            Prelude.<*> (x Data..?> "ResourceGroupName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateLogPattern where
+  hashWithSalt _salt UpdateLogPattern' {..} =
+    _salt
+      `Prelude.hashWithSalt` pattern'
+      `Prelude.hashWithSalt` rank
+      `Prelude.hashWithSalt` resourceGroupName
+      `Prelude.hashWithSalt` patternSetName
+      `Prelude.hashWithSalt` patternName
+
+instance Prelude.NFData UpdateLogPattern where
+  rnf UpdateLogPattern' {..} =
+    Prelude.rnf pattern'
+      `Prelude.seq` Prelude.rnf rank
+      `Prelude.seq` Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf patternSetName
+      `Prelude.seq` Prelude.rnf patternName
+
+instance Data.ToHeaders UpdateLogPattern where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "EC2WindowsBarleyService.UpdateLogPattern" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateLogPattern where
+  toJSON UpdateLogPattern' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Pattern" Data..=) Prelude.<$> pattern',
+            ("Rank" Data..=) Prelude.<$> rank,
+            Prelude.Just
+              ("ResourceGroupName" Data..= resourceGroupName),
+            Prelude.Just
+              ("PatternSetName" Data..= patternSetName),
+            Prelude.Just ("PatternName" Data..= patternName)
+          ]
+      )
+
+instance Data.ToPath UpdateLogPattern where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateLogPattern where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateLogPatternResponse' smart constructor.
+data UpdateLogPatternResponse = UpdateLogPatternResponse'
+  { -- | The successfully created log pattern.
+    logPattern :: Prelude.Maybe LogPattern,
+    -- | The name of the resource group.
+    resourceGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateLogPatternResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'logPattern', 'updateLogPatternResponse_logPattern' - The successfully created log pattern.
+--
+-- 'resourceGroupName', 'updateLogPatternResponse_resourceGroupName' - The name of the resource group.
+--
+-- 'httpStatus', 'updateLogPatternResponse_httpStatus' - The response's http status code.
+newUpdateLogPatternResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateLogPatternResponse
+newUpdateLogPatternResponse pHttpStatus_ =
+  UpdateLogPatternResponse'
+    { logPattern =
+        Prelude.Nothing,
+      resourceGroupName = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The successfully created log pattern.
+updateLogPatternResponse_logPattern :: Lens.Lens' UpdateLogPatternResponse (Prelude.Maybe LogPattern)
+updateLogPatternResponse_logPattern = Lens.lens (\UpdateLogPatternResponse' {logPattern} -> logPattern) (\s@UpdateLogPatternResponse' {} a -> s {logPattern = a} :: UpdateLogPatternResponse)
+
+-- | The name of the resource group.
+updateLogPatternResponse_resourceGroupName :: Lens.Lens' UpdateLogPatternResponse (Prelude.Maybe Prelude.Text)
+updateLogPatternResponse_resourceGroupName = Lens.lens (\UpdateLogPatternResponse' {resourceGroupName} -> resourceGroupName) (\s@UpdateLogPatternResponse' {} a -> s {resourceGroupName = a} :: UpdateLogPatternResponse)
+
+-- | The response's http status code.
+updateLogPatternResponse_httpStatus :: Lens.Lens' UpdateLogPatternResponse Prelude.Int
+updateLogPatternResponse_httpStatus = Lens.lens (\UpdateLogPatternResponse' {httpStatus} -> httpStatus) (\s@UpdateLogPatternResponse' {} a -> s {httpStatus = a} :: UpdateLogPatternResponse)
+
+instance Prelude.NFData UpdateLogPatternResponse where
+  rnf UpdateLogPatternResponse' {..} =
+    Prelude.rnf logPattern
+      `Prelude.seq` Prelude.rnf resourceGroupName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ApplicationInsights/Waiters.hs b/gen/Amazonka/ApplicationInsights/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ApplicationInsights/Waiters.hs
@@ -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.ApplicationInsights.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.ApplicationInsights.Waiters where
+
+import Amazonka.ApplicationInsights.Lens
+import Amazonka.ApplicationInsights.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
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -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.ApplicationInsights
+import Test.Amazonka.ApplicationInsights.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "ApplicationInsights"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/ApplicationInsights.hs b/test/Test/Amazonka/ApplicationInsights.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/ApplicationInsights.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.ApplicationInsights
+-- Copyright   : (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.ApplicationInsights
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/ApplicationInsights/Internal.hs b/test/Test/Amazonka/ApplicationInsights/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/ApplicationInsights/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.ApplicationInsights.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.ApplicationInsights.Internal where
diff --git a/test/Test/Amazonka/Gen/ApplicationInsights.hs b/test/Test/Amazonka/Gen/ApplicationInsights.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/ApplicationInsights.hs
@@ -0,0 +1,578 @@
+{-# 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.ApplicationInsights
+-- Copyright   : (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.ApplicationInsights where
+
+import Amazonka.ApplicationInsights
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.ApplicationInsights.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"
+--         [ requestCreateApplication $
+--             newCreateApplication
+--
+--         , requestCreateComponent $
+--             newCreateComponent
+--
+--         , requestCreateLogPattern $
+--             newCreateLogPattern
+--
+--         , requestDeleteApplication $
+--             newDeleteApplication
+--
+--         , requestDeleteComponent $
+--             newDeleteComponent
+--
+--         , requestDeleteLogPattern $
+--             newDeleteLogPattern
+--
+--         , requestDescribeApplication $
+--             newDescribeApplication
+--
+--         , requestDescribeComponent $
+--             newDescribeComponent
+--
+--         , requestDescribeComponentConfiguration $
+--             newDescribeComponentConfiguration
+--
+--         , requestDescribeComponentConfigurationRecommendation $
+--             newDescribeComponentConfigurationRecommendation
+--
+--         , requestDescribeLogPattern $
+--             newDescribeLogPattern
+--
+--         , requestDescribeObservation $
+--             newDescribeObservation
+--
+--         , requestDescribeProblem $
+--             newDescribeProblem
+--
+--         , requestDescribeProblemObservations $
+--             newDescribeProblemObservations
+--
+--         , requestListApplications $
+--             newListApplications
+--
+--         , requestListComponents $
+--             newListComponents
+--
+--         , requestListConfigurationHistory $
+--             newListConfigurationHistory
+--
+--         , requestListLogPatternSets $
+--             newListLogPatternSets
+--
+--         , requestListLogPatterns $
+--             newListLogPatterns
+--
+--         , requestListProblems $
+--             newListProblems
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateApplication $
+--             newUpdateApplication
+--
+--         , requestUpdateComponent $
+--             newUpdateComponent
+--
+--         , requestUpdateComponentConfiguration $
+--             newUpdateComponentConfiguration
+--
+--         , requestUpdateLogPattern $
+--             newUpdateLogPattern
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseCreateApplication $
+--             newCreateApplicationResponse
+--
+--         , responseCreateComponent $
+--             newCreateComponentResponse
+--
+--         , responseCreateLogPattern $
+--             newCreateLogPatternResponse
+--
+--         , responseDeleteApplication $
+--             newDeleteApplicationResponse
+--
+--         , responseDeleteComponent $
+--             newDeleteComponentResponse
+--
+--         , responseDeleteLogPattern $
+--             newDeleteLogPatternResponse
+--
+--         , responseDescribeApplication $
+--             newDescribeApplicationResponse
+--
+--         , responseDescribeComponent $
+--             newDescribeComponentResponse
+--
+--         , responseDescribeComponentConfiguration $
+--             newDescribeComponentConfigurationResponse
+--
+--         , responseDescribeComponentConfigurationRecommendation $
+--             newDescribeComponentConfigurationRecommendationResponse
+--
+--         , responseDescribeLogPattern $
+--             newDescribeLogPatternResponse
+--
+--         , responseDescribeObservation $
+--             newDescribeObservationResponse
+--
+--         , responseDescribeProblem $
+--             newDescribeProblemResponse
+--
+--         , responseDescribeProblemObservations $
+--             newDescribeProblemObservationsResponse
+--
+--         , responseListApplications $
+--             newListApplicationsResponse
+--
+--         , responseListComponents $
+--             newListComponentsResponse
+--
+--         , responseListConfigurationHistory $
+--             newListConfigurationHistoryResponse
+--
+--         , responseListLogPatternSets $
+--             newListLogPatternSetsResponse
+--
+--         , responseListLogPatterns $
+--             newListLogPatternsResponse
+--
+--         , responseListProblems $
+--             newListProblemsResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateApplication $
+--             newUpdateApplicationResponse
+--
+--         , responseUpdateComponent $
+--             newUpdateComponentResponse
+--
+--         , responseUpdateComponentConfiguration $
+--             newUpdateComponentConfigurationResponse
+--
+--         , responseUpdateLogPattern $
+--             newUpdateLogPatternResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestCreateApplication :: CreateApplication -> TestTree
+requestCreateApplication =
+  req
+    "CreateApplication"
+    "fixture/CreateApplication.yaml"
+
+requestCreateComponent :: CreateComponent -> TestTree
+requestCreateComponent =
+  req
+    "CreateComponent"
+    "fixture/CreateComponent.yaml"
+
+requestCreateLogPattern :: CreateLogPattern -> TestTree
+requestCreateLogPattern =
+  req
+    "CreateLogPattern"
+    "fixture/CreateLogPattern.yaml"
+
+requestDeleteApplication :: DeleteApplication -> TestTree
+requestDeleteApplication =
+  req
+    "DeleteApplication"
+    "fixture/DeleteApplication.yaml"
+
+requestDeleteComponent :: DeleteComponent -> TestTree
+requestDeleteComponent =
+  req
+    "DeleteComponent"
+    "fixture/DeleteComponent.yaml"
+
+requestDeleteLogPattern :: DeleteLogPattern -> TestTree
+requestDeleteLogPattern =
+  req
+    "DeleteLogPattern"
+    "fixture/DeleteLogPattern.yaml"
+
+requestDescribeApplication :: DescribeApplication -> TestTree
+requestDescribeApplication =
+  req
+    "DescribeApplication"
+    "fixture/DescribeApplication.yaml"
+
+requestDescribeComponent :: DescribeComponent -> TestTree
+requestDescribeComponent =
+  req
+    "DescribeComponent"
+    "fixture/DescribeComponent.yaml"
+
+requestDescribeComponentConfiguration :: DescribeComponentConfiguration -> TestTree
+requestDescribeComponentConfiguration =
+  req
+    "DescribeComponentConfiguration"
+    "fixture/DescribeComponentConfiguration.yaml"
+
+requestDescribeComponentConfigurationRecommendation :: DescribeComponentConfigurationRecommendation -> TestTree
+requestDescribeComponentConfigurationRecommendation =
+  req
+    "DescribeComponentConfigurationRecommendation"
+    "fixture/DescribeComponentConfigurationRecommendation.yaml"
+
+requestDescribeLogPattern :: DescribeLogPattern -> TestTree
+requestDescribeLogPattern =
+  req
+    "DescribeLogPattern"
+    "fixture/DescribeLogPattern.yaml"
+
+requestDescribeObservation :: DescribeObservation -> TestTree
+requestDescribeObservation =
+  req
+    "DescribeObservation"
+    "fixture/DescribeObservation.yaml"
+
+requestDescribeProblem :: DescribeProblem -> TestTree
+requestDescribeProblem =
+  req
+    "DescribeProblem"
+    "fixture/DescribeProblem.yaml"
+
+requestDescribeProblemObservations :: DescribeProblemObservations -> TestTree
+requestDescribeProblemObservations =
+  req
+    "DescribeProblemObservations"
+    "fixture/DescribeProblemObservations.yaml"
+
+requestListApplications :: ListApplications -> TestTree
+requestListApplications =
+  req
+    "ListApplications"
+    "fixture/ListApplications.yaml"
+
+requestListComponents :: ListComponents -> TestTree
+requestListComponents =
+  req
+    "ListComponents"
+    "fixture/ListComponents.yaml"
+
+requestListConfigurationHistory :: ListConfigurationHistory -> TestTree
+requestListConfigurationHistory =
+  req
+    "ListConfigurationHistory"
+    "fixture/ListConfigurationHistory.yaml"
+
+requestListLogPatternSets :: ListLogPatternSets -> TestTree
+requestListLogPatternSets =
+  req
+    "ListLogPatternSets"
+    "fixture/ListLogPatternSets.yaml"
+
+requestListLogPatterns :: ListLogPatterns -> TestTree
+requestListLogPatterns =
+  req
+    "ListLogPatterns"
+    "fixture/ListLogPatterns.yaml"
+
+requestListProblems :: ListProblems -> TestTree
+requestListProblems =
+  req
+    "ListProblems"
+    "fixture/ListProblems.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateApplication :: UpdateApplication -> TestTree
+requestUpdateApplication =
+  req
+    "UpdateApplication"
+    "fixture/UpdateApplication.yaml"
+
+requestUpdateComponent :: UpdateComponent -> TestTree
+requestUpdateComponent =
+  req
+    "UpdateComponent"
+    "fixture/UpdateComponent.yaml"
+
+requestUpdateComponentConfiguration :: UpdateComponentConfiguration -> TestTree
+requestUpdateComponentConfiguration =
+  req
+    "UpdateComponentConfiguration"
+    "fixture/UpdateComponentConfiguration.yaml"
+
+requestUpdateLogPattern :: UpdateLogPattern -> TestTree
+requestUpdateLogPattern =
+  req
+    "UpdateLogPattern"
+    "fixture/UpdateLogPattern.yaml"
+
+-- Responses
+
+responseCreateApplication :: CreateApplicationResponse -> TestTree
+responseCreateApplication =
+  res
+    "CreateApplicationResponse"
+    "fixture/CreateApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateApplication)
+
+responseCreateComponent :: CreateComponentResponse -> TestTree
+responseCreateComponent =
+  res
+    "CreateComponentResponse"
+    "fixture/CreateComponentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateComponent)
+
+responseCreateLogPattern :: CreateLogPatternResponse -> TestTree
+responseCreateLogPattern =
+  res
+    "CreateLogPatternResponse"
+    "fixture/CreateLogPatternResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateLogPattern)
+
+responseDeleteApplication :: DeleteApplicationResponse -> TestTree
+responseDeleteApplication =
+  res
+    "DeleteApplicationResponse"
+    "fixture/DeleteApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteApplication)
+
+responseDeleteComponent :: DeleteComponentResponse -> TestTree
+responseDeleteComponent =
+  res
+    "DeleteComponentResponse"
+    "fixture/DeleteComponentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteComponent)
+
+responseDeleteLogPattern :: DeleteLogPatternResponse -> TestTree
+responseDeleteLogPattern =
+  res
+    "DeleteLogPatternResponse"
+    "fixture/DeleteLogPatternResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteLogPattern)
+
+responseDescribeApplication :: DescribeApplicationResponse -> TestTree
+responseDescribeApplication =
+  res
+    "DescribeApplicationResponse"
+    "fixture/DescribeApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeApplication)
+
+responseDescribeComponent :: DescribeComponentResponse -> TestTree
+responseDescribeComponent =
+  res
+    "DescribeComponentResponse"
+    "fixture/DescribeComponentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeComponent)
+
+responseDescribeComponentConfiguration :: DescribeComponentConfigurationResponse -> TestTree
+responseDescribeComponentConfiguration =
+  res
+    "DescribeComponentConfigurationResponse"
+    "fixture/DescribeComponentConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeComponentConfiguration)
+
+responseDescribeComponentConfigurationRecommendation :: DescribeComponentConfigurationRecommendationResponse -> TestTree
+responseDescribeComponentConfigurationRecommendation =
+  res
+    "DescribeComponentConfigurationRecommendationResponse"
+    "fixture/DescribeComponentConfigurationRecommendationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeComponentConfigurationRecommendation)
+
+responseDescribeLogPattern :: DescribeLogPatternResponse -> TestTree
+responseDescribeLogPattern =
+  res
+    "DescribeLogPatternResponse"
+    "fixture/DescribeLogPatternResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeLogPattern)
+
+responseDescribeObservation :: DescribeObservationResponse -> TestTree
+responseDescribeObservation =
+  res
+    "DescribeObservationResponse"
+    "fixture/DescribeObservationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeObservation)
+
+responseDescribeProblem :: DescribeProblemResponse -> TestTree
+responseDescribeProblem =
+  res
+    "DescribeProblemResponse"
+    "fixture/DescribeProblemResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeProblem)
+
+responseDescribeProblemObservations :: DescribeProblemObservationsResponse -> TestTree
+responseDescribeProblemObservations =
+  res
+    "DescribeProblemObservationsResponse"
+    "fixture/DescribeProblemObservationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeProblemObservations)
+
+responseListApplications :: ListApplicationsResponse -> TestTree
+responseListApplications =
+  res
+    "ListApplicationsResponse"
+    "fixture/ListApplicationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListApplications)
+
+responseListComponents :: ListComponentsResponse -> TestTree
+responseListComponents =
+  res
+    "ListComponentsResponse"
+    "fixture/ListComponentsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListComponents)
+
+responseListConfigurationHistory :: ListConfigurationHistoryResponse -> TestTree
+responseListConfigurationHistory =
+  res
+    "ListConfigurationHistoryResponse"
+    "fixture/ListConfigurationHistoryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListConfigurationHistory)
+
+responseListLogPatternSets :: ListLogPatternSetsResponse -> TestTree
+responseListLogPatternSets =
+  res
+    "ListLogPatternSetsResponse"
+    "fixture/ListLogPatternSetsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListLogPatternSets)
+
+responseListLogPatterns :: ListLogPatternsResponse -> TestTree
+responseListLogPatterns =
+  res
+    "ListLogPatternsResponse"
+    "fixture/ListLogPatternsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListLogPatterns)
+
+responseListProblems :: ListProblemsResponse -> TestTree
+responseListProblems =
+  res
+    "ListProblemsResponse"
+    "fixture/ListProblemsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListProblems)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+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)
+
+responseUpdateApplication :: UpdateApplicationResponse -> TestTree
+responseUpdateApplication =
+  res
+    "UpdateApplicationResponse"
+    "fixture/UpdateApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateApplication)
+
+responseUpdateComponent :: UpdateComponentResponse -> TestTree
+responseUpdateComponent =
+  res
+    "UpdateComponentResponse"
+    "fixture/UpdateComponentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateComponent)
+
+responseUpdateComponentConfiguration :: UpdateComponentConfigurationResponse -> TestTree
+responseUpdateComponentConfiguration =
+  res
+    "UpdateComponentConfigurationResponse"
+    "fixture/UpdateComponentConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateComponentConfiguration)
+
+responseUpdateLogPattern :: UpdateLogPatternResponse -> TestTree
+responseUpdateLogPattern =
+  res
+    "UpdateLogPatternResponse"
+    "fixture/UpdateLogPatternResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateLogPattern)
