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 Resource Explorer SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2022-07-28@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-resource-explorer-v2)
+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.ResourceExplorer2](http://hackage.haskell.org/package/amazonka-resource-explorer-v2/docs/Amazonka-ResourceExplorer2.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-resource-explorer-v2` 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-resource-explorer-v2.cabal b/amazonka-resource-explorer-v2.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-resource-explorer-v2.cabal
@@ -0,0 +1,114 @@
+cabal-version:      2.2
+name:               amazonka-resource-explorer-v2
+version:            2.0
+synopsis:           Amazon Resource Explorer 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 @2022-07-28@ 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.ResourceExplorer2.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.ResourceExplorer2" 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-resource-explorer-v2
+
+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.ResourceExplorer2
+    Amazonka.ResourceExplorer2.AssociateDefaultView
+    Amazonka.ResourceExplorer2.BatchGetView
+    Amazonka.ResourceExplorer2.CreateIndex
+    Amazonka.ResourceExplorer2.CreateView
+    Amazonka.ResourceExplorer2.DeleteIndex
+    Amazonka.ResourceExplorer2.DeleteView
+    Amazonka.ResourceExplorer2.DisassociateDefaultView
+    Amazonka.ResourceExplorer2.GetDefaultView
+    Amazonka.ResourceExplorer2.GetIndex
+    Amazonka.ResourceExplorer2.GetView
+    Amazonka.ResourceExplorer2.Lens
+    Amazonka.ResourceExplorer2.ListIndexes
+    Amazonka.ResourceExplorer2.ListSupportedResourceTypes
+    Amazonka.ResourceExplorer2.ListTagsForResource
+    Amazonka.ResourceExplorer2.ListViews
+    Amazonka.ResourceExplorer2.Search
+    Amazonka.ResourceExplorer2.TagResource
+    Amazonka.ResourceExplorer2.Types
+    Amazonka.ResourceExplorer2.Types.BatchGetViewError
+    Amazonka.ResourceExplorer2.Types.Document
+    Amazonka.ResourceExplorer2.Types.IncludedProperty
+    Amazonka.ResourceExplorer2.Types.Index
+    Amazonka.ResourceExplorer2.Types.IndexState
+    Amazonka.ResourceExplorer2.Types.IndexType
+    Amazonka.ResourceExplorer2.Types.Resource
+    Amazonka.ResourceExplorer2.Types.ResourceCount
+    Amazonka.ResourceExplorer2.Types.ResourceProperty
+    Amazonka.ResourceExplorer2.Types.SearchFilter
+    Amazonka.ResourceExplorer2.Types.SupportedResourceType
+    Amazonka.ResourceExplorer2.Types.View
+    Amazonka.ResourceExplorer2.UntagResource
+    Amazonka.ResourceExplorer2.UpdateIndexType
+    Amazonka.ResourceExplorer2.UpdateView
+    Amazonka.ResourceExplorer2.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-resource-explorer-v2-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.Gen.ResourceExplorer2
+    Test.Amazonka.ResourceExplorer2
+    Test.Amazonka.ResourceExplorer2.Internal
+
+  build-depends:
+    , amazonka-core                  >=2.0 && <2.1
+    , amazonka-resource-explorer-v2
+    , amazonka-test                  >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/AssociateDefaultView.yaml b/fixture/AssociateDefaultView.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateDefaultView.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/AssociateDefaultViewResponse.proto b/fixture/AssociateDefaultViewResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateDefaultViewResponse.proto
diff --git a/fixture/BatchGetView.yaml b/fixture/BatchGetView.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/BatchGetView.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/BatchGetViewResponse.proto b/fixture/BatchGetViewResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/BatchGetViewResponse.proto
diff --git a/fixture/CreateIndex.yaml b/fixture/CreateIndex.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateIndex.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/CreateIndexResponse.proto b/fixture/CreateIndexResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateIndexResponse.proto
diff --git a/fixture/CreateView.yaml b/fixture/CreateView.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateView.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/CreateViewResponse.proto b/fixture/CreateViewResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateViewResponse.proto
diff --git a/fixture/DeleteIndex.yaml b/fixture/DeleteIndex.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteIndex.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/DeleteIndexResponse.proto b/fixture/DeleteIndexResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteIndexResponse.proto
diff --git a/fixture/DeleteView.yaml b/fixture/DeleteView.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteView.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/DeleteViewResponse.proto b/fixture/DeleteViewResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteViewResponse.proto
diff --git a/fixture/DisassociateDefaultView.yaml b/fixture/DisassociateDefaultView.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateDefaultView.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/DisassociateDefaultViewResponse.proto b/fixture/DisassociateDefaultViewResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateDefaultViewResponse.proto
diff --git a/fixture/GetDefaultView.yaml b/fixture/GetDefaultView.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetDefaultView.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/GetDefaultViewResponse.proto b/fixture/GetDefaultViewResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetDefaultViewResponse.proto
diff --git a/fixture/GetIndex.yaml b/fixture/GetIndex.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetIndex.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/GetIndexResponse.proto b/fixture/GetIndexResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetIndexResponse.proto
diff --git a/fixture/GetView.yaml b/fixture/GetView.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetView.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/GetViewResponse.proto b/fixture/GetViewResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetViewResponse.proto
diff --git a/fixture/ListIndexes.yaml b/fixture/ListIndexes.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListIndexes.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/ListIndexesResponse.proto b/fixture/ListIndexesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListIndexesResponse.proto
diff --git a/fixture/ListSupportedResourceTypes.yaml b/fixture/ListSupportedResourceTypes.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListSupportedResourceTypes.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/ListSupportedResourceTypesResponse.proto b/fixture/ListSupportedResourceTypesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListSupportedResourceTypesResponse.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: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/ListViews.yaml b/fixture/ListViews.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListViews.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/ListViewsResponse.proto b/fixture/ListViewsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListViewsResponse.proto
diff --git a/fixture/Search.yaml b/fixture/Search.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/Search.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/SearchResponse.proto b/fixture/SearchResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SearchResponse.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/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/UpdateIndexType.yaml b/fixture/UpdateIndexType.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateIndexType.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/UpdateIndexTypeResponse.proto b/fixture/UpdateIndexTypeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateIndexTypeResponse.proto
diff --git a/fixture/UpdateView.yaml b/fixture/UpdateView.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateView.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/resource-explorer-2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  resource-explorer-2.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/UpdateViewResponse.proto b/fixture/UpdateViewResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateViewResponse.proto
diff --git a/gen/Amazonka/ResourceExplorer2.hs b/gen/Amazonka/ResourceExplorer2.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2.hs
@@ -0,0 +1,294 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2
+-- 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 @2022-07-28@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon Web Services Resource Explorer is a resource search and discovery
+-- service. By using Resource Explorer, you can explore your resources
+-- using an internet search engine-like experience. Examples of resources
+-- include Amazon Relational Database Service (Amazon RDS) instances,
+-- Amazon Simple Storage Service (Amazon S3) buckets, or Amazon DynamoDB
+-- tables. You can search for your resources using resource metadata like
+-- names, tags, and IDs. Resource Explorer can search across all of the
+-- Amazon Web Services Regions in your account in which you turn the
+-- service on, to simplify your cross-Region workloads.
+--
+-- Resource Explorer scans the resources in each of the Amazon Web Services
+-- Regions in your Amazon Web Services account in which you turn on
+-- Resource Explorer. Resource Explorer
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/getting-started-terms-and-concepts.html#term-index creates and maintains an index>
+-- in each Region, with the details of that Region\'s resources.
+--
+-- You can
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/manage-aggregator-region.html search across all of the indexed Regions in your account>
+-- by designating one of your Amazon Web Services Regions to contain the
+-- aggregator index for the account. When you
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/manage-aggregator-region-turn-on.html promote a local index in a Region to become the aggregator index for the account>,
+-- Resource Explorer automatically replicates the index information from
+-- all local indexes in the other Regions to the aggregator index.
+-- Therefore, the Region with the aggregator index has a copy of all
+-- resource information for all Regions in the account where you turned on
+-- Resource Explorer. As a result, views in the aggregator index Region
+-- include resources from all of the indexed Regions in your account.
+--
+-- For more information about Amazon Web Services Resource Explorer,
+-- including how to enable and configure the service, see the
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/ Amazon Web Services Resource Explorer User Guide>.
+module Amazonka.ResourceExplorer2
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ServiceQuotaExceededException
+    _ServiceQuotaExceededException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** UnauthorizedException
+    _UnauthorizedException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AssociateDefaultView
+    AssociateDefaultView (AssociateDefaultView'),
+    newAssociateDefaultView,
+    AssociateDefaultViewResponse (AssociateDefaultViewResponse'),
+    newAssociateDefaultViewResponse,
+
+    -- ** BatchGetView
+    BatchGetView (BatchGetView'),
+    newBatchGetView,
+    BatchGetViewResponse (BatchGetViewResponse'),
+    newBatchGetViewResponse,
+
+    -- ** CreateIndex
+    CreateIndex (CreateIndex'),
+    newCreateIndex,
+    CreateIndexResponse (CreateIndexResponse'),
+    newCreateIndexResponse,
+
+    -- ** CreateView
+    CreateView (CreateView'),
+    newCreateView,
+    CreateViewResponse (CreateViewResponse'),
+    newCreateViewResponse,
+
+    -- ** DeleteIndex
+    DeleteIndex (DeleteIndex'),
+    newDeleteIndex,
+    DeleteIndexResponse (DeleteIndexResponse'),
+    newDeleteIndexResponse,
+
+    -- ** DeleteView
+    DeleteView (DeleteView'),
+    newDeleteView,
+    DeleteViewResponse (DeleteViewResponse'),
+    newDeleteViewResponse,
+
+    -- ** DisassociateDefaultView
+    DisassociateDefaultView (DisassociateDefaultView'),
+    newDisassociateDefaultView,
+    DisassociateDefaultViewResponse (DisassociateDefaultViewResponse'),
+    newDisassociateDefaultViewResponse,
+
+    -- ** GetDefaultView
+    GetDefaultView (GetDefaultView'),
+    newGetDefaultView,
+    GetDefaultViewResponse (GetDefaultViewResponse'),
+    newGetDefaultViewResponse,
+
+    -- ** GetIndex
+    GetIndex (GetIndex'),
+    newGetIndex,
+    GetIndexResponse (GetIndexResponse'),
+    newGetIndexResponse,
+
+    -- ** GetView
+    GetView (GetView'),
+    newGetView,
+    GetViewResponse (GetViewResponse'),
+    newGetViewResponse,
+
+    -- ** ListIndexes (Paginated)
+    ListIndexes (ListIndexes'),
+    newListIndexes,
+    ListIndexesResponse (ListIndexesResponse'),
+    newListIndexesResponse,
+
+    -- ** ListSupportedResourceTypes (Paginated)
+    ListSupportedResourceTypes (ListSupportedResourceTypes'),
+    newListSupportedResourceTypes,
+    ListSupportedResourceTypesResponse (ListSupportedResourceTypesResponse'),
+    newListSupportedResourceTypesResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** ListViews (Paginated)
+    ListViews (ListViews'),
+    newListViews,
+    ListViewsResponse (ListViewsResponse'),
+    newListViewsResponse,
+
+    -- ** Search (Paginated)
+    Search (Search'),
+    newSearch,
+    SearchResponse (SearchResponse'),
+    newSearchResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateIndexType
+    UpdateIndexType (UpdateIndexType'),
+    newUpdateIndexType,
+    UpdateIndexTypeResponse (UpdateIndexTypeResponse'),
+    newUpdateIndexTypeResponse,
+
+    -- ** UpdateView
+    UpdateView (UpdateView'),
+    newUpdateView,
+    UpdateViewResponse (UpdateViewResponse'),
+    newUpdateViewResponse,
+
+    -- * Types
+
+    -- ** IndexState
+    IndexState (..),
+
+    -- ** IndexType
+    IndexType (..),
+
+    -- ** BatchGetViewError
+    BatchGetViewError (BatchGetViewError'),
+    newBatchGetViewError,
+
+    -- ** Document
+    Document (Document'),
+    newDocument,
+
+    -- ** IncludedProperty
+    IncludedProperty (IncludedProperty'),
+    newIncludedProperty,
+
+    -- ** Index
+    Index (Index'),
+    newIndex,
+
+    -- ** Resource
+    Resource (Resource'),
+    newResource,
+
+    -- ** ResourceCount
+    ResourceCount (ResourceCount'),
+    newResourceCount,
+
+    -- ** ResourceProperty
+    ResourceProperty (ResourceProperty'),
+    newResourceProperty,
+
+    -- ** SearchFilter
+    SearchFilter (SearchFilter'),
+    newSearchFilter,
+
+    -- ** SupportedResourceType
+    SupportedResourceType (SupportedResourceType'),
+    newSupportedResourceType,
+
+    -- ** View
+    View (View'),
+    newView,
+  )
+where
+
+import Amazonka.ResourceExplorer2.AssociateDefaultView
+import Amazonka.ResourceExplorer2.BatchGetView
+import Amazonka.ResourceExplorer2.CreateIndex
+import Amazonka.ResourceExplorer2.CreateView
+import Amazonka.ResourceExplorer2.DeleteIndex
+import Amazonka.ResourceExplorer2.DeleteView
+import Amazonka.ResourceExplorer2.DisassociateDefaultView
+import Amazonka.ResourceExplorer2.GetDefaultView
+import Amazonka.ResourceExplorer2.GetIndex
+import Amazonka.ResourceExplorer2.GetView
+import Amazonka.ResourceExplorer2.Lens
+import Amazonka.ResourceExplorer2.ListIndexes
+import Amazonka.ResourceExplorer2.ListSupportedResourceTypes
+import Amazonka.ResourceExplorer2.ListTagsForResource
+import Amazonka.ResourceExplorer2.ListViews
+import Amazonka.ResourceExplorer2.Search
+import Amazonka.ResourceExplorer2.TagResource
+import Amazonka.ResourceExplorer2.Types
+import Amazonka.ResourceExplorer2.UntagResource
+import Amazonka.ResourceExplorer2.UpdateIndexType
+import Amazonka.ResourceExplorer2.UpdateView
+import Amazonka.ResourceExplorer2.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 'ResourceExplorer2'.
+
+-- $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/ResourceExplorer2/AssociateDefaultView.hs b/gen/Amazonka/ResourceExplorer2/AssociateDefaultView.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/AssociateDefaultView.hs
@@ -0,0 +1,196 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.AssociateDefaultView
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the specified view as the default for the Amazon Web Services
+-- Region in which you call this operation. When a user performs a Search
+-- that doesn\'t explicitly specify which view to use, then Amazon Web
+-- Services Resource Explorer automatically chooses this default view for
+-- searches performed in this Amazon Web Services Region.
+--
+-- If an Amazon Web Services Region doesn\'t have a default view
+-- configured, then users must explicitly specify a view with every
+-- @Search@ operation performed in that Region.
+module Amazonka.ResourceExplorer2.AssociateDefaultView
+  ( -- * Creating a Request
+    AssociateDefaultView (..),
+    newAssociateDefaultView,
+
+    -- * Request Lenses
+    associateDefaultView_viewArn,
+
+    -- * Destructuring the Response
+    AssociateDefaultViewResponse (..),
+    newAssociateDefaultViewResponse,
+
+    -- * Response Lenses
+    associateDefaultViewResponse_viewArn,
+    associateDefaultViewResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociateDefaultView' smart constructor.
+data AssociateDefaultView = AssociateDefaultView'
+  { -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the view to set as the default for the Amazon Web Services Region and
+    -- Amazon Web Services account in which you call this operation. The
+    -- specified view must already exist in the called Region.
+    viewArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateDefaultView' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'viewArn', 'associateDefaultView_viewArn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view to set as the default for the Amazon Web Services Region and
+-- Amazon Web Services account in which you call this operation. The
+-- specified view must already exist in the called Region.
+newAssociateDefaultView ::
+  -- | 'viewArn'
+  Prelude.Text ->
+  AssociateDefaultView
+newAssociateDefaultView pViewArn_ =
+  AssociateDefaultView' {viewArn = pViewArn_}
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view to set as the default for the Amazon Web Services Region and
+-- Amazon Web Services account in which you call this operation. The
+-- specified view must already exist in the called Region.
+associateDefaultView_viewArn :: Lens.Lens' AssociateDefaultView Prelude.Text
+associateDefaultView_viewArn = Lens.lens (\AssociateDefaultView' {viewArn} -> viewArn) (\s@AssociateDefaultView' {} a -> s {viewArn = a} :: AssociateDefaultView)
+
+instance Core.AWSRequest AssociateDefaultView where
+  type
+    AWSResponse AssociateDefaultView =
+      AssociateDefaultViewResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AssociateDefaultViewResponse'
+            Prelude.<$> (x Data..?> "ViewArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AssociateDefaultView where
+  hashWithSalt _salt AssociateDefaultView' {..} =
+    _salt `Prelude.hashWithSalt` viewArn
+
+instance Prelude.NFData AssociateDefaultView where
+  rnf AssociateDefaultView' {..} = Prelude.rnf viewArn
+
+instance Data.ToHeaders AssociateDefaultView where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociateDefaultView where
+  toJSON AssociateDefaultView' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ViewArn" Data..= viewArn)]
+      )
+
+instance Data.ToPath AssociateDefaultView where
+  toPath = Prelude.const "/AssociateDefaultView"
+
+instance Data.ToQuery AssociateDefaultView where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateDefaultViewResponse' smart constructor.
+data AssociateDefaultViewResponse = AssociateDefaultViewResponse'
+  { -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the view that the operation set as the default for queries made in
+    -- the Amazon Web Services Region and Amazon Web Services account in which
+    -- you called this operation.
+    viewArn :: 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 'AssociateDefaultViewResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'viewArn', 'associateDefaultViewResponse_viewArn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view that the operation set as the default for queries made in
+-- the Amazon Web Services Region and Amazon Web Services account in which
+-- you called this operation.
+--
+-- 'httpStatus', 'associateDefaultViewResponse_httpStatus' - The response's http status code.
+newAssociateDefaultViewResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateDefaultViewResponse
+newAssociateDefaultViewResponse pHttpStatus_ =
+  AssociateDefaultViewResponse'
+    { viewArn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view that the operation set as the default for queries made in
+-- the Amazon Web Services Region and Amazon Web Services account in which
+-- you called this operation.
+associateDefaultViewResponse_viewArn :: Lens.Lens' AssociateDefaultViewResponse (Prelude.Maybe Prelude.Text)
+associateDefaultViewResponse_viewArn = Lens.lens (\AssociateDefaultViewResponse' {viewArn} -> viewArn) (\s@AssociateDefaultViewResponse' {} a -> s {viewArn = a} :: AssociateDefaultViewResponse)
+
+-- | The response's http status code.
+associateDefaultViewResponse_httpStatus :: Lens.Lens' AssociateDefaultViewResponse Prelude.Int
+associateDefaultViewResponse_httpStatus = Lens.lens (\AssociateDefaultViewResponse' {httpStatus} -> httpStatus) (\s@AssociateDefaultViewResponse' {} a -> s {httpStatus = a} :: AssociateDefaultViewResponse)
+
+instance Prelude.NFData AssociateDefaultViewResponse where
+  rnf AssociateDefaultViewResponse' {..} =
+    Prelude.rnf viewArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/BatchGetView.hs b/gen/Amazonka/ResourceExplorer2/BatchGetView.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/BatchGetView.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.ResourceExplorer2.BatchGetView
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves details about a list of views.
+module Amazonka.ResourceExplorer2.BatchGetView
+  ( -- * Creating a Request
+    BatchGetView (..),
+    newBatchGetView,
+
+    -- * Request Lenses
+    batchGetView_viewArns,
+
+    -- * Destructuring the Response
+    BatchGetViewResponse (..),
+    newBatchGetViewResponse,
+
+    -- * Response Lenses
+    batchGetViewResponse_errors,
+    batchGetViewResponse_views,
+    batchGetViewResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newBatchGetView' smart constructor.
+data BatchGetView = BatchGetView'
+  { -- | A list of
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource names (ARNs)>
+    -- that identify the views you want details for.
+    viewArns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchGetView' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'viewArns', 'batchGetView_viewArns' - A list of
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource names (ARNs)>
+-- that identify the views you want details for.
+newBatchGetView ::
+  BatchGetView
+newBatchGetView =
+  BatchGetView' {viewArns = Prelude.Nothing}
+
+-- | A list of
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource names (ARNs)>
+-- that identify the views you want details for.
+batchGetView_viewArns :: Lens.Lens' BatchGetView (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+batchGetView_viewArns = Lens.lens (\BatchGetView' {viewArns} -> viewArns) (\s@BatchGetView' {} a -> s {viewArns = a} :: BatchGetView) Prelude.. Lens.mapping Lens.coerced
+
+instance Core.AWSRequest BatchGetView where
+  type AWSResponse BatchGetView = BatchGetViewResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          BatchGetViewResponse'
+            Prelude.<$> (x Data..?> "Errors" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Views" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable BatchGetView where
+  hashWithSalt _salt BatchGetView' {..} =
+    _salt `Prelude.hashWithSalt` viewArns
+
+instance Prelude.NFData BatchGetView where
+  rnf BatchGetView' {..} = Prelude.rnf viewArns
+
+instance Data.ToHeaders BatchGetView where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON BatchGetView where
+  toJSON BatchGetView' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("ViewArns" Data..=) Prelude.<$> viewArns]
+      )
+
+instance Data.ToPath BatchGetView where
+  toPath = Prelude.const "/BatchGetView"
+
+instance Data.ToQuery BatchGetView where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newBatchGetViewResponse' smart constructor.
+data BatchGetViewResponse = BatchGetViewResponse'
+  { -- | If any of the specified ARNs result in an error, then this structure
+    -- describes the error.
+    errors :: Prelude.Maybe [BatchGetViewError],
+    -- | A structure with a list of objects with details for each of the
+    -- specified views.
+    views :: Prelude.Maybe [View],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchGetViewResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errors', 'batchGetViewResponse_errors' - If any of the specified ARNs result in an error, then this structure
+-- describes the error.
+--
+-- 'views', 'batchGetViewResponse_views' - A structure with a list of objects with details for each of the
+-- specified views.
+--
+-- 'httpStatus', 'batchGetViewResponse_httpStatus' - The response's http status code.
+newBatchGetViewResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchGetViewResponse
+newBatchGetViewResponse pHttpStatus_ =
+  BatchGetViewResponse'
+    { errors = Prelude.Nothing,
+      views = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If any of the specified ARNs result in an error, then this structure
+-- describes the error.
+batchGetViewResponse_errors :: Lens.Lens' BatchGetViewResponse (Prelude.Maybe [BatchGetViewError])
+batchGetViewResponse_errors = Lens.lens (\BatchGetViewResponse' {errors} -> errors) (\s@BatchGetViewResponse' {} a -> s {errors = a} :: BatchGetViewResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A structure with a list of objects with details for each of the
+-- specified views.
+batchGetViewResponse_views :: Lens.Lens' BatchGetViewResponse (Prelude.Maybe [View])
+batchGetViewResponse_views = Lens.lens (\BatchGetViewResponse' {views} -> views) (\s@BatchGetViewResponse' {} a -> s {views = a} :: BatchGetViewResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+batchGetViewResponse_httpStatus :: Lens.Lens' BatchGetViewResponse Prelude.Int
+batchGetViewResponse_httpStatus = Lens.lens (\BatchGetViewResponse' {httpStatus} -> httpStatus) (\s@BatchGetViewResponse' {} a -> s {httpStatus = a} :: BatchGetViewResponse)
+
+instance Prelude.NFData BatchGetViewResponse where
+  rnf BatchGetViewResponse' {..} =
+    Prelude.rnf errors
+      `Prelude.seq` Prelude.rnf views
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/CreateIndex.hs b/gen/Amazonka/ResourceExplorer2/CreateIndex.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/CreateIndex.hs
@@ -0,0 +1,289 @@
+{-# 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.ResourceExplorer2.CreateIndex
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Turns on Amazon Web Services Resource Explorer in the Amazon Web
+-- Services Region in which you called this operation by creating an index.
+-- Resource Explorer begins discovering the resources in this Region and
+-- stores the details about the resources in the index so that they can be
+-- queried by using the Search operation. You can create only one index in
+-- a Region.
+--
+-- This operation creates only a /local/ index. To promote the local index
+-- in one Amazon Web Services Region into the aggregator index for the
+-- Amazon Web Services account, use the UpdateIndexType operation. For more
+-- information, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/manage-aggregator-region.html Turning on cross-Region search by creating an aggregator index>
+-- in the /Amazon Web Services Resource Explorer User Guide/.
+--
+-- For more details about what happens when you turn on Resource Explorer
+-- in an Amazon Web Services Region, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/manage-service-activate.html Turn on Resource Explorer to index your resources in an Amazon Web Services Region>
+-- in the /Amazon Web Services Resource Explorer User Guide/.
+--
+-- If this is the first Amazon Web Services Region in which you\'ve created
+-- an index for Resource Explorer, then this operation also
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/security_iam_service-linked-roles.html creates a service-linked role>
+-- in your Amazon Web Services account that allows Resource Explorer to
+-- enumerate your resources to populate the index.
+--
+-- -   __Action__: @resource-explorer-2:CreateIndex@
+--
+--     __Resource__: The ARN of the index (as it will exist after the
+--     operation completes) in the Amazon Web Services Region and account
+--     in which you\'re trying to create the index. Use the wildcard
+--     character (@*@) at the end of the string to match the eventual UUID.
+--     For example, the following @Resource@ element restricts the role or
+--     user to creating an index in only the @us-east-2@ Region of the
+--     specified account.
+--
+--     @\"Resource\": \"arn:aws:resource-explorer-2:us-west-2:@/@\<account-id>@/@:index\/*\"@
+--
+--     Alternatively, you can use @\"Resource\": \"*\"@ to allow the role
+--     or user to create an index in any Region.
+--
+-- -   __Action__: @iam:CreateServiceLinkedRole@
+--
+--     __Resource__: No specific resource (*).
+--
+--     This permission is required only the first time you create an index
+--     to turn on Resource Explorer in the account. Resource Explorer uses
+--     this to create the
+--     <https://docs.aws.amazon.com/resource-explorer/latest/userguide/security_iam_service-linked-roles.html service-linked role needed to index the resources in your account>.
+--     Resource Explorer uses the same service-linked role for all
+--     additional indexes you create afterwards.
+module Amazonka.ResourceExplorer2.CreateIndex
+  ( -- * Creating a Request
+    CreateIndex (..),
+    newCreateIndex,
+
+    -- * Request Lenses
+    createIndex_clientToken,
+    createIndex_tags,
+
+    -- * Destructuring the Response
+    CreateIndexResponse (..),
+    newCreateIndexResponse,
+
+    -- * Response Lenses
+    createIndexResponse_arn,
+    createIndexResponse_createdAt,
+    createIndexResponse_state,
+    createIndexResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateIndex' smart constructor.
+data CreateIndex = CreateIndex'
+  { -- | This value helps ensure idempotency. Resource Explorer uses this value
+    -- to prevent the accidental creation of duplicate versions. We recommend
+    -- that you generate a
+    -- <https://wikipedia.org/wiki/Universally_unique_identifier UUID-type value>
+    -- to ensure the uniqueness of your views.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The specified tags are attached only to the index created in this Amazon
+    -- Web Services Region. The tags aren\'t attached to any of the resources
+    -- listed in the index.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateIndex' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientToken', 'createIndex_clientToken' - This value helps ensure idempotency. Resource Explorer uses this value
+-- to prevent the accidental creation of duplicate versions. We recommend
+-- that you generate a
+-- <https://wikipedia.org/wiki/Universally_unique_identifier UUID-type value>
+-- to ensure the uniqueness of your views.
+--
+-- 'tags', 'createIndex_tags' - The specified tags are attached only to the index created in this Amazon
+-- Web Services Region. The tags aren\'t attached to any of the resources
+-- listed in the index.
+newCreateIndex ::
+  CreateIndex
+newCreateIndex =
+  CreateIndex'
+    { clientToken = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | This value helps ensure idempotency. Resource Explorer uses this value
+-- to prevent the accidental creation of duplicate versions. We recommend
+-- that you generate a
+-- <https://wikipedia.org/wiki/Universally_unique_identifier UUID-type value>
+-- to ensure the uniqueness of your views.
+createIndex_clientToken :: Lens.Lens' CreateIndex (Prelude.Maybe Prelude.Text)
+createIndex_clientToken = Lens.lens (\CreateIndex' {clientToken} -> clientToken) (\s@CreateIndex' {} a -> s {clientToken = a} :: CreateIndex)
+
+-- | The specified tags are attached only to the index created in this Amazon
+-- Web Services Region. The tags aren\'t attached to any of the resources
+-- listed in the index.
+createIndex_tags :: Lens.Lens' CreateIndex (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createIndex_tags = Lens.lens (\CreateIndex' {tags} -> tags) (\s@CreateIndex' {} a -> s {tags = a} :: CreateIndex) Prelude.. Lens.mapping Lens.coerced
+
+instance Core.AWSRequest CreateIndex where
+  type AWSResponse CreateIndex = CreateIndexResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateIndexResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreatedAt")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateIndex where
+  hashWithSalt _salt CreateIndex' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData CreateIndex where
+  rnf CreateIndex' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders CreateIndex where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateIndex where
+  toJSON CreateIndex' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("Tags" Data..=) Prelude.<$> tags
+          ]
+      )
+
+instance Data.ToPath CreateIndex where
+  toPath = Prelude.const "/CreateIndex"
+
+instance Data.ToQuery CreateIndex where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateIndexResponse' smart constructor.
+data CreateIndexResponse = CreateIndexResponse'
+  { -- | The ARN of the new local index for the Region. You can reference this
+    -- ARN in IAM permission policies to authorize the following operations:
+    -- DeleteIndex | GetIndex | UpdateIndexType | CreateView
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The date and timestamp when the index was created.
+    createdAt :: Prelude.Maybe Data.ISO8601,
+    -- | Indicates the current state of the index. You can check for changes to
+    -- the state for asynchronous operations by calling the GetIndex operation.
+    --
+    -- The state can remain in the @CREATING@ or @UPDATING@ state for several
+    -- hours as Resource Explorer discovers the information about your
+    -- resources and populates the index.
+    state :: Prelude.Maybe IndexState,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateIndexResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'createIndexResponse_arn' - The ARN of the new local index for the Region. You can reference this
+-- ARN in IAM permission policies to authorize the following operations:
+-- DeleteIndex | GetIndex | UpdateIndexType | CreateView
+--
+-- 'createdAt', 'createIndexResponse_createdAt' - The date and timestamp when the index was created.
+--
+-- 'state', 'createIndexResponse_state' - Indicates the current state of the index. You can check for changes to
+-- the state for asynchronous operations by calling the GetIndex operation.
+--
+-- The state can remain in the @CREATING@ or @UPDATING@ state for several
+-- hours as Resource Explorer discovers the information about your
+-- resources and populates the index.
+--
+-- 'httpStatus', 'createIndexResponse_httpStatus' - The response's http status code.
+newCreateIndexResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateIndexResponse
+newCreateIndexResponse pHttpStatus_ =
+  CreateIndexResponse'
+    { arn = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      state = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the new local index for the Region. You can reference this
+-- ARN in IAM permission policies to authorize the following operations:
+-- DeleteIndex | GetIndex | UpdateIndexType | CreateView
+createIndexResponse_arn :: Lens.Lens' CreateIndexResponse (Prelude.Maybe Prelude.Text)
+createIndexResponse_arn = Lens.lens (\CreateIndexResponse' {arn} -> arn) (\s@CreateIndexResponse' {} a -> s {arn = a} :: CreateIndexResponse)
+
+-- | The date and timestamp when the index was created.
+createIndexResponse_createdAt :: Lens.Lens' CreateIndexResponse (Prelude.Maybe Prelude.UTCTime)
+createIndexResponse_createdAt = Lens.lens (\CreateIndexResponse' {createdAt} -> createdAt) (\s@CreateIndexResponse' {} a -> s {createdAt = a} :: CreateIndexResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the current state of the index. You can check for changes to
+-- the state for asynchronous operations by calling the GetIndex operation.
+--
+-- The state can remain in the @CREATING@ or @UPDATING@ state for several
+-- hours as Resource Explorer discovers the information about your
+-- resources and populates the index.
+createIndexResponse_state :: Lens.Lens' CreateIndexResponse (Prelude.Maybe IndexState)
+createIndexResponse_state = Lens.lens (\CreateIndexResponse' {state} -> state) (\s@CreateIndexResponse' {} a -> s {state = a} :: CreateIndexResponse)
+
+-- | The response's http status code.
+createIndexResponse_httpStatus :: Lens.Lens' CreateIndexResponse Prelude.Int
+createIndexResponse_httpStatus = Lens.lens (\CreateIndexResponse' {httpStatus} -> httpStatus) (\s@CreateIndexResponse' {} a -> s {httpStatus = a} :: CreateIndexResponse)
+
+instance Prelude.NFData CreateIndexResponse where
+  rnf CreateIndexResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/CreateView.hs b/gen/Amazonka/ResourceExplorer2/CreateView.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/CreateView.hs
@@ -0,0 +1,319 @@
+{-# 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.ResourceExplorer2.CreateView
+-- 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 view that users can query by using the Search operation.
+-- Results from queries that you make using this view include only
+-- resources that match the view\'s @Filters@. For more information about
+-- Amazon Web Services Resource Explorer views, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/manage-views.html Managing views>
+-- in the /Amazon Web Services Resource Explorer User Guide/.
+--
+-- Only the principals with an IAM identity-based policy that grants
+-- @Allow@ to the @Search@ action on a @Resource@ with the
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of this view can Search using views you create with this operation.
+module Amazonka.ResourceExplorer2.CreateView
+  ( -- * Creating a Request
+    CreateView (..),
+    newCreateView,
+
+    -- * Request Lenses
+    createView_clientToken,
+    createView_filters,
+    createView_includedProperties,
+    createView_tags,
+    createView_viewName,
+
+    -- * Destructuring the Response
+    CreateViewResponse (..),
+    newCreateViewResponse,
+
+    -- * Response Lenses
+    createViewResponse_view,
+    createViewResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateView' smart constructor.
+data CreateView = CreateView'
+  { -- | This value helps ensure idempotency. Resource Explorer uses this value
+    -- to prevent the accidental creation of duplicate versions. We recommend
+    -- that you generate a
+    -- <https://wikipedia.org/wiki/Universally_unique_identifier UUID-type value>
+    -- to ensure the uniqueness of your views.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | An array of strings that specify which resources are included in the
+    -- results of queries made using this view. When you use this view in a
+    -- Search operation, the filter string is combined with the search\'s
+    -- @QueryString@ parameter using a logical @AND@ operator.
+    --
+    -- For information about the supported syntax, see
+    -- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html Search query reference for Resource Explorer>
+    -- in the /Amazon Web Services Resource Explorer User Guide/.
+    --
+    -- This query string in the context of this operation supports only
+    -- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html#query-syntax-filters filter prefixes>
+    -- with optional
+    -- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html#query-syntax-operators operators>.
+    -- It doesn\'t support free-form text. For example, the string
+    -- @region:us* service:ec2 -tag:stage=prod@ includes all Amazon EC2
+    -- resources in any Amazon Web Services Region that begins with the letters
+    -- @us@ and is /not/ tagged with a key @Stage@ that has the value @prod@.
+    filters :: Prelude.Maybe (Data.Sensitive SearchFilter),
+    -- | Specifies optional fields that you want included in search results from
+    -- this view. It is a list of objects that each describe a field to
+    -- include.
+    --
+    -- The default is an empty list, with no optional fields included in the
+    -- results.
+    includedProperties :: Prelude.Maybe [IncludedProperty],
+    -- | Tag key and value pairs that are attached to the view.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The name of the new view. This name appears in the list of views in
+    -- Resource Explorer.
+    --
+    -- The name must be no more than 64 characters long, and can include
+    -- letters, digits, and the dash (-) character. The name must be unique
+    -- within its Amazon Web Services Region.
+    viewName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateView' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientToken', 'createView_clientToken' - This value helps ensure idempotency. Resource Explorer uses this value
+-- to prevent the accidental creation of duplicate versions. We recommend
+-- that you generate a
+-- <https://wikipedia.org/wiki/Universally_unique_identifier UUID-type value>
+-- to ensure the uniqueness of your views.
+--
+-- 'filters', 'createView_filters' - An array of strings that specify which resources are included in the
+-- results of queries made using this view. When you use this view in a
+-- Search operation, the filter string is combined with the search\'s
+-- @QueryString@ parameter using a logical @AND@ operator.
+--
+-- For information about the supported syntax, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html Search query reference for Resource Explorer>
+-- in the /Amazon Web Services Resource Explorer User Guide/.
+--
+-- This query string in the context of this operation supports only
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html#query-syntax-filters filter prefixes>
+-- with optional
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html#query-syntax-operators operators>.
+-- It doesn\'t support free-form text. For example, the string
+-- @region:us* service:ec2 -tag:stage=prod@ includes all Amazon EC2
+-- resources in any Amazon Web Services Region that begins with the letters
+-- @us@ and is /not/ tagged with a key @Stage@ that has the value @prod@.
+--
+-- 'includedProperties', 'createView_includedProperties' - Specifies optional fields that you want included in search results from
+-- this view. It is a list of objects that each describe a field to
+-- include.
+--
+-- The default is an empty list, with no optional fields included in the
+-- results.
+--
+-- 'tags', 'createView_tags' - Tag key and value pairs that are attached to the view.
+--
+-- 'viewName', 'createView_viewName' - The name of the new view. This name appears in the list of views in
+-- Resource Explorer.
+--
+-- The name must be no more than 64 characters long, and can include
+-- letters, digits, and the dash (-) character. The name must be unique
+-- within its Amazon Web Services Region.
+newCreateView ::
+  -- | 'viewName'
+  Prelude.Text ->
+  CreateView
+newCreateView pViewName_ =
+  CreateView'
+    { clientToken = Prelude.Nothing,
+      filters = Prelude.Nothing,
+      includedProperties = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      viewName = pViewName_
+    }
+
+-- | This value helps ensure idempotency. Resource Explorer uses this value
+-- to prevent the accidental creation of duplicate versions. We recommend
+-- that you generate a
+-- <https://wikipedia.org/wiki/Universally_unique_identifier UUID-type value>
+-- to ensure the uniqueness of your views.
+createView_clientToken :: Lens.Lens' CreateView (Prelude.Maybe Prelude.Text)
+createView_clientToken = Lens.lens (\CreateView' {clientToken} -> clientToken) (\s@CreateView' {} a -> s {clientToken = a} :: CreateView)
+
+-- | An array of strings that specify which resources are included in the
+-- results of queries made using this view. When you use this view in a
+-- Search operation, the filter string is combined with the search\'s
+-- @QueryString@ parameter using a logical @AND@ operator.
+--
+-- For information about the supported syntax, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html Search query reference for Resource Explorer>
+-- in the /Amazon Web Services Resource Explorer User Guide/.
+--
+-- This query string in the context of this operation supports only
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html#query-syntax-filters filter prefixes>
+-- with optional
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html#query-syntax-operators operators>.
+-- It doesn\'t support free-form text. For example, the string
+-- @region:us* service:ec2 -tag:stage=prod@ includes all Amazon EC2
+-- resources in any Amazon Web Services Region that begins with the letters
+-- @us@ and is /not/ tagged with a key @Stage@ that has the value @prod@.
+createView_filters :: Lens.Lens' CreateView (Prelude.Maybe SearchFilter)
+createView_filters = Lens.lens (\CreateView' {filters} -> filters) (\s@CreateView' {} a -> s {filters = a} :: CreateView) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Specifies optional fields that you want included in search results from
+-- this view. It is a list of objects that each describe a field to
+-- include.
+--
+-- The default is an empty list, with no optional fields included in the
+-- results.
+createView_includedProperties :: Lens.Lens' CreateView (Prelude.Maybe [IncludedProperty])
+createView_includedProperties = Lens.lens (\CreateView' {includedProperties} -> includedProperties) (\s@CreateView' {} a -> s {includedProperties = a} :: CreateView) Prelude.. Lens.mapping Lens.coerced
+
+-- | Tag key and value pairs that are attached to the view.
+createView_tags :: Lens.Lens' CreateView (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createView_tags = Lens.lens (\CreateView' {tags} -> tags) (\s@CreateView' {} a -> s {tags = a} :: CreateView) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the new view. This name appears in the list of views in
+-- Resource Explorer.
+--
+-- The name must be no more than 64 characters long, and can include
+-- letters, digits, and the dash (-) character. The name must be unique
+-- within its Amazon Web Services Region.
+createView_viewName :: Lens.Lens' CreateView Prelude.Text
+createView_viewName = Lens.lens (\CreateView' {viewName} -> viewName) (\s@CreateView' {} a -> s {viewName = a} :: CreateView)
+
+instance Core.AWSRequest CreateView where
+  type AWSResponse CreateView = CreateViewResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateViewResponse'
+            Prelude.<$> (x Data..?> "View")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateView where
+  hashWithSalt _salt CreateView' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` includedProperties
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` viewName
+
+instance Prelude.NFData CreateView where
+  rnf CreateView' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf includedProperties
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf viewName
+
+instance Data.ToHeaders CreateView where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateView where
+  toJSON CreateView' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("Filters" Data..=) Prelude.<$> filters,
+            ("IncludedProperties" Data..=)
+              Prelude.<$> includedProperties,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("ViewName" Data..= viewName)
+          ]
+      )
+
+instance Data.ToPath CreateView where
+  toPath = Prelude.const "/CreateView"
+
+instance Data.ToQuery CreateView where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateViewResponse' smart constructor.
+data CreateViewResponse = CreateViewResponse'
+  { -- | A structure that contains the details about the new view.
+    view :: Prelude.Maybe View,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateViewResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'view', 'createViewResponse_view' - A structure that contains the details about the new view.
+--
+-- 'httpStatus', 'createViewResponse_httpStatus' - The response's http status code.
+newCreateViewResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateViewResponse
+newCreateViewResponse pHttpStatus_ =
+  CreateViewResponse'
+    { view = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A structure that contains the details about the new view.
+createViewResponse_view :: Lens.Lens' CreateViewResponse (Prelude.Maybe View)
+createViewResponse_view = Lens.lens (\CreateViewResponse' {view} -> view) (\s@CreateViewResponse' {} a -> s {view = a} :: CreateViewResponse)
+
+-- | The response's http status code.
+createViewResponse_httpStatus :: Lens.Lens' CreateViewResponse Prelude.Int
+createViewResponse_httpStatus = Lens.lens (\CreateViewResponse' {httpStatus} -> httpStatus) (\s@CreateViewResponse' {} a -> s {httpStatus = a} :: CreateViewResponse)
+
+instance Prelude.NFData CreateViewResponse where
+  rnf CreateViewResponse' {..} =
+    Prelude.rnf view
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/DeleteIndex.hs b/gen/Amazonka/ResourceExplorer2/DeleteIndex.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/DeleteIndex.hs
@@ -0,0 +1,217 @@
+{-# 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.ResourceExplorer2.DeleteIndex
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified index and turns off Amazon Web Services Resource
+-- Explorer in the specified Amazon Web Services Region. When you delete an
+-- index, Resource Explorer stops discovering and indexing resources in
+-- that Region. Resource Explorer also deletes all views in that Region.
+-- These actions occur as asynchronous background tasks. You can check to
+-- see when the actions are complete by using the GetIndex operation and
+-- checking the @Status@ response value.
+--
+-- If the index you delete is the aggregator index for the Amazon Web
+-- Services account, you must wait 24 hours before you can promote another
+-- local index to be the aggregator index for the account. Users can\'t
+-- perform account-wide searches using Resource Explorer until another
+-- aggregator index is configured.
+module Amazonka.ResourceExplorer2.DeleteIndex
+  ( -- * Creating a Request
+    DeleteIndex (..),
+    newDeleteIndex,
+
+    -- * Request Lenses
+    deleteIndex_arn,
+
+    -- * Destructuring the Response
+    DeleteIndexResponse (..),
+    newDeleteIndexResponse,
+
+    -- * Response Lenses
+    deleteIndexResponse_arn,
+    deleteIndexResponse_lastUpdatedAt,
+    deleteIndexResponse_state,
+    deleteIndexResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteIndex' smart constructor.
+data DeleteIndex = DeleteIndex'
+  { -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the index that you want to delete.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteIndex' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'deleteIndex_arn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the index that you want to delete.
+newDeleteIndex ::
+  -- | 'arn'
+  Prelude.Text ->
+  DeleteIndex
+newDeleteIndex pArn_ = DeleteIndex' {arn = pArn_}
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the index that you want to delete.
+deleteIndex_arn :: Lens.Lens' DeleteIndex Prelude.Text
+deleteIndex_arn = Lens.lens (\DeleteIndex' {arn} -> arn) (\s@DeleteIndex' {} a -> s {arn = a} :: DeleteIndex)
+
+instance Core.AWSRequest DeleteIndex where
+  type AWSResponse DeleteIndex = DeleteIndexResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteIndexResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "LastUpdatedAt")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteIndex where
+  hashWithSalt _salt DeleteIndex' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData DeleteIndex where
+  rnf DeleteIndex' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders DeleteIndex where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteIndex where
+  toJSON DeleteIndex' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Arn" Data..= arn)]
+      )
+
+instance Data.ToPath DeleteIndex where
+  toPath = Prelude.const "/DeleteIndex"
+
+instance Data.ToQuery DeleteIndex where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteIndexResponse' smart constructor.
+data DeleteIndexResponse = DeleteIndexResponse'
+  { -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the index that you successfully started the deletion process.
+    --
+    -- This operation is asynchronous. To check its status, call the GetIndex
+    -- operation.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The date and time when you last updated this index.
+    lastUpdatedAt :: Prelude.Maybe Data.ISO8601,
+    -- | Indicates the current state of the index.
+    state :: Prelude.Maybe IndexState,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteIndexResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'deleteIndexResponse_arn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the index that you successfully started the deletion process.
+--
+-- This operation is asynchronous. To check its status, call the GetIndex
+-- operation.
+--
+-- 'lastUpdatedAt', 'deleteIndexResponse_lastUpdatedAt' - The date and time when you last updated this index.
+--
+-- 'state', 'deleteIndexResponse_state' - Indicates the current state of the index.
+--
+-- 'httpStatus', 'deleteIndexResponse_httpStatus' - The response's http status code.
+newDeleteIndexResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteIndexResponse
+newDeleteIndexResponse pHttpStatus_ =
+  DeleteIndexResponse'
+    { arn = Prelude.Nothing,
+      lastUpdatedAt = Prelude.Nothing,
+      state = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the index that you successfully started the deletion process.
+--
+-- This operation is asynchronous. To check its status, call the GetIndex
+-- operation.
+deleteIndexResponse_arn :: Lens.Lens' DeleteIndexResponse (Prelude.Maybe Prelude.Text)
+deleteIndexResponse_arn = Lens.lens (\DeleteIndexResponse' {arn} -> arn) (\s@DeleteIndexResponse' {} a -> s {arn = a} :: DeleteIndexResponse)
+
+-- | The date and time when you last updated this index.
+deleteIndexResponse_lastUpdatedAt :: Lens.Lens' DeleteIndexResponse (Prelude.Maybe Prelude.UTCTime)
+deleteIndexResponse_lastUpdatedAt = Lens.lens (\DeleteIndexResponse' {lastUpdatedAt} -> lastUpdatedAt) (\s@DeleteIndexResponse' {} a -> s {lastUpdatedAt = a} :: DeleteIndexResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the current state of the index.
+deleteIndexResponse_state :: Lens.Lens' DeleteIndexResponse (Prelude.Maybe IndexState)
+deleteIndexResponse_state = Lens.lens (\DeleteIndexResponse' {state} -> state) (\s@DeleteIndexResponse' {} a -> s {state = a} :: DeleteIndexResponse)
+
+-- | The response's http status code.
+deleteIndexResponse_httpStatus :: Lens.Lens' DeleteIndexResponse Prelude.Int
+deleteIndexResponse_httpStatus = Lens.lens (\DeleteIndexResponse' {httpStatus} -> httpStatus) (\s@DeleteIndexResponse' {} a -> s {httpStatus = a} :: DeleteIndexResponse)
+
+instance Prelude.NFData DeleteIndexResponse where
+  rnf DeleteIndexResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/DeleteView.hs b/gen/Amazonka/ResourceExplorer2/DeleteView.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/DeleteView.hs
@@ -0,0 +1,178 @@
+{-# 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.ResourceExplorer2.DeleteView
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified view.
+--
+-- If the specified view is the default view for its Amazon Web Services
+-- Region, then all Search operations in that Region must explicitly
+-- specify the view to use until you configure a new default by calling the
+-- AssociateDefaultView operation.
+module Amazonka.ResourceExplorer2.DeleteView
+  ( -- * Creating a Request
+    DeleteView (..),
+    newDeleteView,
+
+    -- * Request Lenses
+    deleteView_viewArn,
+
+    -- * Destructuring the Response
+    DeleteViewResponse (..),
+    newDeleteViewResponse,
+
+    -- * Response Lenses
+    deleteViewResponse_viewArn,
+    deleteViewResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteView' smart constructor.
+data DeleteView = DeleteView'
+  { -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the view that you want to delete.
+    viewArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteView' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'viewArn', 'deleteView_viewArn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view that you want to delete.
+newDeleteView ::
+  -- | 'viewArn'
+  Prelude.Text ->
+  DeleteView
+newDeleteView pViewArn_ =
+  DeleteView' {viewArn = pViewArn_}
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view that you want to delete.
+deleteView_viewArn :: Lens.Lens' DeleteView Prelude.Text
+deleteView_viewArn = Lens.lens (\DeleteView' {viewArn} -> viewArn) (\s@DeleteView' {} a -> s {viewArn = a} :: DeleteView)
+
+instance Core.AWSRequest DeleteView where
+  type AWSResponse DeleteView = DeleteViewResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteViewResponse'
+            Prelude.<$> (x Data..?> "ViewArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteView where
+  hashWithSalt _salt DeleteView' {..} =
+    _salt `Prelude.hashWithSalt` viewArn
+
+instance Prelude.NFData DeleteView where
+  rnf DeleteView' {..} = Prelude.rnf viewArn
+
+instance Data.ToHeaders DeleteView where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteView where
+  toJSON DeleteView' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ViewArn" Data..= viewArn)]
+      )
+
+instance Data.ToPath DeleteView where
+  toPath = Prelude.const "/DeleteView"
+
+instance Data.ToQuery DeleteView where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteViewResponse' smart constructor.
+data DeleteViewResponse = DeleteViewResponse'
+  { -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the view that you successfully deleted.
+    viewArn :: 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 'DeleteViewResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'viewArn', 'deleteViewResponse_viewArn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view that you successfully deleted.
+--
+-- 'httpStatus', 'deleteViewResponse_httpStatus' - The response's http status code.
+newDeleteViewResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteViewResponse
+newDeleteViewResponse pHttpStatus_ =
+  DeleteViewResponse'
+    { viewArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view that you successfully deleted.
+deleteViewResponse_viewArn :: Lens.Lens' DeleteViewResponse (Prelude.Maybe Prelude.Text)
+deleteViewResponse_viewArn = Lens.lens (\DeleteViewResponse' {viewArn} -> viewArn) (\s@DeleteViewResponse' {} a -> s {viewArn = a} :: DeleteViewResponse)
+
+-- | The response's http status code.
+deleteViewResponse_httpStatus :: Lens.Lens' DeleteViewResponse Prelude.Int
+deleteViewResponse_httpStatus = Lens.lens (\DeleteViewResponse' {httpStatus} -> httpStatus) (\s@DeleteViewResponse' {} a -> s {httpStatus = a} :: DeleteViewResponse)
+
+instance Prelude.NFData DeleteViewResponse where
+  rnf DeleteViewResponse' {..} =
+    Prelude.rnf viewArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/DisassociateDefaultView.hs b/gen/Amazonka/ResourceExplorer2/DisassociateDefaultView.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/DisassociateDefaultView.hs
@@ -0,0 +1,120 @@
+{-# 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.ResourceExplorer2.DisassociateDefaultView
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- After you call this operation, the affected Amazon Web Services Region
+-- no longer has a default view. All Search operations in that Region must
+-- explicitly specify a view or the operation fails. You can configure a
+-- new default by calling the AssociateDefaultView operation.
+--
+-- If an Amazon Web Services Region doesn\'t have a default view
+-- configured, then users must explicitly specify a view with every
+-- @Search@ operation performed in that Region.
+module Amazonka.ResourceExplorer2.DisassociateDefaultView
+  ( -- * Creating a Request
+    DisassociateDefaultView (..),
+    newDisassociateDefaultView,
+
+    -- * Destructuring the Response
+    DisassociateDefaultViewResponse (..),
+    newDisassociateDefaultViewResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociateDefaultView' smart constructor.
+data DisassociateDefaultView = DisassociateDefaultView'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateDefaultView' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDisassociateDefaultView ::
+  DisassociateDefaultView
+newDisassociateDefaultView = DisassociateDefaultView'
+
+instance Core.AWSRequest DisassociateDefaultView where
+  type
+    AWSResponse DisassociateDefaultView =
+      DisassociateDefaultViewResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DisassociateDefaultViewResponse'
+
+instance Prelude.Hashable DisassociateDefaultView where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData DisassociateDefaultView where
+  rnf _ = ()
+
+instance Data.ToHeaders DisassociateDefaultView where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DisassociateDefaultView where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath DisassociateDefaultView where
+  toPath = Prelude.const "/DisassociateDefaultView"
+
+instance Data.ToQuery DisassociateDefaultView where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociateDefaultViewResponse' smart constructor.
+data DisassociateDefaultViewResponse = DisassociateDefaultViewResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateDefaultViewResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDisassociateDefaultViewResponse ::
+  DisassociateDefaultViewResponse
+newDisassociateDefaultViewResponse =
+  DisassociateDefaultViewResponse'
+
+instance
+  Prelude.NFData
+    DisassociateDefaultViewResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/ResourceExplorer2/GetDefaultView.hs b/gen/Amazonka/ResourceExplorer2/GetDefaultView.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/GetDefaultView.hs
@@ -0,0 +1,154 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.GetDefaultView
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the Amazon Resource Name (ARN) of the view that is the default
+-- for the Amazon Web Services Region in which you call this operation. You
+-- can then call GetView to retrieve the details of that view.
+module Amazonka.ResourceExplorer2.GetDefaultView
+  ( -- * Creating a Request
+    GetDefaultView (..),
+    newGetDefaultView,
+
+    -- * Destructuring the Response
+    GetDefaultViewResponse (..),
+    newGetDefaultViewResponse,
+
+    -- * Response Lenses
+    getDefaultViewResponse_viewArn,
+    getDefaultViewResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetDefaultView' smart constructor.
+data GetDefaultView = GetDefaultView'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDefaultView' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newGetDefaultView ::
+  GetDefaultView
+newGetDefaultView = GetDefaultView'
+
+instance Core.AWSRequest GetDefaultView where
+  type
+    AWSResponse GetDefaultView =
+      GetDefaultViewResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetDefaultViewResponse'
+            Prelude.<$> (x Data..?> "ViewArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetDefaultView where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData GetDefaultView where
+  rnf _ = ()
+
+instance Data.ToHeaders GetDefaultView where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetDefaultView where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath GetDefaultView where
+  toPath = Prelude.const "/GetDefaultView"
+
+instance Data.ToQuery GetDefaultView where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetDefaultViewResponse' smart constructor.
+data GetDefaultViewResponse = GetDefaultViewResponse'
+  { -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the view that is the current default for the Amazon Web Services
+    -- Region in which you called this operation.
+    viewArn :: 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 'GetDefaultViewResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'viewArn', 'getDefaultViewResponse_viewArn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view that is the current default for the Amazon Web Services
+-- Region in which you called this operation.
+--
+-- 'httpStatus', 'getDefaultViewResponse_httpStatus' - The response's http status code.
+newGetDefaultViewResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetDefaultViewResponse
+newGetDefaultViewResponse pHttpStatus_ =
+  GetDefaultViewResponse'
+    { viewArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view that is the current default for the Amazon Web Services
+-- Region in which you called this operation.
+getDefaultViewResponse_viewArn :: Lens.Lens' GetDefaultViewResponse (Prelude.Maybe Prelude.Text)
+getDefaultViewResponse_viewArn = Lens.lens (\GetDefaultViewResponse' {viewArn} -> viewArn) (\s@GetDefaultViewResponse' {} a -> s {viewArn = a} :: GetDefaultViewResponse)
+
+-- | The response's http status code.
+getDefaultViewResponse_httpStatus :: Lens.Lens' GetDefaultViewResponse Prelude.Int
+getDefaultViewResponse_httpStatus = Lens.lens (\GetDefaultViewResponse' {httpStatus} -> httpStatus) (\s@GetDefaultViewResponse' {} a -> s {httpStatus = a} :: GetDefaultViewResponse)
+
+instance Prelude.NFData GetDefaultViewResponse where
+  rnf GetDefaultViewResponse' {..} =
+    Prelude.rnf viewArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/GetIndex.hs b/gen/Amazonka/ResourceExplorer2/GetIndex.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/GetIndex.hs
@@ -0,0 +1,265 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.GetIndex
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves details about the Amazon Web Services Resource Explorer index
+-- in the Amazon Web Services Region in which you invoked the operation.
+module Amazonka.ResourceExplorer2.GetIndex
+  ( -- * Creating a Request
+    GetIndex (..),
+    newGetIndex,
+
+    -- * Destructuring the Response
+    GetIndexResponse (..),
+    newGetIndexResponse,
+
+    -- * Response Lenses
+    getIndexResponse_arn,
+    getIndexResponse_createdAt,
+    getIndexResponse_lastUpdatedAt,
+    getIndexResponse_replicatingFrom,
+    getIndexResponse_replicatingTo,
+    getIndexResponse_state,
+    getIndexResponse_tags,
+    getIndexResponse_type,
+    getIndexResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetIndex' smart constructor.
+data GetIndex = GetIndex'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIndex' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newGetIndex ::
+  GetIndex
+newGetIndex = GetIndex'
+
+instance Core.AWSRequest GetIndex where
+  type AWSResponse GetIndex = GetIndexResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetIndexResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreatedAt")
+            Prelude.<*> (x Data..?> "LastUpdatedAt")
+            Prelude.<*> ( x
+                            Data..?> "ReplicatingFrom"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "ReplicatingTo" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Type")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetIndex where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData GetIndex where
+  rnf _ = ()
+
+instance Data.ToHeaders GetIndex where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetIndex where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath GetIndex where
+  toPath = Prelude.const "/GetIndex"
+
+instance Data.ToQuery GetIndex where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetIndexResponse' smart constructor.
+data GetIndexResponse = GetIndexResponse'
+  { -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the index.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The date and time when the index was originally created.
+    createdAt :: Prelude.Maybe Data.ISO8601,
+    -- | The date and time when the index was last updated.
+    lastUpdatedAt :: Prelude.Maybe Data.ISO8601,
+    -- | This response value is present only if this index is @Type=AGGREGATOR@.
+    --
+    -- A list of the Amazon Web Services Regions that replicate their content
+    -- to the index in this Region.
+    replicatingFrom :: Prelude.Maybe [Prelude.Text],
+    -- | This response value is present only if this index is @Type=LOCAL@.
+    --
+    -- The Amazon Web Services Region that contains the aggregator index, if
+    -- one exists. If an aggregator index does exist then the Region in which
+    -- you called this operation replicates its index information to the Region
+    -- specified in this response value.
+    replicatingTo :: Prelude.Maybe [Prelude.Text],
+    -- | The current state of the index in this Amazon Web Services Region.
+    state :: Prelude.Maybe IndexState,
+    -- | Tag key and value pairs that are attached to the index.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The type of the index in this Region. For information about the
+    -- aggregator index and how it differs from a local index, see
+    -- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/manage-aggregator-region.html Turning on cross-Region search by creating an aggregator index>.
+    type' :: Prelude.Maybe IndexType,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIndexResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'getIndexResponse_arn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the index.
+--
+-- 'createdAt', 'getIndexResponse_createdAt' - The date and time when the index was originally created.
+--
+-- 'lastUpdatedAt', 'getIndexResponse_lastUpdatedAt' - The date and time when the index was last updated.
+--
+-- 'replicatingFrom', 'getIndexResponse_replicatingFrom' - This response value is present only if this index is @Type=AGGREGATOR@.
+--
+-- A list of the Amazon Web Services Regions that replicate their content
+-- to the index in this Region.
+--
+-- 'replicatingTo', 'getIndexResponse_replicatingTo' - This response value is present only if this index is @Type=LOCAL@.
+--
+-- The Amazon Web Services Region that contains the aggregator index, if
+-- one exists. If an aggregator index does exist then the Region in which
+-- you called this operation replicates its index information to the Region
+-- specified in this response value.
+--
+-- 'state', 'getIndexResponse_state' - The current state of the index in this Amazon Web Services Region.
+--
+-- 'tags', 'getIndexResponse_tags' - Tag key and value pairs that are attached to the index.
+--
+-- 'type'', 'getIndexResponse_type' - The type of the index in this Region. For information about the
+-- aggregator index and how it differs from a local index, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/manage-aggregator-region.html Turning on cross-Region search by creating an aggregator index>.
+--
+-- 'httpStatus', 'getIndexResponse_httpStatus' - The response's http status code.
+newGetIndexResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetIndexResponse
+newGetIndexResponse pHttpStatus_ =
+  GetIndexResponse'
+    { arn = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      lastUpdatedAt = Prelude.Nothing,
+      replicatingFrom = Prelude.Nothing,
+      replicatingTo = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the index.
+getIndexResponse_arn :: Lens.Lens' GetIndexResponse (Prelude.Maybe Prelude.Text)
+getIndexResponse_arn = Lens.lens (\GetIndexResponse' {arn} -> arn) (\s@GetIndexResponse' {} a -> s {arn = a} :: GetIndexResponse)
+
+-- | The date and time when the index was originally created.
+getIndexResponse_createdAt :: Lens.Lens' GetIndexResponse (Prelude.Maybe Prelude.UTCTime)
+getIndexResponse_createdAt = Lens.lens (\GetIndexResponse' {createdAt} -> createdAt) (\s@GetIndexResponse' {} a -> s {createdAt = a} :: GetIndexResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The date and time when the index was last updated.
+getIndexResponse_lastUpdatedAt :: Lens.Lens' GetIndexResponse (Prelude.Maybe Prelude.UTCTime)
+getIndexResponse_lastUpdatedAt = Lens.lens (\GetIndexResponse' {lastUpdatedAt} -> lastUpdatedAt) (\s@GetIndexResponse' {} a -> s {lastUpdatedAt = a} :: GetIndexResponse) Prelude.. Lens.mapping Data._Time
+
+-- | This response value is present only if this index is @Type=AGGREGATOR@.
+--
+-- A list of the Amazon Web Services Regions that replicate their content
+-- to the index in this Region.
+getIndexResponse_replicatingFrom :: Lens.Lens' GetIndexResponse (Prelude.Maybe [Prelude.Text])
+getIndexResponse_replicatingFrom = Lens.lens (\GetIndexResponse' {replicatingFrom} -> replicatingFrom) (\s@GetIndexResponse' {} a -> s {replicatingFrom = a} :: GetIndexResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | This response value is present only if this index is @Type=LOCAL@.
+--
+-- The Amazon Web Services Region that contains the aggregator index, if
+-- one exists. If an aggregator index does exist then the Region in which
+-- you called this operation replicates its index information to the Region
+-- specified in this response value.
+getIndexResponse_replicatingTo :: Lens.Lens' GetIndexResponse (Prelude.Maybe [Prelude.Text])
+getIndexResponse_replicatingTo = Lens.lens (\GetIndexResponse' {replicatingTo} -> replicatingTo) (\s@GetIndexResponse' {} a -> s {replicatingTo = a} :: GetIndexResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The current state of the index in this Amazon Web Services Region.
+getIndexResponse_state :: Lens.Lens' GetIndexResponse (Prelude.Maybe IndexState)
+getIndexResponse_state = Lens.lens (\GetIndexResponse' {state} -> state) (\s@GetIndexResponse' {} a -> s {state = a} :: GetIndexResponse)
+
+-- | Tag key and value pairs that are attached to the index.
+getIndexResponse_tags :: Lens.Lens' GetIndexResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getIndexResponse_tags = Lens.lens (\GetIndexResponse' {tags} -> tags) (\s@GetIndexResponse' {} a -> s {tags = a} :: GetIndexResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of the index in this Region. For information about the
+-- aggregator index and how it differs from a local index, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/manage-aggregator-region.html Turning on cross-Region search by creating an aggregator index>.
+getIndexResponse_type :: Lens.Lens' GetIndexResponse (Prelude.Maybe IndexType)
+getIndexResponse_type = Lens.lens (\GetIndexResponse' {type'} -> type') (\s@GetIndexResponse' {} a -> s {type' = a} :: GetIndexResponse)
+
+-- | The response's http status code.
+getIndexResponse_httpStatus :: Lens.Lens' GetIndexResponse Prelude.Int
+getIndexResponse_httpStatus = Lens.lens (\GetIndexResponse' {httpStatus} -> httpStatus) (\s@GetIndexResponse' {} a -> s {httpStatus = a} :: GetIndexResponse)
+
+instance Prelude.NFData GetIndexResponse where
+  rnf GetIndexResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+      `Prelude.seq` Prelude.rnf replicatingFrom
+      `Prelude.seq` Prelude.rnf replicatingTo
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/GetView.hs b/gen/Amazonka/ResourceExplorer2/GetView.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/GetView.hs
@@ -0,0 +1,178 @@
+{-# 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.ResourceExplorer2.GetView
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves details of the specified view.
+module Amazonka.ResourceExplorer2.GetView
+  ( -- * Creating a Request
+    GetView (..),
+    newGetView,
+
+    -- * Request Lenses
+    getView_viewArn,
+
+    -- * Destructuring the Response
+    GetViewResponse (..),
+    newGetViewResponse,
+
+    -- * Response Lenses
+    getViewResponse_tags,
+    getViewResponse_view,
+    getViewResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetView' smart constructor.
+data GetView = GetView'
+  { -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the view that you want information about.
+    viewArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetView' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'viewArn', 'getView_viewArn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view that you want information about.
+newGetView ::
+  -- | 'viewArn'
+  Prelude.Text ->
+  GetView
+newGetView pViewArn_ = GetView' {viewArn = pViewArn_}
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view that you want information about.
+getView_viewArn :: Lens.Lens' GetView Prelude.Text
+getView_viewArn = Lens.lens (\GetView' {viewArn} -> viewArn) (\s@GetView' {} a -> s {viewArn = a} :: GetView)
+
+instance Core.AWSRequest GetView where
+  type AWSResponse GetView = GetViewResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetViewResponse'
+            Prelude.<$> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "View")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetView where
+  hashWithSalt _salt GetView' {..} =
+    _salt `Prelude.hashWithSalt` viewArn
+
+instance Prelude.NFData GetView where
+  rnf GetView' {..} = Prelude.rnf viewArn
+
+instance Data.ToHeaders GetView where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetView where
+  toJSON GetView' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ViewArn" Data..= viewArn)]
+      )
+
+instance Data.ToPath GetView where
+  toPath = Prelude.const "/GetView"
+
+instance Data.ToQuery GetView where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetViewResponse' smart constructor.
+data GetViewResponse = GetViewResponse'
+  { -- | Tag key and value pairs that are attached to the view.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | A structure that contains the details for the requested view.
+    view :: Prelude.Maybe View,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetViewResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getViewResponse_tags' - Tag key and value pairs that are attached to the view.
+--
+-- 'view', 'getViewResponse_view' - A structure that contains the details for the requested view.
+--
+-- 'httpStatus', 'getViewResponse_httpStatus' - The response's http status code.
+newGetViewResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetViewResponse
+newGetViewResponse pHttpStatus_ =
+  GetViewResponse'
+    { tags = Prelude.Nothing,
+      view = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Tag key and value pairs that are attached to the view.
+getViewResponse_tags :: Lens.Lens' GetViewResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getViewResponse_tags = Lens.lens (\GetViewResponse' {tags} -> tags) (\s@GetViewResponse' {} a -> s {tags = a} :: GetViewResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A structure that contains the details for the requested view.
+getViewResponse_view :: Lens.Lens' GetViewResponse (Prelude.Maybe View)
+getViewResponse_view = Lens.lens (\GetViewResponse' {view} -> view) (\s@GetViewResponse' {} a -> s {view = a} :: GetViewResponse)
+
+-- | The response's http status code.
+getViewResponse_httpStatus :: Lens.Lens' GetViewResponse Prelude.Int
+getViewResponse_httpStatus = Lens.lens (\GetViewResponse' {httpStatus} -> httpStatus) (\s@GetViewResponse' {} a -> s {httpStatus = a} :: GetViewResponse)
+
+instance Prelude.NFData GetViewResponse where
+  rnf GetViewResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf view
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/Lens.hs b/gen/Amazonka/ResourceExplorer2/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Lens.hs
@@ -0,0 +1,224 @@
+{-# 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.ResourceExplorer2.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.ResourceExplorer2.Lens
+  ( -- * Operations
+
+    -- ** AssociateDefaultView
+    associateDefaultView_viewArn,
+    associateDefaultViewResponse_viewArn,
+    associateDefaultViewResponse_httpStatus,
+
+    -- ** BatchGetView
+    batchGetView_viewArns,
+    batchGetViewResponse_errors,
+    batchGetViewResponse_views,
+    batchGetViewResponse_httpStatus,
+
+    -- ** CreateIndex
+    createIndex_clientToken,
+    createIndex_tags,
+    createIndexResponse_arn,
+    createIndexResponse_createdAt,
+    createIndexResponse_state,
+    createIndexResponse_httpStatus,
+
+    -- ** CreateView
+    createView_clientToken,
+    createView_filters,
+    createView_includedProperties,
+    createView_tags,
+    createView_viewName,
+    createViewResponse_view,
+    createViewResponse_httpStatus,
+
+    -- ** DeleteIndex
+    deleteIndex_arn,
+    deleteIndexResponse_arn,
+    deleteIndexResponse_lastUpdatedAt,
+    deleteIndexResponse_state,
+    deleteIndexResponse_httpStatus,
+
+    -- ** DeleteView
+    deleteView_viewArn,
+    deleteViewResponse_viewArn,
+    deleteViewResponse_httpStatus,
+
+    -- ** DisassociateDefaultView
+
+    -- ** GetDefaultView
+    getDefaultViewResponse_viewArn,
+    getDefaultViewResponse_httpStatus,
+
+    -- ** GetIndex
+    getIndexResponse_arn,
+    getIndexResponse_createdAt,
+    getIndexResponse_lastUpdatedAt,
+    getIndexResponse_replicatingFrom,
+    getIndexResponse_replicatingTo,
+    getIndexResponse_state,
+    getIndexResponse_tags,
+    getIndexResponse_type,
+    getIndexResponse_httpStatus,
+
+    -- ** GetView
+    getView_viewArn,
+    getViewResponse_tags,
+    getViewResponse_view,
+    getViewResponse_httpStatus,
+
+    -- ** ListIndexes
+    listIndexes_maxResults,
+    listIndexes_nextToken,
+    listIndexes_regions,
+    listIndexes_type,
+    listIndexesResponse_indexes,
+    listIndexesResponse_nextToken,
+    listIndexesResponse_httpStatus,
+
+    -- ** ListSupportedResourceTypes
+    listSupportedResourceTypes_maxResults,
+    listSupportedResourceTypes_nextToken,
+    listSupportedResourceTypesResponse_nextToken,
+    listSupportedResourceTypesResponse_resourceTypes,
+    listSupportedResourceTypesResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** ListViews
+    listViews_maxResults,
+    listViews_nextToken,
+    listViewsResponse_nextToken,
+    listViewsResponse_views,
+    listViewsResponse_httpStatus,
+
+    -- ** Search
+    search_maxResults,
+    search_nextToken,
+    search_viewArn,
+    search_queryString,
+    searchResponse_count,
+    searchResponse_nextToken,
+    searchResponse_resources,
+    searchResponse_viewArn,
+    searchResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_tags,
+    tagResource_resourceArn,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdateIndexType
+    updateIndexType_arn,
+    updateIndexType_type,
+    updateIndexTypeResponse_arn,
+    updateIndexTypeResponse_lastUpdatedAt,
+    updateIndexTypeResponse_state,
+    updateIndexTypeResponse_type,
+    updateIndexTypeResponse_httpStatus,
+
+    -- ** UpdateView
+    updateView_filters,
+    updateView_includedProperties,
+    updateView_viewArn,
+    updateViewResponse_view,
+    updateViewResponse_httpStatus,
+
+    -- * Types
+
+    -- ** BatchGetViewError
+    batchGetViewError_errorMessage,
+    batchGetViewError_viewArn,
+
+    -- ** Document
+
+    -- ** IncludedProperty
+    includedProperty_name,
+
+    -- ** Index
+    index_arn,
+    index_region,
+    index_type,
+
+    -- ** Resource
+    resource_arn,
+    resource_lastReportedAt,
+    resource_owningAccountId,
+    resource_properties,
+    resource_region,
+    resource_resourceType,
+    resource_service,
+
+    -- ** ResourceCount
+    resourceCount_complete,
+    resourceCount_totalResources,
+
+    -- ** ResourceProperty
+    resourceProperty_data,
+    resourceProperty_lastReportedAt,
+    resourceProperty_name,
+
+    -- ** SearchFilter
+    searchFilter_filterString,
+
+    -- ** SupportedResourceType
+    supportedResourceType_resourceType,
+    supportedResourceType_service,
+
+    -- ** View
+    view_filters,
+    view_includedProperties,
+    view_lastUpdatedAt,
+    view_owner,
+    view_scope,
+    view_viewArn,
+  )
+where
+
+import Amazonka.ResourceExplorer2.AssociateDefaultView
+import Amazonka.ResourceExplorer2.BatchGetView
+import Amazonka.ResourceExplorer2.CreateIndex
+import Amazonka.ResourceExplorer2.CreateView
+import Amazonka.ResourceExplorer2.DeleteIndex
+import Amazonka.ResourceExplorer2.DeleteView
+import Amazonka.ResourceExplorer2.DisassociateDefaultView
+import Amazonka.ResourceExplorer2.GetDefaultView
+import Amazonka.ResourceExplorer2.GetIndex
+import Amazonka.ResourceExplorer2.GetView
+import Amazonka.ResourceExplorer2.ListIndexes
+import Amazonka.ResourceExplorer2.ListSupportedResourceTypes
+import Amazonka.ResourceExplorer2.ListTagsForResource
+import Amazonka.ResourceExplorer2.ListViews
+import Amazonka.ResourceExplorer2.Search
+import Amazonka.ResourceExplorer2.TagResource
+import Amazonka.ResourceExplorer2.Types.BatchGetViewError
+import Amazonka.ResourceExplorer2.Types.Document
+import Amazonka.ResourceExplorer2.Types.IncludedProperty
+import Amazonka.ResourceExplorer2.Types.Index
+import Amazonka.ResourceExplorer2.Types.Resource
+import Amazonka.ResourceExplorer2.Types.ResourceCount
+import Amazonka.ResourceExplorer2.Types.ResourceProperty
+import Amazonka.ResourceExplorer2.Types.SearchFilter
+import Amazonka.ResourceExplorer2.Types.SupportedResourceType
+import Amazonka.ResourceExplorer2.Types.View
+import Amazonka.ResourceExplorer2.UntagResource
+import Amazonka.ResourceExplorer2.UpdateIndexType
+import Amazonka.ResourceExplorer2.UpdateView
diff --git a/gen/Amazonka/ResourceExplorer2/ListIndexes.hs b/gen/Amazonka/ResourceExplorer2/ListIndexes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/ListIndexes.hs
@@ -0,0 +1,307 @@
+{-# 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.ResourceExplorer2.ListIndexes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a list of all of the indexes in Amazon Web Services Regions
+-- that are currently collecting resource information for Amazon Web
+-- Services Resource Explorer.
+--
+-- This operation returns paginated results.
+module Amazonka.ResourceExplorer2.ListIndexes
+  ( -- * Creating a Request
+    ListIndexes (..),
+    newListIndexes,
+
+    -- * Request Lenses
+    listIndexes_maxResults,
+    listIndexes_nextToken,
+    listIndexes_regions,
+    listIndexes_type,
+
+    -- * Destructuring the Response
+    ListIndexesResponse (..),
+    newListIndexesResponse,
+
+    -- * Response Lenses
+    listIndexesResponse_indexes,
+    listIndexesResponse_nextToken,
+    listIndexesResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListIndexes' smart constructor.
+data ListIndexes = ListIndexes'
+  { -- | The maximum number of results that you want included on each page of the
+    -- response. If you do not include this parameter, it defaults to a value
+    -- appropriate to the operation. If additional items exist beyond those
+    -- included in the current response, the @NextToken@ response element is
+    -- present and has a value (is not null). Include that value as the
+    -- @NextToken@ request parameter in the next call to the operation to get
+    -- the next part of the results.
+    --
+    -- An API operation can return fewer results than the maximum even when
+    -- there are more results available. You should check @NextToken@ after
+    -- every operation to ensure that you receive all of the results.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The parameter for receiving additional results if you receive a
+    -- @NextToken@ response in a previous request. A @NextToken@ response
+    -- indicates that more output is available. Set this parameter to the value
+    -- of the previous call\'s @NextToken@ response to indicate where the
+    -- output should continue from.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | If specified, limits the response to only information about the index in
+    -- the specified list of Amazon Web Services Regions.
+    regions :: Prelude.Maybe [Prelude.Text],
+    -- | If specified, limits the output to only indexes of the specified Type,
+    -- either @LOCAL@ or @AGGREGATOR@.
+    --
+    -- Use this option to discover the aggregator index for your account.
+    type' :: Prelude.Maybe IndexType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIndexes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listIndexes_maxResults' - The maximum number of results that you want included on each page of the
+-- response. If you do not include this parameter, it defaults to a value
+-- appropriate to the operation. If additional items exist beyond those
+-- included in the current response, the @NextToken@ response element is
+-- present and has a value (is not null). Include that value as the
+-- @NextToken@ request parameter in the next call to the operation to get
+-- the next part of the results.
+--
+-- An API operation can return fewer results than the maximum even when
+-- there are more results available. You should check @NextToken@ after
+-- every operation to ensure that you receive all of the results.
+--
+-- 'nextToken', 'listIndexes_nextToken' - The parameter for receiving additional results if you receive a
+-- @NextToken@ response in a previous request. A @NextToken@ response
+-- indicates that more output is available. Set this parameter to the value
+-- of the previous call\'s @NextToken@ response to indicate where the
+-- output should continue from.
+--
+-- 'regions', 'listIndexes_regions' - If specified, limits the response to only information about the index in
+-- the specified list of Amazon Web Services Regions.
+--
+-- 'type'', 'listIndexes_type' - If specified, limits the output to only indexes of the specified Type,
+-- either @LOCAL@ or @AGGREGATOR@.
+--
+-- Use this option to discover the aggregator index for your account.
+newListIndexes ::
+  ListIndexes
+newListIndexes =
+  ListIndexes'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      regions = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The maximum number of results that you want included on each page of the
+-- response. If you do not include this parameter, it defaults to a value
+-- appropriate to the operation. If additional items exist beyond those
+-- included in the current response, the @NextToken@ response element is
+-- present and has a value (is not null). Include that value as the
+-- @NextToken@ request parameter in the next call to the operation to get
+-- the next part of the results.
+--
+-- An API operation can return fewer results than the maximum even when
+-- there are more results available. You should check @NextToken@ after
+-- every operation to ensure that you receive all of the results.
+listIndexes_maxResults :: Lens.Lens' ListIndexes (Prelude.Maybe Prelude.Natural)
+listIndexes_maxResults = Lens.lens (\ListIndexes' {maxResults} -> maxResults) (\s@ListIndexes' {} a -> s {maxResults = a} :: ListIndexes)
+
+-- | The parameter for receiving additional results if you receive a
+-- @NextToken@ response in a previous request. A @NextToken@ response
+-- indicates that more output is available. Set this parameter to the value
+-- of the previous call\'s @NextToken@ response to indicate where the
+-- output should continue from.
+listIndexes_nextToken :: Lens.Lens' ListIndexes (Prelude.Maybe Prelude.Text)
+listIndexes_nextToken = Lens.lens (\ListIndexes' {nextToken} -> nextToken) (\s@ListIndexes' {} a -> s {nextToken = a} :: ListIndexes)
+
+-- | If specified, limits the response to only information about the index in
+-- the specified list of Amazon Web Services Regions.
+listIndexes_regions :: Lens.Lens' ListIndexes (Prelude.Maybe [Prelude.Text])
+listIndexes_regions = Lens.lens (\ListIndexes' {regions} -> regions) (\s@ListIndexes' {} a -> s {regions = a} :: ListIndexes) Prelude.. Lens.mapping Lens.coerced
+
+-- | If specified, limits the output to only indexes of the specified Type,
+-- either @LOCAL@ or @AGGREGATOR@.
+--
+-- Use this option to discover the aggregator index for your account.
+listIndexes_type :: Lens.Lens' ListIndexes (Prelude.Maybe IndexType)
+listIndexes_type = Lens.lens (\ListIndexes' {type'} -> type') (\s@ListIndexes' {} a -> s {type' = a} :: ListIndexes)
+
+instance Core.AWSPager ListIndexes where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listIndexesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listIndexesResponse_indexes
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listIndexes_nextToken
+          Lens..~ rs
+          Lens.^? listIndexesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListIndexes where
+  type AWSResponse ListIndexes = ListIndexesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListIndexesResponse'
+            Prelude.<$> (x Data..?> "Indexes" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListIndexes where
+  hashWithSalt _salt ListIndexes' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` regions
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData ListIndexes where
+  rnf ListIndexes' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf regions
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToHeaders ListIndexes where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListIndexes where
+  toJSON ListIndexes' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("Regions" Data..=) Prelude.<$> regions,
+            ("Type" Data..=) Prelude.<$> type'
+          ]
+      )
+
+instance Data.ToPath ListIndexes where
+  toPath = Prelude.const "/ListIndexes"
+
+instance Data.ToQuery ListIndexes where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListIndexesResponse' smart constructor.
+data ListIndexesResponse = ListIndexesResponse'
+  { -- | A structure that contains the details and status of each index.
+    indexes :: Prelude.Maybe [Index],
+    -- | If present, indicates that more output is available than is included in
+    -- the current response. Use this value in the @NextToken@ request
+    -- parameter in a subsequent call to the operation to get the next part of
+    -- the output. You should repeat this until the @NextToken@ response
+    -- element comes back as @null@.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIndexesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'indexes', 'listIndexesResponse_indexes' - A structure that contains the details and status of each index.
+--
+-- 'nextToken', 'listIndexesResponse_nextToken' - If present, indicates that more output is available than is included in
+-- the current response. Use this value in the @NextToken@ request
+-- parameter in a subsequent call to the operation to get the next part of
+-- the output. You should repeat this until the @NextToken@ response
+-- element comes back as @null@.
+--
+-- 'httpStatus', 'listIndexesResponse_httpStatus' - The response's http status code.
+newListIndexesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListIndexesResponse
+newListIndexesResponse pHttpStatus_ =
+  ListIndexesResponse'
+    { indexes = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A structure that contains the details and status of each index.
+listIndexesResponse_indexes :: Lens.Lens' ListIndexesResponse (Prelude.Maybe [Index])
+listIndexesResponse_indexes = Lens.lens (\ListIndexesResponse' {indexes} -> indexes) (\s@ListIndexesResponse' {} a -> s {indexes = a} :: ListIndexesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If present, indicates that more output is available than is included in
+-- the current response. Use this value in the @NextToken@ request
+-- parameter in a subsequent call to the operation to get the next part of
+-- the output. You should repeat this until the @NextToken@ response
+-- element comes back as @null@.
+listIndexesResponse_nextToken :: Lens.Lens' ListIndexesResponse (Prelude.Maybe Prelude.Text)
+listIndexesResponse_nextToken = Lens.lens (\ListIndexesResponse' {nextToken} -> nextToken) (\s@ListIndexesResponse' {} a -> s {nextToken = a} :: ListIndexesResponse)
+
+-- | The response's http status code.
+listIndexesResponse_httpStatus :: Lens.Lens' ListIndexesResponse Prelude.Int
+listIndexesResponse_httpStatus = Lens.lens (\ListIndexesResponse' {httpStatus} -> httpStatus) (\s@ListIndexesResponse' {} a -> s {httpStatus = a} :: ListIndexesResponse)
+
+instance Prelude.NFData ListIndexesResponse where
+  rnf ListIndexesResponse' {..} =
+    Prelude.rnf indexes
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/ListSupportedResourceTypes.hs b/gen/Amazonka/ResourceExplorer2/ListSupportedResourceTypes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/ListSupportedResourceTypes.hs
@@ -0,0 +1,275 @@
+{-# 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.ResourceExplorer2.ListSupportedResourceTypes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a list of all resource types currently supported by Amazon Web
+-- Services Resource Explorer.
+--
+-- This operation returns paginated results.
+module Amazonka.ResourceExplorer2.ListSupportedResourceTypes
+  ( -- * Creating a Request
+    ListSupportedResourceTypes (..),
+    newListSupportedResourceTypes,
+
+    -- * Request Lenses
+    listSupportedResourceTypes_maxResults,
+    listSupportedResourceTypes_nextToken,
+
+    -- * Destructuring the Response
+    ListSupportedResourceTypesResponse (..),
+    newListSupportedResourceTypesResponse,
+
+    -- * Response Lenses
+    listSupportedResourceTypesResponse_nextToken,
+    listSupportedResourceTypesResponse_resourceTypes,
+    listSupportedResourceTypesResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListSupportedResourceTypes' smart constructor.
+data ListSupportedResourceTypes = ListSupportedResourceTypes'
+  { -- | The maximum number of results that you want included on each page of the
+    -- response. If you do not include this parameter, it defaults to a value
+    -- appropriate to the operation. If additional items exist beyond those
+    -- included in the current response, the @NextToken@ response element is
+    -- present and has a value (is not null). Include that value as the
+    -- @NextToken@ request parameter in the next call to the operation to get
+    -- the next part of the results.
+    --
+    -- An API operation can return fewer results than the maximum even when
+    -- there are more results available. You should check @NextToken@ after
+    -- every operation to ensure that you receive all of the results.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The parameter for receiving additional results if you receive a
+    -- @NextToken@ response in a previous request. A @NextToken@ response
+    -- indicates that more output is available. Set this parameter to the value
+    -- of the previous call\'s @NextToken@ response to indicate where the
+    -- output should continue from.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSupportedResourceTypes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listSupportedResourceTypes_maxResults' - The maximum number of results that you want included on each page of the
+-- response. If you do not include this parameter, it defaults to a value
+-- appropriate to the operation. If additional items exist beyond those
+-- included in the current response, the @NextToken@ response element is
+-- present and has a value (is not null). Include that value as the
+-- @NextToken@ request parameter in the next call to the operation to get
+-- the next part of the results.
+--
+-- An API operation can return fewer results than the maximum even when
+-- there are more results available. You should check @NextToken@ after
+-- every operation to ensure that you receive all of the results.
+--
+-- 'nextToken', 'listSupportedResourceTypes_nextToken' - The parameter for receiving additional results if you receive a
+-- @NextToken@ response in a previous request. A @NextToken@ response
+-- indicates that more output is available. Set this parameter to the value
+-- of the previous call\'s @NextToken@ response to indicate where the
+-- output should continue from.
+newListSupportedResourceTypes ::
+  ListSupportedResourceTypes
+newListSupportedResourceTypes =
+  ListSupportedResourceTypes'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results that you want included on each page of the
+-- response. If you do not include this parameter, it defaults to a value
+-- appropriate to the operation. If additional items exist beyond those
+-- included in the current response, the @NextToken@ response element is
+-- present and has a value (is not null). Include that value as the
+-- @NextToken@ request parameter in the next call to the operation to get
+-- the next part of the results.
+--
+-- An API operation can return fewer results than the maximum even when
+-- there are more results available. You should check @NextToken@ after
+-- every operation to ensure that you receive all of the results.
+listSupportedResourceTypes_maxResults :: Lens.Lens' ListSupportedResourceTypes (Prelude.Maybe Prelude.Natural)
+listSupportedResourceTypes_maxResults = Lens.lens (\ListSupportedResourceTypes' {maxResults} -> maxResults) (\s@ListSupportedResourceTypes' {} a -> s {maxResults = a} :: ListSupportedResourceTypes)
+
+-- | The parameter for receiving additional results if you receive a
+-- @NextToken@ response in a previous request. A @NextToken@ response
+-- indicates that more output is available. Set this parameter to the value
+-- of the previous call\'s @NextToken@ response to indicate where the
+-- output should continue from.
+listSupportedResourceTypes_nextToken :: Lens.Lens' ListSupportedResourceTypes (Prelude.Maybe Prelude.Text)
+listSupportedResourceTypes_nextToken = Lens.lens (\ListSupportedResourceTypes' {nextToken} -> nextToken) (\s@ListSupportedResourceTypes' {} a -> s {nextToken = a} :: ListSupportedResourceTypes)
+
+instance Core.AWSPager ListSupportedResourceTypes where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listSupportedResourceTypesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listSupportedResourceTypesResponse_resourceTypes
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listSupportedResourceTypes_nextToken
+          Lens..~ rs
+          Lens.^? listSupportedResourceTypesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListSupportedResourceTypes where
+  type
+    AWSResponse ListSupportedResourceTypes =
+      ListSupportedResourceTypesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListSupportedResourceTypesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "ResourceTypes" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListSupportedResourceTypes where
+  hashWithSalt _salt ListSupportedResourceTypes' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListSupportedResourceTypes where
+  rnf ListSupportedResourceTypes' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListSupportedResourceTypes where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListSupportedResourceTypes where
+  toJSON ListSupportedResourceTypes' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListSupportedResourceTypes where
+  toPath = Prelude.const "/ListSupportedResourceTypes"
+
+instance Data.ToQuery ListSupportedResourceTypes where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListSupportedResourceTypesResponse' smart constructor.
+data ListSupportedResourceTypesResponse = ListSupportedResourceTypesResponse'
+  { -- | If present, indicates that more output is available than is included in
+    -- the current response. Use this value in the @NextToken@ request
+    -- parameter in a subsequent call to the operation to get the next part of
+    -- the output. You should repeat this until the @NextToken@ response
+    -- element comes back as @null@.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The list of resource types supported by Resource Explorer.
+    resourceTypes :: Prelude.Maybe [SupportedResourceType],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSupportedResourceTypesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listSupportedResourceTypesResponse_nextToken' - If present, indicates that more output is available than is included in
+-- the current response. Use this value in the @NextToken@ request
+-- parameter in a subsequent call to the operation to get the next part of
+-- the output. You should repeat this until the @NextToken@ response
+-- element comes back as @null@.
+--
+-- 'resourceTypes', 'listSupportedResourceTypesResponse_resourceTypes' - The list of resource types supported by Resource Explorer.
+--
+-- 'httpStatus', 'listSupportedResourceTypesResponse_httpStatus' - The response's http status code.
+newListSupportedResourceTypesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListSupportedResourceTypesResponse
+newListSupportedResourceTypesResponse pHttpStatus_ =
+  ListSupportedResourceTypesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      resourceTypes = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If present, indicates that more output is available than is included in
+-- the current response. Use this value in the @NextToken@ request
+-- parameter in a subsequent call to the operation to get the next part of
+-- the output. You should repeat this until the @NextToken@ response
+-- element comes back as @null@.
+listSupportedResourceTypesResponse_nextToken :: Lens.Lens' ListSupportedResourceTypesResponse (Prelude.Maybe Prelude.Text)
+listSupportedResourceTypesResponse_nextToken = Lens.lens (\ListSupportedResourceTypesResponse' {nextToken} -> nextToken) (\s@ListSupportedResourceTypesResponse' {} a -> s {nextToken = a} :: ListSupportedResourceTypesResponse)
+
+-- | The list of resource types supported by Resource Explorer.
+listSupportedResourceTypesResponse_resourceTypes :: Lens.Lens' ListSupportedResourceTypesResponse (Prelude.Maybe [SupportedResourceType])
+listSupportedResourceTypesResponse_resourceTypes = Lens.lens (\ListSupportedResourceTypesResponse' {resourceTypes} -> resourceTypes) (\s@ListSupportedResourceTypesResponse' {} a -> s {resourceTypes = a} :: ListSupportedResourceTypesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listSupportedResourceTypesResponse_httpStatus :: Lens.Lens' ListSupportedResourceTypesResponse Prelude.Int
+listSupportedResourceTypesResponse_httpStatus = Lens.lens (\ListSupportedResourceTypesResponse' {httpStatus} -> httpStatus) (\s@ListSupportedResourceTypesResponse' {} a -> s {httpStatus = a} :: ListSupportedResourceTypesResponse)
+
+instance
+  Prelude.NFData
+    ListSupportedResourceTypesResponse
+  where
+  rnf ListSupportedResourceTypesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf resourceTypes
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/ListTagsForResource.hs b/gen/Amazonka/ResourceExplorer2/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/ListTagsForResource.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.ListTagsForResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the tags that are attached to the specified resource.
+module Amazonka.ResourceExplorer2.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the view or index that you want to attach tags to.
+    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
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view or index that you want to attach tags to.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view or index that you want to attach tags to.
+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceArn
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath ListTagsForResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | The tag key and value pairs that you want to attach to the specified
+    -- view or index.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - The tag key and value pairs that you want to attach to the specified
+-- view or index.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The tag key and value pairs that you want to attach to the specified
+-- view or index.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/ListViews.hs b/gen/Amazonka/ResourceExplorer2/ListViews.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/ListViews.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.ResourceExplorer2.ListViews
+-- 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
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource names (ARNs)>
+-- of the views available in the Amazon Web Services Region in which you
+-- call this operation.
+--
+-- Always check the @NextToken@ response parameter for a @null@ value when
+-- calling a paginated operation. These operations can occasionally return
+-- an empty set of results even when there are more results available. The
+-- @NextToken@ response parameter value is @null@ /only/ when there are no
+-- more results to display.
+--
+-- This operation returns paginated results.
+module Amazonka.ResourceExplorer2.ListViews
+  ( -- * Creating a Request
+    ListViews (..),
+    newListViews,
+
+    -- * Request Lenses
+    listViews_maxResults,
+    listViews_nextToken,
+
+    -- * Destructuring the Response
+    ListViewsResponse (..),
+    newListViewsResponse,
+
+    -- * Response Lenses
+    listViewsResponse_nextToken,
+    listViewsResponse_views,
+    listViewsResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListViews' smart constructor.
+data ListViews = ListViews'
+  { -- | The maximum number of results that you want included on each page of the
+    -- response. If you do not include this parameter, it defaults to a value
+    -- appropriate to the operation. If additional items exist beyond those
+    -- included in the current response, the @NextToken@ response element is
+    -- present and has a value (is not null). Include that value as the
+    -- @NextToken@ request parameter in the next call to the operation to get
+    -- the next part of the results.
+    --
+    -- An API operation can return fewer results than the maximum even when
+    -- there are more results available. You should check @NextToken@ after
+    -- every operation to ensure that you receive all of the results.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The parameter for receiving additional results if you receive a
+    -- @NextToken@ response in a previous request. A @NextToken@ response
+    -- indicates that more output is available. Set this parameter to the value
+    -- of the previous call\'s @NextToken@ response to indicate where the
+    -- output should continue from.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListViews' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listViews_maxResults' - The maximum number of results that you want included on each page of the
+-- response. If you do not include this parameter, it defaults to a value
+-- appropriate to the operation. If additional items exist beyond those
+-- included in the current response, the @NextToken@ response element is
+-- present and has a value (is not null). Include that value as the
+-- @NextToken@ request parameter in the next call to the operation to get
+-- the next part of the results.
+--
+-- An API operation can return fewer results than the maximum even when
+-- there are more results available. You should check @NextToken@ after
+-- every operation to ensure that you receive all of the results.
+--
+-- 'nextToken', 'listViews_nextToken' - The parameter for receiving additional results if you receive a
+-- @NextToken@ response in a previous request. A @NextToken@ response
+-- indicates that more output is available. Set this parameter to the value
+-- of the previous call\'s @NextToken@ response to indicate where the
+-- output should continue from.
+newListViews ::
+  ListViews
+newListViews =
+  ListViews'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results that you want included on each page of the
+-- response. If you do not include this parameter, it defaults to a value
+-- appropriate to the operation. If additional items exist beyond those
+-- included in the current response, the @NextToken@ response element is
+-- present and has a value (is not null). Include that value as the
+-- @NextToken@ request parameter in the next call to the operation to get
+-- the next part of the results.
+--
+-- An API operation can return fewer results than the maximum even when
+-- there are more results available. You should check @NextToken@ after
+-- every operation to ensure that you receive all of the results.
+listViews_maxResults :: Lens.Lens' ListViews (Prelude.Maybe Prelude.Natural)
+listViews_maxResults = Lens.lens (\ListViews' {maxResults} -> maxResults) (\s@ListViews' {} a -> s {maxResults = a} :: ListViews)
+
+-- | The parameter for receiving additional results if you receive a
+-- @NextToken@ response in a previous request. A @NextToken@ response
+-- indicates that more output is available. Set this parameter to the value
+-- of the previous call\'s @NextToken@ response to indicate where the
+-- output should continue from.
+listViews_nextToken :: Lens.Lens' ListViews (Prelude.Maybe Prelude.Text)
+listViews_nextToken = Lens.lens (\ListViews' {nextToken} -> nextToken) (\s@ListViews' {} a -> s {nextToken = a} :: ListViews)
+
+instance Core.AWSPager ListViews where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listViewsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listViewsResponse_views
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listViews_nextToken
+          Lens..~ rs
+          Lens.^? listViewsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListViews where
+  type AWSResponse ListViews = ListViewsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListViewsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Views" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListViews where
+  hashWithSalt _salt ListViews' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListViews where
+  rnf ListViews' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListViews where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListViews where
+  toJSON ListViews' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListViews where
+  toPath = Prelude.const "/ListViews"
+
+instance Data.ToQuery ListViews where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListViewsResponse' smart constructor.
+data ListViewsResponse = ListViewsResponse'
+  { -- | If present, indicates that more output is available than is included in
+    -- the current response. Use this value in the @NextToken@ request
+    -- parameter in a subsequent call to the operation to get the next part of
+    -- the output. You should repeat this until the @NextToken@ response
+    -- element comes back as @null@.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The list of views available in the Amazon Web Services Region in which
+    -- you called this operation.
+    views :: 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 'ListViewsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listViewsResponse_nextToken' - If present, indicates that more output is available than is included in
+-- the current response. Use this value in the @NextToken@ request
+-- parameter in a subsequent call to the operation to get the next part of
+-- the output. You should repeat this until the @NextToken@ response
+-- element comes back as @null@.
+--
+-- 'views', 'listViewsResponse_views' - The list of views available in the Amazon Web Services Region in which
+-- you called this operation.
+--
+-- 'httpStatus', 'listViewsResponse_httpStatus' - The response's http status code.
+newListViewsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListViewsResponse
+newListViewsResponse pHttpStatus_ =
+  ListViewsResponse'
+    { nextToken = Prelude.Nothing,
+      views = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If present, indicates that more output is available than is included in
+-- the current response. Use this value in the @NextToken@ request
+-- parameter in a subsequent call to the operation to get the next part of
+-- the output. You should repeat this until the @NextToken@ response
+-- element comes back as @null@.
+listViewsResponse_nextToken :: Lens.Lens' ListViewsResponse (Prelude.Maybe Prelude.Text)
+listViewsResponse_nextToken = Lens.lens (\ListViewsResponse' {nextToken} -> nextToken) (\s@ListViewsResponse' {} a -> s {nextToken = a} :: ListViewsResponse)
+
+-- | The list of views available in the Amazon Web Services Region in which
+-- you called this operation.
+listViewsResponse_views :: Lens.Lens' ListViewsResponse (Prelude.Maybe [Prelude.Text])
+listViewsResponse_views = Lens.lens (\ListViewsResponse' {views} -> views) (\s@ListViewsResponse' {} a -> s {views = a} :: ListViewsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listViewsResponse_httpStatus :: Lens.Lens' ListViewsResponse Prelude.Int
+listViewsResponse_httpStatus = Lens.lens (\ListViewsResponse' {httpStatus} -> httpStatus) (\s@ListViewsResponse' {} a -> s {httpStatus = a} :: ListViewsResponse)
+
+instance Prelude.NFData ListViewsResponse where
+  rnf ListViewsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf views
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/Search.hs b/gen/Amazonka/ResourceExplorer2/Search.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Search.hs
@@ -0,0 +1,394 @@
+{-# 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.ResourceExplorer2.Search
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Searches for resources and displays details about all resources that
+-- match the specified criteria. You must specify a query string.
+--
+-- All search queries must use a view. If you don\'t explicitly specify a
+-- view, then Amazon Web Services Resource Explorer uses the default view
+-- for the Amazon Web Services Region in which you call this operation. The
+-- results are the logical intersection of the results that match both the
+-- @QueryString@ parameter supplied to this operation and the
+-- @SearchFilter@ parameter attached to the view.
+--
+-- For the complete syntax supported by the @QueryString@ parameter, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/APIReference/about-query-syntax.html Search query syntax reference for Resource Explorer>.
+--
+-- If your search results are empty, or are missing results that you think
+-- should be there, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/troubleshooting_search.html Troubleshooting Resource Explorer search>.
+--
+-- This operation returns paginated results.
+module Amazonka.ResourceExplorer2.Search
+  ( -- * Creating a Request
+    Search (..),
+    newSearch,
+
+    -- * Request Lenses
+    search_maxResults,
+    search_nextToken,
+    search_viewArn,
+    search_queryString,
+
+    -- * Destructuring the Response
+    SearchResponse (..),
+    newSearchResponse,
+
+    -- * Response Lenses
+    searchResponse_count,
+    searchResponse_nextToken,
+    searchResponse_resources,
+    searchResponse_viewArn,
+    searchResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newSearch' smart constructor.
+data Search = Search'
+  { -- | The maximum number of results that you want included on each page of the
+    -- response. If you do not include this parameter, it defaults to a value
+    -- appropriate to the operation. If additional items exist beyond those
+    -- included in the current response, the @NextToken@ response element is
+    -- present and has a value (is not null). Include that value as the
+    -- @NextToken@ request parameter in the next call to the operation to get
+    -- the next part of the results.
+    --
+    -- An API operation can return fewer results than the maximum even when
+    -- there are more results available. You should check @NextToken@ after
+    -- every operation to ensure that you receive all of the results.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The parameter for receiving additional results if you receive a
+    -- @NextToken@ response in a previous request. A @NextToken@ response
+    -- indicates that more output is available. Set this parameter to the value
+    -- of the previous call\'s @NextToken@ response to indicate where the
+    -- output should continue from.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the view to use for the query. If you don\'t specify a value for this
+    -- parameter, then the operation automatically uses the default view for
+    -- the Amazon Web Services Region in which you called this operation. If
+    -- the Region either doesn\'t have a default view or if you don\'t have
+    -- permission to use the default view, then the operation fails with a
+    -- @401 Unauthorized@ exception.
+    viewArn :: Prelude.Maybe Prelude.Text,
+    -- | A string that includes keywords and filters that specify the resources
+    -- that you want to include in the results.
+    --
+    -- For the complete syntax supported by the @QueryString@ parameter, see
+    -- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html Search query syntax reference for Resource Explorer>.
+    --
+    -- The search is completely case insensitive. You can specify an empty
+    -- string to return all results up to the limit of 1,000 total results.
+    --
+    -- The operation can return only the first 1,000 results. If the resource
+    -- you want is not included, then use a different value for @QueryString@
+    -- to refine the results.
+    queryString :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Search' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'search_maxResults' - The maximum number of results that you want included on each page of the
+-- response. If you do not include this parameter, it defaults to a value
+-- appropriate to the operation. If additional items exist beyond those
+-- included in the current response, the @NextToken@ response element is
+-- present and has a value (is not null). Include that value as the
+-- @NextToken@ request parameter in the next call to the operation to get
+-- the next part of the results.
+--
+-- An API operation can return fewer results than the maximum even when
+-- there are more results available. You should check @NextToken@ after
+-- every operation to ensure that you receive all of the results.
+--
+-- 'nextToken', 'search_nextToken' - The parameter for receiving additional results if you receive a
+-- @NextToken@ response in a previous request. A @NextToken@ response
+-- indicates that more output is available. Set this parameter to the value
+-- of the previous call\'s @NextToken@ response to indicate where the
+-- output should continue from.
+--
+-- 'viewArn', 'search_viewArn' - Specifies the
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view to use for the query. If you don\'t specify a value for this
+-- parameter, then the operation automatically uses the default view for
+-- the Amazon Web Services Region in which you called this operation. If
+-- the Region either doesn\'t have a default view or if you don\'t have
+-- permission to use the default view, then the operation fails with a
+-- @401 Unauthorized@ exception.
+--
+-- 'queryString', 'search_queryString' - A string that includes keywords and filters that specify the resources
+-- that you want to include in the results.
+--
+-- For the complete syntax supported by the @QueryString@ parameter, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html Search query syntax reference for Resource Explorer>.
+--
+-- The search is completely case insensitive. You can specify an empty
+-- string to return all results up to the limit of 1,000 total results.
+--
+-- The operation can return only the first 1,000 results. If the resource
+-- you want is not included, then use a different value for @QueryString@
+-- to refine the results.
+newSearch ::
+  -- | 'queryString'
+  Prelude.Text ->
+  Search
+newSearch pQueryString_ =
+  Search'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      viewArn = Prelude.Nothing,
+      queryString = Data._Sensitive Lens.# pQueryString_
+    }
+
+-- | The maximum number of results that you want included on each page of the
+-- response. If you do not include this parameter, it defaults to a value
+-- appropriate to the operation. If additional items exist beyond those
+-- included in the current response, the @NextToken@ response element is
+-- present and has a value (is not null). Include that value as the
+-- @NextToken@ request parameter in the next call to the operation to get
+-- the next part of the results.
+--
+-- An API operation can return fewer results than the maximum even when
+-- there are more results available. You should check @NextToken@ after
+-- every operation to ensure that you receive all of the results.
+search_maxResults :: Lens.Lens' Search (Prelude.Maybe Prelude.Natural)
+search_maxResults = Lens.lens (\Search' {maxResults} -> maxResults) (\s@Search' {} a -> s {maxResults = a} :: Search)
+
+-- | The parameter for receiving additional results if you receive a
+-- @NextToken@ response in a previous request. A @NextToken@ response
+-- indicates that more output is available. Set this parameter to the value
+-- of the previous call\'s @NextToken@ response to indicate where the
+-- output should continue from.
+search_nextToken :: Lens.Lens' Search (Prelude.Maybe Prelude.Text)
+search_nextToken = Lens.lens (\Search' {nextToken} -> nextToken) (\s@Search' {} a -> s {nextToken = a} :: Search)
+
+-- | Specifies the
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view to use for the query. If you don\'t specify a value for this
+-- parameter, then the operation automatically uses the default view for
+-- the Amazon Web Services Region in which you called this operation. If
+-- the Region either doesn\'t have a default view or if you don\'t have
+-- permission to use the default view, then the operation fails with a
+-- @401 Unauthorized@ exception.
+search_viewArn :: Lens.Lens' Search (Prelude.Maybe Prelude.Text)
+search_viewArn = Lens.lens (\Search' {viewArn} -> viewArn) (\s@Search' {} a -> s {viewArn = a} :: Search)
+
+-- | A string that includes keywords and filters that specify the resources
+-- that you want to include in the results.
+--
+-- For the complete syntax supported by the @QueryString@ parameter, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html Search query syntax reference for Resource Explorer>.
+--
+-- The search is completely case insensitive. You can specify an empty
+-- string to return all results up to the limit of 1,000 total results.
+--
+-- The operation can return only the first 1,000 results. If the resource
+-- you want is not included, then use a different value for @QueryString@
+-- to refine the results.
+search_queryString :: Lens.Lens' Search Prelude.Text
+search_queryString = Lens.lens (\Search' {queryString} -> queryString) (\s@Search' {} a -> s {queryString = a} :: Search) Prelude.. Data._Sensitive
+
+instance Core.AWSPager Search where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? searchResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? searchResponse_resources
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& search_nextToken
+          Lens..~ rs
+          Lens.^? searchResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest Search where
+  type AWSResponse Search = SearchResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SearchResponse'
+            Prelude.<$> (x Data..?> "Count")
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Resources" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "ViewArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable Search where
+  hashWithSalt _salt Search' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` viewArn
+      `Prelude.hashWithSalt` queryString
+
+instance Prelude.NFData Search where
+  rnf Search' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf viewArn
+      `Prelude.seq` Prelude.rnf queryString
+
+instance Data.ToHeaders Search where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON Search where
+  toJSON Search' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("ViewArn" Data..=) Prelude.<$> viewArn,
+            Prelude.Just ("QueryString" Data..= queryString)
+          ]
+      )
+
+instance Data.ToPath Search where
+  toPath = Prelude.const "/Search"
+
+instance Data.ToQuery Search where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSearchResponse' smart constructor.
+data SearchResponse = SearchResponse'
+  { -- | The number of resources that match the query.
+    count :: Prelude.Maybe ResourceCount,
+    -- | If present, indicates that more output is available than is included in
+    -- the current response. Use this value in the @NextToken@ request
+    -- parameter in a subsequent call to the operation to get the next part of
+    -- the output. You should repeat this until the @NextToken@ response
+    -- element comes back as @null@.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The list of structures that describe the resources that match the query.
+    resources :: Prelude.Maybe [Resource],
+    -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the view that this operation used to perform the search.
+    viewArn :: 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 'SearchResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'count', 'searchResponse_count' - The number of resources that match the query.
+--
+-- 'nextToken', 'searchResponse_nextToken' - If present, indicates that more output is available than is included in
+-- the current response. Use this value in the @NextToken@ request
+-- parameter in a subsequent call to the operation to get the next part of
+-- the output. You should repeat this until the @NextToken@ response
+-- element comes back as @null@.
+--
+-- 'resources', 'searchResponse_resources' - The list of structures that describe the resources that match the query.
+--
+-- 'viewArn', 'searchResponse_viewArn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view that this operation used to perform the search.
+--
+-- 'httpStatus', 'searchResponse_httpStatus' - The response's http status code.
+newSearchResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SearchResponse
+newSearchResponse pHttpStatus_ =
+  SearchResponse'
+    { count = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      resources = Prelude.Nothing,
+      viewArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The number of resources that match the query.
+searchResponse_count :: Lens.Lens' SearchResponse (Prelude.Maybe ResourceCount)
+searchResponse_count = Lens.lens (\SearchResponse' {count} -> count) (\s@SearchResponse' {} a -> s {count = a} :: SearchResponse)
+
+-- | If present, indicates that more output is available than is included in
+-- the current response. Use this value in the @NextToken@ request
+-- parameter in a subsequent call to the operation to get the next part of
+-- the output. You should repeat this until the @NextToken@ response
+-- element comes back as @null@.
+searchResponse_nextToken :: Lens.Lens' SearchResponse (Prelude.Maybe Prelude.Text)
+searchResponse_nextToken = Lens.lens (\SearchResponse' {nextToken} -> nextToken) (\s@SearchResponse' {} a -> s {nextToken = a} :: SearchResponse)
+
+-- | The list of structures that describe the resources that match the query.
+searchResponse_resources :: Lens.Lens' SearchResponse (Prelude.Maybe [Resource])
+searchResponse_resources = Lens.lens (\SearchResponse' {resources} -> resources) (\s@SearchResponse' {} a -> s {resources = a} :: SearchResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view that this operation used to perform the search.
+searchResponse_viewArn :: Lens.Lens' SearchResponse (Prelude.Maybe Prelude.Text)
+searchResponse_viewArn = Lens.lens (\SearchResponse' {viewArn} -> viewArn) (\s@SearchResponse' {} a -> s {viewArn = a} :: SearchResponse)
+
+-- | The response's http status code.
+searchResponse_httpStatus :: Lens.Lens' SearchResponse Prelude.Int
+searchResponse_httpStatus = Lens.lens (\SearchResponse' {httpStatus} -> httpStatus) (\s@SearchResponse' {} a -> s {httpStatus = a} :: SearchResponse)
+
+instance Prelude.NFData SearchResponse where
+  rnf SearchResponse' {..} =
+    Prelude.rnf count
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf resources
+      `Prelude.seq` Prelude.rnf viewArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/TagResource.hs b/gen/Amazonka/ResourceExplorer2/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/TagResource.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.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)
+--
+-- Adds one or more tag key and value pairs to an Amazon Web Services
+-- Resource Explorer view or index.
+module Amazonka.ResourceExplorer2.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_tags,
+    tagResource_resourceArn,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | A list of tag key and value pairs that you want to attach to the
+    -- specified view or index.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The Amazon Resource Name (ARN) of the view or index that you want to
+    -- attach tags to.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'tagResource_tags' - A list of tag key and value pairs that you want to attach to the
+-- specified view or index.
+--
+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the view or index that you want to
+-- attach tags to.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { tags = Prelude.Nothing,
+      resourceArn = pResourceArn_
+    }
+
+-- | A list of tag key and value pairs that you want to attach to the
+-- specified view or index.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the view or index that you want to
+-- attach tags to.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+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` tags
+      `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf resourceArn
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Tags" Data..=) Prelude.<$> tags]
+      )
+
+instance Data.ToPath TagResource where
+  toPath TagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.
+newTagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pHttpStatus_ =
+  TagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/Types.hs b/gen/Amazonka/ResourceExplorer2/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Types.hs
@@ -0,0 +1,263 @@
+{-# 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.ResourceExplorer2.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.ResourceExplorer2.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _InternalServerException,
+    _ResourceNotFoundException,
+    _ServiceQuotaExceededException,
+    _ThrottlingException,
+    _UnauthorizedException,
+    _ValidationException,
+
+    -- * IndexState
+    IndexState (..),
+
+    -- * IndexType
+    IndexType (..),
+
+    -- * BatchGetViewError
+    BatchGetViewError (..),
+    newBatchGetViewError,
+    batchGetViewError_errorMessage,
+    batchGetViewError_viewArn,
+
+    -- * Document
+    Document (..),
+    newDocument,
+
+    -- * IncludedProperty
+    IncludedProperty (..),
+    newIncludedProperty,
+    includedProperty_name,
+
+    -- * Index
+    Index (..),
+    newIndex,
+    index_arn,
+    index_region,
+    index_type,
+
+    -- * Resource
+    Resource (..),
+    newResource,
+    resource_arn,
+    resource_lastReportedAt,
+    resource_owningAccountId,
+    resource_properties,
+    resource_region,
+    resource_resourceType,
+    resource_service,
+
+    -- * ResourceCount
+    ResourceCount (..),
+    newResourceCount,
+    resourceCount_complete,
+    resourceCount_totalResources,
+
+    -- * ResourceProperty
+    ResourceProperty (..),
+    newResourceProperty,
+    resourceProperty_data,
+    resourceProperty_lastReportedAt,
+    resourceProperty_name,
+
+    -- * SearchFilter
+    SearchFilter (..),
+    newSearchFilter,
+    searchFilter_filterString,
+
+    -- * SupportedResourceType
+    SupportedResourceType (..),
+    newSupportedResourceType,
+    supportedResourceType_resourceType,
+    supportedResourceType_service,
+
+    -- * View
+    View (..),
+    newView,
+    view_filters,
+    view_includedProperties,
+    view_lastUpdatedAt,
+    view_owner,
+    view_scope,
+    view_viewArn,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.ResourceExplorer2.Types.BatchGetViewError
+import Amazonka.ResourceExplorer2.Types.Document
+import Amazonka.ResourceExplorer2.Types.IncludedProperty
+import Amazonka.ResourceExplorer2.Types.Index
+import Amazonka.ResourceExplorer2.Types.IndexState
+import Amazonka.ResourceExplorer2.Types.IndexType
+import Amazonka.ResourceExplorer2.Types.Resource
+import Amazonka.ResourceExplorer2.Types.ResourceCount
+import Amazonka.ResourceExplorer2.Types.ResourceProperty
+import Amazonka.ResourceExplorer2.Types.SearchFilter
+import Amazonka.ResourceExplorer2.Types.SupportedResourceType
+import Amazonka.ResourceExplorer2.Types.View
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2022-07-28@ of the Amazon Resource Explorer SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "ResourceExplorer2",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "resource-explorer-2",
+      Core.signingName = "resource-explorer-2",
+      Core.version = "2022-07-28",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "ResourceExplorer2",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | The credentials that you used to call this operation don\'t have the
+-- minimum required permissions.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 403
+
+-- | You tried to create a new view or index when one already exists, and you
+-- either didn\'t specify or specified a different idempotency token as the
+-- original request.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | The request failed because of internal service error. Try your request
+-- again later.
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+    Prelude.. Core.hasStatus 500
+
+-- | You specified a resource that doesn\'t exist. Check the ID or ARN that
+-- you used to identity the resource, and try again.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | The request failed because it exceeds a service quota.
+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceQuotaExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceQuotaExceededException"
+    Prelude.. Core.hasStatus 402
+
+-- | The request failed because you exceeded a rate limit for this operation.
+-- For more information, see
+-- <https://docs.aws.amazon.com/arexug/mainline/quotas.html Quotas for Resource Explorer>.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+    Prelude.. Core.hasStatus 429
+
+-- | The principal making the request isn\'t permitted to perform the
+-- operation.
+_UnauthorizedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnauthorizedException =
+  Core._MatchServiceError
+    defaultService
+    "UnauthorizedException"
+    Prelude.. Core.hasStatus 401
+
+-- | You provided an invalid value for one of the operation\'s parameters.
+-- Check the syntax for the operation, and try again.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/ResourceExplorer2/Types/BatchGetViewError.hs b/gen/Amazonka/ResourceExplorer2/Types/BatchGetViewError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Types/BatchGetViewError.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.Types.BatchGetViewError
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ResourceExplorer2.Types.BatchGetViewError where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A collection of error messages for any views that Amazon Web Services
+-- Resource Explorer couldn\'t retrieve details.
+--
+-- /See:/ 'newBatchGetViewError' smart constructor.
+data BatchGetViewError = BatchGetViewError'
+  { -- | The description of the error for the specified view.
+    errorMessage :: Prelude.Text,
+    -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the view for which Resource Explorer failed to retrieve details.
+    viewArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchGetViewError' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorMessage', 'batchGetViewError_errorMessage' - The description of the error for the specified view.
+--
+-- 'viewArn', 'batchGetViewError_viewArn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view for which Resource Explorer failed to retrieve details.
+newBatchGetViewError ::
+  -- | 'errorMessage'
+  Prelude.Text ->
+  -- | 'viewArn'
+  Prelude.Text ->
+  BatchGetViewError
+newBatchGetViewError pErrorMessage_ pViewArn_ =
+  BatchGetViewError'
+    { errorMessage = pErrorMessage_,
+      viewArn = pViewArn_
+    }
+
+-- | The description of the error for the specified view.
+batchGetViewError_errorMessage :: Lens.Lens' BatchGetViewError Prelude.Text
+batchGetViewError_errorMessage = Lens.lens (\BatchGetViewError' {errorMessage} -> errorMessage) (\s@BatchGetViewError' {} a -> s {errorMessage = a} :: BatchGetViewError)
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view for which Resource Explorer failed to retrieve details.
+batchGetViewError_viewArn :: Lens.Lens' BatchGetViewError Prelude.Text
+batchGetViewError_viewArn = Lens.lens (\BatchGetViewError' {viewArn} -> viewArn) (\s@BatchGetViewError' {} a -> s {viewArn = a} :: BatchGetViewError)
+
+instance Data.FromJSON BatchGetViewError where
+  parseJSON =
+    Data.withObject
+      "BatchGetViewError"
+      ( \x ->
+          BatchGetViewError'
+            Prelude.<$> (x Data..: "ErrorMessage")
+            Prelude.<*> (x Data..: "ViewArn")
+      )
+
+instance Prelude.Hashable BatchGetViewError where
+  hashWithSalt _salt BatchGetViewError' {..} =
+    _salt
+      `Prelude.hashWithSalt` errorMessage
+      `Prelude.hashWithSalt` viewArn
+
+instance Prelude.NFData BatchGetViewError where
+  rnf BatchGetViewError' {..} =
+    Prelude.rnf errorMessage
+      `Prelude.seq` Prelude.rnf viewArn
diff --git a/gen/Amazonka/ResourceExplorer2/Types/Document.hs b/gen/Amazonka/ResourceExplorer2/Types/Document.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Types/Document.hs
@@ -0,0 +1,52 @@
+{-# 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.ResourceExplorer2.Types.Document
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ResourceExplorer2.Types.Document 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
+
+-- | /See:/ 'newDocument' smart constructor.
+data Document = Document'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Document' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDocument ::
+  Document
+newDocument = Document'
+
+instance Data.FromJSON Document where
+  parseJSON =
+    Data.withObject
+      "Document"
+      (\x -> Prelude.pure Document')
+
+instance Prelude.Hashable Document where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData Document where
+  rnf _ = ()
diff --git a/gen/Amazonka/ResourceExplorer2/Types/IncludedProperty.hs b/gen/Amazonka/ResourceExplorer2/Types/IncludedProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Types/IncludedProperty.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.Types.IncludedProperty
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ResourceExplorer2.Types.IncludedProperty where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about an additional property that describes a resource, that
+-- you can optionally include in the view. This lets you view that property
+-- in search results, and filter your search results based on the value of
+-- the property.
+--
+-- /See:/ 'newIncludedProperty' smart constructor.
+data IncludedProperty = IncludedProperty'
+  { -- | The name of the property that is included in this view.
+    --
+    -- You can specify the following property names for this field:
+    --
+    -- -   @Tags@
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IncludedProperty' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'includedProperty_name' - The name of the property that is included in this view.
+--
+-- You can specify the following property names for this field:
+--
+-- -   @Tags@
+newIncludedProperty ::
+  -- | 'name'
+  Prelude.Text ->
+  IncludedProperty
+newIncludedProperty pName_ =
+  IncludedProperty' {name = pName_}
+
+-- | The name of the property that is included in this view.
+--
+-- You can specify the following property names for this field:
+--
+-- -   @Tags@
+includedProperty_name :: Lens.Lens' IncludedProperty Prelude.Text
+includedProperty_name = Lens.lens (\IncludedProperty' {name} -> name) (\s@IncludedProperty' {} a -> s {name = a} :: IncludedProperty)
+
+instance Data.FromJSON IncludedProperty where
+  parseJSON =
+    Data.withObject
+      "IncludedProperty"
+      ( \x ->
+          IncludedProperty' Prelude.<$> (x Data..: "Name")
+      )
+
+instance Prelude.Hashable IncludedProperty where
+  hashWithSalt _salt IncludedProperty' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData IncludedProperty where
+  rnf IncludedProperty' {..} = Prelude.rnf name
+
+instance Data.ToJSON IncludedProperty where
+  toJSON IncludedProperty' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Name" Data..= name)]
+      )
diff --git a/gen/Amazonka/ResourceExplorer2/Types/Index.hs b/gen/Amazonka/ResourceExplorer2/Types/Index.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Types/Index.hs
@@ -0,0 +1,142 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.Types.Index
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ResourceExplorer2.Types.Index 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
+import Amazonka.ResourceExplorer2.Types.IndexType
+
+-- | An index is the data store used by Amazon Web Services Resource Explorer
+-- to hold information about your Amazon Web Services resources that the
+-- service discovers. Creating an index in an Amazon Web Services Region
+-- turns on Resource Explorer and lets it discover your resources.
+--
+-- By default, an index is /local/, meaning that it contains information
+-- about resources in only the same Region as the index. However, you can
+-- promote the index of one Region in the account by calling
+-- UpdateIndexType to convert it into an aggregator index. The aggregator
+-- index receives a replicated copy of the index information from all other
+-- Regions where Resource Explorer is turned on. This allows search
+-- operations in that Region to return results from all Regions in the
+-- account.
+--
+-- /See:/ 'newIndex' smart constructor.
+data Index = Index'
+  { -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the index.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Region in which the index exists.
+    region :: Prelude.Maybe Prelude.Text,
+    -- | The type of index. It can be one of the following values:
+    --
+    -- -   __LOCAL__ – The index contains information about resources from only
+    --     the same Amazon Web Services Region.
+    --
+    -- -   __AGGREGATOR__ – Resource Explorer replicates copies of the indexed
+    --     information about resources in all other Amazon Web Services Regions
+    --     to the aggregator index. This lets search results in the Region with
+    --     the aggregator index to include resources from all Regions in the
+    --     account where Resource Explorer is turned on.
+    type' :: Prelude.Maybe IndexType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Index' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'index_arn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the index.
+--
+-- 'region', 'index_region' - The Amazon Web Services Region in which the index exists.
+--
+-- 'type'', 'index_type' - The type of index. It can be one of the following values:
+--
+-- -   __LOCAL__ – The index contains information about resources from only
+--     the same Amazon Web Services Region.
+--
+-- -   __AGGREGATOR__ – Resource Explorer replicates copies of the indexed
+--     information about resources in all other Amazon Web Services Regions
+--     to the aggregator index. This lets search results in the Region with
+--     the aggregator index to include resources from all Regions in the
+--     account where Resource Explorer is turned on.
+newIndex ::
+  Index
+newIndex =
+  Index'
+    { arn = Prelude.Nothing,
+      region = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the index.
+index_arn :: Lens.Lens' Index (Prelude.Maybe Prelude.Text)
+index_arn = Lens.lens (\Index' {arn} -> arn) (\s@Index' {} a -> s {arn = a} :: Index)
+
+-- | The Amazon Web Services Region in which the index exists.
+index_region :: Lens.Lens' Index (Prelude.Maybe Prelude.Text)
+index_region = Lens.lens (\Index' {region} -> region) (\s@Index' {} a -> s {region = a} :: Index)
+
+-- | The type of index. It can be one of the following values:
+--
+-- -   __LOCAL__ – The index contains information about resources from only
+--     the same Amazon Web Services Region.
+--
+-- -   __AGGREGATOR__ – Resource Explorer replicates copies of the indexed
+--     information about resources in all other Amazon Web Services Regions
+--     to the aggregator index. This lets search results in the Region with
+--     the aggregator index to include resources from all Regions in the
+--     account where Resource Explorer is turned on.
+index_type :: Lens.Lens' Index (Prelude.Maybe IndexType)
+index_type = Lens.lens (\Index' {type'} -> type') (\s@Index' {} a -> s {type' = a} :: Index)
+
+instance Data.FromJSON Index where
+  parseJSON =
+    Data.withObject
+      "Index"
+      ( \x ->
+          Index'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "Region")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable Index where
+  hashWithSalt _salt Index' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` region
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData Index where
+  rnf Index' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf region
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/ResourceExplorer2/Types/IndexState.hs b/gen/Amazonka/ResourceExplorer2/Types/IndexState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Types/IndexState.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.Types.IndexState
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ResourceExplorer2.Types.IndexState
+  ( IndexState
+      ( ..,
+        IndexState_ACTIVE,
+        IndexState_CREATING,
+        IndexState_DELETED,
+        IndexState_DELETING,
+        IndexState_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype IndexState = IndexState'
+  { fromIndexState ::
+      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 IndexState_ACTIVE :: IndexState
+pattern IndexState_ACTIVE = IndexState' "ACTIVE"
+
+pattern IndexState_CREATING :: IndexState
+pattern IndexState_CREATING = IndexState' "CREATING"
+
+pattern IndexState_DELETED :: IndexState
+pattern IndexState_DELETED = IndexState' "DELETED"
+
+pattern IndexState_DELETING :: IndexState
+pattern IndexState_DELETING = IndexState' "DELETING"
+
+pattern IndexState_UPDATING :: IndexState
+pattern IndexState_UPDATING = IndexState' "UPDATING"
+
+{-# COMPLETE
+  IndexState_ACTIVE,
+  IndexState_CREATING,
+  IndexState_DELETED,
+  IndexState_DELETING,
+  IndexState_UPDATING,
+  IndexState'
+  #-}
diff --git a/gen/Amazonka/ResourceExplorer2/Types/IndexType.hs b/gen/Amazonka/ResourceExplorer2/Types/IndexType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Types/IndexType.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.ResourceExplorer2.Types.IndexType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ResourceExplorer2.Types.IndexType
+  ( IndexType
+      ( ..,
+        IndexType_AGGREGATOR,
+        IndexType_LOCAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype IndexType = IndexType'
+  { fromIndexType ::
+      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 IndexType_AGGREGATOR :: IndexType
+pattern IndexType_AGGREGATOR = IndexType' "AGGREGATOR"
+
+pattern IndexType_LOCAL :: IndexType
+pattern IndexType_LOCAL = IndexType' "LOCAL"
+
+{-# COMPLETE
+  IndexType_AGGREGATOR,
+  IndexType_LOCAL,
+  IndexType'
+  #-}
diff --git a/gen/Amazonka/ResourceExplorer2/Types/Resource.hs b/gen/Amazonka/ResourceExplorer2/Types/Resource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Types/Resource.hs
@@ -0,0 +1,168 @@
+{-# 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.ResourceExplorer2.Types.Resource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ResourceExplorer2.Types.Resource 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
+import Amazonka.ResourceExplorer2.Types.ResourceProperty
+
+-- | A resource in Amazon Web Services that Amazon Web Services Resource
+-- Explorer has discovered, and for which it has stored information in the
+-- index of the Amazon Web Services Region that contains the resource.
+--
+-- /See:/ 'newResource' smart constructor.
+data Resource = Resource'
+  { -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The date and time that Resource Explorer last queried this resource and
+    -- updated the index with the latest information about the resource.
+    lastReportedAt :: Prelude.Maybe Data.ISO8601,
+    -- | The Amazon Web Services account that owns the resource.
+    owningAccountId :: Prelude.Maybe Prelude.Text,
+    -- | A structure with additional type-specific details about the resource.
+    -- These properties can be added by turning on integration between Resource
+    -- Explorer and other Amazon Web Services services.
+    properties :: Prelude.Maybe [ResourceProperty],
+    -- | The Amazon Web Services Region in which the resource was created and
+    -- exists.
+    region :: Prelude.Maybe Prelude.Text,
+    -- | The type of the resource.
+    resourceType :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Service that owns the resource and is responsible for
+    -- creating and updating it.
+    service :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Resource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'resource_arn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the resource.
+--
+-- 'lastReportedAt', 'resource_lastReportedAt' - The date and time that Resource Explorer last queried this resource and
+-- updated the index with the latest information about the resource.
+--
+-- 'owningAccountId', 'resource_owningAccountId' - The Amazon Web Services account that owns the resource.
+--
+-- 'properties', 'resource_properties' - A structure with additional type-specific details about the resource.
+-- These properties can be added by turning on integration between Resource
+-- Explorer and other Amazon Web Services services.
+--
+-- 'region', 'resource_region' - The Amazon Web Services Region in which the resource was created and
+-- exists.
+--
+-- 'resourceType', 'resource_resourceType' - The type of the resource.
+--
+-- 'service', 'resource_service' - The Amazon Web Service that owns the resource and is responsible for
+-- creating and updating it.
+newResource ::
+  Resource
+newResource =
+  Resource'
+    { arn = Prelude.Nothing,
+      lastReportedAt = Prelude.Nothing,
+      owningAccountId = Prelude.Nothing,
+      properties = Prelude.Nothing,
+      region = Prelude.Nothing,
+      resourceType = Prelude.Nothing,
+      service = Prelude.Nothing
+    }
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the resource.
+resource_arn :: Lens.Lens' Resource (Prelude.Maybe Prelude.Text)
+resource_arn = Lens.lens (\Resource' {arn} -> arn) (\s@Resource' {} a -> s {arn = a} :: Resource)
+
+-- | The date and time that Resource Explorer last queried this resource and
+-- updated the index with the latest information about the resource.
+resource_lastReportedAt :: Lens.Lens' Resource (Prelude.Maybe Prelude.UTCTime)
+resource_lastReportedAt = Lens.lens (\Resource' {lastReportedAt} -> lastReportedAt) (\s@Resource' {} a -> s {lastReportedAt = a} :: Resource) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Web Services account that owns the resource.
+resource_owningAccountId :: Lens.Lens' Resource (Prelude.Maybe Prelude.Text)
+resource_owningAccountId = Lens.lens (\Resource' {owningAccountId} -> owningAccountId) (\s@Resource' {} a -> s {owningAccountId = a} :: Resource)
+
+-- | A structure with additional type-specific details about the resource.
+-- These properties can be added by turning on integration between Resource
+-- Explorer and other Amazon Web Services services.
+resource_properties :: Lens.Lens' Resource (Prelude.Maybe [ResourceProperty])
+resource_properties = Lens.lens (\Resource' {properties} -> properties) (\s@Resource' {} a -> s {properties = a} :: Resource) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services Region in which the resource was created and
+-- exists.
+resource_region :: Lens.Lens' Resource (Prelude.Maybe Prelude.Text)
+resource_region = Lens.lens (\Resource' {region} -> region) (\s@Resource' {} a -> s {region = a} :: Resource)
+
+-- | The type of the resource.
+resource_resourceType :: Lens.Lens' Resource (Prelude.Maybe Prelude.Text)
+resource_resourceType = Lens.lens (\Resource' {resourceType} -> resourceType) (\s@Resource' {} a -> s {resourceType = a} :: Resource)
+
+-- | The Amazon Web Service that owns the resource and is responsible for
+-- creating and updating it.
+resource_service :: Lens.Lens' Resource (Prelude.Maybe Prelude.Text)
+resource_service = Lens.lens (\Resource' {service} -> service) (\s@Resource' {} a -> s {service = a} :: Resource)
+
+instance Data.FromJSON Resource where
+  parseJSON =
+    Data.withObject
+      "Resource"
+      ( \x ->
+          Resource'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "LastReportedAt")
+            Prelude.<*> (x Data..:? "OwningAccountId")
+            Prelude.<*> (x Data..:? "Properties" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Region")
+            Prelude.<*> (x Data..:? "ResourceType")
+            Prelude.<*> (x Data..:? "Service")
+      )
+
+instance Prelude.Hashable Resource where
+  hashWithSalt _salt Resource' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` lastReportedAt
+      `Prelude.hashWithSalt` owningAccountId
+      `Prelude.hashWithSalt` properties
+      `Prelude.hashWithSalt` region
+      `Prelude.hashWithSalt` resourceType
+      `Prelude.hashWithSalt` service
+
+instance Prelude.NFData Resource where
+  rnf Resource' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf lastReportedAt
+      `Prelude.seq` Prelude.rnf owningAccountId
+      `Prelude.seq` Prelude.rnf properties
+      `Prelude.seq` Prelude.rnf region
+      `Prelude.seq` Prelude.rnf resourceType
+      `Prelude.seq` Prelude.rnf service
diff --git a/gen/Amazonka/ResourceExplorer2/Types/ResourceCount.hs b/gen/Amazonka/ResourceExplorer2/Types/ResourceCount.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Types/ResourceCount.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.Types.ResourceCount
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ResourceExplorer2.Types.ResourceCount where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the number of results that match the query. At this
+-- time, Amazon Web Services Resource Explorer doesn\'t count more than
+-- 1,000 matches for any query. This structure provides information about
+-- whether the query exceeded this limit.
+--
+-- This field is included in every page when you paginate the results.
+--
+-- /See:/ 'newResourceCount' smart constructor.
+data ResourceCount = ResourceCount'
+  { -- | Indicates whether the @TotalResources@ value represents an exhaustive
+    -- count of search results.
+    --
+    -- -   If @True@, it indicates that the search was exhaustive. Every
+    --     resource that matches the query was counted.
+    --
+    -- -   If @False@, then the search reached the limit of 1,000 matching
+    --     results, and stopped counting.
+    complete :: Prelude.Maybe Prelude.Bool,
+    -- | The number of resources that match the search query. This value can\'t
+    -- exceed 1,000. If there are more than 1,000 resources that match the
+    -- query, then only 1,000 are counted and the @Complete@ field is set to
+    -- false. We recommend that you refine your query to return a smaller
+    -- number of results.
+    totalResources :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourceCount' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'complete', 'resourceCount_complete' - Indicates whether the @TotalResources@ value represents an exhaustive
+-- count of search results.
+--
+-- -   If @True@, it indicates that the search was exhaustive. Every
+--     resource that matches the query was counted.
+--
+-- -   If @False@, then the search reached the limit of 1,000 matching
+--     results, and stopped counting.
+--
+-- 'totalResources', 'resourceCount_totalResources' - The number of resources that match the search query. This value can\'t
+-- exceed 1,000. If there are more than 1,000 resources that match the
+-- query, then only 1,000 are counted and the @Complete@ field is set to
+-- false. We recommend that you refine your query to return a smaller
+-- number of results.
+newResourceCount ::
+  ResourceCount
+newResourceCount =
+  ResourceCount'
+    { complete = Prelude.Nothing,
+      totalResources = Prelude.Nothing
+    }
+
+-- | Indicates whether the @TotalResources@ value represents an exhaustive
+-- count of search results.
+--
+-- -   If @True@, it indicates that the search was exhaustive. Every
+--     resource that matches the query was counted.
+--
+-- -   If @False@, then the search reached the limit of 1,000 matching
+--     results, and stopped counting.
+resourceCount_complete :: Lens.Lens' ResourceCount (Prelude.Maybe Prelude.Bool)
+resourceCount_complete = Lens.lens (\ResourceCount' {complete} -> complete) (\s@ResourceCount' {} a -> s {complete = a} :: ResourceCount)
+
+-- | The number of resources that match the search query. This value can\'t
+-- exceed 1,000. If there are more than 1,000 resources that match the
+-- query, then only 1,000 are counted and the @Complete@ field is set to
+-- false. We recommend that you refine your query to return a smaller
+-- number of results.
+resourceCount_totalResources :: Lens.Lens' ResourceCount (Prelude.Maybe Prelude.Integer)
+resourceCount_totalResources = Lens.lens (\ResourceCount' {totalResources} -> totalResources) (\s@ResourceCount' {} a -> s {totalResources = a} :: ResourceCount)
+
+instance Data.FromJSON ResourceCount where
+  parseJSON =
+    Data.withObject
+      "ResourceCount"
+      ( \x ->
+          ResourceCount'
+            Prelude.<$> (x Data..:? "Complete")
+            Prelude.<*> (x Data..:? "TotalResources")
+      )
+
+instance Prelude.Hashable ResourceCount where
+  hashWithSalt _salt ResourceCount' {..} =
+    _salt
+      `Prelude.hashWithSalt` complete
+      `Prelude.hashWithSalt` totalResources
+
+instance Prelude.NFData ResourceCount where
+  rnf ResourceCount' {..} =
+    Prelude.rnf complete
+      `Prelude.seq` Prelude.rnf totalResources
diff --git a/gen/Amazonka/ResourceExplorer2/Types/ResourceProperty.hs b/gen/Amazonka/ResourceExplorer2/Types/ResourceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Types/ResourceProperty.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.Types.ResourceProperty
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ResourceExplorer2.Types.ResourceProperty 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
+import Amazonka.ResourceExplorer2.Types.Document
+
+-- | A structure that describes a property of a resource.
+--
+-- /See:/ 'newResourceProperty' smart constructor.
+data ResourceProperty = ResourceProperty'
+  { -- | Details about this property. The content of this field is a JSON object
+    -- that varies based on the resource type.
+    data' :: Prelude.Maybe Document,
+    -- | The date and time that the information about this resource property was
+    -- last updated.
+    lastReportedAt :: Prelude.Maybe Data.ISO8601,
+    -- | The name of this property of the resource.
+    name :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourceProperty' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'data'', 'resourceProperty_data' - Details about this property. The content of this field is a JSON object
+-- that varies based on the resource type.
+--
+-- 'lastReportedAt', 'resourceProperty_lastReportedAt' - The date and time that the information about this resource property was
+-- last updated.
+--
+-- 'name', 'resourceProperty_name' - The name of this property of the resource.
+newResourceProperty ::
+  ResourceProperty
+newResourceProperty =
+  ResourceProperty'
+    { data' = Prelude.Nothing,
+      lastReportedAt = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | Details about this property. The content of this field is a JSON object
+-- that varies based on the resource type.
+resourceProperty_data :: Lens.Lens' ResourceProperty (Prelude.Maybe Document)
+resourceProperty_data = Lens.lens (\ResourceProperty' {data'} -> data') (\s@ResourceProperty' {} a -> s {data' = a} :: ResourceProperty)
+
+-- | The date and time that the information about this resource property was
+-- last updated.
+resourceProperty_lastReportedAt :: Lens.Lens' ResourceProperty (Prelude.Maybe Prelude.UTCTime)
+resourceProperty_lastReportedAt = Lens.lens (\ResourceProperty' {lastReportedAt} -> lastReportedAt) (\s@ResourceProperty' {} a -> s {lastReportedAt = a} :: ResourceProperty) Prelude.. Lens.mapping Data._Time
+
+-- | The name of this property of the resource.
+resourceProperty_name :: Lens.Lens' ResourceProperty (Prelude.Maybe Prelude.Text)
+resourceProperty_name = Lens.lens (\ResourceProperty' {name} -> name) (\s@ResourceProperty' {} a -> s {name = a} :: ResourceProperty)
+
+instance Data.FromJSON ResourceProperty where
+  parseJSON =
+    Data.withObject
+      "ResourceProperty"
+      ( \x ->
+          ResourceProperty'
+            Prelude.<$> (x Data..:? "Data")
+            Prelude.<*> (x Data..:? "LastReportedAt")
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable ResourceProperty where
+  hashWithSalt _salt ResourceProperty' {..} =
+    _salt
+      `Prelude.hashWithSalt` data'
+      `Prelude.hashWithSalt` lastReportedAt
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData ResourceProperty where
+  rnf ResourceProperty' {..} =
+    Prelude.rnf data'
+      `Prelude.seq` Prelude.rnf lastReportedAt
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/ResourceExplorer2/Types/SearchFilter.hs b/gen/Amazonka/ResourceExplorer2/Types/SearchFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Types/SearchFilter.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.Types.SearchFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ResourceExplorer2.Types.SearchFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A search filter defines which resources can be part of a search query
+-- result set.
+--
+-- /See:/ 'newSearchFilter' smart constructor.
+data SearchFilter = SearchFilter'
+  { -- | The string that contains the search keywords, prefixes, and operators to
+    -- control the results that can be returned by a Search operation. For more
+    -- details, see
+    -- <https://docs.aws.amazon.com/resource-explorer/latest/APIReference/about-query-syntax.html Search query syntax>.
+    filterString :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filterString', 'searchFilter_filterString' - The string that contains the search keywords, prefixes, and operators to
+-- control the results that can be returned by a Search operation. For more
+-- details, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/APIReference/about-query-syntax.html Search query syntax>.
+newSearchFilter ::
+  -- | 'filterString'
+  Prelude.Text ->
+  SearchFilter
+newSearchFilter pFilterString_ =
+  SearchFilter' {filterString = pFilterString_}
+
+-- | The string that contains the search keywords, prefixes, and operators to
+-- control the results that can be returned by a Search operation. For more
+-- details, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/APIReference/about-query-syntax.html Search query syntax>.
+searchFilter_filterString :: Lens.Lens' SearchFilter Prelude.Text
+searchFilter_filterString = Lens.lens (\SearchFilter' {filterString} -> filterString) (\s@SearchFilter' {} a -> s {filterString = a} :: SearchFilter)
+
+instance Data.FromJSON SearchFilter where
+  parseJSON =
+    Data.withObject
+      "SearchFilter"
+      ( \x ->
+          SearchFilter' Prelude.<$> (x Data..: "FilterString")
+      )
+
+instance Prelude.Hashable SearchFilter where
+  hashWithSalt _salt SearchFilter' {..} =
+    _salt `Prelude.hashWithSalt` filterString
+
+instance Prelude.NFData SearchFilter where
+  rnf SearchFilter' {..} = Prelude.rnf filterString
+
+instance Data.ToJSON SearchFilter where
+  toJSON SearchFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("FilterString" Data..= filterString)]
+      )
diff --git a/gen/Amazonka/ResourceExplorer2/Types/SupportedResourceType.hs b/gen/Amazonka/ResourceExplorer2/Types/SupportedResourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Types/SupportedResourceType.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.Types.SupportedResourceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ResourceExplorer2.Types.SupportedResourceType where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A structure that describes a resource type supported by Amazon Web
+-- Services Resource Explorer.
+--
+-- /See:/ 'newSupportedResourceType' smart constructor.
+data SupportedResourceType = SupportedResourceType'
+  { -- | The unique identifier of the resource type.
+    resourceType :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Service that is associated with the resource type. This
+    -- is the primary service that lets you create and interact with resources
+    -- of this type.
+    service :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SupportedResourceType' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceType', 'supportedResourceType_resourceType' - The unique identifier of the resource type.
+--
+-- 'service', 'supportedResourceType_service' - The Amazon Web Service that is associated with the resource type. This
+-- is the primary service that lets you create and interact with resources
+-- of this type.
+newSupportedResourceType ::
+  SupportedResourceType
+newSupportedResourceType =
+  SupportedResourceType'
+    { resourceType =
+        Prelude.Nothing,
+      service = Prelude.Nothing
+    }
+
+-- | The unique identifier of the resource type.
+supportedResourceType_resourceType :: Lens.Lens' SupportedResourceType (Prelude.Maybe Prelude.Text)
+supportedResourceType_resourceType = Lens.lens (\SupportedResourceType' {resourceType} -> resourceType) (\s@SupportedResourceType' {} a -> s {resourceType = a} :: SupportedResourceType)
+
+-- | The Amazon Web Service that is associated with the resource type. This
+-- is the primary service that lets you create and interact with resources
+-- of this type.
+supportedResourceType_service :: Lens.Lens' SupportedResourceType (Prelude.Maybe Prelude.Text)
+supportedResourceType_service = Lens.lens (\SupportedResourceType' {service} -> service) (\s@SupportedResourceType' {} a -> s {service = a} :: SupportedResourceType)
+
+instance Data.FromJSON SupportedResourceType where
+  parseJSON =
+    Data.withObject
+      "SupportedResourceType"
+      ( \x ->
+          SupportedResourceType'
+            Prelude.<$> (x Data..:? "ResourceType")
+            Prelude.<*> (x Data..:? "Service")
+      )
+
+instance Prelude.Hashable SupportedResourceType where
+  hashWithSalt _salt SupportedResourceType' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceType
+      `Prelude.hashWithSalt` service
+
+instance Prelude.NFData SupportedResourceType where
+  rnf SupportedResourceType' {..} =
+    Prelude.rnf resourceType
+      `Prelude.seq` Prelude.rnf service
diff --git a/gen/Amazonka/ResourceExplorer2/Types/View.hs b/gen/Amazonka/ResourceExplorer2/Types/View.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/Types/View.hs
@@ -0,0 +1,177 @@
+{-# 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.ResourceExplorer2.Types.View
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ResourceExplorer2.Types.View 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
+import Amazonka.ResourceExplorer2.Types.IncludedProperty
+import Amazonka.ResourceExplorer2.Types.SearchFilter
+
+-- | A view is a structure that defines a set of filters that provide a view
+-- into the information in the Amazon Web Services Resource Explorer index.
+-- The filters specify which information from the index is visible to the
+-- users of the view. For example, you can specify filters that include
+-- only resources that are tagged with the key \"ENV\" and the value
+-- \"DEVELOPMENT\" in the results returned by this view. You could also
+-- create a second view that includes only resources that are tagged with
+-- \"ENV\" and \"PRODUCTION\".
+--
+-- /See:/ 'newView' smart constructor.
+data View = View'
+  { -- | An array of SearchFilter objects that specify which resources can be
+    -- included in the results of queries made using this view.
+    filters :: Prelude.Maybe (Data.Sensitive SearchFilter),
+    -- | A structure that contains additional information about the view.
+    includedProperties :: Prelude.Maybe [IncludedProperty],
+    -- | The date and time when this view was last modified.
+    lastUpdatedAt :: Prelude.Maybe Data.ISO8601,
+    -- | The Amazon Web Services account that owns this view.
+    owner :: Prelude.Maybe Prelude.Text,
+    -- | An
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of an Amazon Web Services account, an organization, or an organizational
+    -- unit (OU) that specifies whether this view includes resources from only
+    -- the specified Amazon Web Services account, all accounts in the specified
+    -- organization, or all accounts in the specified OU.
+    --
+    -- If not specified, the value defaults to the Amazon Web Services account
+    -- used to call this operation.
+    scope :: Prelude.Maybe Prelude.Text,
+    -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the view.
+    viewArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'View' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'view_filters' - An array of SearchFilter objects that specify which resources can be
+-- included in the results of queries made using this view.
+--
+-- 'includedProperties', 'view_includedProperties' - A structure that contains additional information about the view.
+--
+-- 'lastUpdatedAt', 'view_lastUpdatedAt' - The date and time when this view was last modified.
+--
+-- 'owner', 'view_owner' - The Amazon Web Services account that owns this view.
+--
+-- 'scope', 'view_scope' - An
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of an Amazon Web Services account, an organization, or an organizational
+-- unit (OU) that specifies whether this view includes resources from only
+-- the specified Amazon Web Services account, all accounts in the specified
+-- organization, or all accounts in the specified OU.
+--
+-- If not specified, the value defaults to the Amazon Web Services account
+-- used to call this operation.
+--
+-- 'viewArn', 'view_viewArn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view.
+newView ::
+  View
+newView =
+  View'
+    { filters = Prelude.Nothing,
+      includedProperties = Prelude.Nothing,
+      lastUpdatedAt = Prelude.Nothing,
+      owner = Prelude.Nothing,
+      scope = Prelude.Nothing,
+      viewArn = Prelude.Nothing
+    }
+
+-- | An array of SearchFilter objects that specify which resources can be
+-- included in the results of queries made using this view.
+view_filters :: Lens.Lens' View (Prelude.Maybe SearchFilter)
+view_filters = Lens.lens (\View' {filters} -> filters) (\s@View' {} a -> s {filters = a} :: View) Prelude.. Lens.mapping Data._Sensitive
+
+-- | A structure that contains additional information about the view.
+view_includedProperties :: Lens.Lens' View (Prelude.Maybe [IncludedProperty])
+view_includedProperties = Lens.lens (\View' {includedProperties} -> includedProperties) (\s@View' {} a -> s {includedProperties = a} :: View) Prelude.. Lens.mapping Lens.coerced
+
+-- | The date and time when this view was last modified.
+view_lastUpdatedAt :: Lens.Lens' View (Prelude.Maybe Prelude.UTCTime)
+view_lastUpdatedAt = Lens.lens (\View' {lastUpdatedAt} -> lastUpdatedAt) (\s@View' {} a -> s {lastUpdatedAt = a} :: View) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Web Services account that owns this view.
+view_owner :: Lens.Lens' View (Prelude.Maybe Prelude.Text)
+view_owner = Lens.lens (\View' {owner} -> owner) (\s@View' {} a -> s {owner = a} :: View)
+
+-- | An
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of an Amazon Web Services account, an organization, or an organizational
+-- unit (OU) that specifies whether this view includes resources from only
+-- the specified Amazon Web Services account, all accounts in the specified
+-- organization, or all accounts in the specified OU.
+--
+-- If not specified, the value defaults to the Amazon Web Services account
+-- used to call this operation.
+view_scope :: Lens.Lens' View (Prelude.Maybe Prelude.Text)
+view_scope = Lens.lens (\View' {scope} -> scope) (\s@View' {} a -> s {scope = a} :: View)
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view.
+view_viewArn :: Lens.Lens' View (Prelude.Maybe Prelude.Text)
+view_viewArn = Lens.lens (\View' {viewArn} -> viewArn) (\s@View' {} a -> s {viewArn = a} :: View)
+
+instance Data.FromJSON View where
+  parseJSON =
+    Data.withObject
+      "View"
+      ( \x ->
+          View'
+            Prelude.<$> (x Data..:? "Filters")
+            Prelude.<*> ( x
+                            Data..:? "IncludedProperties"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "LastUpdatedAt")
+            Prelude.<*> (x Data..:? "Owner")
+            Prelude.<*> (x Data..:? "Scope")
+            Prelude.<*> (x Data..:? "ViewArn")
+      )
+
+instance Prelude.Hashable View where
+  hashWithSalt _salt View' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` includedProperties
+      `Prelude.hashWithSalt` lastUpdatedAt
+      `Prelude.hashWithSalt` owner
+      `Prelude.hashWithSalt` scope
+      `Prelude.hashWithSalt` viewArn
+
+instance Prelude.NFData View where
+  rnf View' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf includedProperties
+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+      `Prelude.seq` Prelude.rnf owner
+      `Prelude.seq` Prelude.rnf scope
+      `Prelude.seq` Prelude.rnf viewArn
diff --git a/gen/Amazonka/ResourceExplorer2/UntagResource.hs b/gen/Amazonka/ResourceExplorer2/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/UntagResource.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.UntagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes one or more tag key and value pairs from an Amazon Web Services
+-- Resource Explorer view or index.
+module Amazonka.ResourceExplorer2.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The Amazon Resource Name (ARN) of the view or index that you want to
+    -- remove tags from.
+    resourceArn :: Prelude.Text,
+    -- | A list of the keys for the tags that you want to remove from the
+    -- specified view or index.
+    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 view or index that you want to
+-- remove tags from.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - A list of the keys for the tags that you want to remove from the
+-- specified view or index.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the view or index that you want to
+-- remove tags from.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+-- | A list of the keys for the tags that you want to remove from the
+-- specified view or index.
+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery UntagResource where
+  toQuery UntagResource' {..} =
+    Prelude.mconcat
+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/UpdateIndexType.hs b/gen/Amazonka/ResourceExplorer2/UpdateIndexType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/UpdateIndexType.hs
@@ -0,0 +1,294 @@
+{-# 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.ResourceExplorer2.UpdateIndexType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Changes the type of the index from one of the following types to the
+-- other. For more information about indexes and the role they perform in
+-- Amazon Web Services Resource Explorer, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/manage-aggregator-region.html Turning on cross-Region search by creating an aggregator index>
+-- in the /Amazon Web Services Resource Explorer User Guide/.
+--
+-- -   __@AGGREGATOR@ index type__
+--
+--     The index contains information about resources from all Amazon Web
+--     Services Regions in the Amazon Web Services account in which you\'ve
+--     created a Resource Explorer index. Resource information from all
+--     other Regions is replicated to this Region\'s index.
+--
+--     When you change the index type to @AGGREGATOR@, Resource Explorer
+--     turns on replication of all discovered resource information from the
+--     other Amazon Web Services Regions in your account to this index. You
+--     can then, from this Region only, perform resource search queries
+--     that span all Amazon Web Services Regions in the Amazon Web Services
+--     account. Turning on replication from all other Regions is performed
+--     by asynchronous background tasks. You can check the status of the
+--     asynchronous tasks by using the GetIndex operation. When the
+--     asynchronous tasks complete, the @Status@ response of that operation
+--     changes from @UPDATING@ to @ACTIVE@. After that, you can start to
+--     see results from other Amazon Web Services Regions in query results.
+--     However, it can take several hours for replication from all other
+--     Regions to complete.
+--
+--     You can have only one aggregator index per Amazon Web Services
+--     account. Before you can promote a different index to be the
+--     aggregator index for the account, you must first demote the existing
+--     aggregator index to type @LOCAL@.
+--
+-- -   __@LOCAL@ index type__
+--
+--     The index contains information about resources in only the Amazon
+--     Web Services Region in which the index exists. If an aggregator
+--     index in another Region exists, then information in this local index
+--     is replicated to the aggregator index.
+--
+--     When you change the index type to @LOCAL@, Resource Explorer turns
+--     off the replication of resource information from all other Amazon
+--     Web Services Regions in the Amazon Web Services account to this
+--     Region. The aggregator index remains in the @UPDATING@ state until
+--     all replication with other Regions successfully stops. You can check
+--     the status of the asynchronous task by using the GetIndex operation.
+--     When Resource Explorer successfully stops all replication with other
+--     Regions, the @Status@ response of that operation changes from
+--     @UPDATING@ to @ACTIVE@. Separately, the resource information from
+--     other Regions that was previously stored in the index is deleted
+--     within 30 days by another background task. Until that asynchronous
+--     task completes, some results from other Regions can continue to
+--     appear in search results.
+--
+--     After you demote an aggregator index to a local index, you must wait
+--     24 hours before you can promote another index to be the new
+--     aggregator index for the account.
+module Amazonka.ResourceExplorer2.UpdateIndexType
+  ( -- * Creating a Request
+    UpdateIndexType (..),
+    newUpdateIndexType,
+
+    -- * Request Lenses
+    updateIndexType_arn,
+    updateIndexType_type,
+
+    -- * Destructuring the Response
+    UpdateIndexTypeResponse (..),
+    newUpdateIndexTypeResponse,
+
+    -- * Response Lenses
+    updateIndexTypeResponse_arn,
+    updateIndexTypeResponse_lastUpdatedAt,
+    updateIndexTypeResponse_state,
+    updateIndexTypeResponse_type,
+    updateIndexTypeResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateIndexType' smart constructor.
+data UpdateIndexType = UpdateIndexType'
+  { -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the index that you want to update.
+    arn :: Prelude.Text,
+    -- | The type of the index. To understand the difference between @LOCAL@ and
+    -- @AGGREGATOR@, see
+    -- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/manage-aggregator-region.html Turning on cross-Region search>
+    -- in the /Amazon Web Services Resource Explorer User Guide/.
+    type' :: IndexType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateIndexType' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'updateIndexType_arn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the index that you want to update.
+--
+-- 'type'', 'updateIndexType_type' - The type of the index. To understand the difference between @LOCAL@ and
+-- @AGGREGATOR@, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/manage-aggregator-region.html Turning on cross-Region search>
+-- in the /Amazon Web Services Resource Explorer User Guide/.
+newUpdateIndexType ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'type''
+  IndexType ->
+  UpdateIndexType
+newUpdateIndexType pArn_ pType_ =
+  UpdateIndexType' {arn = pArn_, type' = pType_}
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the index that you want to update.
+updateIndexType_arn :: Lens.Lens' UpdateIndexType Prelude.Text
+updateIndexType_arn = Lens.lens (\UpdateIndexType' {arn} -> arn) (\s@UpdateIndexType' {} a -> s {arn = a} :: UpdateIndexType)
+
+-- | The type of the index. To understand the difference between @LOCAL@ and
+-- @AGGREGATOR@, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/manage-aggregator-region.html Turning on cross-Region search>
+-- in the /Amazon Web Services Resource Explorer User Guide/.
+updateIndexType_type :: Lens.Lens' UpdateIndexType IndexType
+updateIndexType_type = Lens.lens (\UpdateIndexType' {type'} -> type') (\s@UpdateIndexType' {} a -> s {type' = a} :: UpdateIndexType)
+
+instance Core.AWSRequest UpdateIndexType where
+  type
+    AWSResponse UpdateIndexType =
+      UpdateIndexTypeResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateIndexTypeResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "LastUpdatedAt")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (x Data..?> "Type")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateIndexType where
+  hashWithSalt _salt UpdateIndexType' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData UpdateIndexType where
+  rnf UpdateIndexType' {..} =
+    Prelude.rnf arn `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToHeaders UpdateIndexType where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateIndexType where
+  toJSON UpdateIndexType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Arn" Data..= arn),
+            Prelude.Just ("Type" Data..= type')
+          ]
+      )
+
+instance Data.ToPath UpdateIndexType where
+  toPath = Prelude.const "/UpdateIndexType"
+
+instance Data.ToQuery UpdateIndexType where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateIndexTypeResponse' smart constructor.
+data UpdateIndexTypeResponse = UpdateIndexTypeResponse'
+  { -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the index that you updated.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The date and timestamp when the index was last updated.
+    lastUpdatedAt :: Prelude.Maybe Data.ISO8601,
+    -- | Indicates the state of the request to update the index. This operation
+    -- is asynchronous. Call the GetIndex operation to check for changes.
+    state :: Prelude.Maybe IndexState,
+    -- | Specifies the type of the specified index after the operation completes.
+    type' :: Prelude.Maybe IndexType,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateIndexTypeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'updateIndexTypeResponse_arn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the index that you updated.
+--
+-- 'lastUpdatedAt', 'updateIndexTypeResponse_lastUpdatedAt' - The date and timestamp when the index was last updated.
+--
+-- 'state', 'updateIndexTypeResponse_state' - Indicates the state of the request to update the index. This operation
+-- is asynchronous. Call the GetIndex operation to check for changes.
+--
+-- 'type'', 'updateIndexTypeResponse_type' - Specifies the type of the specified index after the operation completes.
+--
+-- 'httpStatus', 'updateIndexTypeResponse_httpStatus' - The response's http status code.
+newUpdateIndexTypeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateIndexTypeResponse
+newUpdateIndexTypeResponse pHttpStatus_ =
+  UpdateIndexTypeResponse'
+    { arn = Prelude.Nothing,
+      lastUpdatedAt = Prelude.Nothing,
+      state = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the index that you updated.
+updateIndexTypeResponse_arn :: Lens.Lens' UpdateIndexTypeResponse (Prelude.Maybe Prelude.Text)
+updateIndexTypeResponse_arn = Lens.lens (\UpdateIndexTypeResponse' {arn} -> arn) (\s@UpdateIndexTypeResponse' {} a -> s {arn = a} :: UpdateIndexTypeResponse)
+
+-- | The date and timestamp when the index was last updated.
+updateIndexTypeResponse_lastUpdatedAt :: Lens.Lens' UpdateIndexTypeResponse (Prelude.Maybe Prelude.UTCTime)
+updateIndexTypeResponse_lastUpdatedAt = Lens.lens (\UpdateIndexTypeResponse' {lastUpdatedAt} -> lastUpdatedAt) (\s@UpdateIndexTypeResponse' {} a -> s {lastUpdatedAt = a} :: UpdateIndexTypeResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the state of the request to update the index. This operation
+-- is asynchronous. Call the GetIndex operation to check for changes.
+updateIndexTypeResponse_state :: Lens.Lens' UpdateIndexTypeResponse (Prelude.Maybe IndexState)
+updateIndexTypeResponse_state = Lens.lens (\UpdateIndexTypeResponse' {state} -> state) (\s@UpdateIndexTypeResponse' {} a -> s {state = a} :: UpdateIndexTypeResponse)
+
+-- | Specifies the type of the specified index after the operation completes.
+updateIndexTypeResponse_type :: Lens.Lens' UpdateIndexTypeResponse (Prelude.Maybe IndexType)
+updateIndexTypeResponse_type = Lens.lens (\UpdateIndexTypeResponse' {type'} -> type') (\s@UpdateIndexTypeResponse' {} a -> s {type' = a} :: UpdateIndexTypeResponse)
+
+-- | The response's http status code.
+updateIndexTypeResponse_httpStatus :: Lens.Lens' UpdateIndexTypeResponse Prelude.Int
+updateIndexTypeResponse_httpStatus = Lens.lens (\UpdateIndexTypeResponse' {httpStatus} -> httpStatus) (\s@UpdateIndexTypeResponse' {} a -> s {httpStatus = a} :: UpdateIndexTypeResponse)
+
+instance Prelude.NFData UpdateIndexTypeResponse where
+  rnf UpdateIndexTypeResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/UpdateView.hs b/gen/Amazonka/ResourceExplorer2/UpdateView.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/UpdateView.hs
@@ -0,0 +1,264 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ResourceExplorer2.UpdateView
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies some of the details of a view. You can change the filter string
+-- and the list of included properties. You can\'t change the name of the
+-- view.
+module Amazonka.ResourceExplorer2.UpdateView
+  ( -- * Creating a Request
+    UpdateView (..),
+    newUpdateView,
+
+    -- * Request Lenses
+    updateView_filters,
+    updateView_includedProperties,
+    updateView_viewArn,
+
+    -- * Destructuring the Response
+    UpdateViewResponse (..),
+    newUpdateViewResponse,
+
+    -- * Response Lenses
+    updateViewResponse_view,
+    updateViewResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import Amazonka.ResourceExplorer2.Types
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateView' smart constructor.
+data UpdateView = UpdateView'
+  { -- | An array of strings that specify which resources are included in the
+    -- results of queries made using this view. When you use this view in a
+    -- Search operation, the filter string is combined with the search\'s
+    -- @QueryString@ parameter using a logical @AND@ operator.
+    --
+    -- For information about the supported syntax, see
+    -- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html Search query reference for Resource Explorer>
+    -- in the /Amazon Web Services Resource Explorer User Guide/.
+    --
+    -- This query string in the context of this operation supports only
+    -- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html#query-syntax-filters filter prefixes>
+    -- with optional
+    -- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html#query-syntax-operators operators>.
+    -- It doesn\'t support free-form text. For example, the string
+    -- @region:us* service:ec2 -tag:stage=prod@ includes all Amazon EC2
+    -- resources in any Amazon Web Services Region that begins with the letters
+    -- @us@ and is /not/ tagged with a key @Stage@ that has the value @prod@.
+    filters :: Prelude.Maybe (Data.Sensitive SearchFilter),
+    -- | Specifies optional fields that you want included in search results from
+    -- this view. It is a list of objects that each describe a field to
+    -- include.
+    --
+    -- The default is an empty list, with no optional fields included in the
+    -- results.
+    includedProperties :: Prelude.Maybe [IncludedProperty],
+    -- | The
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+    -- of the view that you want to modify.
+    viewArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateView' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'updateView_filters' - An array of strings that specify which resources are included in the
+-- results of queries made using this view. When you use this view in a
+-- Search operation, the filter string is combined with the search\'s
+-- @QueryString@ parameter using a logical @AND@ operator.
+--
+-- For information about the supported syntax, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html Search query reference for Resource Explorer>
+-- in the /Amazon Web Services Resource Explorer User Guide/.
+--
+-- This query string in the context of this operation supports only
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html#query-syntax-filters filter prefixes>
+-- with optional
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html#query-syntax-operators operators>.
+-- It doesn\'t support free-form text. For example, the string
+-- @region:us* service:ec2 -tag:stage=prod@ includes all Amazon EC2
+-- resources in any Amazon Web Services Region that begins with the letters
+-- @us@ and is /not/ tagged with a key @Stage@ that has the value @prod@.
+--
+-- 'includedProperties', 'updateView_includedProperties' - Specifies optional fields that you want included in search results from
+-- this view. It is a list of objects that each describe a field to
+-- include.
+--
+-- The default is an empty list, with no optional fields included in the
+-- results.
+--
+-- 'viewArn', 'updateView_viewArn' - The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view that you want to modify.
+newUpdateView ::
+  -- | 'viewArn'
+  Prelude.Text ->
+  UpdateView
+newUpdateView pViewArn_ =
+  UpdateView'
+    { filters = Prelude.Nothing,
+      includedProperties = Prelude.Nothing,
+      viewArn = pViewArn_
+    }
+
+-- | An array of strings that specify which resources are included in the
+-- results of queries made using this view. When you use this view in a
+-- Search operation, the filter string is combined with the search\'s
+-- @QueryString@ parameter using a logical @AND@ operator.
+--
+-- For information about the supported syntax, see
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html Search query reference for Resource Explorer>
+-- in the /Amazon Web Services Resource Explorer User Guide/.
+--
+-- This query string in the context of this operation supports only
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html#query-syntax-filters filter prefixes>
+-- with optional
+-- <https://docs.aws.amazon.com/resource-explorer/latest/userguide/using-search-query-syntax.html#query-syntax-operators operators>.
+-- It doesn\'t support free-form text. For example, the string
+-- @region:us* service:ec2 -tag:stage=prod@ includes all Amazon EC2
+-- resources in any Amazon Web Services Region that begins with the letters
+-- @us@ and is /not/ tagged with a key @Stage@ that has the value @prod@.
+updateView_filters :: Lens.Lens' UpdateView (Prelude.Maybe SearchFilter)
+updateView_filters = Lens.lens (\UpdateView' {filters} -> filters) (\s@UpdateView' {} a -> s {filters = a} :: UpdateView) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Specifies optional fields that you want included in search results from
+-- this view. It is a list of objects that each describe a field to
+-- include.
+--
+-- The default is an empty list, with no optional fields included in the
+-- results.
+updateView_includedProperties :: Lens.Lens' UpdateView (Prelude.Maybe [IncludedProperty])
+updateView_includedProperties = Lens.lens (\UpdateView' {includedProperties} -> includedProperties) (\s@UpdateView' {} a -> s {includedProperties = a} :: UpdateView) Prelude.. Lens.mapping Lens.coerced
+
+-- | The
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon resource name (ARN)>
+-- of the view that you want to modify.
+updateView_viewArn :: Lens.Lens' UpdateView Prelude.Text
+updateView_viewArn = Lens.lens (\UpdateView' {viewArn} -> viewArn) (\s@UpdateView' {} a -> s {viewArn = a} :: UpdateView)
+
+instance Core.AWSRequest UpdateView where
+  type AWSResponse UpdateView = UpdateViewResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateViewResponse'
+            Prelude.<$> (x Data..?> "View")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateView where
+  hashWithSalt _salt UpdateView' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` includedProperties
+      `Prelude.hashWithSalt` viewArn
+
+instance Prelude.NFData UpdateView where
+  rnf UpdateView' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf includedProperties
+      `Prelude.seq` Prelude.rnf viewArn
+
+instance Data.ToHeaders UpdateView where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateView where
+  toJSON UpdateView' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Filters" Data..=) Prelude.<$> filters,
+            ("IncludedProperties" Data..=)
+              Prelude.<$> includedProperties,
+            Prelude.Just ("ViewArn" Data..= viewArn)
+          ]
+      )
+
+instance Data.ToPath UpdateView where
+  toPath = Prelude.const "/UpdateView"
+
+instance Data.ToQuery UpdateView where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateViewResponse' smart constructor.
+data UpdateViewResponse = UpdateViewResponse'
+  { -- | Details about the view that you changed with this operation.
+    view :: Prelude.Maybe View,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateViewResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'view', 'updateViewResponse_view' - Details about the view that you changed with this operation.
+--
+-- 'httpStatus', 'updateViewResponse_httpStatus' - The response's http status code.
+newUpdateViewResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateViewResponse
+newUpdateViewResponse pHttpStatus_ =
+  UpdateViewResponse'
+    { view = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Details about the view that you changed with this operation.
+updateViewResponse_view :: Lens.Lens' UpdateViewResponse (Prelude.Maybe View)
+updateViewResponse_view = Lens.lens (\UpdateViewResponse' {view} -> view) (\s@UpdateViewResponse' {} a -> s {view = a} :: UpdateViewResponse)
+
+-- | The response's http status code.
+updateViewResponse_httpStatus :: Lens.Lens' UpdateViewResponse Prelude.Int
+updateViewResponse_httpStatus = Lens.lens (\UpdateViewResponse' {httpStatus} -> httpStatus) (\s@UpdateViewResponse' {} a -> s {httpStatus = a} :: UpdateViewResponse)
+
+instance Prelude.NFData UpdateViewResponse where
+  rnf UpdateViewResponse' {..} =
+    Prelude.rnf view
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ResourceExplorer2/Waiters.hs b/gen/Amazonka/ResourceExplorer2/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ResourceExplorer2/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.ResourceExplorer2.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.ResourceExplorer2.Waiters 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
+import Amazonka.ResourceExplorer2.Lens
+import Amazonka.ResourceExplorer2.Types
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.ResourceExplorer2
+import Test.Amazonka.ResourceExplorer2.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "ResourceExplorer2"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/ResourceExplorer2.hs b/test/Test/Amazonka/Gen/ResourceExplorer2.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/ResourceExplorer2.hs
@@ -0,0 +1,418 @@
+{-# 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.ResourceExplorer2
+-- Copyright   : (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.ResourceExplorer2 where
+
+import Amazonka.ResourceExplorer2
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Amazonka.ResourceExplorer2.Internal
+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"
+--         [ requestAssociateDefaultView $
+--             newAssociateDefaultView
+--
+--         , requestBatchGetView $
+--             newBatchGetView
+--
+--         , requestCreateIndex $
+--             newCreateIndex
+--
+--         , requestCreateView $
+--             newCreateView
+--
+--         , requestDeleteIndex $
+--             newDeleteIndex
+--
+--         , requestDeleteView $
+--             newDeleteView
+--
+--         , requestDisassociateDefaultView $
+--             newDisassociateDefaultView
+--
+--         , requestGetDefaultView $
+--             newGetDefaultView
+--
+--         , requestGetIndex $
+--             newGetIndex
+--
+--         , requestGetView $
+--             newGetView
+--
+--         , requestListIndexes $
+--             newListIndexes
+--
+--         , requestListSupportedResourceTypes $
+--             newListSupportedResourceTypes
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestListViews $
+--             newListViews
+--
+--         , requestSearch $
+--             newSearch
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateIndexType $
+--             newUpdateIndexType
+--
+--         , requestUpdateView $
+--             newUpdateView
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAssociateDefaultView $
+--             newAssociateDefaultViewResponse
+--
+--         , responseBatchGetView $
+--             newBatchGetViewResponse
+--
+--         , responseCreateIndex $
+--             newCreateIndexResponse
+--
+--         , responseCreateView $
+--             newCreateViewResponse
+--
+--         , responseDeleteIndex $
+--             newDeleteIndexResponse
+--
+--         , responseDeleteView $
+--             newDeleteViewResponse
+--
+--         , responseDisassociateDefaultView $
+--             newDisassociateDefaultViewResponse
+--
+--         , responseGetDefaultView $
+--             newGetDefaultViewResponse
+--
+--         , responseGetIndex $
+--             newGetIndexResponse
+--
+--         , responseGetView $
+--             newGetViewResponse
+--
+--         , responseListIndexes $
+--             newListIndexesResponse
+--
+--         , responseListSupportedResourceTypes $
+--             newListSupportedResourceTypesResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseListViews $
+--             newListViewsResponse
+--
+--         , responseSearch $
+--             newSearchResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateIndexType $
+--             newUpdateIndexTypeResponse
+--
+--         , responseUpdateView $
+--             newUpdateViewResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAssociateDefaultView :: AssociateDefaultView -> TestTree
+requestAssociateDefaultView =
+  req
+    "AssociateDefaultView"
+    "fixture/AssociateDefaultView.yaml"
+
+requestBatchGetView :: BatchGetView -> TestTree
+requestBatchGetView =
+  req
+    "BatchGetView"
+    "fixture/BatchGetView.yaml"
+
+requestCreateIndex :: CreateIndex -> TestTree
+requestCreateIndex =
+  req
+    "CreateIndex"
+    "fixture/CreateIndex.yaml"
+
+requestCreateView :: CreateView -> TestTree
+requestCreateView =
+  req
+    "CreateView"
+    "fixture/CreateView.yaml"
+
+requestDeleteIndex :: DeleteIndex -> TestTree
+requestDeleteIndex =
+  req
+    "DeleteIndex"
+    "fixture/DeleteIndex.yaml"
+
+requestDeleteView :: DeleteView -> TestTree
+requestDeleteView =
+  req
+    "DeleteView"
+    "fixture/DeleteView.yaml"
+
+requestDisassociateDefaultView :: DisassociateDefaultView -> TestTree
+requestDisassociateDefaultView =
+  req
+    "DisassociateDefaultView"
+    "fixture/DisassociateDefaultView.yaml"
+
+requestGetDefaultView :: GetDefaultView -> TestTree
+requestGetDefaultView =
+  req
+    "GetDefaultView"
+    "fixture/GetDefaultView.yaml"
+
+requestGetIndex :: GetIndex -> TestTree
+requestGetIndex =
+  req
+    "GetIndex"
+    "fixture/GetIndex.yaml"
+
+requestGetView :: GetView -> TestTree
+requestGetView =
+  req
+    "GetView"
+    "fixture/GetView.yaml"
+
+requestListIndexes :: ListIndexes -> TestTree
+requestListIndexes =
+  req
+    "ListIndexes"
+    "fixture/ListIndexes.yaml"
+
+requestListSupportedResourceTypes :: ListSupportedResourceTypes -> TestTree
+requestListSupportedResourceTypes =
+  req
+    "ListSupportedResourceTypes"
+    "fixture/ListSupportedResourceTypes.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestListViews :: ListViews -> TestTree
+requestListViews =
+  req
+    "ListViews"
+    "fixture/ListViews.yaml"
+
+requestSearch :: Search -> TestTree
+requestSearch =
+  req
+    "Search"
+    "fixture/Search.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateIndexType :: UpdateIndexType -> TestTree
+requestUpdateIndexType =
+  req
+    "UpdateIndexType"
+    "fixture/UpdateIndexType.yaml"
+
+requestUpdateView :: UpdateView -> TestTree
+requestUpdateView =
+  req
+    "UpdateView"
+    "fixture/UpdateView.yaml"
+
+-- Responses
+
+responseAssociateDefaultView :: AssociateDefaultViewResponse -> TestTree
+responseAssociateDefaultView =
+  res
+    "AssociateDefaultViewResponse"
+    "fixture/AssociateDefaultViewResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateDefaultView)
+
+responseBatchGetView :: BatchGetViewResponse -> TestTree
+responseBatchGetView =
+  res
+    "BatchGetViewResponse"
+    "fixture/BatchGetViewResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchGetView)
+
+responseCreateIndex :: CreateIndexResponse -> TestTree
+responseCreateIndex =
+  res
+    "CreateIndexResponse"
+    "fixture/CreateIndexResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateIndex)
+
+responseCreateView :: CreateViewResponse -> TestTree
+responseCreateView =
+  res
+    "CreateViewResponse"
+    "fixture/CreateViewResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateView)
+
+responseDeleteIndex :: DeleteIndexResponse -> TestTree
+responseDeleteIndex =
+  res
+    "DeleteIndexResponse"
+    "fixture/DeleteIndexResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteIndex)
+
+responseDeleteView :: DeleteViewResponse -> TestTree
+responseDeleteView =
+  res
+    "DeleteViewResponse"
+    "fixture/DeleteViewResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteView)
+
+responseDisassociateDefaultView :: DisassociateDefaultViewResponse -> TestTree
+responseDisassociateDefaultView =
+  res
+    "DisassociateDefaultViewResponse"
+    "fixture/DisassociateDefaultViewResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateDefaultView)
+
+responseGetDefaultView :: GetDefaultViewResponse -> TestTree
+responseGetDefaultView =
+  res
+    "GetDefaultViewResponse"
+    "fixture/GetDefaultViewResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetDefaultView)
+
+responseGetIndex :: GetIndexResponse -> TestTree
+responseGetIndex =
+  res
+    "GetIndexResponse"
+    "fixture/GetIndexResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetIndex)
+
+responseGetView :: GetViewResponse -> TestTree
+responseGetView =
+  res
+    "GetViewResponse"
+    "fixture/GetViewResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetView)
+
+responseListIndexes :: ListIndexesResponse -> TestTree
+responseListIndexes =
+  res
+    "ListIndexesResponse"
+    "fixture/ListIndexesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListIndexes)
+
+responseListSupportedResourceTypes :: ListSupportedResourceTypesResponse -> TestTree
+responseListSupportedResourceTypes =
+  res
+    "ListSupportedResourceTypesResponse"
+    "fixture/ListSupportedResourceTypesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListSupportedResourceTypes)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseListViews :: ListViewsResponse -> TestTree
+responseListViews =
+  res
+    "ListViewsResponse"
+    "fixture/ListViewsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListViews)
+
+responseSearch :: SearchResponse -> TestTree
+responseSearch =
+  res
+    "SearchResponse"
+    "fixture/SearchResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy Search)
+
+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)
+
+responseUpdateIndexType :: UpdateIndexTypeResponse -> TestTree
+responseUpdateIndexType =
+  res
+    "UpdateIndexTypeResponse"
+    "fixture/UpdateIndexTypeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateIndexType)
+
+responseUpdateView :: UpdateViewResponse -> TestTree
+responseUpdateView =
+  res
+    "UpdateViewResponse"
+    "fixture/UpdateViewResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateView)
diff --git a/test/Test/Amazonka/ResourceExplorer2.hs b/test/Test/Amazonka/ResourceExplorer2.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/ResourceExplorer2.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.ResourceExplorer2
+-- Copyright   : (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.ResourceExplorer2
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/ResourceExplorer2/Internal.hs b/test/Test/Amazonka/ResourceExplorer2/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/ResourceExplorer2/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.ResourceExplorer2.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.ResourceExplorer2.Internal where
