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 Migration Hub Refactor Spaces SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2021-10-26@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-migration-hub-refactor-spaces)
+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.MigrationHubReFactorSpaces](http://hackage.haskell.org/package/amazonka-migration-hub-refactor-spaces/docs/Amazonka-MigrationHubReFactorSpaces.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-migration-hub-refactor-spaces` 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-migration-hub-refactor-spaces.cabal b/amazonka-migration-hub-refactor-spaces.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-migration-hub-refactor-spaces.cabal
@@ -0,0 +1,137 @@
+cabal-version:      2.2
+name:               amazonka-migration-hub-refactor-spaces
+version:            2.0
+synopsis:           Amazon Migration Hub Refactor Spaces 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 @2021-10-26@ 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.MigrationHubReFactorSpaces.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.MigrationHubReFactorSpaces" 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-migration-hub-refactor-spaces
+
+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.MigrationHubReFactorSpaces
+    Amazonka.MigrationHubReFactorSpaces.CreateApplication
+    Amazonka.MigrationHubReFactorSpaces.CreateEnvironment
+    Amazonka.MigrationHubReFactorSpaces.CreateRoute
+    Amazonka.MigrationHubReFactorSpaces.CreateService
+    Amazonka.MigrationHubReFactorSpaces.DeleteApplication
+    Amazonka.MigrationHubReFactorSpaces.DeleteEnvironment
+    Amazonka.MigrationHubReFactorSpaces.DeleteResourcePolicy
+    Amazonka.MigrationHubReFactorSpaces.DeleteRoute
+    Amazonka.MigrationHubReFactorSpaces.DeleteService
+    Amazonka.MigrationHubReFactorSpaces.GetApplication
+    Amazonka.MigrationHubReFactorSpaces.GetEnvironment
+    Amazonka.MigrationHubReFactorSpaces.GetResourcePolicy
+    Amazonka.MigrationHubReFactorSpaces.GetRoute
+    Amazonka.MigrationHubReFactorSpaces.GetService
+    Amazonka.MigrationHubReFactorSpaces.Lens
+    Amazonka.MigrationHubReFactorSpaces.ListApplications
+    Amazonka.MigrationHubReFactorSpaces.ListEnvironments
+    Amazonka.MigrationHubReFactorSpaces.ListEnvironmentVpcs
+    Amazonka.MigrationHubReFactorSpaces.ListRoutes
+    Amazonka.MigrationHubReFactorSpaces.ListServices
+    Amazonka.MigrationHubReFactorSpaces.ListTagsForResource
+    Amazonka.MigrationHubReFactorSpaces.PutResourcePolicy
+    Amazonka.MigrationHubReFactorSpaces.TagResource
+    Amazonka.MigrationHubReFactorSpaces.Types
+    Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayEndpointType
+    Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayProxyConfig
+    Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayProxyInput
+    Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayProxySummary
+    Amazonka.MigrationHubReFactorSpaces.Types.ApplicationState
+    Amazonka.MigrationHubReFactorSpaces.Types.ApplicationSummary
+    Amazonka.MigrationHubReFactorSpaces.Types.DefaultRouteInput
+    Amazonka.MigrationHubReFactorSpaces.Types.EnvironmentState
+    Amazonka.MigrationHubReFactorSpaces.Types.EnvironmentSummary
+    Amazonka.MigrationHubReFactorSpaces.Types.EnvironmentVpc
+    Amazonka.MigrationHubReFactorSpaces.Types.ErrorCode
+    Amazonka.MigrationHubReFactorSpaces.Types.ErrorResourceType
+    Amazonka.MigrationHubReFactorSpaces.Types.ErrorResponse
+    Amazonka.MigrationHubReFactorSpaces.Types.HttpMethod
+    Amazonka.MigrationHubReFactorSpaces.Types.LambdaEndpointConfig
+    Amazonka.MigrationHubReFactorSpaces.Types.LambdaEndpointInput
+    Amazonka.MigrationHubReFactorSpaces.Types.LambdaEndpointSummary
+    Amazonka.MigrationHubReFactorSpaces.Types.NetworkFabricType
+    Amazonka.MigrationHubReFactorSpaces.Types.ProxyType
+    Amazonka.MigrationHubReFactorSpaces.Types.RouteActivationState
+    Amazonka.MigrationHubReFactorSpaces.Types.RouteState
+    Amazonka.MigrationHubReFactorSpaces.Types.RouteSummary
+    Amazonka.MigrationHubReFactorSpaces.Types.RouteType
+    Amazonka.MigrationHubReFactorSpaces.Types.ServiceEndpointType
+    Amazonka.MigrationHubReFactorSpaces.Types.ServiceState
+    Amazonka.MigrationHubReFactorSpaces.Types.ServiceSummary
+    Amazonka.MigrationHubReFactorSpaces.Types.UriPathRouteInput
+    Amazonka.MigrationHubReFactorSpaces.Types.UrlEndpointConfig
+    Amazonka.MigrationHubReFactorSpaces.Types.UrlEndpointInput
+    Amazonka.MigrationHubReFactorSpaces.Types.UrlEndpointSummary
+    Amazonka.MigrationHubReFactorSpaces.UntagResource
+    Amazonka.MigrationHubReFactorSpaces.UpdateRoute
+    Amazonka.MigrationHubReFactorSpaces.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-migration-hub-refactor-spaces-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.MigrationHubReFactorSpaces
+    Test.Amazonka.MigrationHubReFactorSpaces
+    Test.Amazonka.MigrationHubReFactorSpaces.Internal
+
+  build-depends:
+    , amazonka-core                           >=2.0 && <2.1
+    , amazonka-migration-hub-refactor-spaces
+    , amazonka-test                           >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/CreateApplication.yaml b/fixture/CreateApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateApplicationResponse.proto b/fixture/CreateApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateApplicationResponse.proto
diff --git a/fixture/CreateEnvironment.yaml b/fixture/CreateEnvironment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateEnvironment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/CreateEnvironmentResponse.proto b/fixture/CreateEnvironmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateEnvironmentResponse.proto
diff --git a/fixture/CreateRoute.yaml b/fixture/CreateRoute.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateRoute.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/CreateRouteResponse.proto b/fixture/CreateRouteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateRouteResponse.proto
diff --git a/fixture/CreateService.yaml b/fixture/CreateService.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateService.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/CreateServiceResponse.proto b/fixture/CreateServiceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateServiceResponse.proto
diff --git a/fixture/DeleteApplication.yaml b/fixture/DeleteApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteApplicationResponse.proto b/fixture/DeleteApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteApplicationResponse.proto
diff --git a/fixture/DeleteEnvironment.yaml b/fixture/DeleteEnvironment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteEnvironment.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/DeleteEnvironmentResponse.proto b/fixture/DeleteEnvironmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteEnvironmentResponse.proto
diff --git a/fixture/DeleteResourcePolicy.yaml b/fixture/DeleteResourcePolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteResourcePolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/DeleteResourcePolicyResponse.proto b/fixture/DeleteResourcePolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteResourcePolicyResponse.proto
diff --git a/fixture/DeleteRoute.yaml b/fixture/DeleteRoute.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteRoute.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/DeleteRouteResponse.proto b/fixture/DeleteRouteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteRouteResponse.proto
diff --git a/fixture/DeleteService.yaml b/fixture/DeleteService.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteService.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/DeleteServiceResponse.proto b/fixture/DeleteServiceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteServiceResponse.proto
diff --git a/fixture/GetApplication.yaml b/fixture/GetApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetApplication.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/GetApplicationResponse.proto b/fixture/GetApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetApplicationResponse.proto
diff --git a/fixture/GetEnvironment.yaml b/fixture/GetEnvironment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetEnvironment.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/GetEnvironmentResponse.proto b/fixture/GetEnvironmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetEnvironmentResponse.proto
diff --git a/fixture/GetResourcePolicy.yaml b/fixture/GetResourcePolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetResourcePolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/GetResourcePolicyResponse.proto b/fixture/GetResourcePolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetResourcePolicyResponse.proto
diff --git a/fixture/GetRoute.yaml b/fixture/GetRoute.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetRoute.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/GetRouteResponse.proto b/fixture/GetRouteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetRouteResponse.proto
diff --git a/fixture/GetService.yaml b/fixture/GetService.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetService.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/GetServiceResponse.proto b/fixture/GetServiceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetServiceResponse.proto
diff --git a/fixture/ListApplications.yaml b/fixture/ListApplications.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListApplications.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListApplicationsResponse.proto b/fixture/ListApplicationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListApplicationsResponse.proto
diff --git a/fixture/ListEnvironmentVpcs.yaml b/fixture/ListEnvironmentVpcs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListEnvironmentVpcs.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/ListEnvironmentVpcsResponse.proto b/fixture/ListEnvironmentVpcsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListEnvironmentVpcsResponse.proto
diff --git a/fixture/ListEnvironments.yaml b/fixture/ListEnvironments.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListEnvironments.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/ListEnvironmentsResponse.proto b/fixture/ListEnvironmentsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListEnvironmentsResponse.proto
diff --git a/fixture/ListRoutes.yaml b/fixture/ListRoutes.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListRoutes.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/ListRoutesResponse.proto b/fixture/ListRoutesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListRoutesResponse.proto
diff --git a/fixture/ListServices.yaml b/fixture/ListServices.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListServices.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/ListServicesResponse.proto b/fixture/ListServicesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListServicesResponse.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/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/PutResourcePolicy.yaml b/fixture/PutResourcePolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutResourcePolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/PutResourcePolicyResponse.proto b/fixture/PutResourcePolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutResourcePolicyResponse.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/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/UpdateRoute.yaml b/fixture/UpdateRoute.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateRoute.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/refactor-spaces/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  refactor-spaces.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/UpdateRouteResponse.proto b/fixture/UpdateRouteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateRouteResponse.proto
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces.hs b/gen/Amazonka/MigrationHubReFactorSpaces.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces.hs
@@ -0,0 +1,375 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces
+-- 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 @2021-10-26@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon Web Services Migration Hub Refactor Spaces
+--
+-- This API reference provides descriptions, syntax, and other details
+-- about each of the actions and data types for Amazon Web Services
+-- Migration Hub Refactor Spaces (Refactor Spaces). The topic for each
+-- action shows the API request parameters and the response. Alternatively,
+-- you can use one of the Amazon Web Services SDKs to access an API that is
+-- tailored to the programming language or platform that you\'re using. For
+-- more information, see
+-- <https://aws.amazon.com/tools/#SDKs Amazon Web Services SDKs>.
+--
+-- To share Refactor Spaces environments with other Amazon Web Services
+-- accounts or with Organizations and their OUs, use Resource Access
+-- Manager\'s @CreateResourceShare@ API. See
+-- <https://docs.aws.amazon.com/ram/latest/APIReference/API_CreateResourceShare.html CreateResourceShare>
+-- in the /Amazon Web Services RAM API Reference/.
+module Amazonka.MigrationHubReFactorSpaces
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** InvalidResourcePolicyException
+    _InvalidResourcePolicyException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ServiceQuotaExceededException
+    _ServiceQuotaExceededException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** CreateApplication
+    CreateApplication (CreateApplication'),
+    newCreateApplication,
+    CreateApplicationResponse (CreateApplicationResponse'),
+    newCreateApplicationResponse,
+
+    -- ** CreateEnvironment
+    CreateEnvironment (CreateEnvironment'),
+    newCreateEnvironment,
+    CreateEnvironmentResponse (CreateEnvironmentResponse'),
+    newCreateEnvironmentResponse,
+
+    -- ** CreateRoute
+    CreateRoute (CreateRoute'),
+    newCreateRoute,
+    CreateRouteResponse (CreateRouteResponse'),
+    newCreateRouteResponse,
+
+    -- ** CreateService
+    CreateService (CreateService'),
+    newCreateService,
+    CreateServiceResponse (CreateServiceResponse'),
+    newCreateServiceResponse,
+
+    -- ** DeleteApplication
+    DeleteApplication (DeleteApplication'),
+    newDeleteApplication,
+    DeleteApplicationResponse (DeleteApplicationResponse'),
+    newDeleteApplicationResponse,
+
+    -- ** DeleteEnvironment
+    DeleteEnvironment (DeleteEnvironment'),
+    newDeleteEnvironment,
+    DeleteEnvironmentResponse (DeleteEnvironmentResponse'),
+    newDeleteEnvironmentResponse,
+
+    -- ** DeleteResourcePolicy
+    DeleteResourcePolicy (DeleteResourcePolicy'),
+    newDeleteResourcePolicy,
+    DeleteResourcePolicyResponse (DeleteResourcePolicyResponse'),
+    newDeleteResourcePolicyResponse,
+
+    -- ** DeleteRoute
+    DeleteRoute (DeleteRoute'),
+    newDeleteRoute,
+    DeleteRouteResponse (DeleteRouteResponse'),
+    newDeleteRouteResponse,
+
+    -- ** DeleteService
+    DeleteService (DeleteService'),
+    newDeleteService,
+    DeleteServiceResponse (DeleteServiceResponse'),
+    newDeleteServiceResponse,
+
+    -- ** GetApplication
+    GetApplication (GetApplication'),
+    newGetApplication,
+    GetApplicationResponse (GetApplicationResponse'),
+    newGetApplicationResponse,
+
+    -- ** GetEnvironment
+    GetEnvironment (GetEnvironment'),
+    newGetEnvironment,
+    GetEnvironmentResponse (GetEnvironmentResponse'),
+    newGetEnvironmentResponse,
+
+    -- ** GetResourcePolicy
+    GetResourcePolicy (GetResourcePolicy'),
+    newGetResourcePolicy,
+    GetResourcePolicyResponse (GetResourcePolicyResponse'),
+    newGetResourcePolicyResponse,
+
+    -- ** GetRoute
+    GetRoute (GetRoute'),
+    newGetRoute,
+    GetRouteResponse (GetRouteResponse'),
+    newGetRouteResponse,
+
+    -- ** GetService
+    GetService (GetService'),
+    newGetService,
+    GetServiceResponse (GetServiceResponse'),
+    newGetServiceResponse,
+
+    -- ** ListApplications (Paginated)
+    ListApplications (ListApplications'),
+    newListApplications,
+    ListApplicationsResponse (ListApplicationsResponse'),
+    newListApplicationsResponse,
+
+    -- ** ListEnvironmentVpcs (Paginated)
+    ListEnvironmentVpcs (ListEnvironmentVpcs'),
+    newListEnvironmentVpcs,
+    ListEnvironmentVpcsResponse (ListEnvironmentVpcsResponse'),
+    newListEnvironmentVpcsResponse,
+
+    -- ** ListEnvironments (Paginated)
+    ListEnvironments (ListEnvironments'),
+    newListEnvironments,
+    ListEnvironmentsResponse (ListEnvironmentsResponse'),
+    newListEnvironmentsResponse,
+
+    -- ** ListRoutes (Paginated)
+    ListRoutes (ListRoutes'),
+    newListRoutes,
+    ListRoutesResponse (ListRoutesResponse'),
+    newListRoutesResponse,
+
+    -- ** ListServices (Paginated)
+    ListServices (ListServices'),
+    newListServices,
+    ListServicesResponse (ListServicesResponse'),
+    newListServicesResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** PutResourcePolicy
+    PutResourcePolicy (PutResourcePolicy'),
+    newPutResourcePolicy,
+    PutResourcePolicyResponse (PutResourcePolicyResponse'),
+    newPutResourcePolicyResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateRoute
+    UpdateRoute (UpdateRoute'),
+    newUpdateRoute,
+    UpdateRouteResponse (UpdateRouteResponse'),
+    newUpdateRouteResponse,
+
+    -- * Types
+
+    -- ** ApiGatewayEndpointType
+    ApiGatewayEndpointType (..),
+
+    -- ** ApplicationState
+    ApplicationState (..),
+
+    -- ** EnvironmentState
+    EnvironmentState (..),
+
+    -- ** ErrorCode
+    ErrorCode (..),
+
+    -- ** ErrorResourceType
+    ErrorResourceType (..),
+
+    -- ** HttpMethod
+    HttpMethod (..),
+
+    -- ** NetworkFabricType
+    NetworkFabricType (..),
+
+    -- ** ProxyType
+    ProxyType (..),
+
+    -- ** RouteActivationState
+    RouteActivationState (..),
+
+    -- ** RouteState
+    RouteState (..),
+
+    -- ** RouteType
+    RouteType (..),
+
+    -- ** ServiceEndpointType
+    ServiceEndpointType (..),
+
+    -- ** ServiceState
+    ServiceState (..),
+
+    -- ** ApiGatewayProxyConfig
+    ApiGatewayProxyConfig (ApiGatewayProxyConfig'),
+    newApiGatewayProxyConfig,
+
+    -- ** ApiGatewayProxyInput
+    ApiGatewayProxyInput (ApiGatewayProxyInput'),
+    newApiGatewayProxyInput,
+
+    -- ** ApiGatewayProxySummary
+    ApiGatewayProxySummary (ApiGatewayProxySummary'),
+    newApiGatewayProxySummary,
+
+    -- ** ApplicationSummary
+    ApplicationSummary (ApplicationSummary'),
+    newApplicationSummary,
+
+    -- ** DefaultRouteInput
+    DefaultRouteInput (DefaultRouteInput'),
+    newDefaultRouteInput,
+
+    -- ** EnvironmentSummary
+    EnvironmentSummary (EnvironmentSummary'),
+    newEnvironmentSummary,
+
+    -- ** EnvironmentVpc
+    EnvironmentVpc (EnvironmentVpc'),
+    newEnvironmentVpc,
+
+    -- ** ErrorResponse
+    ErrorResponse (ErrorResponse'),
+    newErrorResponse,
+
+    -- ** LambdaEndpointConfig
+    LambdaEndpointConfig (LambdaEndpointConfig'),
+    newLambdaEndpointConfig,
+
+    -- ** LambdaEndpointInput
+    LambdaEndpointInput (LambdaEndpointInput'),
+    newLambdaEndpointInput,
+
+    -- ** LambdaEndpointSummary
+    LambdaEndpointSummary (LambdaEndpointSummary'),
+    newLambdaEndpointSummary,
+
+    -- ** RouteSummary
+    RouteSummary (RouteSummary'),
+    newRouteSummary,
+
+    -- ** ServiceSummary
+    ServiceSummary (ServiceSummary'),
+    newServiceSummary,
+
+    -- ** UriPathRouteInput
+    UriPathRouteInput (UriPathRouteInput'),
+    newUriPathRouteInput,
+
+    -- ** UrlEndpointConfig
+    UrlEndpointConfig (UrlEndpointConfig'),
+    newUrlEndpointConfig,
+
+    -- ** UrlEndpointInput
+    UrlEndpointInput (UrlEndpointInput'),
+    newUrlEndpointInput,
+
+    -- ** UrlEndpointSummary
+    UrlEndpointSummary (UrlEndpointSummary'),
+    newUrlEndpointSummary,
+  )
+where
+
+import Amazonka.MigrationHubReFactorSpaces.CreateApplication
+import Amazonka.MigrationHubReFactorSpaces.CreateEnvironment
+import Amazonka.MigrationHubReFactorSpaces.CreateRoute
+import Amazonka.MigrationHubReFactorSpaces.CreateService
+import Amazonka.MigrationHubReFactorSpaces.DeleteApplication
+import Amazonka.MigrationHubReFactorSpaces.DeleteEnvironment
+import Amazonka.MigrationHubReFactorSpaces.DeleteResourcePolicy
+import Amazonka.MigrationHubReFactorSpaces.DeleteRoute
+import Amazonka.MigrationHubReFactorSpaces.DeleteService
+import Amazonka.MigrationHubReFactorSpaces.GetApplication
+import Amazonka.MigrationHubReFactorSpaces.GetEnvironment
+import Amazonka.MigrationHubReFactorSpaces.GetResourcePolicy
+import Amazonka.MigrationHubReFactorSpaces.GetRoute
+import Amazonka.MigrationHubReFactorSpaces.GetService
+import Amazonka.MigrationHubReFactorSpaces.Lens
+import Amazonka.MigrationHubReFactorSpaces.ListApplications
+import Amazonka.MigrationHubReFactorSpaces.ListEnvironmentVpcs
+import Amazonka.MigrationHubReFactorSpaces.ListEnvironments
+import Amazonka.MigrationHubReFactorSpaces.ListRoutes
+import Amazonka.MigrationHubReFactorSpaces.ListServices
+import Amazonka.MigrationHubReFactorSpaces.ListTagsForResource
+import Amazonka.MigrationHubReFactorSpaces.PutResourcePolicy
+import Amazonka.MigrationHubReFactorSpaces.TagResource
+import Amazonka.MigrationHubReFactorSpaces.Types
+import Amazonka.MigrationHubReFactorSpaces.UntagResource
+import Amazonka.MigrationHubReFactorSpaces.UpdateRoute
+import Amazonka.MigrationHubReFactorSpaces.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 'MigrationHubReFactorSpaces'.
+
+-- $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/MigrationHubReFactorSpaces/CreateApplication.hs b/gen/Amazonka/MigrationHubReFactorSpaces/CreateApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/CreateApplication.hs
@@ -0,0 +1,451 @@
+{-# 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.MigrationHubReFactorSpaces.CreateApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Amazon Web Services Migration Hub Refactor Spaces
+-- application. The account that owns the environment also owns the
+-- applications created inside the environment, regardless of the account
+-- that creates the application. Refactor Spaces provisions an Amazon API
+-- Gateway, API Gateway VPC link, and Network Load Balancer for the
+-- application proxy inside your account.
+module Amazonka.MigrationHubReFactorSpaces.CreateApplication
+  ( -- * Creating a Request
+    CreateApplication (..),
+    newCreateApplication,
+
+    -- * Request Lenses
+    createApplication_apiGatewayProxy,
+    createApplication_clientToken,
+    createApplication_tags,
+    createApplication_environmentIdentifier,
+    createApplication_name,
+    createApplication_proxyType,
+    createApplication_vpcId,
+
+    -- * Destructuring the Response
+    CreateApplicationResponse (..),
+    newCreateApplicationResponse,
+
+    -- * Response Lenses
+    createApplicationResponse_apiGatewayProxy,
+    createApplicationResponse_applicationId,
+    createApplicationResponse_arn,
+    createApplicationResponse_createdByAccountId,
+    createApplicationResponse_createdTime,
+    createApplicationResponse_environmentId,
+    createApplicationResponse_lastUpdatedTime,
+    createApplicationResponse_name,
+    createApplicationResponse_ownerAccountId,
+    createApplicationResponse_proxyType,
+    createApplicationResponse_state,
+    createApplicationResponse_tags,
+    createApplicationResponse_vpcId,
+    createApplicationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateApplication' smart constructor.
+data CreateApplication = CreateApplication'
+  { -- | A wrapper object holding the API Gateway endpoint type and stage name
+    -- for the proxy.
+    apiGatewayProxy :: Prelude.Maybe ApiGatewayProxyInput,
+    -- | A unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the request.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The tags to assign to the application. A tag is a label that you assign
+    -- to an Amazon Web Services resource. Each tag consists of a key-value
+    -- pair.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The unique identifier of the environment.
+    environmentIdentifier :: Prelude.Text,
+    -- | The name to use for the application.
+    name :: Prelude.Text,
+    -- | The proxy type of the proxy created within the application.
+    proxyType :: ProxyType,
+    -- | The ID of the virtual private cloud (VPC).
+    vpcId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiGatewayProxy', 'createApplication_apiGatewayProxy' - A wrapper object holding the API Gateway endpoint type and stage name
+-- for the proxy.
+--
+-- 'clientToken', 'createApplication_clientToken' - A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request.
+--
+-- 'tags', 'createApplication_tags' - The tags to assign to the application. A tag is a label that you assign
+-- to an Amazon Web Services resource. Each tag consists of a key-value
+-- pair.
+--
+-- 'environmentIdentifier', 'createApplication_environmentIdentifier' - The unique identifier of the environment.
+--
+-- 'name', 'createApplication_name' - The name to use for the application.
+--
+-- 'proxyType', 'createApplication_proxyType' - The proxy type of the proxy created within the application.
+--
+-- 'vpcId', 'createApplication_vpcId' - The ID of the virtual private cloud (VPC).
+newCreateApplication ::
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'proxyType'
+  ProxyType ->
+  -- | 'vpcId'
+  Prelude.Text ->
+  CreateApplication
+newCreateApplication
+  pEnvironmentIdentifier_
+  pName_
+  pProxyType_
+  pVpcId_ =
+    CreateApplication'
+      { apiGatewayProxy =
+          Prelude.Nothing,
+        clientToken = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        environmentIdentifier = pEnvironmentIdentifier_,
+        name = pName_,
+        proxyType = pProxyType_,
+        vpcId = pVpcId_
+      }
+
+-- | A wrapper object holding the API Gateway endpoint type and stage name
+-- for the proxy.
+createApplication_apiGatewayProxy :: Lens.Lens' CreateApplication (Prelude.Maybe ApiGatewayProxyInput)
+createApplication_apiGatewayProxy = Lens.lens (\CreateApplication' {apiGatewayProxy} -> apiGatewayProxy) (\s@CreateApplication' {} a -> s {apiGatewayProxy = a} :: CreateApplication)
+
+-- | A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request.
+createApplication_clientToken :: Lens.Lens' CreateApplication (Prelude.Maybe Prelude.Text)
+createApplication_clientToken = Lens.lens (\CreateApplication' {clientToken} -> clientToken) (\s@CreateApplication' {} a -> s {clientToken = a} :: CreateApplication)
+
+-- | The tags to assign to the application. A tag is a label that you assign
+-- to an Amazon Web Services resource. Each tag consists of a key-value
+-- pair.
+createApplication_tags :: Lens.Lens' CreateApplication (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createApplication_tags = Lens.lens (\CreateApplication' {tags} -> tags) (\s@CreateApplication' {} a -> s {tags = a} :: CreateApplication) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The unique identifier of the environment.
+createApplication_environmentIdentifier :: Lens.Lens' CreateApplication Prelude.Text
+createApplication_environmentIdentifier = Lens.lens (\CreateApplication' {environmentIdentifier} -> environmentIdentifier) (\s@CreateApplication' {} a -> s {environmentIdentifier = a} :: CreateApplication)
+
+-- | The name to use for the application.
+createApplication_name :: Lens.Lens' CreateApplication Prelude.Text
+createApplication_name = Lens.lens (\CreateApplication' {name} -> name) (\s@CreateApplication' {} a -> s {name = a} :: CreateApplication)
+
+-- | The proxy type of the proxy created within the application.
+createApplication_proxyType :: Lens.Lens' CreateApplication ProxyType
+createApplication_proxyType = Lens.lens (\CreateApplication' {proxyType} -> proxyType) (\s@CreateApplication' {} a -> s {proxyType = a} :: CreateApplication)
+
+-- | The ID of the virtual private cloud (VPC).
+createApplication_vpcId :: Lens.Lens' CreateApplication Prelude.Text
+createApplication_vpcId = Lens.lens (\CreateApplication' {vpcId} -> vpcId) (\s@CreateApplication' {} a -> s {vpcId = a} :: CreateApplication)
+
+instance Core.AWSRequest CreateApplication where
+  type
+    AWSResponse CreateApplication =
+      CreateApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateApplicationResponse'
+            Prelude.<$> (x Data..?> "ApiGatewayProxy")
+            Prelude.<*> (x Data..?> "ApplicationId")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreatedByAccountId")
+            Prelude.<*> (x Data..?> "CreatedTime")
+            Prelude.<*> (x Data..?> "EnvironmentId")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "OwnerAccountId")
+            Prelude.<*> (x Data..?> "ProxyType")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "VpcId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateApplication where
+  hashWithSalt _salt CreateApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` apiGatewayProxy
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` environmentIdentifier
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` proxyType
+      `Prelude.hashWithSalt` vpcId
+
+instance Prelude.NFData CreateApplication where
+  rnf CreateApplication' {..} =
+    Prelude.rnf apiGatewayProxy
+      `Prelude.seq` Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf environmentIdentifier
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf proxyType
+      `Prelude.seq` Prelude.rnf vpcId
+
+instance Data.ToHeaders CreateApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateApplication where
+  toJSON CreateApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ApiGatewayProxy" Data..=)
+              Prelude.<$> apiGatewayProxy,
+            ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("ProxyType" Data..= proxyType),
+            Prelude.Just ("VpcId" Data..= vpcId)
+          ]
+      )
+
+instance Data.ToPath CreateApplication where
+  toPath CreateApplication' {..} =
+    Prelude.mconcat
+      [ "/environments/",
+        Data.toBS environmentIdentifier,
+        "/applications"
+      ]
+
+instance Data.ToQuery CreateApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateApplicationResponse' smart constructor.
+data CreateApplicationResponse = CreateApplicationResponse'
+  { -- | A wrapper object holding the API Gateway endpoint type and stage name
+    -- for the proxy.
+    apiGatewayProxy :: Prelude.Maybe ApiGatewayProxyInput,
+    -- | The unique identifier of the application.
+    applicationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the application. The format for this
+    -- ARN is
+    -- @arn:aws:refactor-spaces:@/@region@/@:@/@account-id@/@:@/@resource-type\/resource-id@/@ @.
+    -- For more information about ARNs, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
+    -- in the /Amazon Web Services General Reference/.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of application creator.
+    createdByAccountId :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the application is created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the environment in which the application is created.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the application was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the application.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of the application owner (which is
+    -- always the same as the environment owner account ID).
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The proxy type of the proxy created within the application.
+    proxyType :: Prelude.Maybe ProxyType,
+    -- | The current state of the application.
+    state :: Prelude.Maybe ApplicationState,
+    -- | The tags assigned to the application. A tag is a label that you assign
+    -- to an Amazon Web Services resource. Each tag consists of a key-value
+    -- pair.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The ID of the Amazon VPC.
+    vpcId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiGatewayProxy', 'createApplicationResponse_apiGatewayProxy' - A wrapper object holding the API Gateway endpoint type and stage name
+-- for the proxy.
+--
+-- 'applicationId', 'createApplicationResponse_applicationId' - The unique identifier of the application.
+--
+-- 'arn', 'createApplicationResponse_arn' - The Amazon Resource Name (ARN) of the application. The format for this
+-- ARN is
+-- @arn:aws:refactor-spaces:@/@region@/@:@/@account-id@/@:@/@resource-type\/resource-id@/@ @.
+-- For more information about ARNs, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
+-- in the /Amazon Web Services General Reference/.
+--
+-- 'createdByAccountId', 'createApplicationResponse_createdByAccountId' - The Amazon Web Services account ID of application creator.
+--
+-- 'createdTime', 'createApplicationResponse_createdTime' - A timestamp that indicates when the application is created.
+--
+-- 'environmentId', 'createApplicationResponse_environmentId' - The ID of the environment in which the application is created.
+--
+-- 'lastUpdatedTime', 'createApplicationResponse_lastUpdatedTime' - A timestamp that indicates when the application was last updated.
+--
+-- 'name', 'createApplicationResponse_name' - The name of the application.
+--
+-- 'ownerAccountId', 'createApplicationResponse_ownerAccountId' - The Amazon Web Services account ID of the application owner (which is
+-- always the same as the environment owner account ID).
+--
+-- 'proxyType', 'createApplicationResponse_proxyType' - The proxy type of the proxy created within the application.
+--
+-- 'state', 'createApplicationResponse_state' - The current state of the application.
+--
+-- 'tags', 'createApplicationResponse_tags' - The tags assigned to the application. A tag is a label that you assign
+-- to an Amazon Web Services resource. Each tag consists of a key-value
+-- pair.
+--
+-- 'vpcId', 'createApplicationResponse_vpcId' - The ID of the Amazon VPC.
+--
+-- 'httpStatus', 'createApplicationResponse_httpStatus' - The response's http status code.
+newCreateApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateApplicationResponse
+newCreateApplicationResponse pHttpStatus_ =
+  CreateApplicationResponse'
+    { apiGatewayProxy =
+        Prelude.Nothing,
+      applicationId = Prelude.Nothing,
+      arn = Prelude.Nothing,
+      createdByAccountId = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      proxyType = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      vpcId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A wrapper object holding the API Gateway endpoint type and stage name
+-- for the proxy.
+createApplicationResponse_apiGatewayProxy :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe ApiGatewayProxyInput)
+createApplicationResponse_apiGatewayProxy = Lens.lens (\CreateApplicationResponse' {apiGatewayProxy} -> apiGatewayProxy) (\s@CreateApplicationResponse' {} a -> s {apiGatewayProxy = a} :: CreateApplicationResponse)
+
+-- | The unique identifier of the application.
+createApplicationResponse_applicationId :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe Prelude.Text)
+createApplicationResponse_applicationId = Lens.lens (\CreateApplicationResponse' {applicationId} -> applicationId) (\s@CreateApplicationResponse' {} a -> s {applicationId = a} :: CreateApplicationResponse)
+
+-- | The Amazon Resource Name (ARN) of the application. The format for this
+-- ARN is
+-- @arn:aws:refactor-spaces:@/@region@/@:@/@account-id@/@:@/@resource-type\/resource-id@/@ @.
+-- For more information about ARNs, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
+-- in the /Amazon Web Services General Reference/.
+createApplicationResponse_arn :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe Prelude.Text)
+createApplicationResponse_arn = Lens.lens (\CreateApplicationResponse' {arn} -> arn) (\s@CreateApplicationResponse' {} a -> s {arn = a} :: CreateApplicationResponse)
+
+-- | The Amazon Web Services account ID of application creator.
+createApplicationResponse_createdByAccountId :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe Prelude.Text)
+createApplicationResponse_createdByAccountId = Lens.lens (\CreateApplicationResponse' {createdByAccountId} -> createdByAccountId) (\s@CreateApplicationResponse' {} a -> s {createdByAccountId = a} :: CreateApplicationResponse)
+
+-- | A timestamp that indicates when the application is created.
+createApplicationResponse_createdTime :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe Prelude.UTCTime)
+createApplicationResponse_createdTime = Lens.lens (\CreateApplicationResponse' {createdTime} -> createdTime) (\s@CreateApplicationResponse' {} a -> s {createdTime = a} :: CreateApplicationResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the environment in which the application is created.
+createApplicationResponse_environmentId :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe Prelude.Text)
+createApplicationResponse_environmentId = Lens.lens (\CreateApplicationResponse' {environmentId} -> environmentId) (\s@CreateApplicationResponse' {} a -> s {environmentId = a} :: CreateApplicationResponse)
+
+-- | A timestamp that indicates when the application was last updated.
+createApplicationResponse_lastUpdatedTime :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe Prelude.UTCTime)
+createApplicationResponse_lastUpdatedTime = Lens.lens (\CreateApplicationResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@CreateApplicationResponse' {} a -> s {lastUpdatedTime = a} :: CreateApplicationResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the application.
+createApplicationResponse_name :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe Prelude.Text)
+createApplicationResponse_name = Lens.lens (\CreateApplicationResponse' {name} -> name) (\s@CreateApplicationResponse' {} a -> s {name = a} :: CreateApplicationResponse)
+
+-- | The Amazon Web Services account ID of the application owner (which is
+-- always the same as the environment owner account ID).
+createApplicationResponse_ownerAccountId :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe Prelude.Text)
+createApplicationResponse_ownerAccountId = Lens.lens (\CreateApplicationResponse' {ownerAccountId} -> ownerAccountId) (\s@CreateApplicationResponse' {} a -> s {ownerAccountId = a} :: CreateApplicationResponse)
+
+-- | The proxy type of the proxy created within the application.
+createApplicationResponse_proxyType :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe ProxyType)
+createApplicationResponse_proxyType = Lens.lens (\CreateApplicationResponse' {proxyType} -> proxyType) (\s@CreateApplicationResponse' {} a -> s {proxyType = a} :: CreateApplicationResponse)
+
+-- | The current state of the application.
+createApplicationResponse_state :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe ApplicationState)
+createApplicationResponse_state = Lens.lens (\CreateApplicationResponse' {state} -> state) (\s@CreateApplicationResponse' {} a -> s {state = a} :: CreateApplicationResponse)
+
+-- | The tags assigned to the application. A tag is a label that you assign
+-- to an Amazon Web Services resource. Each tag consists of a key-value
+-- pair.
+createApplicationResponse_tags :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createApplicationResponse_tags = Lens.lens (\CreateApplicationResponse' {tags} -> tags) (\s@CreateApplicationResponse' {} a -> s {tags = a} :: CreateApplicationResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The ID of the Amazon VPC.
+createApplicationResponse_vpcId :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe Prelude.Text)
+createApplicationResponse_vpcId = Lens.lens (\CreateApplicationResponse' {vpcId} -> vpcId) (\s@CreateApplicationResponse' {} a -> s {vpcId = a} :: CreateApplicationResponse)
+
+-- | The response's http status code.
+createApplicationResponse_httpStatus :: Lens.Lens' CreateApplicationResponse Prelude.Int
+createApplicationResponse_httpStatus = Lens.lens (\CreateApplicationResponse' {httpStatus} -> httpStatus) (\s@CreateApplicationResponse' {} a -> s {httpStatus = a} :: CreateApplicationResponse)
+
+instance Prelude.NFData CreateApplicationResponse where
+  rnf CreateApplicationResponse' {..} =
+    Prelude.rnf apiGatewayProxy
+      `Prelude.seq` Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdByAccountId
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf proxyType
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf vpcId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/CreateEnvironment.hs b/gen/Amazonka/MigrationHubReFactorSpaces/CreateEnvironment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/CreateEnvironment.hs
@@ -0,0 +1,353 @@
+{-# 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.MigrationHubReFactorSpaces.CreateEnvironment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Amazon Web Services Migration Hub Refactor Spaces
+-- environment. The caller owns the environment resource, and all Refactor
+-- Spaces applications, services, and routes created within the
+-- environment. They are referred to as the /environment owner/. The
+-- environment owner has cross-account visibility and control of Refactor
+-- Spaces resources that are added to the environment by other accounts
+-- that the environment is shared with. When creating an environment,
+-- Refactor Spaces provisions a transit gateway in your account.
+module Amazonka.MigrationHubReFactorSpaces.CreateEnvironment
+  ( -- * Creating a Request
+    CreateEnvironment (..),
+    newCreateEnvironment,
+
+    -- * Request Lenses
+    createEnvironment_clientToken,
+    createEnvironment_description,
+    createEnvironment_tags,
+    createEnvironment_name,
+    createEnvironment_networkFabricType,
+
+    -- * Destructuring the Response
+    CreateEnvironmentResponse (..),
+    newCreateEnvironmentResponse,
+
+    -- * Response Lenses
+    createEnvironmentResponse_arn,
+    createEnvironmentResponse_createdTime,
+    createEnvironmentResponse_description,
+    createEnvironmentResponse_environmentId,
+    createEnvironmentResponse_lastUpdatedTime,
+    createEnvironmentResponse_name,
+    createEnvironmentResponse_networkFabricType,
+    createEnvironmentResponse_ownerAccountId,
+    createEnvironmentResponse_state,
+    createEnvironmentResponse_tags,
+    createEnvironmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateEnvironment' smart constructor.
+data CreateEnvironment = CreateEnvironment'
+  { -- | A unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the request.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The description of the environment.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The tags to assign to the environment. A tag is a label that you assign
+    -- to an Amazon Web Services resource. Each tag consists of a key-value
+    -- pair.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The name of the environment.
+    name :: Prelude.Text,
+    -- | The network fabric type of the environment.
+    networkFabricType :: NetworkFabricType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateEnvironment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createEnvironment_clientToken' - A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request.
+--
+-- 'description', 'createEnvironment_description' - The description of the environment.
+--
+-- 'tags', 'createEnvironment_tags' - The tags to assign to the environment. A tag is a label that you assign
+-- to an Amazon Web Services resource. Each tag consists of a key-value
+-- pair.
+--
+-- 'name', 'createEnvironment_name' - The name of the environment.
+--
+-- 'networkFabricType', 'createEnvironment_networkFabricType' - The network fabric type of the environment.
+newCreateEnvironment ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'networkFabricType'
+  NetworkFabricType ->
+  CreateEnvironment
+newCreateEnvironment pName_ pNetworkFabricType_ =
+  CreateEnvironment'
+    { clientToken = Prelude.Nothing,
+      description = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      name = pName_,
+      networkFabricType = pNetworkFabricType_
+    }
+
+-- | A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request.
+createEnvironment_clientToken :: Lens.Lens' CreateEnvironment (Prelude.Maybe Prelude.Text)
+createEnvironment_clientToken = Lens.lens (\CreateEnvironment' {clientToken} -> clientToken) (\s@CreateEnvironment' {} a -> s {clientToken = a} :: CreateEnvironment)
+
+-- | The description of the environment.
+createEnvironment_description :: Lens.Lens' CreateEnvironment (Prelude.Maybe Prelude.Text)
+createEnvironment_description = Lens.lens (\CreateEnvironment' {description} -> description) (\s@CreateEnvironment' {} a -> s {description = a} :: CreateEnvironment)
+
+-- | The tags to assign to the environment. A tag is a label that you assign
+-- to an Amazon Web Services resource. Each tag consists of a key-value
+-- pair.
+createEnvironment_tags :: Lens.Lens' CreateEnvironment (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createEnvironment_tags = Lens.lens (\CreateEnvironment' {tags} -> tags) (\s@CreateEnvironment' {} a -> s {tags = a} :: CreateEnvironment) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The name of the environment.
+createEnvironment_name :: Lens.Lens' CreateEnvironment Prelude.Text
+createEnvironment_name = Lens.lens (\CreateEnvironment' {name} -> name) (\s@CreateEnvironment' {} a -> s {name = a} :: CreateEnvironment)
+
+-- | The network fabric type of the environment.
+createEnvironment_networkFabricType :: Lens.Lens' CreateEnvironment NetworkFabricType
+createEnvironment_networkFabricType = Lens.lens (\CreateEnvironment' {networkFabricType} -> networkFabricType) (\s@CreateEnvironment' {} a -> s {networkFabricType = a} :: CreateEnvironment)
+
+instance Core.AWSRequest CreateEnvironment where
+  type
+    AWSResponse CreateEnvironment =
+      CreateEnvironmentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateEnvironmentResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreatedTime")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "EnvironmentId")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "NetworkFabricType")
+            Prelude.<*> (x Data..?> "OwnerAccountId")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateEnvironment where
+  hashWithSalt _salt CreateEnvironment' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` networkFabricType
+
+instance Prelude.NFData CreateEnvironment where
+  rnf CreateEnvironment' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf networkFabricType
+
+instance Data.ToHeaders CreateEnvironment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateEnvironment where
+  toJSON CreateEnvironment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("Description" Data..=) Prelude.<$> description,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just
+              ("NetworkFabricType" Data..= networkFabricType)
+          ]
+      )
+
+instance Data.ToPath CreateEnvironment where
+  toPath = Prelude.const "/environments"
+
+instance Data.ToQuery CreateEnvironment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateEnvironmentResponse' smart constructor.
+data CreateEnvironmentResponse = CreateEnvironmentResponse'
+  { -- | The Amazon Resource Name (ARN) of the environment.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the environment is created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | A description of the environment.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The unique identifier of the environment.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the environment was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the environment.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The network fabric type of the environment.
+    networkFabricType :: Prelude.Maybe NetworkFabricType,
+    -- | The Amazon Web Services account ID of environment owner.
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the environment.
+    state :: Prelude.Maybe EnvironmentState,
+    -- | The tags assigned to the created environment. A tag is a label that you
+    -- assign to an Amazon Web Services resource. Each tag consists of a
+    -- key-value pair..
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateEnvironmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createEnvironmentResponse_arn' - The Amazon Resource Name (ARN) of the environment.
+--
+-- 'createdTime', 'createEnvironmentResponse_createdTime' - A timestamp that indicates when the environment is created.
+--
+-- 'description', 'createEnvironmentResponse_description' - A description of the environment.
+--
+-- 'environmentId', 'createEnvironmentResponse_environmentId' - The unique identifier of the environment.
+--
+-- 'lastUpdatedTime', 'createEnvironmentResponse_lastUpdatedTime' - A timestamp that indicates when the environment was last updated.
+--
+-- 'name', 'createEnvironmentResponse_name' - The name of the environment.
+--
+-- 'networkFabricType', 'createEnvironmentResponse_networkFabricType' - The network fabric type of the environment.
+--
+-- 'ownerAccountId', 'createEnvironmentResponse_ownerAccountId' - The Amazon Web Services account ID of environment owner.
+--
+-- 'state', 'createEnvironmentResponse_state' - The current state of the environment.
+--
+-- 'tags', 'createEnvironmentResponse_tags' - The tags assigned to the created environment. A tag is a label that you
+-- assign to an Amazon Web Services resource. Each tag consists of a
+-- key-value pair..
+--
+-- 'httpStatus', 'createEnvironmentResponse_httpStatus' - The response's http status code.
+newCreateEnvironmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateEnvironmentResponse
+newCreateEnvironmentResponse pHttpStatus_ =
+  CreateEnvironmentResponse'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      networkFabricType = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the environment.
+createEnvironmentResponse_arn :: Lens.Lens' CreateEnvironmentResponse (Prelude.Maybe Prelude.Text)
+createEnvironmentResponse_arn = Lens.lens (\CreateEnvironmentResponse' {arn} -> arn) (\s@CreateEnvironmentResponse' {} a -> s {arn = a} :: CreateEnvironmentResponse)
+
+-- | A timestamp that indicates when the environment is created.
+createEnvironmentResponse_createdTime :: Lens.Lens' CreateEnvironmentResponse (Prelude.Maybe Prelude.UTCTime)
+createEnvironmentResponse_createdTime = Lens.lens (\CreateEnvironmentResponse' {createdTime} -> createdTime) (\s@CreateEnvironmentResponse' {} a -> s {createdTime = a} :: CreateEnvironmentResponse) Prelude.. Lens.mapping Data._Time
+
+-- | A description of the environment.
+createEnvironmentResponse_description :: Lens.Lens' CreateEnvironmentResponse (Prelude.Maybe Prelude.Text)
+createEnvironmentResponse_description = Lens.lens (\CreateEnvironmentResponse' {description} -> description) (\s@CreateEnvironmentResponse' {} a -> s {description = a} :: CreateEnvironmentResponse)
+
+-- | The unique identifier of the environment.
+createEnvironmentResponse_environmentId :: Lens.Lens' CreateEnvironmentResponse (Prelude.Maybe Prelude.Text)
+createEnvironmentResponse_environmentId = Lens.lens (\CreateEnvironmentResponse' {environmentId} -> environmentId) (\s@CreateEnvironmentResponse' {} a -> s {environmentId = a} :: CreateEnvironmentResponse)
+
+-- | A timestamp that indicates when the environment was last updated.
+createEnvironmentResponse_lastUpdatedTime :: Lens.Lens' CreateEnvironmentResponse (Prelude.Maybe Prelude.UTCTime)
+createEnvironmentResponse_lastUpdatedTime = Lens.lens (\CreateEnvironmentResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@CreateEnvironmentResponse' {} a -> s {lastUpdatedTime = a} :: CreateEnvironmentResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the environment.
+createEnvironmentResponse_name :: Lens.Lens' CreateEnvironmentResponse (Prelude.Maybe Prelude.Text)
+createEnvironmentResponse_name = Lens.lens (\CreateEnvironmentResponse' {name} -> name) (\s@CreateEnvironmentResponse' {} a -> s {name = a} :: CreateEnvironmentResponse)
+
+-- | The network fabric type of the environment.
+createEnvironmentResponse_networkFabricType :: Lens.Lens' CreateEnvironmentResponse (Prelude.Maybe NetworkFabricType)
+createEnvironmentResponse_networkFabricType = Lens.lens (\CreateEnvironmentResponse' {networkFabricType} -> networkFabricType) (\s@CreateEnvironmentResponse' {} a -> s {networkFabricType = a} :: CreateEnvironmentResponse)
+
+-- | The Amazon Web Services account ID of environment owner.
+createEnvironmentResponse_ownerAccountId :: Lens.Lens' CreateEnvironmentResponse (Prelude.Maybe Prelude.Text)
+createEnvironmentResponse_ownerAccountId = Lens.lens (\CreateEnvironmentResponse' {ownerAccountId} -> ownerAccountId) (\s@CreateEnvironmentResponse' {} a -> s {ownerAccountId = a} :: CreateEnvironmentResponse)
+
+-- | The current state of the environment.
+createEnvironmentResponse_state :: Lens.Lens' CreateEnvironmentResponse (Prelude.Maybe EnvironmentState)
+createEnvironmentResponse_state = Lens.lens (\CreateEnvironmentResponse' {state} -> state) (\s@CreateEnvironmentResponse' {} a -> s {state = a} :: CreateEnvironmentResponse)
+
+-- | The tags assigned to the created environment. A tag is a label that you
+-- assign to an Amazon Web Services resource. Each tag consists of a
+-- key-value pair..
+createEnvironmentResponse_tags :: Lens.Lens' CreateEnvironmentResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createEnvironmentResponse_tags = Lens.lens (\CreateEnvironmentResponse' {tags} -> tags) (\s@CreateEnvironmentResponse' {} a -> s {tags = a} :: CreateEnvironmentResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The response's http status code.
+createEnvironmentResponse_httpStatus :: Lens.Lens' CreateEnvironmentResponse Prelude.Int
+createEnvironmentResponse_httpStatus = Lens.lens (\CreateEnvironmentResponse' {httpStatus} -> httpStatus) (\s@CreateEnvironmentResponse' {} a -> s {httpStatus = a} :: CreateEnvironmentResponse)
+
+instance Prelude.NFData CreateEnvironmentResponse where
+  rnf CreateEnvironmentResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf networkFabricType
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/CreateRoute.hs b/gen/Amazonka/MigrationHubReFactorSpaces/CreateRoute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/CreateRoute.hs
@@ -0,0 +1,516 @@
+{-# 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.MigrationHubReFactorSpaces.CreateRoute
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Amazon Web Services Migration Hub Refactor Spaces route. The
+-- account owner of the service resource is always the environment owner,
+-- regardless of which account creates the route. Routes target a service
+-- in the application. If an application does not have any routes, then the
+-- first route must be created as a @DEFAULT@ @RouteType@.
+--
+-- When created, the default route defaults to an active state so state is
+-- not a required input. However, like all other state values the state of
+-- the default route can be updated after creation, but only when all other
+-- routes are also inactive. Conversely, no route can be active without the
+-- default route also being active.
+--
+-- When you create a route, Refactor Spaces configures the Amazon API
+-- Gateway to send traffic to the target service as follows:
+--
+-- -   If the service has a URL endpoint, and the endpoint resolves to a
+--     private IP address, Refactor Spaces routes traffic using the API
+--     Gateway VPC link.
+--
+-- -   If the service has a URL endpoint, and the endpoint resolves to a
+--     public IP address, Refactor Spaces routes traffic over the public
+--     internet.
+--
+-- -   If the service has an Lambda function endpoint, then Refactor Spaces
+--     configures the Lambda function\'s resource policy to allow the
+--     application\'s API Gateway to invoke the function.
+--
+-- A one-time health check is performed on the service when either the
+-- route is updated from inactive to active, or when it is created with an
+-- active state. If the health check fails, the route transitions the route
+-- state to @FAILED@, an error code of
+-- @SERVICE_ENDPOINT_HEALTH_CHECK_FAILURE@ is provided, and no traffic is
+-- sent to the service.
+--
+-- For Lambda functions, the Lambda function state is checked. If the
+-- function is not active, the function configuration is updated so that
+-- Lambda resources are provisioned. If the Lambda state is @Failed@, then
+-- the route creation fails. For more information, see the
+-- <https://docs.aws.amazon.com/lambda/latest/dg/API_GetFunctionConfiguration.html#SSS-GetFunctionConfiguration-response-State GetFunctionConfiguration\'s State response parameter>
+-- in the /Lambda Developer Guide/.
+--
+-- For Lambda endpoints, a check is performed to determine that a Lambda
+-- function with the specified ARN exists. If it does not exist, the health
+-- check fails. For public URLs, a connection is opened to the public
+-- endpoint. If the URL is not reachable, the health check fails.
+--
+-- Refactor Spaces automatically resolves the public Domain Name System
+-- (DNS) names that are set in CreateServiceRequest$UrlEndpoint when you
+-- create a service. The DNS names resolve when the DNS time-to-live (TTL)
+-- expires, or every 60 seconds for TTLs less than 60 seconds. This
+-- periodic DNS resolution ensures that the route configuration remains
+-- up-to-date.
+--
+-- For private URLS, a target group is created on the Elastic Load
+-- Balancing and the target group health check is run. The
+-- @HealthCheckProtocol@, @HealthCheckPort@, and @HealthCheckPath@ are the
+-- same protocol, port, and path specified in the URL or health URL, if
+-- used. All other settings use the default values, as described in
+-- <https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html Health checks for your target groups>.
+-- The health check is considered successful if at least one target within
+-- the target group transitions to a healthy state.
+--
+-- Services can have HTTP or HTTPS URL endpoints. For HTTPS URLs,
+-- publicly-signed certificates are supported. Private Certificate
+-- Authorities (CAs) are permitted only if the CA\'s domain is also
+-- publicly resolvable.
+module Amazonka.MigrationHubReFactorSpaces.CreateRoute
+  ( -- * Creating a Request
+    CreateRoute (..),
+    newCreateRoute,
+
+    -- * Request Lenses
+    createRoute_clientToken,
+    createRoute_defaultRoute,
+    createRoute_tags,
+    createRoute_uriPathRoute,
+    createRoute_applicationIdentifier,
+    createRoute_environmentIdentifier,
+    createRoute_routeType,
+    createRoute_serviceIdentifier,
+
+    -- * Destructuring the Response
+    CreateRouteResponse (..),
+    newCreateRouteResponse,
+
+    -- * Response Lenses
+    createRouteResponse_applicationId,
+    createRouteResponse_arn,
+    createRouteResponse_createdByAccountId,
+    createRouteResponse_createdTime,
+    createRouteResponse_lastUpdatedTime,
+    createRouteResponse_ownerAccountId,
+    createRouteResponse_routeId,
+    createRouteResponse_routeType,
+    createRouteResponse_serviceId,
+    createRouteResponse_state,
+    createRouteResponse_tags,
+    createRouteResponse_uriPathRoute,
+    createRouteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateRoute' smart constructor.
+data CreateRoute = CreateRoute'
+  { -- | A unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the request.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | Configuration for the default route type.
+    defaultRoute :: Prelude.Maybe DefaultRouteInput,
+    -- | The tags to assign to the route. A tag is a label that you assign to an
+    -- Amazon Web Services resource. Each tag consists of a key-value pair..
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The configuration for the URI path route type.
+    uriPathRoute :: Prelude.Maybe UriPathRouteInput,
+    -- | The ID of the application within which the route is being created.
+    applicationIdentifier :: Prelude.Text,
+    -- | The ID of the environment in which the route is created.
+    environmentIdentifier :: Prelude.Text,
+    -- | The route type of the route. @DEFAULT@ indicates that all traffic that
+    -- does not match another route is forwarded to the default route.
+    -- Applications must have a default route before any other routes can be
+    -- created. @URI_PATH@ indicates a route that is based on a URI path.
+    routeType :: RouteType,
+    -- | The ID of the service in which the route is created. Traffic that
+    -- matches this route is forwarded to this service.
+    serviceIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateRoute' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createRoute_clientToken' - A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request.
+--
+-- 'defaultRoute', 'createRoute_defaultRoute' - Configuration for the default route type.
+--
+-- 'tags', 'createRoute_tags' - The tags to assign to the route. A tag is a label that you assign to an
+-- Amazon Web Services resource. Each tag consists of a key-value pair..
+--
+-- 'uriPathRoute', 'createRoute_uriPathRoute' - The configuration for the URI path route type.
+--
+-- 'applicationIdentifier', 'createRoute_applicationIdentifier' - The ID of the application within which the route is being created.
+--
+-- 'environmentIdentifier', 'createRoute_environmentIdentifier' - The ID of the environment in which the route is created.
+--
+-- 'routeType', 'createRoute_routeType' - The route type of the route. @DEFAULT@ indicates that all traffic that
+-- does not match another route is forwarded to the default route.
+-- Applications must have a default route before any other routes can be
+-- created. @URI_PATH@ indicates a route that is based on a URI path.
+--
+-- 'serviceIdentifier', 'createRoute_serviceIdentifier' - The ID of the service in which the route is created. Traffic that
+-- matches this route is forwarded to this service.
+newCreateRoute ::
+  -- | 'applicationIdentifier'
+  Prelude.Text ->
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  -- | 'routeType'
+  RouteType ->
+  -- | 'serviceIdentifier'
+  Prelude.Text ->
+  CreateRoute
+newCreateRoute
+  pApplicationIdentifier_
+  pEnvironmentIdentifier_
+  pRouteType_
+  pServiceIdentifier_ =
+    CreateRoute'
+      { clientToken = Prelude.Nothing,
+        defaultRoute = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        uriPathRoute = Prelude.Nothing,
+        applicationIdentifier = pApplicationIdentifier_,
+        environmentIdentifier = pEnvironmentIdentifier_,
+        routeType = pRouteType_,
+        serviceIdentifier = pServiceIdentifier_
+      }
+
+-- | A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request.
+createRoute_clientToken :: Lens.Lens' CreateRoute (Prelude.Maybe Prelude.Text)
+createRoute_clientToken = Lens.lens (\CreateRoute' {clientToken} -> clientToken) (\s@CreateRoute' {} a -> s {clientToken = a} :: CreateRoute)
+
+-- | Configuration for the default route type.
+createRoute_defaultRoute :: Lens.Lens' CreateRoute (Prelude.Maybe DefaultRouteInput)
+createRoute_defaultRoute = Lens.lens (\CreateRoute' {defaultRoute} -> defaultRoute) (\s@CreateRoute' {} a -> s {defaultRoute = a} :: CreateRoute)
+
+-- | The tags to assign to the route. A tag is a label that you assign to an
+-- Amazon Web Services resource. Each tag consists of a key-value pair..
+createRoute_tags :: Lens.Lens' CreateRoute (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createRoute_tags = Lens.lens (\CreateRoute' {tags} -> tags) (\s@CreateRoute' {} a -> s {tags = a} :: CreateRoute) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The configuration for the URI path route type.
+createRoute_uriPathRoute :: Lens.Lens' CreateRoute (Prelude.Maybe UriPathRouteInput)
+createRoute_uriPathRoute = Lens.lens (\CreateRoute' {uriPathRoute} -> uriPathRoute) (\s@CreateRoute' {} a -> s {uriPathRoute = a} :: CreateRoute)
+
+-- | The ID of the application within which the route is being created.
+createRoute_applicationIdentifier :: Lens.Lens' CreateRoute Prelude.Text
+createRoute_applicationIdentifier = Lens.lens (\CreateRoute' {applicationIdentifier} -> applicationIdentifier) (\s@CreateRoute' {} a -> s {applicationIdentifier = a} :: CreateRoute)
+
+-- | The ID of the environment in which the route is created.
+createRoute_environmentIdentifier :: Lens.Lens' CreateRoute Prelude.Text
+createRoute_environmentIdentifier = Lens.lens (\CreateRoute' {environmentIdentifier} -> environmentIdentifier) (\s@CreateRoute' {} a -> s {environmentIdentifier = a} :: CreateRoute)
+
+-- | The route type of the route. @DEFAULT@ indicates that all traffic that
+-- does not match another route is forwarded to the default route.
+-- Applications must have a default route before any other routes can be
+-- created. @URI_PATH@ indicates a route that is based on a URI path.
+createRoute_routeType :: Lens.Lens' CreateRoute RouteType
+createRoute_routeType = Lens.lens (\CreateRoute' {routeType} -> routeType) (\s@CreateRoute' {} a -> s {routeType = a} :: CreateRoute)
+
+-- | The ID of the service in which the route is created. Traffic that
+-- matches this route is forwarded to this service.
+createRoute_serviceIdentifier :: Lens.Lens' CreateRoute Prelude.Text
+createRoute_serviceIdentifier = Lens.lens (\CreateRoute' {serviceIdentifier} -> serviceIdentifier) (\s@CreateRoute' {} a -> s {serviceIdentifier = a} :: CreateRoute)
+
+instance Core.AWSRequest CreateRoute where
+  type AWSResponse CreateRoute = CreateRouteResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateRouteResponse'
+            Prelude.<$> (x Data..?> "ApplicationId")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreatedByAccountId")
+            Prelude.<*> (x Data..?> "CreatedTime")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (x Data..?> "OwnerAccountId")
+            Prelude.<*> (x Data..?> "RouteId")
+            Prelude.<*> (x Data..?> "RouteType")
+            Prelude.<*> (x Data..?> "ServiceId")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "UriPathRoute")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateRoute where
+  hashWithSalt _salt CreateRoute' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` defaultRoute
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` uriPathRoute
+      `Prelude.hashWithSalt` applicationIdentifier
+      `Prelude.hashWithSalt` environmentIdentifier
+      `Prelude.hashWithSalt` routeType
+      `Prelude.hashWithSalt` serviceIdentifier
+
+instance Prelude.NFData CreateRoute where
+  rnf CreateRoute' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf defaultRoute
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf uriPathRoute
+      `Prelude.seq` Prelude.rnf applicationIdentifier
+      `Prelude.seq` Prelude.rnf environmentIdentifier
+      `Prelude.seq` Prelude.rnf routeType
+      `Prelude.seq` Prelude.rnf serviceIdentifier
+
+instance Data.ToHeaders CreateRoute where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateRoute where
+  toJSON CreateRoute' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("DefaultRoute" Data..=) Prelude.<$> defaultRoute,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("UriPathRoute" Data..=) Prelude.<$> uriPathRoute,
+            Prelude.Just ("RouteType" Data..= routeType),
+            Prelude.Just
+              ("ServiceIdentifier" Data..= serviceIdentifier)
+          ]
+      )
+
+instance Data.ToPath CreateRoute where
+  toPath CreateRoute' {..} =
+    Prelude.mconcat
+      [ "/environments/",
+        Data.toBS environmentIdentifier,
+        "/applications/",
+        Data.toBS applicationIdentifier,
+        "/routes"
+      ]
+
+instance Data.ToQuery CreateRoute where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateRouteResponse' smart constructor.
+data CreateRouteResponse = CreateRouteResponse'
+  { -- | The ID of the application in which the route is created.
+    applicationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the route. The format for this ARN is
+    -- @arn:aws:refactor-spaces:@/@region@/@:@/@account-id@/@:@/@resource-type\/resource-id@/@ @.
+    -- For more information about ARNs, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
+    -- in the /Amazon Web Services General Reference/.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of the route creator.
+    createdByAccountId :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the route is created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | A timestamp that indicates when the route was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Web Services account ID of the route owner.
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The unique identifier of the route.
+    routeId :: Prelude.Maybe Prelude.Text,
+    -- | The route type of the route.
+    routeType :: Prelude.Maybe RouteType,
+    -- | The ID of service in which the route is created. Traffic that matches
+    -- this route is forwarded to this service.
+    serviceId :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the route. Activation state only allows @ACTIVE@ or
+    -- @INACTIVE@ as user inputs. @FAILED@ is a route state that is system
+    -- generated.
+    state :: Prelude.Maybe RouteState,
+    -- | The tags assigned to the created route. A tag is a label that you assign
+    -- to an Amazon Web Services resource. Each tag consists of a key-value
+    -- pair.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | Configuration for the URI path route type.
+    uriPathRoute :: Prelude.Maybe UriPathRouteInput,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateRouteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationId', 'createRouteResponse_applicationId' - The ID of the application in which the route is created.
+--
+-- 'arn', 'createRouteResponse_arn' - The Amazon Resource Name (ARN) of the route. The format for this ARN is
+-- @arn:aws:refactor-spaces:@/@region@/@:@/@account-id@/@:@/@resource-type\/resource-id@/@ @.
+-- For more information about ARNs, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
+-- in the /Amazon Web Services General Reference/.
+--
+-- 'createdByAccountId', 'createRouteResponse_createdByAccountId' - The Amazon Web Services account ID of the route creator.
+--
+-- 'createdTime', 'createRouteResponse_createdTime' - A timestamp that indicates when the route is created.
+--
+-- 'lastUpdatedTime', 'createRouteResponse_lastUpdatedTime' - A timestamp that indicates when the route was last updated.
+--
+-- 'ownerAccountId', 'createRouteResponse_ownerAccountId' - The Amazon Web Services account ID of the route owner.
+--
+-- 'routeId', 'createRouteResponse_routeId' - The unique identifier of the route.
+--
+-- 'routeType', 'createRouteResponse_routeType' - The route type of the route.
+--
+-- 'serviceId', 'createRouteResponse_serviceId' - The ID of service in which the route is created. Traffic that matches
+-- this route is forwarded to this service.
+--
+-- 'state', 'createRouteResponse_state' - The current state of the route. Activation state only allows @ACTIVE@ or
+-- @INACTIVE@ as user inputs. @FAILED@ is a route state that is system
+-- generated.
+--
+-- 'tags', 'createRouteResponse_tags' - The tags assigned to the created route. A tag is a label that you assign
+-- to an Amazon Web Services resource. Each tag consists of a key-value
+-- pair.
+--
+-- 'uriPathRoute', 'createRouteResponse_uriPathRoute' - Configuration for the URI path route type.
+--
+-- 'httpStatus', 'createRouteResponse_httpStatus' - The response's http status code.
+newCreateRouteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateRouteResponse
+newCreateRouteResponse pHttpStatus_ =
+  CreateRouteResponse'
+    { applicationId =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      createdByAccountId = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      routeId = Prelude.Nothing,
+      routeType = Prelude.Nothing,
+      serviceId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      uriPathRoute = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the application in which the route is created.
+createRouteResponse_applicationId :: Lens.Lens' CreateRouteResponse (Prelude.Maybe Prelude.Text)
+createRouteResponse_applicationId = Lens.lens (\CreateRouteResponse' {applicationId} -> applicationId) (\s@CreateRouteResponse' {} a -> s {applicationId = a} :: CreateRouteResponse)
+
+-- | The Amazon Resource Name (ARN) of the route. The format for this ARN is
+-- @arn:aws:refactor-spaces:@/@region@/@:@/@account-id@/@:@/@resource-type\/resource-id@/@ @.
+-- For more information about ARNs, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
+-- in the /Amazon Web Services General Reference/.
+createRouteResponse_arn :: Lens.Lens' CreateRouteResponse (Prelude.Maybe Prelude.Text)
+createRouteResponse_arn = Lens.lens (\CreateRouteResponse' {arn} -> arn) (\s@CreateRouteResponse' {} a -> s {arn = a} :: CreateRouteResponse)
+
+-- | The Amazon Web Services account ID of the route creator.
+createRouteResponse_createdByAccountId :: Lens.Lens' CreateRouteResponse (Prelude.Maybe Prelude.Text)
+createRouteResponse_createdByAccountId = Lens.lens (\CreateRouteResponse' {createdByAccountId} -> createdByAccountId) (\s@CreateRouteResponse' {} a -> s {createdByAccountId = a} :: CreateRouteResponse)
+
+-- | A timestamp that indicates when the route is created.
+createRouteResponse_createdTime :: Lens.Lens' CreateRouteResponse (Prelude.Maybe Prelude.UTCTime)
+createRouteResponse_createdTime = Lens.lens (\CreateRouteResponse' {createdTime} -> createdTime) (\s@CreateRouteResponse' {} a -> s {createdTime = a} :: CreateRouteResponse) Prelude.. Lens.mapping Data._Time
+
+-- | A timestamp that indicates when the route was last updated.
+createRouteResponse_lastUpdatedTime :: Lens.Lens' CreateRouteResponse (Prelude.Maybe Prelude.UTCTime)
+createRouteResponse_lastUpdatedTime = Lens.lens (\CreateRouteResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@CreateRouteResponse' {} a -> s {lastUpdatedTime = a} :: CreateRouteResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Web Services account ID of the route owner.
+createRouteResponse_ownerAccountId :: Lens.Lens' CreateRouteResponse (Prelude.Maybe Prelude.Text)
+createRouteResponse_ownerAccountId = Lens.lens (\CreateRouteResponse' {ownerAccountId} -> ownerAccountId) (\s@CreateRouteResponse' {} a -> s {ownerAccountId = a} :: CreateRouteResponse)
+
+-- | The unique identifier of the route.
+createRouteResponse_routeId :: Lens.Lens' CreateRouteResponse (Prelude.Maybe Prelude.Text)
+createRouteResponse_routeId = Lens.lens (\CreateRouteResponse' {routeId} -> routeId) (\s@CreateRouteResponse' {} a -> s {routeId = a} :: CreateRouteResponse)
+
+-- | The route type of the route.
+createRouteResponse_routeType :: Lens.Lens' CreateRouteResponse (Prelude.Maybe RouteType)
+createRouteResponse_routeType = Lens.lens (\CreateRouteResponse' {routeType} -> routeType) (\s@CreateRouteResponse' {} a -> s {routeType = a} :: CreateRouteResponse)
+
+-- | The ID of service in which the route is created. Traffic that matches
+-- this route is forwarded to this service.
+createRouteResponse_serviceId :: Lens.Lens' CreateRouteResponse (Prelude.Maybe Prelude.Text)
+createRouteResponse_serviceId = Lens.lens (\CreateRouteResponse' {serviceId} -> serviceId) (\s@CreateRouteResponse' {} a -> s {serviceId = a} :: CreateRouteResponse)
+
+-- | The current state of the route. Activation state only allows @ACTIVE@ or
+-- @INACTIVE@ as user inputs. @FAILED@ is a route state that is system
+-- generated.
+createRouteResponse_state :: Lens.Lens' CreateRouteResponse (Prelude.Maybe RouteState)
+createRouteResponse_state = Lens.lens (\CreateRouteResponse' {state} -> state) (\s@CreateRouteResponse' {} a -> s {state = a} :: CreateRouteResponse)
+
+-- | The tags assigned to the created route. A tag is a label that you assign
+-- to an Amazon Web Services resource. Each tag consists of a key-value
+-- pair.
+createRouteResponse_tags :: Lens.Lens' CreateRouteResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createRouteResponse_tags = Lens.lens (\CreateRouteResponse' {tags} -> tags) (\s@CreateRouteResponse' {} a -> s {tags = a} :: CreateRouteResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | Configuration for the URI path route type.
+createRouteResponse_uriPathRoute :: Lens.Lens' CreateRouteResponse (Prelude.Maybe UriPathRouteInput)
+createRouteResponse_uriPathRoute = Lens.lens (\CreateRouteResponse' {uriPathRoute} -> uriPathRoute) (\s@CreateRouteResponse' {} a -> s {uriPathRoute = a} :: CreateRouteResponse)
+
+-- | The response's http status code.
+createRouteResponse_httpStatus :: Lens.Lens' CreateRouteResponse Prelude.Int
+createRouteResponse_httpStatus = Lens.lens (\CreateRouteResponse' {httpStatus} -> httpStatus) (\s@CreateRouteResponse' {} a -> s {httpStatus = a} :: CreateRouteResponse)
+
+instance Prelude.NFData CreateRouteResponse where
+  rnf CreateRouteResponse' {..} =
+    Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdByAccountId
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf routeId
+      `Prelude.seq` Prelude.rnf routeType
+      `Prelude.seq` Prelude.rnf serviceId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf uriPathRoute
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/CreateService.hs b/gen/Amazonka/MigrationHubReFactorSpaces/CreateService.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/CreateService.hs
@@ -0,0 +1,519 @@
+{-# 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.MigrationHubReFactorSpaces.CreateService
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Amazon Web Services Migration Hub Refactor Spaces service.
+-- The account owner of the service is always the environment owner,
+-- regardless of which account in the environment creates the service.
+-- Services have either a URL endpoint in a virtual private cloud (VPC), or
+-- a Lambda function endpoint.
+--
+-- If an Amazon Web Services resource is launched in a service VPC, and you
+-- want it to be accessible to all of an environment’s services with VPCs
+-- and routes, apply the @RefactorSpacesSecurityGroup@ to the resource.
+-- Alternatively, to add more cross-account constraints, apply your own
+-- security group.
+module Amazonka.MigrationHubReFactorSpaces.CreateService
+  ( -- * Creating a Request
+    CreateService (..),
+    newCreateService,
+
+    -- * Request Lenses
+    createService_clientToken,
+    createService_description,
+    createService_lambdaEndpoint,
+    createService_tags,
+    createService_urlEndpoint,
+    createService_vpcId,
+    createService_applicationIdentifier,
+    createService_endpointType,
+    createService_environmentIdentifier,
+    createService_name,
+
+    -- * Destructuring the Response
+    CreateServiceResponse (..),
+    newCreateServiceResponse,
+
+    -- * Response Lenses
+    createServiceResponse_applicationId,
+    createServiceResponse_arn,
+    createServiceResponse_createdByAccountId,
+    createServiceResponse_createdTime,
+    createServiceResponse_description,
+    createServiceResponse_endpointType,
+    createServiceResponse_environmentId,
+    createServiceResponse_lambdaEndpoint,
+    createServiceResponse_lastUpdatedTime,
+    createServiceResponse_name,
+    createServiceResponse_ownerAccountId,
+    createServiceResponse_serviceId,
+    createServiceResponse_state,
+    createServiceResponse_tags,
+    createServiceResponse_urlEndpoint,
+    createServiceResponse_vpcId,
+    createServiceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateService' smart constructor.
+data CreateService = CreateService'
+  { -- | A unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the request.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The description of the service.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The configuration for the Lambda endpoint type.
+    lambdaEndpoint :: Prelude.Maybe LambdaEndpointInput,
+    -- | The tags to assign to the service. A tag is a label that you assign to
+    -- an Amazon Web Services resource. Each tag consists of a key-value pair..
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The configuration for the URL endpoint type. When creating a route to a
+    -- service, Refactor Spaces automatically resolves the address in the
+    -- @UrlEndpointInput@ object URL when the Domain Name System (DNS)
+    -- time-to-live (TTL) expires, or every 60 seconds for TTLs less than 60
+    -- seconds.
+    urlEndpoint :: Prelude.Maybe UrlEndpointInput,
+    -- | The ID of the VPC.
+    vpcId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the application which the service is created.
+    applicationIdentifier :: Prelude.Text,
+    -- | The type of endpoint to use for the service. The type can be a URL in a
+    -- VPC or an Lambda function.
+    endpointType :: ServiceEndpointType,
+    -- | The ID of the environment in which the service is created.
+    environmentIdentifier :: Prelude.Text,
+    -- | The name of the service.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateService' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createService_clientToken' - A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request.
+--
+-- 'description', 'createService_description' - The description of the service.
+--
+-- 'lambdaEndpoint', 'createService_lambdaEndpoint' - The configuration for the Lambda endpoint type.
+--
+-- 'tags', 'createService_tags' - The tags to assign to the service. A tag is a label that you assign to
+-- an Amazon Web Services resource. Each tag consists of a key-value pair..
+--
+-- 'urlEndpoint', 'createService_urlEndpoint' - The configuration for the URL endpoint type. When creating a route to a
+-- service, Refactor Spaces automatically resolves the address in the
+-- @UrlEndpointInput@ object URL when the Domain Name System (DNS)
+-- time-to-live (TTL) expires, or every 60 seconds for TTLs less than 60
+-- seconds.
+--
+-- 'vpcId', 'createService_vpcId' - The ID of the VPC.
+--
+-- 'applicationIdentifier', 'createService_applicationIdentifier' - The ID of the application which the service is created.
+--
+-- 'endpointType', 'createService_endpointType' - The type of endpoint to use for the service. The type can be a URL in a
+-- VPC or an Lambda function.
+--
+-- 'environmentIdentifier', 'createService_environmentIdentifier' - The ID of the environment in which the service is created.
+--
+-- 'name', 'createService_name' - The name of the service.
+newCreateService ::
+  -- | 'applicationIdentifier'
+  Prelude.Text ->
+  -- | 'endpointType'
+  ServiceEndpointType ->
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  CreateService
+newCreateService
+  pApplicationIdentifier_
+  pEndpointType_
+  pEnvironmentIdentifier_
+  pName_ =
+    CreateService'
+      { clientToken = Prelude.Nothing,
+        description = Prelude.Nothing,
+        lambdaEndpoint = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        urlEndpoint = Prelude.Nothing,
+        vpcId = Prelude.Nothing,
+        applicationIdentifier = pApplicationIdentifier_,
+        endpointType = pEndpointType_,
+        environmentIdentifier = pEnvironmentIdentifier_,
+        name = pName_
+      }
+
+-- | A unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request.
+createService_clientToken :: Lens.Lens' CreateService (Prelude.Maybe Prelude.Text)
+createService_clientToken = Lens.lens (\CreateService' {clientToken} -> clientToken) (\s@CreateService' {} a -> s {clientToken = a} :: CreateService)
+
+-- | The description of the service.
+createService_description :: Lens.Lens' CreateService (Prelude.Maybe Prelude.Text)
+createService_description = Lens.lens (\CreateService' {description} -> description) (\s@CreateService' {} a -> s {description = a} :: CreateService)
+
+-- | The configuration for the Lambda endpoint type.
+createService_lambdaEndpoint :: Lens.Lens' CreateService (Prelude.Maybe LambdaEndpointInput)
+createService_lambdaEndpoint = Lens.lens (\CreateService' {lambdaEndpoint} -> lambdaEndpoint) (\s@CreateService' {} a -> s {lambdaEndpoint = a} :: CreateService)
+
+-- | The tags to assign to the service. A tag is a label that you assign to
+-- an Amazon Web Services resource. Each tag consists of a key-value pair..
+createService_tags :: Lens.Lens' CreateService (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createService_tags = Lens.lens (\CreateService' {tags} -> tags) (\s@CreateService' {} a -> s {tags = a} :: CreateService) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The configuration for the URL endpoint type. When creating a route to a
+-- service, Refactor Spaces automatically resolves the address in the
+-- @UrlEndpointInput@ object URL when the Domain Name System (DNS)
+-- time-to-live (TTL) expires, or every 60 seconds for TTLs less than 60
+-- seconds.
+createService_urlEndpoint :: Lens.Lens' CreateService (Prelude.Maybe UrlEndpointInput)
+createService_urlEndpoint = Lens.lens (\CreateService' {urlEndpoint} -> urlEndpoint) (\s@CreateService' {} a -> s {urlEndpoint = a} :: CreateService)
+
+-- | The ID of the VPC.
+createService_vpcId :: Lens.Lens' CreateService (Prelude.Maybe Prelude.Text)
+createService_vpcId = Lens.lens (\CreateService' {vpcId} -> vpcId) (\s@CreateService' {} a -> s {vpcId = a} :: CreateService)
+
+-- | The ID of the application which the service is created.
+createService_applicationIdentifier :: Lens.Lens' CreateService Prelude.Text
+createService_applicationIdentifier = Lens.lens (\CreateService' {applicationIdentifier} -> applicationIdentifier) (\s@CreateService' {} a -> s {applicationIdentifier = a} :: CreateService)
+
+-- | The type of endpoint to use for the service. The type can be a URL in a
+-- VPC or an Lambda function.
+createService_endpointType :: Lens.Lens' CreateService ServiceEndpointType
+createService_endpointType = Lens.lens (\CreateService' {endpointType} -> endpointType) (\s@CreateService' {} a -> s {endpointType = a} :: CreateService)
+
+-- | The ID of the environment in which the service is created.
+createService_environmentIdentifier :: Lens.Lens' CreateService Prelude.Text
+createService_environmentIdentifier = Lens.lens (\CreateService' {environmentIdentifier} -> environmentIdentifier) (\s@CreateService' {} a -> s {environmentIdentifier = a} :: CreateService)
+
+-- | The name of the service.
+createService_name :: Lens.Lens' CreateService Prelude.Text
+createService_name = Lens.lens (\CreateService' {name} -> name) (\s@CreateService' {} a -> s {name = a} :: CreateService)
+
+instance Core.AWSRequest CreateService where
+  type
+    AWSResponse CreateService =
+      CreateServiceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateServiceResponse'
+            Prelude.<$> (x Data..?> "ApplicationId")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreatedByAccountId")
+            Prelude.<*> (x Data..?> "CreatedTime")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "EndpointType")
+            Prelude.<*> (x Data..?> "EnvironmentId")
+            Prelude.<*> (x Data..?> "LambdaEndpoint")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "OwnerAccountId")
+            Prelude.<*> (x Data..?> "ServiceId")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "UrlEndpoint")
+            Prelude.<*> (x Data..?> "VpcId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateService where
+  hashWithSalt _salt CreateService' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` lambdaEndpoint
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` urlEndpoint
+      `Prelude.hashWithSalt` vpcId
+      `Prelude.hashWithSalt` applicationIdentifier
+      `Prelude.hashWithSalt` endpointType
+      `Prelude.hashWithSalt` environmentIdentifier
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreateService where
+  rnf CreateService' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lambdaEndpoint
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf urlEndpoint
+      `Prelude.seq` Prelude.rnf vpcId
+      `Prelude.seq` Prelude.rnf applicationIdentifier
+      `Prelude.seq` Prelude.rnf endpointType
+      `Prelude.seq` Prelude.rnf environmentIdentifier
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreateService where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateService where
+  toJSON CreateService' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("Description" Data..=) Prelude.<$> description,
+            ("LambdaEndpoint" Data..=)
+              Prelude.<$> lambdaEndpoint,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("UrlEndpoint" Data..=) Prelude.<$> urlEndpoint,
+            ("VpcId" Data..=) Prelude.<$> vpcId,
+            Prelude.Just ("EndpointType" Data..= endpointType),
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreateService where
+  toPath CreateService' {..} =
+    Prelude.mconcat
+      [ "/environments/",
+        Data.toBS environmentIdentifier,
+        "/applications/",
+        Data.toBS applicationIdentifier,
+        "/services"
+      ]
+
+instance Data.ToQuery CreateService where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateServiceResponse' smart constructor.
+data CreateServiceResponse = CreateServiceResponse'
+  { -- | The ID of the application that the created service belongs to.
+    applicationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the service.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of the service creator.
+    createdByAccountId :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the service is created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the created service.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The endpoint type of the service.
+    endpointType :: Prelude.Maybe ServiceEndpointType,
+    -- | The unique identifier of the environment.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | The configuration for the Lambda endpoint type.
+    lambdaEndpoint :: Prelude.Maybe LambdaEndpointInput,
+    -- | A timestamp that indicates when the service was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the service.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of the service owner.
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The unique identifier of the service.
+    serviceId :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the service.
+    state :: Prelude.Maybe ServiceState,
+    -- | The tags assigned to the created service. A tag is a label that you
+    -- assign to an Amazon Web Services resource. Each tag consists of a
+    -- key-value pair..
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The configuration for the URL endpoint type.
+    urlEndpoint :: Prelude.Maybe UrlEndpointInput,
+    -- | The ID of the VPC.
+    vpcId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateServiceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationId', 'createServiceResponse_applicationId' - The ID of the application that the created service belongs to.
+--
+-- 'arn', 'createServiceResponse_arn' - The Amazon Resource Name (ARN) of the service.
+--
+-- 'createdByAccountId', 'createServiceResponse_createdByAccountId' - The Amazon Web Services account ID of the service creator.
+--
+-- 'createdTime', 'createServiceResponse_createdTime' - A timestamp that indicates when the service is created.
+--
+-- 'description', 'createServiceResponse_description' - The description of the created service.
+--
+-- 'endpointType', 'createServiceResponse_endpointType' - The endpoint type of the service.
+--
+-- 'environmentId', 'createServiceResponse_environmentId' - The unique identifier of the environment.
+--
+-- 'lambdaEndpoint', 'createServiceResponse_lambdaEndpoint' - The configuration for the Lambda endpoint type.
+--
+-- 'lastUpdatedTime', 'createServiceResponse_lastUpdatedTime' - A timestamp that indicates when the service was last updated.
+--
+-- 'name', 'createServiceResponse_name' - The name of the service.
+--
+-- 'ownerAccountId', 'createServiceResponse_ownerAccountId' - The Amazon Web Services account ID of the service owner.
+--
+-- 'serviceId', 'createServiceResponse_serviceId' - The unique identifier of the service.
+--
+-- 'state', 'createServiceResponse_state' - The current state of the service.
+--
+-- 'tags', 'createServiceResponse_tags' - The tags assigned to the created service. A tag is a label that you
+-- assign to an Amazon Web Services resource. Each tag consists of a
+-- key-value pair..
+--
+-- 'urlEndpoint', 'createServiceResponse_urlEndpoint' - The configuration for the URL endpoint type.
+--
+-- 'vpcId', 'createServiceResponse_vpcId' - The ID of the VPC.
+--
+-- 'httpStatus', 'createServiceResponse_httpStatus' - The response's http status code.
+newCreateServiceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateServiceResponse
+newCreateServiceResponse pHttpStatus_ =
+  CreateServiceResponse'
+    { applicationId =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      createdByAccountId = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      endpointType = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      lambdaEndpoint = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      serviceId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      urlEndpoint = Prelude.Nothing,
+      vpcId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the application that the created service belongs to.
+createServiceResponse_applicationId :: Lens.Lens' CreateServiceResponse (Prelude.Maybe Prelude.Text)
+createServiceResponse_applicationId = Lens.lens (\CreateServiceResponse' {applicationId} -> applicationId) (\s@CreateServiceResponse' {} a -> s {applicationId = a} :: CreateServiceResponse)
+
+-- | The Amazon Resource Name (ARN) of the service.
+createServiceResponse_arn :: Lens.Lens' CreateServiceResponse (Prelude.Maybe Prelude.Text)
+createServiceResponse_arn = Lens.lens (\CreateServiceResponse' {arn} -> arn) (\s@CreateServiceResponse' {} a -> s {arn = a} :: CreateServiceResponse)
+
+-- | The Amazon Web Services account ID of the service creator.
+createServiceResponse_createdByAccountId :: Lens.Lens' CreateServiceResponse (Prelude.Maybe Prelude.Text)
+createServiceResponse_createdByAccountId = Lens.lens (\CreateServiceResponse' {createdByAccountId} -> createdByAccountId) (\s@CreateServiceResponse' {} a -> s {createdByAccountId = a} :: CreateServiceResponse)
+
+-- | A timestamp that indicates when the service is created.
+createServiceResponse_createdTime :: Lens.Lens' CreateServiceResponse (Prelude.Maybe Prelude.UTCTime)
+createServiceResponse_createdTime = Lens.lens (\CreateServiceResponse' {createdTime} -> createdTime) (\s@CreateServiceResponse' {} a -> s {createdTime = a} :: CreateServiceResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the created service.
+createServiceResponse_description :: Lens.Lens' CreateServiceResponse (Prelude.Maybe Prelude.Text)
+createServiceResponse_description = Lens.lens (\CreateServiceResponse' {description} -> description) (\s@CreateServiceResponse' {} a -> s {description = a} :: CreateServiceResponse)
+
+-- | The endpoint type of the service.
+createServiceResponse_endpointType :: Lens.Lens' CreateServiceResponse (Prelude.Maybe ServiceEndpointType)
+createServiceResponse_endpointType = Lens.lens (\CreateServiceResponse' {endpointType} -> endpointType) (\s@CreateServiceResponse' {} a -> s {endpointType = a} :: CreateServiceResponse)
+
+-- | The unique identifier of the environment.
+createServiceResponse_environmentId :: Lens.Lens' CreateServiceResponse (Prelude.Maybe Prelude.Text)
+createServiceResponse_environmentId = Lens.lens (\CreateServiceResponse' {environmentId} -> environmentId) (\s@CreateServiceResponse' {} a -> s {environmentId = a} :: CreateServiceResponse)
+
+-- | The configuration for the Lambda endpoint type.
+createServiceResponse_lambdaEndpoint :: Lens.Lens' CreateServiceResponse (Prelude.Maybe LambdaEndpointInput)
+createServiceResponse_lambdaEndpoint = Lens.lens (\CreateServiceResponse' {lambdaEndpoint} -> lambdaEndpoint) (\s@CreateServiceResponse' {} a -> s {lambdaEndpoint = a} :: CreateServiceResponse)
+
+-- | A timestamp that indicates when the service was last updated.
+createServiceResponse_lastUpdatedTime :: Lens.Lens' CreateServiceResponse (Prelude.Maybe Prelude.UTCTime)
+createServiceResponse_lastUpdatedTime = Lens.lens (\CreateServiceResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@CreateServiceResponse' {} a -> s {lastUpdatedTime = a} :: CreateServiceResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the service.
+createServiceResponse_name :: Lens.Lens' CreateServiceResponse (Prelude.Maybe Prelude.Text)
+createServiceResponse_name = Lens.lens (\CreateServiceResponse' {name} -> name) (\s@CreateServiceResponse' {} a -> s {name = a} :: CreateServiceResponse)
+
+-- | The Amazon Web Services account ID of the service owner.
+createServiceResponse_ownerAccountId :: Lens.Lens' CreateServiceResponse (Prelude.Maybe Prelude.Text)
+createServiceResponse_ownerAccountId = Lens.lens (\CreateServiceResponse' {ownerAccountId} -> ownerAccountId) (\s@CreateServiceResponse' {} a -> s {ownerAccountId = a} :: CreateServiceResponse)
+
+-- | The unique identifier of the service.
+createServiceResponse_serviceId :: Lens.Lens' CreateServiceResponse (Prelude.Maybe Prelude.Text)
+createServiceResponse_serviceId = Lens.lens (\CreateServiceResponse' {serviceId} -> serviceId) (\s@CreateServiceResponse' {} a -> s {serviceId = a} :: CreateServiceResponse)
+
+-- | The current state of the service.
+createServiceResponse_state :: Lens.Lens' CreateServiceResponse (Prelude.Maybe ServiceState)
+createServiceResponse_state = Lens.lens (\CreateServiceResponse' {state} -> state) (\s@CreateServiceResponse' {} a -> s {state = a} :: CreateServiceResponse)
+
+-- | The tags assigned to the created service. A tag is a label that you
+-- assign to an Amazon Web Services resource. Each tag consists of a
+-- key-value pair..
+createServiceResponse_tags :: Lens.Lens' CreateServiceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createServiceResponse_tags = Lens.lens (\CreateServiceResponse' {tags} -> tags) (\s@CreateServiceResponse' {} a -> s {tags = a} :: CreateServiceResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The configuration for the URL endpoint type.
+createServiceResponse_urlEndpoint :: Lens.Lens' CreateServiceResponse (Prelude.Maybe UrlEndpointInput)
+createServiceResponse_urlEndpoint = Lens.lens (\CreateServiceResponse' {urlEndpoint} -> urlEndpoint) (\s@CreateServiceResponse' {} a -> s {urlEndpoint = a} :: CreateServiceResponse)
+
+-- | The ID of the VPC.
+createServiceResponse_vpcId :: Lens.Lens' CreateServiceResponse (Prelude.Maybe Prelude.Text)
+createServiceResponse_vpcId = Lens.lens (\CreateServiceResponse' {vpcId} -> vpcId) (\s@CreateServiceResponse' {} a -> s {vpcId = a} :: CreateServiceResponse)
+
+-- | The response's http status code.
+createServiceResponse_httpStatus :: Lens.Lens' CreateServiceResponse Prelude.Int
+createServiceResponse_httpStatus = Lens.lens (\CreateServiceResponse' {httpStatus} -> httpStatus) (\s@CreateServiceResponse' {} a -> s {httpStatus = a} :: CreateServiceResponse)
+
+instance Prelude.NFData CreateServiceResponse where
+  rnf CreateServiceResponse' {..} =
+    Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdByAccountId
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf endpointType
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf lambdaEndpoint
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf serviceId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf urlEndpoint
+      `Prelude.seq` Prelude.rnf vpcId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/DeleteApplication.hs b/gen/Amazonka/MigrationHubReFactorSpaces/DeleteApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/DeleteApplication.hs
@@ -0,0 +1,246 @@
+{-# 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.MigrationHubReFactorSpaces.DeleteApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an Amazon Web Services Migration Hub Refactor Spaces
+-- application. Before you can delete an application, you must first delete
+-- any services or routes within the application.
+module Amazonka.MigrationHubReFactorSpaces.DeleteApplication
+  ( -- * Creating a Request
+    DeleteApplication (..),
+    newDeleteApplication,
+
+    -- * Request Lenses
+    deleteApplication_applicationIdentifier,
+    deleteApplication_environmentIdentifier,
+
+    -- * Destructuring the Response
+    DeleteApplicationResponse (..),
+    newDeleteApplicationResponse,
+
+    -- * Response Lenses
+    deleteApplicationResponse_applicationId,
+    deleteApplicationResponse_arn,
+    deleteApplicationResponse_environmentId,
+    deleteApplicationResponse_lastUpdatedTime,
+    deleteApplicationResponse_name,
+    deleteApplicationResponse_state,
+    deleteApplicationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteApplication' smart constructor.
+data DeleteApplication = DeleteApplication'
+  { -- | The ID of the application.
+    applicationIdentifier :: Prelude.Text,
+    -- | The ID of the environment.
+    environmentIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationIdentifier', 'deleteApplication_applicationIdentifier' - The ID of the application.
+--
+-- 'environmentIdentifier', 'deleteApplication_environmentIdentifier' - The ID of the environment.
+newDeleteApplication ::
+  -- | 'applicationIdentifier'
+  Prelude.Text ->
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  DeleteApplication
+newDeleteApplication
+  pApplicationIdentifier_
+  pEnvironmentIdentifier_ =
+    DeleteApplication'
+      { applicationIdentifier =
+          pApplicationIdentifier_,
+        environmentIdentifier = pEnvironmentIdentifier_
+      }
+
+-- | The ID of the application.
+deleteApplication_applicationIdentifier :: Lens.Lens' DeleteApplication Prelude.Text
+deleteApplication_applicationIdentifier = Lens.lens (\DeleteApplication' {applicationIdentifier} -> applicationIdentifier) (\s@DeleteApplication' {} a -> s {applicationIdentifier = a} :: DeleteApplication)
+
+-- | The ID of the environment.
+deleteApplication_environmentIdentifier :: Lens.Lens' DeleteApplication Prelude.Text
+deleteApplication_environmentIdentifier = Lens.lens (\DeleteApplication' {environmentIdentifier} -> environmentIdentifier) (\s@DeleteApplication' {} a -> s {environmentIdentifier = a} :: DeleteApplication)
+
+instance Core.AWSRequest DeleteApplication where
+  type
+    AWSResponse DeleteApplication =
+      DeleteApplicationResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteApplicationResponse'
+            Prelude.<$> (x Data..?> "ApplicationId")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "EnvironmentId")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteApplication where
+  hashWithSalt _salt DeleteApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationIdentifier
+      `Prelude.hashWithSalt` environmentIdentifier
+
+instance Prelude.NFData DeleteApplication where
+  rnf DeleteApplication' {..} =
+    Prelude.rnf applicationIdentifier
+      `Prelude.seq` Prelude.rnf environmentIdentifier
+
+instance Data.ToHeaders DeleteApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteApplication where
+  toPath DeleteApplication' {..} =
+    Prelude.mconcat
+      [ "/environments/",
+        Data.toBS environmentIdentifier,
+        "/applications/",
+        Data.toBS applicationIdentifier
+      ]
+
+instance Data.ToQuery DeleteApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteApplicationResponse' smart constructor.
+data DeleteApplicationResponse = DeleteApplicationResponse'
+  { -- | The ID of the application.
+    applicationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the application.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The unique identifier of the application’s environment.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the environment was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the application.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the application.
+    state :: Prelude.Maybe ApplicationState,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationId', 'deleteApplicationResponse_applicationId' - The ID of the application.
+--
+-- 'arn', 'deleteApplicationResponse_arn' - The Amazon Resource Name (ARN) of the application.
+--
+-- 'environmentId', 'deleteApplicationResponse_environmentId' - The unique identifier of the application’s environment.
+--
+-- 'lastUpdatedTime', 'deleteApplicationResponse_lastUpdatedTime' - A timestamp that indicates when the environment was last updated.
+--
+-- 'name', 'deleteApplicationResponse_name' - The name of the application.
+--
+-- 'state', 'deleteApplicationResponse_state' - The current state of the application.
+--
+-- 'httpStatus', 'deleteApplicationResponse_httpStatus' - The response's http status code.
+newDeleteApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteApplicationResponse
+newDeleteApplicationResponse pHttpStatus_ =
+  DeleteApplicationResponse'
+    { applicationId =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      state = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the application.
+deleteApplicationResponse_applicationId :: Lens.Lens' DeleteApplicationResponse (Prelude.Maybe Prelude.Text)
+deleteApplicationResponse_applicationId = Lens.lens (\DeleteApplicationResponse' {applicationId} -> applicationId) (\s@DeleteApplicationResponse' {} a -> s {applicationId = a} :: DeleteApplicationResponse)
+
+-- | The Amazon Resource Name (ARN) of the application.
+deleteApplicationResponse_arn :: Lens.Lens' DeleteApplicationResponse (Prelude.Maybe Prelude.Text)
+deleteApplicationResponse_arn = Lens.lens (\DeleteApplicationResponse' {arn} -> arn) (\s@DeleteApplicationResponse' {} a -> s {arn = a} :: DeleteApplicationResponse)
+
+-- | The unique identifier of the application’s environment.
+deleteApplicationResponse_environmentId :: Lens.Lens' DeleteApplicationResponse (Prelude.Maybe Prelude.Text)
+deleteApplicationResponse_environmentId = Lens.lens (\DeleteApplicationResponse' {environmentId} -> environmentId) (\s@DeleteApplicationResponse' {} a -> s {environmentId = a} :: DeleteApplicationResponse)
+
+-- | A timestamp that indicates when the environment was last updated.
+deleteApplicationResponse_lastUpdatedTime :: Lens.Lens' DeleteApplicationResponse (Prelude.Maybe Prelude.UTCTime)
+deleteApplicationResponse_lastUpdatedTime = Lens.lens (\DeleteApplicationResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@DeleteApplicationResponse' {} a -> s {lastUpdatedTime = a} :: DeleteApplicationResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the application.
+deleteApplicationResponse_name :: Lens.Lens' DeleteApplicationResponse (Prelude.Maybe Prelude.Text)
+deleteApplicationResponse_name = Lens.lens (\DeleteApplicationResponse' {name} -> name) (\s@DeleteApplicationResponse' {} a -> s {name = a} :: DeleteApplicationResponse)
+
+-- | The current state of the application.
+deleteApplicationResponse_state :: Lens.Lens' DeleteApplicationResponse (Prelude.Maybe ApplicationState)
+deleteApplicationResponse_state = Lens.lens (\DeleteApplicationResponse' {state} -> state) (\s@DeleteApplicationResponse' {} a -> s {state = a} :: DeleteApplicationResponse)
+
+-- | The response's http status code.
+deleteApplicationResponse_httpStatus :: Lens.Lens' DeleteApplicationResponse Prelude.Int
+deleteApplicationResponse_httpStatus = Lens.lens (\DeleteApplicationResponse' {httpStatus} -> httpStatus) (\s@DeleteApplicationResponse' {} a -> s {httpStatus = a} :: DeleteApplicationResponse)
+
+instance Prelude.NFData DeleteApplicationResponse where
+  rnf DeleteApplicationResponse' {..} =
+    Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/DeleteEnvironment.hs b/gen/Amazonka/MigrationHubReFactorSpaces/DeleteEnvironment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/DeleteEnvironment.hs
@@ -0,0 +1,212 @@
+{-# 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.MigrationHubReFactorSpaces.DeleteEnvironment
+-- 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 an Amazon Web Services Migration Hub Refactor Spaces
+-- environment. Before you can delete an environment, you must first delete
+-- any applications and services within the environment.
+module Amazonka.MigrationHubReFactorSpaces.DeleteEnvironment
+  ( -- * Creating a Request
+    DeleteEnvironment (..),
+    newDeleteEnvironment,
+
+    -- * Request Lenses
+    deleteEnvironment_environmentIdentifier,
+
+    -- * Destructuring the Response
+    DeleteEnvironmentResponse (..),
+    newDeleteEnvironmentResponse,
+
+    -- * Response Lenses
+    deleteEnvironmentResponse_arn,
+    deleteEnvironmentResponse_environmentId,
+    deleteEnvironmentResponse_lastUpdatedTime,
+    deleteEnvironmentResponse_name,
+    deleteEnvironmentResponse_state,
+    deleteEnvironmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteEnvironment' smart constructor.
+data DeleteEnvironment = DeleteEnvironment'
+  { -- | The ID of the environment.
+    environmentIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEnvironment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'environmentIdentifier', 'deleteEnvironment_environmentIdentifier' - The ID of the environment.
+newDeleteEnvironment ::
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  DeleteEnvironment
+newDeleteEnvironment pEnvironmentIdentifier_ =
+  DeleteEnvironment'
+    { environmentIdentifier =
+        pEnvironmentIdentifier_
+    }
+
+-- | The ID of the environment.
+deleteEnvironment_environmentIdentifier :: Lens.Lens' DeleteEnvironment Prelude.Text
+deleteEnvironment_environmentIdentifier = Lens.lens (\DeleteEnvironment' {environmentIdentifier} -> environmentIdentifier) (\s@DeleteEnvironment' {} a -> s {environmentIdentifier = a} :: DeleteEnvironment)
+
+instance Core.AWSRequest DeleteEnvironment where
+  type
+    AWSResponse DeleteEnvironment =
+      DeleteEnvironmentResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteEnvironmentResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "EnvironmentId")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteEnvironment where
+  hashWithSalt _salt DeleteEnvironment' {..} =
+    _salt `Prelude.hashWithSalt` environmentIdentifier
+
+instance Prelude.NFData DeleteEnvironment where
+  rnf DeleteEnvironment' {..} =
+    Prelude.rnf environmentIdentifier
+
+instance Data.ToHeaders DeleteEnvironment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteEnvironment where
+  toPath DeleteEnvironment' {..} =
+    Prelude.mconcat
+      ["/environments/", Data.toBS environmentIdentifier]
+
+instance Data.ToQuery DeleteEnvironment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteEnvironmentResponse' smart constructor.
+data DeleteEnvironmentResponse = DeleteEnvironmentResponse'
+  { -- | The Amazon Resource Name (ARN) of the environment.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The unique identifier of the environment.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the environment was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the environment.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the environment.
+    state :: Prelude.Maybe EnvironmentState,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEnvironmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteEnvironmentResponse_arn' - The Amazon Resource Name (ARN) of the environment.
+--
+-- 'environmentId', 'deleteEnvironmentResponse_environmentId' - The unique identifier of the environment.
+--
+-- 'lastUpdatedTime', 'deleteEnvironmentResponse_lastUpdatedTime' - A timestamp that indicates when the environment was last updated.
+--
+-- 'name', 'deleteEnvironmentResponse_name' - The name of the environment.
+--
+-- 'state', 'deleteEnvironmentResponse_state' - The current state of the environment.
+--
+-- 'httpStatus', 'deleteEnvironmentResponse_httpStatus' - The response's http status code.
+newDeleteEnvironmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteEnvironmentResponse
+newDeleteEnvironmentResponse pHttpStatus_ =
+  DeleteEnvironmentResponse'
+    { arn = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      state = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the environment.
+deleteEnvironmentResponse_arn :: Lens.Lens' DeleteEnvironmentResponse (Prelude.Maybe Prelude.Text)
+deleteEnvironmentResponse_arn = Lens.lens (\DeleteEnvironmentResponse' {arn} -> arn) (\s@DeleteEnvironmentResponse' {} a -> s {arn = a} :: DeleteEnvironmentResponse)
+
+-- | The unique identifier of the environment.
+deleteEnvironmentResponse_environmentId :: Lens.Lens' DeleteEnvironmentResponse (Prelude.Maybe Prelude.Text)
+deleteEnvironmentResponse_environmentId = Lens.lens (\DeleteEnvironmentResponse' {environmentId} -> environmentId) (\s@DeleteEnvironmentResponse' {} a -> s {environmentId = a} :: DeleteEnvironmentResponse)
+
+-- | A timestamp that indicates when the environment was last updated.
+deleteEnvironmentResponse_lastUpdatedTime :: Lens.Lens' DeleteEnvironmentResponse (Prelude.Maybe Prelude.UTCTime)
+deleteEnvironmentResponse_lastUpdatedTime = Lens.lens (\DeleteEnvironmentResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@DeleteEnvironmentResponse' {} a -> s {lastUpdatedTime = a} :: DeleteEnvironmentResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the environment.
+deleteEnvironmentResponse_name :: Lens.Lens' DeleteEnvironmentResponse (Prelude.Maybe Prelude.Text)
+deleteEnvironmentResponse_name = Lens.lens (\DeleteEnvironmentResponse' {name} -> name) (\s@DeleteEnvironmentResponse' {} a -> s {name = a} :: DeleteEnvironmentResponse)
+
+-- | The current state of the environment.
+deleteEnvironmentResponse_state :: Lens.Lens' DeleteEnvironmentResponse (Prelude.Maybe EnvironmentState)
+deleteEnvironmentResponse_state = Lens.lens (\DeleteEnvironmentResponse' {state} -> state) (\s@DeleteEnvironmentResponse' {} a -> s {state = a} :: DeleteEnvironmentResponse)
+
+-- | The response's http status code.
+deleteEnvironmentResponse_httpStatus :: Lens.Lens' DeleteEnvironmentResponse Prelude.Int
+deleteEnvironmentResponse_httpStatus = Lens.lens (\DeleteEnvironmentResponse' {httpStatus} -> httpStatus) (\s@DeleteEnvironmentResponse' {} a -> s {httpStatus = a} :: DeleteEnvironmentResponse)
+
+instance Prelude.NFData DeleteEnvironmentResponse where
+  rnf DeleteEnvironmentResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/DeleteResourcePolicy.hs b/gen/Amazonka/MigrationHubReFactorSpaces/DeleteResourcePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/DeleteResourcePolicy.hs
@@ -0,0 +1,148 @@
+{-# 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.MigrationHubReFactorSpaces.DeleteResourcePolicy
+-- 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 resource policy set for the environment.
+module Amazonka.MigrationHubReFactorSpaces.DeleteResourcePolicy
+  ( -- * Creating a Request
+    DeleteResourcePolicy (..),
+    newDeleteResourcePolicy,
+
+    -- * Request Lenses
+    deleteResourcePolicy_identifier,
+
+    -- * Destructuring the Response
+    DeleteResourcePolicyResponse (..),
+    newDeleteResourcePolicyResponse,
+
+    -- * Response Lenses
+    deleteResourcePolicyResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteResourcePolicy' smart constructor.
+data DeleteResourcePolicy = DeleteResourcePolicy'
+  { -- | Amazon Resource Name (ARN) of the resource associated with the policy.
+    identifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteResourcePolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identifier', 'deleteResourcePolicy_identifier' - Amazon Resource Name (ARN) of the resource associated with the policy.
+newDeleteResourcePolicy ::
+  -- | 'identifier'
+  Prelude.Text ->
+  DeleteResourcePolicy
+newDeleteResourcePolicy pIdentifier_ =
+  DeleteResourcePolicy' {identifier = pIdentifier_}
+
+-- | Amazon Resource Name (ARN) of the resource associated with the policy.
+deleteResourcePolicy_identifier :: Lens.Lens' DeleteResourcePolicy Prelude.Text
+deleteResourcePolicy_identifier = Lens.lens (\DeleteResourcePolicy' {identifier} -> identifier) (\s@DeleteResourcePolicy' {} a -> s {identifier = a} :: DeleteResourcePolicy)
+
+instance Core.AWSRequest DeleteResourcePolicy where
+  type
+    AWSResponse DeleteResourcePolicy =
+      DeleteResourcePolicyResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteResourcePolicyResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteResourcePolicy where
+  hashWithSalt _salt DeleteResourcePolicy' {..} =
+    _salt `Prelude.hashWithSalt` identifier
+
+instance Prelude.NFData DeleteResourcePolicy where
+  rnf DeleteResourcePolicy' {..} =
+    Prelude.rnf identifier
+
+instance Data.ToHeaders DeleteResourcePolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteResourcePolicy where
+  toPath DeleteResourcePolicy' {..} =
+    Prelude.mconcat
+      ["/resourcepolicy/", Data.toBS identifier]
+
+instance Data.ToQuery DeleteResourcePolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteResourcePolicyResponse' smart constructor.
+data DeleteResourcePolicyResponse = DeleteResourcePolicyResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteResourcePolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteResourcePolicyResponse_httpStatus' - The response's http status code.
+newDeleteResourcePolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteResourcePolicyResponse
+newDeleteResourcePolicyResponse pHttpStatus_ =
+  DeleteResourcePolicyResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteResourcePolicyResponse_httpStatus :: Lens.Lens' DeleteResourcePolicyResponse Prelude.Int
+deleteResourcePolicyResponse_httpStatus = Lens.lens (\DeleteResourcePolicyResponse' {httpStatus} -> httpStatus) (\s@DeleteResourcePolicyResponse' {} a -> s {httpStatus = a} :: DeleteResourcePolicyResponse)
+
+instance Prelude.NFData DeleteResourcePolicyResponse where
+  rnf DeleteResourcePolicyResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/DeleteRoute.hs b/gen/Amazonka/MigrationHubReFactorSpaces/DeleteRoute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/DeleteRoute.hs
@@ -0,0 +1,259 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.DeleteRoute
+-- 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 an Amazon Web Services Migration Hub Refactor Spaces route.
+module Amazonka.MigrationHubReFactorSpaces.DeleteRoute
+  ( -- * Creating a Request
+    DeleteRoute (..),
+    newDeleteRoute,
+
+    -- * Request Lenses
+    deleteRoute_applicationIdentifier,
+    deleteRoute_environmentIdentifier,
+    deleteRoute_routeIdentifier,
+
+    -- * Destructuring the Response
+    DeleteRouteResponse (..),
+    newDeleteRouteResponse,
+
+    -- * Response Lenses
+    deleteRouteResponse_applicationId,
+    deleteRouteResponse_arn,
+    deleteRouteResponse_lastUpdatedTime,
+    deleteRouteResponse_routeId,
+    deleteRouteResponse_serviceId,
+    deleteRouteResponse_state,
+    deleteRouteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteRoute' smart constructor.
+data DeleteRoute = DeleteRoute'
+  { -- | The ID of the application to delete the route from.
+    applicationIdentifier :: Prelude.Text,
+    -- | The ID of the environment to delete the route from.
+    environmentIdentifier :: Prelude.Text,
+    -- | The ID of the route to delete.
+    routeIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteRoute' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationIdentifier', 'deleteRoute_applicationIdentifier' - The ID of the application to delete the route from.
+--
+-- 'environmentIdentifier', 'deleteRoute_environmentIdentifier' - The ID of the environment to delete the route from.
+--
+-- 'routeIdentifier', 'deleteRoute_routeIdentifier' - The ID of the route to delete.
+newDeleteRoute ::
+  -- | 'applicationIdentifier'
+  Prelude.Text ->
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  -- | 'routeIdentifier'
+  Prelude.Text ->
+  DeleteRoute
+newDeleteRoute
+  pApplicationIdentifier_
+  pEnvironmentIdentifier_
+  pRouteIdentifier_ =
+    DeleteRoute'
+      { applicationIdentifier =
+          pApplicationIdentifier_,
+        environmentIdentifier = pEnvironmentIdentifier_,
+        routeIdentifier = pRouteIdentifier_
+      }
+
+-- | The ID of the application to delete the route from.
+deleteRoute_applicationIdentifier :: Lens.Lens' DeleteRoute Prelude.Text
+deleteRoute_applicationIdentifier = Lens.lens (\DeleteRoute' {applicationIdentifier} -> applicationIdentifier) (\s@DeleteRoute' {} a -> s {applicationIdentifier = a} :: DeleteRoute)
+
+-- | The ID of the environment to delete the route from.
+deleteRoute_environmentIdentifier :: Lens.Lens' DeleteRoute Prelude.Text
+deleteRoute_environmentIdentifier = Lens.lens (\DeleteRoute' {environmentIdentifier} -> environmentIdentifier) (\s@DeleteRoute' {} a -> s {environmentIdentifier = a} :: DeleteRoute)
+
+-- | The ID of the route to delete.
+deleteRoute_routeIdentifier :: Lens.Lens' DeleteRoute Prelude.Text
+deleteRoute_routeIdentifier = Lens.lens (\DeleteRoute' {routeIdentifier} -> routeIdentifier) (\s@DeleteRoute' {} a -> s {routeIdentifier = a} :: DeleteRoute)
+
+instance Core.AWSRequest DeleteRoute where
+  type AWSResponse DeleteRoute = DeleteRouteResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteRouteResponse'
+            Prelude.<$> (x Data..?> "ApplicationId")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (x Data..?> "RouteId")
+            Prelude.<*> (x Data..?> "ServiceId")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteRoute where
+  hashWithSalt _salt DeleteRoute' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationIdentifier
+      `Prelude.hashWithSalt` environmentIdentifier
+      `Prelude.hashWithSalt` routeIdentifier
+
+instance Prelude.NFData DeleteRoute where
+  rnf DeleteRoute' {..} =
+    Prelude.rnf applicationIdentifier
+      `Prelude.seq` Prelude.rnf environmentIdentifier
+      `Prelude.seq` Prelude.rnf routeIdentifier
+
+instance Data.ToHeaders DeleteRoute where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteRoute where
+  toPath DeleteRoute' {..} =
+    Prelude.mconcat
+      [ "/environments/",
+        Data.toBS environmentIdentifier,
+        "/applications/",
+        Data.toBS applicationIdentifier,
+        "/routes/",
+        Data.toBS routeIdentifier
+      ]
+
+instance Data.ToQuery DeleteRoute where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteRouteResponse' smart constructor.
+data DeleteRouteResponse = DeleteRouteResponse'
+  { -- | The ID of the application that the route belongs to.
+    applicationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the route.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the route was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the route to delete.
+    routeId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the service that the route belongs to.
+    serviceId :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the route.
+    state :: Prelude.Maybe RouteState,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteRouteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationId', 'deleteRouteResponse_applicationId' - The ID of the application that the route belongs to.
+--
+-- 'arn', 'deleteRouteResponse_arn' - The Amazon Resource Name (ARN) of the route.
+--
+-- 'lastUpdatedTime', 'deleteRouteResponse_lastUpdatedTime' - A timestamp that indicates when the route was last updated.
+--
+-- 'routeId', 'deleteRouteResponse_routeId' - The ID of the route to delete.
+--
+-- 'serviceId', 'deleteRouteResponse_serviceId' - The ID of the service that the route belongs to.
+--
+-- 'state', 'deleteRouteResponse_state' - The current state of the route.
+--
+-- 'httpStatus', 'deleteRouteResponse_httpStatus' - The response's http status code.
+newDeleteRouteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteRouteResponse
+newDeleteRouteResponse pHttpStatus_ =
+  DeleteRouteResponse'
+    { applicationId =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      routeId = Prelude.Nothing,
+      serviceId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the application that the route belongs to.
+deleteRouteResponse_applicationId :: Lens.Lens' DeleteRouteResponse (Prelude.Maybe Prelude.Text)
+deleteRouteResponse_applicationId = Lens.lens (\DeleteRouteResponse' {applicationId} -> applicationId) (\s@DeleteRouteResponse' {} a -> s {applicationId = a} :: DeleteRouteResponse)
+
+-- | The Amazon Resource Name (ARN) of the route.
+deleteRouteResponse_arn :: Lens.Lens' DeleteRouteResponse (Prelude.Maybe Prelude.Text)
+deleteRouteResponse_arn = Lens.lens (\DeleteRouteResponse' {arn} -> arn) (\s@DeleteRouteResponse' {} a -> s {arn = a} :: DeleteRouteResponse)
+
+-- | A timestamp that indicates when the route was last updated.
+deleteRouteResponse_lastUpdatedTime :: Lens.Lens' DeleteRouteResponse (Prelude.Maybe Prelude.UTCTime)
+deleteRouteResponse_lastUpdatedTime = Lens.lens (\DeleteRouteResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@DeleteRouteResponse' {} a -> s {lastUpdatedTime = a} :: DeleteRouteResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the route to delete.
+deleteRouteResponse_routeId :: Lens.Lens' DeleteRouteResponse (Prelude.Maybe Prelude.Text)
+deleteRouteResponse_routeId = Lens.lens (\DeleteRouteResponse' {routeId} -> routeId) (\s@DeleteRouteResponse' {} a -> s {routeId = a} :: DeleteRouteResponse)
+
+-- | The ID of the service that the route belongs to.
+deleteRouteResponse_serviceId :: Lens.Lens' DeleteRouteResponse (Prelude.Maybe Prelude.Text)
+deleteRouteResponse_serviceId = Lens.lens (\DeleteRouteResponse' {serviceId} -> serviceId) (\s@DeleteRouteResponse' {} a -> s {serviceId = a} :: DeleteRouteResponse)
+
+-- | The current state of the route.
+deleteRouteResponse_state :: Lens.Lens' DeleteRouteResponse (Prelude.Maybe RouteState)
+deleteRouteResponse_state = Lens.lens (\DeleteRouteResponse' {state} -> state) (\s@DeleteRouteResponse' {} a -> s {state = a} :: DeleteRouteResponse)
+
+-- | The response's http status code.
+deleteRouteResponse_httpStatus :: Lens.Lens' DeleteRouteResponse Prelude.Int
+deleteRouteResponse_httpStatus = Lens.lens (\DeleteRouteResponse' {httpStatus} -> httpStatus) (\s@DeleteRouteResponse' {} a -> s {httpStatus = a} :: DeleteRouteResponse)
+
+instance Prelude.NFData DeleteRouteResponse where
+  rnf DeleteRouteResponse' {..} =
+    Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf routeId
+      `Prelude.seq` Prelude.rnf serviceId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/DeleteService.hs b/gen/Amazonka/MigrationHubReFactorSpaces/DeleteService.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/DeleteService.hs
@@ -0,0 +1,285 @@
+{-# 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.MigrationHubReFactorSpaces.DeleteService
+-- 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 an Amazon Web Services Migration Hub Refactor Spaces service.
+module Amazonka.MigrationHubReFactorSpaces.DeleteService
+  ( -- * Creating a Request
+    DeleteService (..),
+    newDeleteService,
+
+    -- * Request Lenses
+    deleteService_applicationIdentifier,
+    deleteService_environmentIdentifier,
+    deleteService_serviceIdentifier,
+
+    -- * Destructuring the Response
+    DeleteServiceResponse (..),
+    newDeleteServiceResponse,
+
+    -- * Response Lenses
+    deleteServiceResponse_applicationId,
+    deleteServiceResponse_arn,
+    deleteServiceResponse_environmentId,
+    deleteServiceResponse_lastUpdatedTime,
+    deleteServiceResponse_name,
+    deleteServiceResponse_serviceId,
+    deleteServiceResponse_state,
+    deleteServiceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteService' smart constructor.
+data DeleteService = DeleteService'
+  { -- | Deletes a Refactor Spaces service.
+    --
+    -- The @RefactorSpacesSecurityGroup@ security group must be removed from
+    -- all Amazon Web Services resources in the virtual private cloud (VPC)
+    -- prior to deleting a service with a URL endpoint in a VPC.
+    applicationIdentifier :: Prelude.Text,
+    -- | The ID of the environment that the service is in.
+    environmentIdentifier :: Prelude.Text,
+    -- | The ID of the service to delete.
+    serviceIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteService' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationIdentifier', 'deleteService_applicationIdentifier' - Deletes a Refactor Spaces service.
+--
+-- The @RefactorSpacesSecurityGroup@ security group must be removed from
+-- all Amazon Web Services resources in the virtual private cloud (VPC)
+-- prior to deleting a service with a URL endpoint in a VPC.
+--
+-- 'environmentIdentifier', 'deleteService_environmentIdentifier' - The ID of the environment that the service is in.
+--
+-- 'serviceIdentifier', 'deleteService_serviceIdentifier' - The ID of the service to delete.
+newDeleteService ::
+  -- | 'applicationIdentifier'
+  Prelude.Text ->
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  -- | 'serviceIdentifier'
+  Prelude.Text ->
+  DeleteService
+newDeleteService
+  pApplicationIdentifier_
+  pEnvironmentIdentifier_
+  pServiceIdentifier_ =
+    DeleteService'
+      { applicationIdentifier =
+          pApplicationIdentifier_,
+        environmentIdentifier = pEnvironmentIdentifier_,
+        serviceIdentifier = pServiceIdentifier_
+      }
+
+-- | Deletes a Refactor Spaces service.
+--
+-- The @RefactorSpacesSecurityGroup@ security group must be removed from
+-- all Amazon Web Services resources in the virtual private cloud (VPC)
+-- prior to deleting a service with a URL endpoint in a VPC.
+deleteService_applicationIdentifier :: Lens.Lens' DeleteService Prelude.Text
+deleteService_applicationIdentifier = Lens.lens (\DeleteService' {applicationIdentifier} -> applicationIdentifier) (\s@DeleteService' {} a -> s {applicationIdentifier = a} :: DeleteService)
+
+-- | The ID of the environment that the service is in.
+deleteService_environmentIdentifier :: Lens.Lens' DeleteService Prelude.Text
+deleteService_environmentIdentifier = Lens.lens (\DeleteService' {environmentIdentifier} -> environmentIdentifier) (\s@DeleteService' {} a -> s {environmentIdentifier = a} :: DeleteService)
+
+-- | The ID of the service to delete.
+deleteService_serviceIdentifier :: Lens.Lens' DeleteService Prelude.Text
+deleteService_serviceIdentifier = Lens.lens (\DeleteService' {serviceIdentifier} -> serviceIdentifier) (\s@DeleteService' {} a -> s {serviceIdentifier = a} :: DeleteService)
+
+instance Core.AWSRequest DeleteService where
+  type
+    AWSResponse DeleteService =
+      DeleteServiceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteServiceResponse'
+            Prelude.<$> (x Data..?> "ApplicationId")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "EnvironmentId")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "ServiceId")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteService where
+  hashWithSalt _salt DeleteService' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationIdentifier
+      `Prelude.hashWithSalt` environmentIdentifier
+      `Prelude.hashWithSalt` serviceIdentifier
+
+instance Prelude.NFData DeleteService where
+  rnf DeleteService' {..} =
+    Prelude.rnf applicationIdentifier
+      `Prelude.seq` Prelude.rnf environmentIdentifier
+      `Prelude.seq` Prelude.rnf serviceIdentifier
+
+instance Data.ToHeaders DeleteService where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteService where
+  toPath DeleteService' {..} =
+    Prelude.mconcat
+      [ "/environments/",
+        Data.toBS environmentIdentifier,
+        "/applications/",
+        Data.toBS applicationIdentifier,
+        "/services/",
+        Data.toBS serviceIdentifier
+      ]
+
+instance Data.ToQuery DeleteService where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteServiceResponse' smart constructor.
+data DeleteServiceResponse = DeleteServiceResponse'
+  { -- | The ID of the application that the service is in.
+    applicationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the service.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The unique identifier of the environment.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the service was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the service.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The unique identifier of the service.
+    serviceId :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the service.
+    state :: Prelude.Maybe ServiceState,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteServiceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationId', 'deleteServiceResponse_applicationId' - The ID of the application that the service is in.
+--
+-- 'arn', 'deleteServiceResponse_arn' - The Amazon Resource Name (ARN) of the service.
+--
+-- 'environmentId', 'deleteServiceResponse_environmentId' - The unique identifier of the environment.
+--
+-- 'lastUpdatedTime', 'deleteServiceResponse_lastUpdatedTime' - A timestamp that indicates when the service was last updated.
+--
+-- 'name', 'deleteServiceResponse_name' - The name of the service.
+--
+-- 'serviceId', 'deleteServiceResponse_serviceId' - The unique identifier of the service.
+--
+-- 'state', 'deleteServiceResponse_state' - The current state of the service.
+--
+-- 'httpStatus', 'deleteServiceResponse_httpStatus' - The response's http status code.
+newDeleteServiceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteServiceResponse
+newDeleteServiceResponse pHttpStatus_ =
+  DeleteServiceResponse'
+    { applicationId =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      serviceId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the application that the service is in.
+deleteServiceResponse_applicationId :: Lens.Lens' DeleteServiceResponse (Prelude.Maybe Prelude.Text)
+deleteServiceResponse_applicationId = Lens.lens (\DeleteServiceResponse' {applicationId} -> applicationId) (\s@DeleteServiceResponse' {} a -> s {applicationId = a} :: DeleteServiceResponse)
+
+-- | The Amazon Resource Name (ARN) of the service.
+deleteServiceResponse_arn :: Lens.Lens' DeleteServiceResponse (Prelude.Maybe Prelude.Text)
+deleteServiceResponse_arn = Lens.lens (\DeleteServiceResponse' {arn} -> arn) (\s@DeleteServiceResponse' {} a -> s {arn = a} :: DeleteServiceResponse)
+
+-- | The unique identifier of the environment.
+deleteServiceResponse_environmentId :: Lens.Lens' DeleteServiceResponse (Prelude.Maybe Prelude.Text)
+deleteServiceResponse_environmentId = Lens.lens (\DeleteServiceResponse' {environmentId} -> environmentId) (\s@DeleteServiceResponse' {} a -> s {environmentId = a} :: DeleteServiceResponse)
+
+-- | A timestamp that indicates when the service was last updated.
+deleteServiceResponse_lastUpdatedTime :: Lens.Lens' DeleteServiceResponse (Prelude.Maybe Prelude.UTCTime)
+deleteServiceResponse_lastUpdatedTime = Lens.lens (\DeleteServiceResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@DeleteServiceResponse' {} a -> s {lastUpdatedTime = a} :: DeleteServiceResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the service.
+deleteServiceResponse_name :: Lens.Lens' DeleteServiceResponse (Prelude.Maybe Prelude.Text)
+deleteServiceResponse_name = Lens.lens (\DeleteServiceResponse' {name} -> name) (\s@DeleteServiceResponse' {} a -> s {name = a} :: DeleteServiceResponse)
+
+-- | The unique identifier of the service.
+deleteServiceResponse_serviceId :: Lens.Lens' DeleteServiceResponse (Prelude.Maybe Prelude.Text)
+deleteServiceResponse_serviceId = Lens.lens (\DeleteServiceResponse' {serviceId} -> serviceId) (\s@DeleteServiceResponse' {} a -> s {serviceId = a} :: DeleteServiceResponse)
+
+-- | The current state of the service.
+deleteServiceResponse_state :: Lens.Lens' DeleteServiceResponse (Prelude.Maybe ServiceState)
+deleteServiceResponse_state = Lens.lens (\DeleteServiceResponse' {state} -> state) (\s@DeleteServiceResponse' {} a -> s {state = a} :: DeleteServiceResponse)
+
+-- | The response's http status code.
+deleteServiceResponse_httpStatus :: Lens.Lens' DeleteServiceResponse Prelude.Int
+deleteServiceResponse_httpStatus = Lens.lens (\DeleteServiceResponse' {httpStatus} -> httpStatus) (\s@DeleteServiceResponse' {} a -> s {httpStatus = a} :: DeleteServiceResponse)
+
+instance Prelude.NFData DeleteServiceResponse where
+  rnf DeleteServiceResponse' {..} =
+    Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf serviceId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/GetApplication.hs b/gen/Amazonka/MigrationHubReFactorSpaces/GetApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/GetApplication.hs
@@ -0,0 +1,349 @@
+{-# 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.MigrationHubReFactorSpaces.GetApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an Amazon Web Services Migration Hub Refactor Spaces application.
+module Amazonka.MigrationHubReFactorSpaces.GetApplication
+  ( -- * Creating a Request
+    GetApplication (..),
+    newGetApplication,
+
+    -- * Request Lenses
+    getApplication_applicationIdentifier,
+    getApplication_environmentIdentifier,
+
+    -- * Destructuring the Response
+    GetApplicationResponse (..),
+    newGetApplicationResponse,
+
+    -- * Response Lenses
+    getApplicationResponse_apiGatewayProxy,
+    getApplicationResponse_applicationId,
+    getApplicationResponse_arn,
+    getApplicationResponse_createdByAccountId,
+    getApplicationResponse_createdTime,
+    getApplicationResponse_environmentId,
+    getApplicationResponse_error,
+    getApplicationResponse_lastUpdatedTime,
+    getApplicationResponse_name,
+    getApplicationResponse_ownerAccountId,
+    getApplicationResponse_proxyType,
+    getApplicationResponse_state,
+    getApplicationResponse_tags,
+    getApplicationResponse_vpcId,
+    getApplicationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetApplication' smart constructor.
+data GetApplication = GetApplication'
+  { -- | The ID of the application.
+    applicationIdentifier :: Prelude.Text,
+    -- | The ID of the environment.
+    environmentIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationIdentifier', 'getApplication_applicationIdentifier' - The ID of the application.
+--
+-- 'environmentIdentifier', 'getApplication_environmentIdentifier' - The ID of the environment.
+newGetApplication ::
+  -- | 'applicationIdentifier'
+  Prelude.Text ->
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  GetApplication
+newGetApplication
+  pApplicationIdentifier_
+  pEnvironmentIdentifier_ =
+    GetApplication'
+      { applicationIdentifier =
+          pApplicationIdentifier_,
+        environmentIdentifier = pEnvironmentIdentifier_
+      }
+
+-- | The ID of the application.
+getApplication_applicationIdentifier :: Lens.Lens' GetApplication Prelude.Text
+getApplication_applicationIdentifier = Lens.lens (\GetApplication' {applicationIdentifier} -> applicationIdentifier) (\s@GetApplication' {} a -> s {applicationIdentifier = a} :: GetApplication)
+
+-- | The ID of the environment.
+getApplication_environmentIdentifier :: Lens.Lens' GetApplication Prelude.Text
+getApplication_environmentIdentifier = Lens.lens (\GetApplication' {environmentIdentifier} -> environmentIdentifier) (\s@GetApplication' {} a -> s {environmentIdentifier = a} :: GetApplication)
+
+instance Core.AWSRequest GetApplication where
+  type
+    AWSResponse GetApplication =
+      GetApplicationResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetApplicationResponse'
+            Prelude.<$> (x Data..?> "ApiGatewayProxy")
+            Prelude.<*> (x Data..?> "ApplicationId")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreatedByAccountId")
+            Prelude.<*> (x Data..?> "CreatedTime")
+            Prelude.<*> (x Data..?> "EnvironmentId")
+            Prelude.<*> (x Data..?> "Error")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "OwnerAccountId")
+            Prelude.<*> (x Data..?> "ProxyType")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "VpcId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetApplication where
+  hashWithSalt _salt GetApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationIdentifier
+      `Prelude.hashWithSalt` environmentIdentifier
+
+instance Prelude.NFData GetApplication where
+  rnf GetApplication' {..} =
+    Prelude.rnf applicationIdentifier
+      `Prelude.seq` Prelude.rnf environmentIdentifier
+
+instance Data.ToHeaders GetApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetApplication where
+  toPath GetApplication' {..} =
+    Prelude.mconcat
+      [ "/environments/",
+        Data.toBS environmentIdentifier,
+        "/applications/",
+        Data.toBS applicationIdentifier
+      ]
+
+instance Data.ToQuery GetApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetApplicationResponse' smart constructor.
+data GetApplicationResponse = GetApplicationResponse'
+  { -- | The endpoint URL of the API Gateway proxy.
+    apiGatewayProxy :: Prelude.Maybe ApiGatewayProxyConfig,
+    -- | The unique identifier of the application.
+    applicationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the application.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of the application creator.
+    createdByAccountId :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the application is created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The unique identifier of the environment.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | Any error associated with the application resource.
+    error :: Prelude.Maybe ErrorResponse,
+    -- | A timestamp that indicates when the application was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the application.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of the application owner (which is
+    -- always the same as the environment owner account ID).
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The proxy type of the proxy created within the application.
+    proxyType :: Prelude.Maybe ProxyType,
+    -- | The current state of the application.
+    state :: Prelude.Maybe ApplicationState,
+    -- | The tags assigned to the application. A tag is a label that you assign
+    -- to an Amazon Web Services resource. Each tag consists of a key-value
+    -- pair.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The ID of the virtual private cloud (VPC).
+    vpcId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiGatewayProxy', 'getApplicationResponse_apiGatewayProxy' - The endpoint URL of the API Gateway proxy.
+--
+-- 'applicationId', 'getApplicationResponse_applicationId' - The unique identifier of the application.
+--
+-- 'arn', 'getApplicationResponse_arn' - The Amazon Resource Name (ARN) of the application.
+--
+-- 'createdByAccountId', 'getApplicationResponse_createdByAccountId' - The Amazon Web Services account ID of the application creator.
+--
+-- 'createdTime', 'getApplicationResponse_createdTime' - A timestamp that indicates when the application is created.
+--
+-- 'environmentId', 'getApplicationResponse_environmentId' - The unique identifier of the environment.
+--
+-- 'error', 'getApplicationResponse_error' - Any error associated with the application resource.
+--
+-- 'lastUpdatedTime', 'getApplicationResponse_lastUpdatedTime' - A timestamp that indicates when the application was last updated.
+--
+-- 'name', 'getApplicationResponse_name' - The name of the application.
+--
+-- 'ownerAccountId', 'getApplicationResponse_ownerAccountId' - The Amazon Web Services account ID of the application owner (which is
+-- always the same as the environment owner account ID).
+--
+-- 'proxyType', 'getApplicationResponse_proxyType' - The proxy type of the proxy created within the application.
+--
+-- 'state', 'getApplicationResponse_state' - The current state of the application.
+--
+-- 'tags', 'getApplicationResponse_tags' - The tags assigned to the application. A tag is a label that you assign
+-- to an Amazon Web Services resource. Each tag consists of a key-value
+-- pair.
+--
+-- 'vpcId', 'getApplicationResponse_vpcId' - The ID of the virtual private cloud (VPC).
+--
+-- 'httpStatus', 'getApplicationResponse_httpStatus' - The response's http status code.
+newGetApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetApplicationResponse
+newGetApplicationResponse pHttpStatus_ =
+  GetApplicationResponse'
+    { apiGatewayProxy =
+        Prelude.Nothing,
+      applicationId = Prelude.Nothing,
+      arn = Prelude.Nothing,
+      createdByAccountId = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      error = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      proxyType = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      vpcId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The endpoint URL of the API Gateway proxy.
+getApplicationResponse_apiGatewayProxy :: Lens.Lens' GetApplicationResponse (Prelude.Maybe ApiGatewayProxyConfig)
+getApplicationResponse_apiGatewayProxy = Lens.lens (\GetApplicationResponse' {apiGatewayProxy} -> apiGatewayProxy) (\s@GetApplicationResponse' {} a -> s {apiGatewayProxy = a} :: GetApplicationResponse)
+
+-- | The unique identifier of the application.
+getApplicationResponse_applicationId :: Lens.Lens' GetApplicationResponse (Prelude.Maybe Prelude.Text)
+getApplicationResponse_applicationId = Lens.lens (\GetApplicationResponse' {applicationId} -> applicationId) (\s@GetApplicationResponse' {} a -> s {applicationId = a} :: GetApplicationResponse)
+
+-- | The Amazon Resource Name (ARN) of the application.
+getApplicationResponse_arn :: Lens.Lens' GetApplicationResponse (Prelude.Maybe Prelude.Text)
+getApplicationResponse_arn = Lens.lens (\GetApplicationResponse' {arn} -> arn) (\s@GetApplicationResponse' {} a -> s {arn = a} :: GetApplicationResponse)
+
+-- | The Amazon Web Services account ID of the application creator.
+getApplicationResponse_createdByAccountId :: Lens.Lens' GetApplicationResponse (Prelude.Maybe Prelude.Text)
+getApplicationResponse_createdByAccountId = Lens.lens (\GetApplicationResponse' {createdByAccountId} -> createdByAccountId) (\s@GetApplicationResponse' {} a -> s {createdByAccountId = a} :: GetApplicationResponse)
+
+-- | A timestamp that indicates when the application is created.
+getApplicationResponse_createdTime :: Lens.Lens' GetApplicationResponse (Prelude.Maybe Prelude.UTCTime)
+getApplicationResponse_createdTime = Lens.lens (\GetApplicationResponse' {createdTime} -> createdTime) (\s@GetApplicationResponse' {} a -> s {createdTime = a} :: GetApplicationResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The unique identifier of the environment.
+getApplicationResponse_environmentId :: Lens.Lens' GetApplicationResponse (Prelude.Maybe Prelude.Text)
+getApplicationResponse_environmentId = Lens.lens (\GetApplicationResponse' {environmentId} -> environmentId) (\s@GetApplicationResponse' {} a -> s {environmentId = a} :: GetApplicationResponse)
+
+-- | Any error associated with the application resource.
+getApplicationResponse_error :: Lens.Lens' GetApplicationResponse (Prelude.Maybe ErrorResponse)
+getApplicationResponse_error = Lens.lens (\GetApplicationResponse' {error} -> error) (\s@GetApplicationResponse' {} a -> s {error = a} :: GetApplicationResponse)
+
+-- | A timestamp that indicates when the application was last updated.
+getApplicationResponse_lastUpdatedTime :: Lens.Lens' GetApplicationResponse (Prelude.Maybe Prelude.UTCTime)
+getApplicationResponse_lastUpdatedTime = Lens.lens (\GetApplicationResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@GetApplicationResponse' {} a -> s {lastUpdatedTime = a} :: GetApplicationResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the application.
+getApplicationResponse_name :: Lens.Lens' GetApplicationResponse (Prelude.Maybe Prelude.Text)
+getApplicationResponse_name = Lens.lens (\GetApplicationResponse' {name} -> name) (\s@GetApplicationResponse' {} a -> s {name = a} :: GetApplicationResponse)
+
+-- | The Amazon Web Services account ID of the application owner (which is
+-- always the same as the environment owner account ID).
+getApplicationResponse_ownerAccountId :: Lens.Lens' GetApplicationResponse (Prelude.Maybe Prelude.Text)
+getApplicationResponse_ownerAccountId = Lens.lens (\GetApplicationResponse' {ownerAccountId} -> ownerAccountId) (\s@GetApplicationResponse' {} a -> s {ownerAccountId = a} :: GetApplicationResponse)
+
+-- | The proxy type of the proxy created within the application.
+getApplicationResponse_proxyType :: Lens.Lens' GetApplicationResponse (Prelude.Maybe ProxyType)
+getApplicationResponse_proxyType = Lens.lens (\GetApplicationResponse' {proxyType} -> proxyType) (\s@GetApplicationResponse' {} a -> s {proxyType = a} :: GetApplicationResponse)
+
+-- | The current state of the application.
+getApplicationResponse_state :: Lens.Lens' GetApplicationResponse (Prelude.Maybe ApplicationState)
+getApplicationResponse_state = Lens.lens (\GetApplicationResponse' {state} -> state) (\s@GetApplicationResponse' {} a -> s {state = a} :: GetApplicationResponse)
+
+-- | The tags assigned to the application. A tag is a label that you assign
+-- to an Amazon Web Services resource. Each tag consists of a key-value
+-- pair.
+getApplicationResponse_tags :: Lens.Lens' GetApplicationResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getApplicationResponse_tags = Lens.lens (\GetApplicationResponse' {tags} -> tags) (\s@GetApplicationResponse' {} a -> s {tags = a} :: GetApplicationResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The ID of the virtual private cloud (VPC).
+getApplicationResponse_vpcId :: Lens.Lens' GetApplicationResponse (Prelude.Maybe Prelude.Text)
+getApplicationResponse_vpcId = Lens.lens (\GetApplicationResponse' {vpcId} -> vpcId) (\s@GetApplicationResponse' {} a -> s {vpcId = a} :: GetApplicationResponse)
+
+-- | The response's http status code.
+getApplicationResponse_httpStatus :: Lens.Lens' GetApplicationResponse Prelude.Int
+getApplicationResponse_httpStatus = Lens.lens (\GetApplicationResponse' {httpStatus} -> httpStatus) (\s@GetApplicationResponse' {} a -> s {httpStatus = a} :: GetApplicationResponse)
+
+instance Prelude.NFData GetApplicationResponse where
+  rnf GetApplicationResponse' {..} =
+    Prelude.rnf apiGatewayProxy
+      `Prelude.seq` Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdByAccountId
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf proxyType
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf vpcId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/GetEnvironment.hs b/gen/Amazonka/MigrationHubReFactorSpaces/GetEnvironment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/GetEnvironment.hs
@@ -0,0 +1,300 @@
+{-# 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.MigrationHubReFactorSpaces.GetEnvironment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an Amazon Web Services Migration Hub Refactor Spaces environment.
+module Amazonka.MigrationHubReFactorSpaces.GetEnvironment
+  ( -- * Creating a Request
+    GetEnvironment (..),
+    newGetEnvironment,
+
+    -- * Request Lenses
+    getEnvironment_environmentIdentifier,
+
+    -- * Destructuring the Response
+    GetEnvironmentResponse (..),
+    newGetEnvironmentResponse,
+
+    -- * Response Lenses
+    getEnvironmentResponse_arn,
+    getEnvironmentResponse_createdTime,
+    getEnvironmentResponse_description,
+    getEnvironmentResponse_environmentId,
+    getEnvironmentResponse_error,
+    getEnvironmentResponse_lastUpdatedTime,
+    getEnvironmentResponse_name,
+    getEnvironmentResponse_networkFabricType,
+    getEnvironmentResponse_ownerAccountId,
+    getEnvironmentResponse_state,
+    getEnvironmentResponse_tags,
+    getEnvironmentResponse_transitGatewayId,
+    getEnvironmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetEnvironment' smart constructor.
+data GetEnvironment = GetEnvironment'
+  { -- | The ID of the environment.
+    environmentIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetEnvironment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'environmentIdentifier', 'getEnvironment_environmentIdentifier' - The ID of the environment.
+newGetEnvironment ::
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  GetEnvironment
+newGetEnvironment pEnvironmentIdentifier_ =
+  GetEnvironment'
+    { environmentIdentifier =
+        pEnvironmentIdentifier_
+    }
+
+-- | The ID of the environment.
+getEnvironment_environmentIdentifier :: Lens.Lens' GetEnvironment Prelude.Text
+getEnvironment_environmentIdentifier = Lens.lens (\GetEnvironment' {environmentIdentifier} -> environmentIdentifier) (\s@GetEnvironment' {} a -> s {environmentIdentifier = a} :: GetEnvironment)
+
+instance Core.AWSRequest GetEnvironment where
+  type
+    AWSResponse GetEnvironment =
+      GetEnvironmentResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetEnvironmentResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreatedTime")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "EnvironmentId")
+            Prelude.<*> (x Data..?> "Error")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "NetworkFabricType")
+            Prelude.<*> (x Data..?> "OwnerAccountId")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "TransitGatewayId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetEnvironment where
+  hashWithSalt _salt GetEnvironment' {..} =
+    _salt `Prelude.hashWithSalt` environmentIdentifier
+
+instance Prelude.NFData GetEnvironment where
+  rnf GetEnvironment' {..} =
+    Prelude.rnf environmentIdentifier
+
+instance Data.ToHeaders GetEnvironment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetEnvironment where
+  toPath GetEnvironment' {..} =
+    Prelude.mconcat
+      ["/environments/", Data.toBS environmentIdentifier]
+
+instance Data.ToQuery GetEnvironment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetEnvironmentResponse' smart constructor.
+data GetEnvironmentResponse = GetEnvironmentResponse'
+  { -- | The Amazon Resource Name (ARN) of the environment.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the environment is created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the environment.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The unique identifier of the environment.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | Any error associated with the environment resource.
+    error :: Prelude.Maybe ErrorResponse,
+    -- | A timestamp that indicates when the environment was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the environment.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The network fabric type of the environment.
+    networkFabricType :: Prelude.Maybe NetworkFabricType,
+    -- | The Amazon Web Services account ID of the environment owner.
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the environment.
+    state :: Prelude.Maybe EnvironmentState,
+    -- | The tags to assign to the environment. A tag is a label that you assign
+    -- to an Amazon Web Services resource. Each tag consists of a key-value
+    -- pair.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The ID of the transit gateway set up by the environment.
+    transitGatewayId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetEnvironmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getEnvironmentResponse_arn' - The Amazon Resource Name (ARN) of the environment.
+--
+-- 'createdTime', 'getEnvironmentResponse_createdTime' - A timestamp that indicates when the environment is created.
+--
+-- 'description', 'getEnvironmentResponse_description' - The description of the environment.
+--
+-- 'environmentId', 'getEnvironmentResponse_environmentId' - The unique identifier of the environment.
+--
+-- 'error', 'getEnvironmentResponse_error' - Any error associated with the environment resource.
+--
+-- 'lastUpdatedTime', 'getEnvironmentResponse_lastUpdatedTime' - A timestamp that indicates when the environment was last updated.
+--
+-- 'name', 'getEnvironmentResponse_name' - The name of the environment.
+--
+-- 'networkFabricType', 'getEnvironmentResponse_networkFabricType' - The network fabric type of the environment.
+--
+-- 'ownerAccountId', 'getEnvironmentResponse_ownerAccountId' - The Amazon Web Services account ID of the environment owner.
+--
+-- 'state', 'getEnvironmentResponse_state' - The current state of the environment.
+--
+-- 'tags', 'getEnvironmentResponse_tags' - The tags to assign to the environment. A tag is a label that you assign
+-- to an Amazon Web Services resource. Each tag consists of a key-value
+-- pair.
+--
+-- 'transitGatewayId', 'getEnvironmentResponse_transitGatewayId' - The ID of the transit gateway set up by the environment.
+--
+-- 'httpStatus', 'getEnvironmentResponse_httpStatus' - The response's http status code.
+newGetEnvironmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetEnvironmentResponse
+newGetEnvironmentResponse pHttpStatus_ =
+  GetEnvironmentResponse'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      error = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      networkFabricType = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      transitGatewayId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the environment.
+getEnvironmentResponse_arn :: Lens.Lens' GetEnvironmentResponse (Prelude.Maybe Prelude.Text)
+getEnvironmentResponse_arn = Lens.lens (\GetEnvironmentResponse' {arn} -> arn) (\s@GetEnvironmentResponse' {} a -> s {arn = a} :: GetEnvironmentResponse)
+
+-- | A timestamp that indicates when the environment is created.
+getEnvironmentResponse_createdTime :: Lens.Lens' GetEnvironmentResponse (Prelude.Maybe Prelude.UTCTime)
+getEnvironmentResponse_createdTime = Lens.lens (\GetEnvironmentResponse' {createdTime} -> createdTime) (\s@GetEnvironmentResponse' {} a -> s {createdTime = a} :: GetEnvironmentResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the environment.
+getEnvironmentResponse_description :: Lens.Lens' GetEnvironmentResponse (Prelude.Maybe Prelude.Text)
+getEnvironmentResponse_description = Lens.lens (\GetEnvironmentResponse' {description} -> description) (\s@GetEnvironmentResponse' {} a -> s {description = a} :: GetEnvironmentResponse)
+
+-- | The unique identifier of the environment.
+getEnvironmentResponse_environmentId :: Lens.Lens' GetEnvironmentResponse (Prelude.Maybe Prelude.Text)
+getEnvironmentResponse_environmentId = Lens.lens (\GetEnvironmentResponse' {environmentId} -> environmentId) (\s@GetEnvironmentResponse' {} a -> s {environmentId = a} :: GetEnvironmentResponse)
+
+-- | Any error associated with the environment resource.
+getEnvironmentResponse_error :: Lens.Lens' GetEnvironmentResponse (Prelude.Maybe ErrorResponse)
+getEnvironmentResponse_error = Lens.lens (\GetEnvironmentResponse' {error} -> error) (\s@GetEnvironmentResponse' {} a -> s {error = a} :: GetEnvironmentResponse)
+
+-- | A timestamp that indicates when the environment was last updated.
+getEnvironmentResponse_lastUpdatedTime :: Lens.Lens' GetEnvironmentResponse (Prelude.Maybe Prelude.UTCTime)
+getEnvironmentResponse_lastUpdatedTime = Lens.lens (\GetEnvironmentResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@GetEnvironmentResponse' {} a -> s {lastUpdatedTime = a} :: GetEnvironmentResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the environment.
+getEnvironmentResponse_name :: Lens.Lens' GetEnvironmentResponse (Prelude.Maybe Prelude.Text)
+getEnvironmentResponse_name = Lens.lens (\GetEnvironmentResponse' {name} -> name) (\s@GetEnvironmentResponse' {} a -> s {name = a} :: GetEnvironmentResponse)
+
+-- | The network fabric type of the environment.
+getEnvironmentResponse_networkFabricType :: Lens.Lens' GetEnvironmentResponse (Prelude.Maybe NetworkFabricType)
+getEnvironmentResponse_networkFabricType = Lens.lens (\GetEnvironmentResponse' {networkFabricType} -> networkFabricType) (\s@GetEnvironmentResponse' {} a -> s {networkFabricType = a} :: GetEnvironmentResponse)
+
+-- | The Amazon Web Services account ID of the environment owner.
+getEnvironmentResponse_ownerAccountId :: Lens.Lens' GetEnvironmentResponse (Prelude.Maybe Prelude.Text)
+getEnvironmentResponse_ownerAccountId = Lens.lens (\GetEnvironmentResponse' {ownerAccountId} -> ownerAccountId) (\s@GetEnvironmentResponse' {} a -> s {ownerAccountId = a} :: GetEnvironmentResponse)
+
+-- | The current state of the environment.
+getEnvironmentResponse_state :: Lens.Lens' GetEnvironmentResponse (Prelude.Maybe EnvironmentState)
+getEnvironmentResponse_state = Lens.lens (\GetEnvironmentResponse' {state} -> state) (\s@GetEnvironmentResponse' {} a -> s {state = a} :: GetEnvironmentResponse)
+
+-- | The tags to assign to the environment. A tag is a label that you assign
+-- to an Amazon Web Services resource. Each tag consists of a key-value
+-- pair.
+getEnvironmentResponse_tags :: Lens.Lens' GetEnvironmentResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getEnvironmentResponse_tags = Lens.lens (\GetEnvironmentResponse' {tags} -> tags) (\s@GetEnvironmentResponse' {} a -> s {tags = a} :: GetEnvironmentResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The ID of the transit gateway set up by the environment.
+getEnvironmentResponse_transitGatewayId :: Lens.Lens' GetEnvironmentResponse (Prelude.Maybe Prelude.Text)
+getEnvironmentResponse_transitGatewayId = Lens.lens (\GetEnvironmentResponse' {transitGatewayId} -> transitGatewayId) (\s@GetEnvironmentResponse' {} a -> s {transitGatewayId = a} :: GetEnvironmentResponse)
+
+-- | The response's http status code.
+getEnvironmentResponse_httpStatus :: Lens.Lens' GetEnvironmentResponse Prelude.Int
+getEnvironmentResponse_httpStatus = Lens.lens (\GetEnvironmentResponse' {httpStatus} -> httpStatus) (\s@GetEnvironmentResponse' {} a -> s {httpStatus = a} :: GetEnvironmentResponse)
+
+instance Prelude.NFData GetEnvironmentResponse where
+  rnf GetEnvironmentResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf networkFabricType
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf transitGatewayId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/GetResourcePolicy.hs b/gen/Amazonka/MigrationHubReFactorSpaces/GetResourcePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/GetResourcePolicy.hs
@@ -0,0 +1,166 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.GetResourcePolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the resource-based permission policy that is set for the given
+-- environment.
+module Amazonka.MigrationHubReFactorSpaces.GetResourcePolicy
+  ( -- * Creating a Request
+    GetResourcePolicy (..),
+    newGetResourcePolicy,
+
+    -- * Request Lenses
+    getResourcePolicy_identifier,
+
+    -- * Destructuring the Response
+    GetResourcePolicyResponse (..),
+    newGetResourcePolicyResponse,
+
+    -- * Response Lenses
+    getResourcePolicyResponse_policy,
+    getResourcePolicyResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetResourcePolicy' smart constructor.
+data GetResourcePolicy = GetResourcePolicy'
+  { -- | The Amazon Resource Name (ARN) of the resource associated with the
+    -- policy.
+    identifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetResourcePolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identifier', 'getResourcePolicy_identifier' - The Amazon Resource Name (ARN) of the resource associated with the
+-- policy.
+newGetResourcePolicy ::
+  -- | 'identifier'
+  Prelude.Text ->
+  GetResourcePolicy
+newGetResourcePolicy pIdentifier_ =
+  GetResourcePolicy' {identifier = pIdentifier_}
+
+-- | The Amazon Resource Name (ARN) of the resource associated with the
+-- policy.
+getResourcePolicy_identifier :: Lens.Lens' GetResourcePolicy Prelude.Text
+getResourcePolicy_identifier = Lens.lens (\GetResourcePolicy' {identifier} -> identifier) (\s@GetResourcePolicy' {} a -> s {identifier = a} :: GetResourcePolicy)
+
+instance Core.AWSRequest GetResourcePolicy where
+  type
+    AWSResponse GetResourcePolicy =
+      GetResourcePolicyResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetResourcePolicyResponse'
+            Prelude.<$> (x Data..?> "Policy")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetResourcePolicy where
+  hashWithSalt _salt GetResourcePolicy' {..} =
+    _salt `Prelude.hashWithSalt` identifier
+
+instance Prelude.NFData GetResourcePolicy where
+  rnf GetResourcePolicy' {..} = Prelude.rnf identifier
+
+instance Data.ToHeaders GetResourcePolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetResourcePolicy where
+  toPath GetResourcePolicy' {..} =
+    Prelude.mconcat
+      ["/resourcepolicy/", Data.toBS identifier]
+
+instance Data.ToQuery GetResourcePolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetResourcePolicyResponse' smart constructor.
+data GetResourcePolicyResponse = GetResourcePolicyResponse'
+  { -- | A JSON-formatted string for an Amazon Web Services resource-based
+    -- policy.
+    policy :: 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 'GetResourcePolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'policy', 'getResourcePolicyResponse_policy' - A JSON-formatted string for an Amazon Web Services resource-based
+-- policy.
+--
+-- 'httpStatus', 'getResourcePolicyResponse_httpStatus' - The response's http status code.
+newGetResourcePolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetResourcePolicyResponse
+newGetResourcePolicyResponse pHttpStatus_ =
+  GetResourcePolicyResponse'
+    { policy =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A JSON-formatted string for an Amazon Web Services resource-based
+-- policy.
+getResourcePolicyResponse_policy :: Lens.Lens' GetResourcePolicyResponse (Prelude.Maybe Prelude.Text)
+getResourcePolicyResponse_policy = Lens.lens (\GetResourcePolicyResponse' {policy} -> policy) (\s@GetResourcePolicyResponse' {} a -> s {policy = a} :: GetResourcePolicyResponse)
+
+-- | The response's http status code.
+getResourcePolicyResponse_httpStatus :: Lens.Lens' GetResourcePolicyResponse Prelude.Int
+getResourcePolicyResponse_httpStatus = Lens.lens (\GetResourcePolicyResponse' {httpStatus} -> httpStatus) (\s@GetResourcePolicyResponse' {} a -> s {httpStatus = a} :: GetResourcePolicyResponse)
+
+instance Prelude.NFData GetResourcePolicyResponse where
+  rnf GetResourcePolicyResponse' {..} =
+    Prelude.rnf policy
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/GetRoute.hs b/gen/Amazonka/MigrationHubReFactorSpaces/GetRoute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/GetRoute.hs
@@ -0,0 +1,429 @@
+{-# 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.MigrationHubReFactorSpaces.GetRoute
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an Amazon Web Services Migration Hub Refactor Spaces route.
+module Amazonka.MigrationHubReFactorSpaces.GetRoute
+  ( -- * Creating a Request
+    GetRoute (..),
+    newGetRoute,
+
+    -- * Request Lenses
+    getRoute_applicationIdentifier,
+    getRoute_environmentIdentifier,
+    getRoute_routeIdentifier,
+
+    -- * Destructuring the Response
+    GetRouteResponse (..),
+    newGetRouteResponse,
+
+    -- * Response Lenses
+    getRouteResponse_applicationId,
+    getRouteResponse_arn,
+    getRouteResponse_createdByAccountId,
+    getRouteResponse_createdTime,
+    getRouteResponse_environmentId,
+    getRouteResponse_error,
+    getRouteResponse_includeChildPaths,
+    getRouteResponse_lastUpdatedTime,
+    getRouteResponse_methods,
+    getRouteResponse_ownerAccountId,
+    getRouteResponse_pathResourceToId,
+    getRouteResponse_routeId,
+    getRouteResponse_routeType,
+    getRouteResponse_serviceId,
+    getRouteResponse_sourcePath,
+    getRouteResponse_state,
+    getRouteResponse_tags,
+    getRouteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetRoute' smart constructor.
+data GetRoute = GetRoute'
+  { -- | The ID of the application.
+    applicationIdentifier :: Prelude.Text,
+    -- | The ID of the environment.
+    environmentIdentifier :: Prelude.Text,
+    -- | The ID of the route.
+    routeIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetRoute' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationIdentifier', 'getRoute_applicationIdentifier' - The ID of the application.
+--
+-- 'environmentIdentifier', 'getRoute_environmentIdentifier' - The ID of the environment.
+--
+-- 'routeIdentifier', 'getRoute_routeIdentifier' - The ID of the route.
+newGetRoute ::
+  -- | 'applicationIdentifier'
+  Prelude.Text ->
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  -- | 'routeIdentifier'
+  Prelude.Text ->
+  GetRoute
+newGetRoute
+  pApplicationIdentifier_
+  pEnvironmentIdentifier_
+  pRouteIdentifier_ =
+    GetRoute'
+      { applicationIdentifier =
+          pApplicationIdentifier_,
+        environmentIdentifier = pEnvironmentIdentifier_,
+        routeIdentifier = pRouteIdentifier_
+      }
+
+-- | The ID of the application.
+getRoute_applicationIdentifier :: Lens.Lens' GetRoute Prelude.Text
+getRoute_applicationIdentifier = Lens.lens (\GetRoute' {applicationIdentifier} -> applicationIdentifier) (\s@GetRoute' {} a -> s {applicationIdentifier = a} :: GetRoute)
+
+-- | The ID of the environment.
+getRoute_environmentIdentifier :: Lens.Lens' GetRoute Prelude.Text
+getRoute_environmentIdentifier = Lens.lens (\GetRoute' {environmentIdentifier} -> environmentIdentifier) (\s@GetRoute' {} a -> s {environmentIdentifier = a} :: GetRoute)
+
+-- | The ID of the route.
+getRoute_routeIdentifier :: Lens.Lens' GetRoute Prelude.Text
+getRoute_routeIdentifier = Lens.lens (\GetRoute' {routeIdentifier} -> routeIdentifier) (\s@GetRoute' {} a -> s {routeIdentifier = a} :: GetRoute)
+
+instance Core.AWSRequest GetRoute where
+  type AWSResponse GetRoute = GetRouteResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetRouteResponse'
+            Prelude.<$> (x Data..?> "ApplicationId")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreatedByAccountId")
+            Prelude.<*> (x Data..?> "CreatedTime")
+            Prelude.<*> (x Data..?> "EnvironmentId")
+            Prelude.<*> (x Data..?> "Error")
+            Prelude.<*> (x Data..?> "IncludeChildPaths")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (x Data..?> "Methods" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "OwnerAccountId")
+            Prelude.<*> ( x
+                            Data..?> "PathResourceToId"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "RouteId")
+            Prelude.<*> (x Data..?> "RouteType")
+            Prelude.<*> (x Data..?> "ServiceId")
+            Prelude.<*> (x Data..?> "SourcePath")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetRoute where
+  hashWithSalt _salt GetRoute' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationIdentifier
+      `Prelude.hashWithSalt` environmentIdentifier
+      `Prelude.hashWithSalt` routeIdentifier
+
+instance Prelude.NFData GetRoute where
+  rnf GetRoute' {..} =
+    Prelude.rnf applicationIdentifier
+      `Prelude.seq` Prelude.rnf environmentIdentifier
+      `Prelude.seq` Prelude.rnf routeIdentifier
+
+instance Data.ToHeaders GetRoute where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetRoute where
+  toPath GetRoute' {..} =
+    Prelude.mconcat
+      [ "/environments/",
+        Data.toBS environmentIdentifier,
+        "/applications/",
+        Data.toBS applicationIdentifier,
+        "/routes/",
+        Data.toBS routeIdentifier
+      ]
+
+instance Data.ToQuery GetRoute where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetRouteResponse' smart constructor.
+data GetRouteResponse = GetRouteResponse'
+  { -- | The ID of the application that the route belongs to.
+    applicationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the route.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of the route creator.
+    createdByAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp of when the route is created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | Unique identifier of the environment.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | Any error associated with the route resource.
+    error :: Prelude.Maybe ErrorResponse,
+    -- | Indicates whether to match all subpaths of the given source path. If
+    -- this value is @false@, requests must match the source path exactly
+    -- before they are forwarded to this route\'s service.
+    includeChildPaths :: Prelude.Maybe Prelude.Bool,
+    -- | A timestamp that indicates when the route was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | A list of HTTP methods to match. An empty list matches all values. If a
+    -- method is present, only HTTP requests using that method are forwarded to
+    -- this route’s service.
+    methods :: Prelude.Maybe [HttpMethod],
+    -- | The Amazon Web Services account ID of the route owner.
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | A mapping of Amazon API Gateway path resources to resource IDs.
+    pathResourceToId :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The unique identifier of the route.
+    --
+    -- __DEFAULT__: All traffic that does not match another route is forwarded
+    -- to the default route. Applications must have a default route before any
+    -- other routes can be created.
+    --
+    -- __URI_PATH__: A route that is based on a URI path.
+    routeId :: Prelude.Maybe Prelude.Text,
+    -- | The type of route.
+    routeType :: Prelude.Maybe RouteType,
+    -- | The unique identifier of the service.
+    serviceId :: Prelude.Maybe Prelude.Text,
+    -- | The path to use to match traffic. Paths must start with @\/@ and are
+    -- relative to the base of the application.
+    sourcePath :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the route.
+    state :: Prelude.Maybe RouteState,
+    -- | The tags assigned to the route. A tag is a label that you assign to an
+    -- Amazon Web Services resource. Each tag consists of a key-value pair.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetRouteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationId', 'getRouteResponse_applicationId' - The ID of the application that the route belongs to.
+--
+-- 'arn', 'getRouteResponse_arn' - The Amazon Resource Name (ARN) of the route.
+--
+-- 'createdByAccountId', 'getRouteResponse_createdByAccountId' - The Amazon Web Services account ID of the route creator.
+--
+-- 'createdTime', 'getRouteResponse_createdTime' - The timestamp of when the route is created.
+--
+-- 'environmentId', 'getRouteResponse_environmentId' - Unique identifier of the environment.
+--
+-- 'error', 'getRouteResponse_error' - Any error associated with the route resource.
+--
+-- 'includeChildPaths', 'getRouteResponse_includeChildPaths' - Indicates whether to match all subpaths of the given source path. If
+-- this value is @false@, requests must match the source path exactly
+-- before they are forwarded to this route\'s service.
+--
+-- 'lastUpdatedTime', 'getRouteResponse_lastUpdatedTime' - A timestamp that indicates when the route was last updated.
+--
+-- 'methods', 'getRouteResponse_methods' - A list of HTTP methods to match. An empty list matches all values. If a
+-- method is present, only HTTP requests using that method are forwarded to
+-- this route’s service.
+--
+-- 'ownerAccountId', 'getRouteResponse_ownerAccountId' - The Amazon Web Services account ID of the route owner.
+--
+-- 'pathResourceToId', 'getRouteResponse_pathResourceToId' - A mapping of Amazon API Gateway path resources to resource IDs.
+--
+-- 'routeId', 'getRouteResponse_routeId' - The unique identifier of the route.
+--
+-- __DEFAULT__: All traffic that does not match another route is forwarded
+-- to the default route. Applications must have a default route before any
+-- other routes can be created.
+--
+-- __URI_PATH__: A route that is based on a URI path.
+--
+-- 'routeType', 'getRouteResponse_routeType' - The type of route.
+--
+-- 'serviceId', 'getRouteResponse_serviceId' - The unique identifier of the service.
+--
+-- 'sourcePath', 'getRouteResponse_sourcePath' - The path to use to match traffic. Paths must start with @\/@ and are
+-- relative to the base of the application.
+--
+-- 'state', 'getRouteResponse_state' - The current state of the route.
+--
+-- 'tags', 'getRouteResponse_tags' - The tags assigned to the route. A tag is a label that you assign to an
+-- Amazon Web Services resource. Each tag consists of a key-value pair.
+--
+-- 'httpStatus', 'getRouteResponse_httpStatus' - The response's http status code.
+newGetRouteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetRouteResponse
+newGetRouteResponse pHttpStatus_ =
+  GetRouteResponse'
+    { applicationId = Prelude.Nothing,
+      arn = Prelude.Nothing,
+      createdByAccountId = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      error = Prelude.Nothing,
+      includeChildPaths = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      methods = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      pathResourceToId = Prelude.Nothing,
+      routeId = Prelude.Nothing,
+      routeType = Prelude.Nothing,
+      serviceId = Prelude.Nothing,
+      sourcePath = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the application that the route belongs to.
+getRouteResponse_applicationId :: Lens.Lens' GetRouteResponse (Prelude.Maybe Prelude.Text)
+getRouteResponse_applicationId = Lens.lens (\GetRouteResponse' {applicationId} -> applicationId) (\s@GetRouteResponse' {} a -> s {applicationId = a} :: GetRouteResponse)
+
+-- | The Amazon Resource Name (ARN) of the route.
+getRouteResponse_arn :: Lens.Lens' GetRouteResponse (Prelude.Maybe Prelude.Text)
+getRouteResponse_arn = Lens.lens (\GetRouteResponse' {arn} -> arn) (\s@GetRouteResponse' {} a -> s {arn = a} :: GetRouteResponse)
+
+-- | The Amazon Web Services account ID of the route creator.
+getRouteResponse_createdByAccountId :: Lens.Lens' GetRouteResponse (Prelude.Maybe Prelude.Text)
+getRouteResponse_createdByAccountId = Lens.lens (\GetRouteResponse' {createdByAccountId} -> createdByAccountId) (\s@GetRouteResponse' {} a -> s {createdByAccountId = a} :: GetRouteResponse)
+
+-- | The timestamp of when the route is created.
+getRouteResponse_createdTime :: Lens.Lens' GetRouteResponse (Prelude.Maybe Prelude.UTCTime)
+getRouteResponse_createdTime = Lens.lens (\GetRouteResponse' {createdTime} -> createdTime) (\s@GetRouteResponse' {} a -> s {createdTime = a} :: GetRouteResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Unique identifier of the environment.
+getRouteResponse_environmentId :: Lens.Lens' GetRouteResponse (Prelude.Maybe Prelude.Text)
+getRouteResponse_environmentId = Lens.lens (\GetRouteResponse' {environmentId} -> environmentId) (\s@GetRouteResponse' {} a -> s {environmentId = a} :: GetRouteResponse)
+
+-- | Any error associated with the route resource.
+getRouteResponse_error :: Lens.Lens' GetRouteResponse (Prelude.Maybe ErrorResponse)
+getRouteResponse_error = Lens.lens (\GetRouteResponse' {error} -> error) (\s@GetRouteResponse' {} a -> s {error = a} :: GetRouteResponse)
+
+-- | Indicates whether to match all subpaths of the given source path. If
+-- this value is @false@, requests must match the source path exactly
+-- before they are forwarded to this route\'s service.
+getRouteResponse_includeChildPaths :: Lens.Lens' GetRouteResponse (Prelude.Maybe Prelude.Bool)
+getRouteResponse_includeChildPaths = Lens.lens (\GetRouteResponse' {includeChildPaths} -> includeChildPaths) (\s@GetRouteResponse' {} a -> s {includeChildPaths = a} :: GetRouteResponse)
+
+-- | A timestamp that indicates when the route was last updated.
+getRouteResponse_lastUpdatedTime :: Lens.Lens' GetRouteResponse (Prelude.Maybe Prelude.UTCTime)
+getRouteResponse_lastUpdatedTime = Lens.lens (\GetRouteResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@GetRouteResponse' {} a -> s {lastUpdatedTime = a} :: GetRouteResponse) Prelude.. Lens.mapping Data._Time
+
+-- | A list of HTTP methods to match. An empty list matches all values. If a
+-- method is present, only HTTP requests using that method are forwarded to
+-- this route’s service.
+getRouteResponse_methods :: Lens.Lens' GetRouteResponse (Prelude.Maybe [HttpMethod])
+getRouteResponse_methods = Lens.lens (\GetRouteResponse' {methods} -> methods) (\s@GetRouteResponse' {} a -> s {methods = a} :: GetRouteResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services account ID of the route owner.
+getRouteResponse_ownerAccountId :: Lens.Lens' GetRouteResponse (Prelude.Maybe Prelude.Text)
+getRouteResponse_ownerAccountId = Lens.lens (\GetRouteResponse' {ownerAccountId} -> ownerAccountId) (\s@GetRouteResponse' {} a -> s {ownerAccountId = a} :: GetRouteResponse)
+
+-- | A mapping of Amazon API Gateway path resources to resource IDs.
+getRouteResponse_pathResourceToId :: Lens.Lens' GetRouteResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getRouteResponse_pathResourceToId = Lens.lens (\GetRouteResponse' {pathResourceToId} -> pathResourceToId) (\s@GetRouteResponse' {} a -> s {pathResourceToId = a} :: GetRouteResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The unique identifier of the route.
+--
+-- __DEFAULT__: All traffic that does not match another route is forwarded
+-- to the default route. Applications must have a default route before any
+-- other routes can be created.
+--
+-- __URI_PATH__: A route that is based on a URI path.
+getRouteResponse_routeId :: Lens.Lens' GetRouteResponse (Prelude.Maybe Prelude.Text)
+getRouteResponse_routeId = Lens.lens (\GetRouteResponse' {routeId} -> routeId) (\s@GetRouteResponse' {} a -> s {routeId = a} :: GetRouteResponse)
+
+-- | The type of route.
+getRouteResponse_routeType :: Lens.Lens' GetRouteResponse (Prelude.Maybe RouteType)
+getRouteResponse_routeType = Lens.lens (\GetRouteResponse' {routeType} -> routeType) (\s@GetRouteResponse' {} a -> s {routeType = a} :: GetRouteResponse)
+
+-- | The unique identifier of the service.
+getRouteResponse_serviceId :: Lens.Lens' GetRouteResponse (Prelude.Maybe Prelude.Text)
+getRouteResponse_serviceId = Lens.lens (\GetRouteResponse' {serviceId} -> serviceId) (\s@GetRouteResponse' {} a -> s {serviceId = a} :: GetRouteResponse)
+
+-- | The path to use to match traffic. Paths must start with @\/@ and are
+-- relative to the base of the application.
+getRouteResponse_sourcePath :: Lens.Lens' GetRouteResponse (Prelude.Maybe Prelude.Text)
+getRouteResponse_sourcePath = Lens.lens (\GetRouteResponse' {sourcePath} -> sourcePath) (\s@GetRouteResponse' {} a -> s {sourcePath = a} :: GetRouteResponse)
+
+-- | The current state of the route.
+getRouteResponse_state :: Lens.Lens' GetRouteResponse (Prelude.Maybe RouteState)
+getRouteResponse_state = Lens.lens (\GetRouteResponse' {state} -> state) (\s@GetRouteResponse' {} a -> s {state = a} :: GetRouteResponse)
+
+-- | The tags assigned to the route. A tag is a label that you assign to an
+-- Amazon Web Services resource. Each tag consists of a key-value pair.
+getRouteResponse_tags :: Lens.Lens' GetRouteResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getRouteResponse_tags = Lens.lens (\GetRouteResponse' {tags} -> tags) (\s@GetRouteResponse' {} a -> s {tags = a} :: GetRouteResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The response's http status code.
+getRouteResponse_httpStatus :: Lens.Lens' GetRouteResponse Prelude.Int
+getRouteResponse_httpStatus = Lens.lens (\GetRouteResponse' {httpStatus} -> httpStatus) (\s@GetRouteResponse' {} a -> s {httpStatus = a} :: GetRouteResponse)
+
+instance Prelude.NFData GetRouteResponse where
+  rnf GetRouteResponse' {..} =
+    Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdByAccountId
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf includeChildPaths
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf methods
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf pathResourceToId
+      `Prelude.seq` Prelude.rnf routeId
+      `Prelude.seq` Prelude.rnf routeType
+      `Prelude.seq` Prelude.rnf serviceId
+      `Prelude.seq` Prelude.rnf sourcePath
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/GetService.hs b/gen/Amazonka/MigrationHubReFactorSpaces/GetService.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/GetService.hs
@@ -0,0 +1,415 @@
+{-# 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.MigrationHubReFactorSpaces.GetService
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an Amazon Web Services Migration Hub Refactor Spaces service.
+module Amazonka.MigrationHubReFactorSpaces.GetService
+  ( -- * Creating a Request
+    GetService (..),
+    newGetService,
+
+    -- * Request Lenses
+    getService_applicationIdentifier,
+    getService_environmentIdentifier,
+    getService_serviceIdentifier,
+
+    -- * Destructuring the Response
+    GetServiceResponse (..),
+    newGetServiceResponse,
+
+    -- * Response Lenses
+    getServiceResponse_applicationId,
+    getServiceResponse_arn,
+    getServiceResponse_createdByAccountId,
+    getServiceResponse_createdTime,
+    getServiceResponse_description,
+    getServiceResponse_endpointType,
+    getServiceResponse_environmentId,
+    getServiceResponse_error,
+    getServiceResponse_lambdaEndpoint,
+    getServiceResponse_lastUpdatedTime,
+    getServiceResponse_name,
+    getServiceResponse_ownerAccountId,
+    getServiceResponse_serviceId,
+    getServiceResponse_state,
+    getServiceResponse_tags,
+    getServiceResponse_urlEndpoint,
+    getServiceResponse_vpcId,
+    getServiceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetService' smart constructor.
+data GetService = GetService'
+  { -- | The ID of the application.
+    applicationIdentifier :: Prelude.Text,
+    -- | The ID of the environment.
+    environmentIdentifier :: Prelude.Text,
+    -- | The ID of the service.
+    serviceIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetService' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationIdentifier', 'getService_applicationIdentifier' - The ID of the application.
+--
+-- 'environmentIdentifier', 'getService_environmentIdentifier' - The ID of the environment.
+--
+-- 'serviceIdentifier', 'getService_serviceIdentifier' - The ID of the service.
+newGetService ::
+  -- | 'applicationIdentifier'
+  Prelude.Text ->
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  -- | 'serviceIdentifier'
+  Prelude.Text ->
+  GetService
+newGetService
+  pApplicationIdentifier_
+  pEnvironmentIdentifier_
+  pServiceIdentifier_ =
+    GetService'
+      { applicationIdentifier =
+          pApplicationIdentifier_,
+        environmentIdentifier = pEnvironmentIdentifier_,
+        serviceIdentifier = pServiceIdentifier_
+      }
+
+-- | The ID of the application.
+getService_applicationIdentifier :: Lens.Lens' GetService Prelude.Text
+getService_applicationIdentifier = Lens.lens (\GetService' {applicationIdentifier} -> applicationIdentifier) (\s@GetService' {} a -> s {applicationIdentifier = a} :: GetService)
+
+-- | The ID of the environment.
+getService_environmentIdentifier :: Lens.Lens' GetService Prelude.Text
+getService_environmentIdentifier = Lens.lens (\GetService' {environmentIdentifier} -> environmentIdentifier) (\s@GetService' {} a -> s {environmentIdentifier = a} :: GetService)
+
+-- | The ID of the service.
+getService_serviceIdentifier :: Lens.Lens' GetService Prelude.Text
+getService_serviceIdentifier = Lens.lens (\GetService' {serviceIdentifier} -> serviceIdentifier) (\s@GetService' {} a -> s {serviceIdentifier = a} :: GetService)
+
+instance Core.AWSRequest GetService where
+  type AWSResponse GetService = GetServiceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetServiceResponse'
+            Prelude.<$> (x Data..?> "ApplicationId")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreatedByAccountId")
+            Prelude.<*> (x Data..?> "CreatedTime")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "EndpointType")
+            Prelude.<*> (x Data..?> "EnvironmentId")
+            Prelude.<*> (x Data..?> "Error")
+            Prelude.<*> (x Data..?> "LambdaEndpoint")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "OwnerAccountId")
+            Prelude.<*> (x Data..?> "ServiceId")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "UrlEndpoint")
+            Prelude.<*> (x Data..?> "VpcId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetService where
+  hashWithSalt _salt GetService' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationIdentifier
+      `Prelude.hashWithSalt` environmentIdentifier
+      `Prelude.hashWithSalt` serviceIdentifier
+
+instance Prelude.NFData GetService where
+  rnf GetService' {..} =
+    Prelude.rnf applicationIdentifier
+      `Prelude.seq` Prelude.rnf environmentIdentifier
+      `Prelude.seq` Prelude.rnf serviceIdentifier
+
+instance Data.ToHeaders GetService where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetService where
+  toPath GetService' {..} =
+    Prelude.mconcat
+      [ "/environments/",
+        Data.toBS environmentIdentifier,
+        "/applications/",
+        Data.toBS applicationIdentifier,
+        "/services/",
+        Data.toBS serviceIdentifier
+      ]
+
+instance Data.ToQuery GetService where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetServiceResponse' smart constructor.
+data GetServiceResponse = GetServiceResponse'
+  { -- | The ID of the application.
+    applicationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the service.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of the service creator.
+    createdByAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp of when the service is created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the service.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The endpoint type of the service.
+    endpointType :: Prelude.Maybe ServiceEndpointType,
+    -- | The unique identifier of the environment.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | Any error associated with the service resource.
+    error :: Prelude.Maybe ErrorResponse,
+    -- | The configuration for the Lambda endpoint type.
+    --
+    -- The __Arn__ is the Amazon Resource Name (ARN) of the Lambda function
+    -- associated with this service.
+    lambdaEndpoint :: Prelude.Maybe LambdaEndpointConfig,
+    -- | A timestamp that indicates when the service was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the service.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of the service owner.
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The unique identifier of the service.
+    serviceId :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the service.
+    state :: Prelude.Maybe ServiceState,
+    -- | The tags assigned to the service. A tag is a label that you assign to an
+    -- Amazon Web Services resource. Each tag consists of a key-value pair.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The configuration for the URL endpoint type.
+    --
+    -- The __Url__ isthe URL of the endpoint type.
+    --
+    -- The __HealthUrl__ is the health check URL of the endpoint type.
+    urlEndpoint :: Prelude.Maybe UrlEndpointConfig,
+    -- | The ID of the virtual private cloud (VPC).
+    vpcId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetServiceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationId', 'getServiceResponse_applicationId' - The ID of the application.
+--
+-- 'arn', 'getServiceResponse_arn' - The Amazon Resource Name (ARN) of the service.
+--
+-- 'createdByAccountId', 'getServiceResponse_createdByAccountId' - The Amazon Web Services account ID of the service creator.
+--
+-- 'createdTime', 'getServiceResponse_createdTime' - The timestamp of when the service is created.
+--
+-- 'description', 'getServiceResponse_description' - The description of the service.
+--
+-- 'endpointType', 'getServiceResponse_endpointType' - The endpoint type of the service.
+--
+-- 'environmentId', 'getServiceResponse_environmentId' - The unique identifier of the environment.
+--
+-- 'error', 'getServiceResponse_error' - Any error associated with the service resource.
+--
+-- 'lambdaEndpoint', 'getServiceResponse_lambdaEndpoint' - The configuration for the Lambda endpoint type.
+--
+-- The __Arn__ is the Amazon Resource Name (ARN) of the Lambda function
+-- associated with this service.
+--
+-- 'lastUpdatedTime', 'getServiceResponse_lastUpdatedTime' - A timestamp that indicates when the service was last updated.
+--
+-- 'name', 'getServiceResponse_name' - The name of the service.
+--
+-- 'ownerAccountId', 'getServiceResponse_ownerAccountId' - The Amazon Web Services account ID of the service owner.
+--
+-- 'serviceId', 'getServiceResponse_serviceId' - The unique identifier of the service.
+--
+-- 'state', 'getServiceResponse_state' - The current state of the service.
+--
+-- 'tags', 'getServiceResponse_tags' - The tags assigned to the service. A tag is a label that you assign to an
+-- Amazon Web Services resource. Each tag consists of a key-value pair.
+--
+-- 'urlEndpoint', 'getServiceResponse_urlEndpoint' - The configuration for the URL endpoint type.
+--
+-- The __Url__ isthe URL of the endpoint type.
+--
+-- The __HealthUrl__ is the health check URL of the endpoint type.
+--
+-- 'vpcId', 'getServiceResponse_vpcId' - The ID of the virtual private cloud (VPC).
+--
+-- 'httpStatus', 'getServiceResponse_httpStatus' - The response's http status code.
+newGetServiceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetServiceResponse
+newGetServiceResponse pHttpStatus_ =
+  GetServiceResponse'
+    { applicationId =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      createdByAccountId = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      endpointType = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      error = Prelude.Nothing,
+      lambdaEndpoint = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      serviceId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      urlEndpoint = Prelude.Nothing,
+      vpcId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the application.
+getServiceResponse_applicationId :: Lens.Lens' GetServiceResponse (Prelude.Maybe Prelude.Text)
+getServiceResponse_applicationId = Lens.lens (\GetServiceResponse' {applicationId} -> applicationId) (\s@GetServiceResponse' {} a -> s {applicationId = a} :: GetServiceResponse)
+
+-- | The Amazon Resource Name (ARN) of the service.
+getServiceResponse_arn :: Lens.Lens' GetServiceResponse (Prelude.Maybe Prelude.Text)
+getServiceResponse_arn = Lens.lens (\GetServiceResponse' {arn} -> arn) (\s@GetServiceResponse' {} a -> s {arn = a} :: GetServiceResponse)
+
+-- | The Amazon Web Services account ID of the service creator.
+getServiceResponse_createdByAccountId :: Lens.Lens' GetServiceResponse (Prelude.Maybe Prelude.Text)
+getServiceResponse_createdByAccountId = Lens.lens (\GetServiceResponse' {createdByAccountId} -> createdByAccountId) (\s@GetServiceResponse' {} a -> s {createdByAccountId = a} :: GetServiceResponse)
+
+-- | The timestamp of when the service is created.
+getServiceResponse_createdTime :: Lens.Lens' GetServiceResponse (Prelude.Maybe Prelude.UTCTime)
+getServiceResponse_createdTime = Lens.lens (\GetServiceResponse' {createdTime} -> createdTime) (\s@GetServiceResponse' {} a -> s {createdTime = a} :: GetServiceResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the service.
+getServiceResponse_description :: Lens.Lens' GetServiceResponse (Prelude.Maybe Prelude.Text)
+getServiceResponse_description = Lens.lens (\GetServiceResponse' {description} -> description) (\s@GetServiceResponse' {} a -> s {description = a} :: GetServiceResponse)
+
+-- | The endpoint type of the service.
+getServiceResponse_endpointType :: Lens.Lens' GetServiceResponse (Prelude.Maybe ServiceEndpointType)
+getServiceResponse_endpointType = Lens.lens (\GetServiceResponse' {endpointType} -> endpointType) (\s@GetServiceResponse' {} a -> s {endpointType = a} :: GetServiceResponse)
+
+-- | The unique identifier of the environment.
+getServiceResponse_environmentId :: Lens.Lens' GetServiceResponse (Prelude.Maybe Prelude.Text)
+getServiceResponse_environmentId = Lens.lens (\GetServiceResponse' {environmentId} -> environmentId) (\s@GetServiceResponse' {} a -> s {environmentId = a} :: GetServiceResponse)
+
+-- | Any error associated with the service resource.
+getServiceResponse_error :: Lens.Lens' GetServiceResponse (Prelude.Maybe ErrorResponse)
+getServiceResponse_error = Lens.lens (\GetServiceResponse' {error} -> error) (\s@GetServiceResponse' {} a -> s {error = a} :: GetServiceResponse)
+
+-- | The configuration for the Lambda endpoint type.
+--
+-- The __Arn__ is the Amazon Resource Name (ARN) of the Lambda function
+-- associated with this service.
+getServiceResponse_lambdaEndpoint :: Lens.Lens' GetServiceResponse (Prelude.Maybe LambdaEndpointConfig)
+getServiceResponse_lambdaEndpoint = Lens.lens (\GetServiceResponse' {lambdaEndpoint} -> lambdaEndpoint) (\s@GetServiceResponse' {} a -> s {lambdaEndpoint = a} :: GetServiceResponse)
+
+-- | A timestamp that indicates when the service was last updated.
+getServiceResponse_lastUpdatedTime :: Lens.Lens' GetServiceResponse (Prelude.Maybe Prelude.UTCTime)
+getServiceResponse_lastUpdatedTime = Lens.lens (\GetServiceResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@GetServiceResponse' {} a -> s {lastUpdatedTime = a} :: GetServiceResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the service.
+getServiceResponse_name :: Lens.Lens' GetServiceResponse (Prelude.Maybe Prelude.Text)
+getServiceResponse_name = Lens.lens (\GetServiceResponse' {name} -> name) (\s@GetServiceResponse' {} a -> s {name = a} :: GetServiceResponse)
+
+-- | The Amazon Web Services account ID of the service owner.
+getServiceResponse_ownerAccountId :: Lens.Lens' GetServiceResponse (Prelude.Maybe Prelude.Text)
+getServiceResponse_ownerAccountId = Lens.lens (\GetServiceResponse' {ownerAccountId} -> ownerAccountId) (\s@GetServiceResponse' {} a -> s {ownerAccountId = a} :: GetServiceResponse)
+
+-- | The unique identifier of the service.
+getServiceResponse_serviceId :: Lens.Lens' GetServiceResponse (Prelude.Maybe Prelude.Text)
+getServiceResponse_serviceId = Lens.lens (\GetServiceResponse' {serviceId} -> serviceId) (\s@GetServiceResponse' {} a -> s {serviceId = a} :: GetServiceResponse)
+
+-- | The current state of the service.
+getServiceResponse_state :: Lens.Lens' GetServiceResponse (Prelude.Maybe ServiceState)
+getServiceResponse_state = Lens.lens (\GetServiceResponse' {state} -> state) (\s@GetServiceResponse' {} a -> s {state = a} :: GetServiceResponse)
+
+-- | The tags assigned to the service. A tag is a label that you assign to an
+-- Amazon Web Services resource. Each tag consists of a key-value pair.
+getServiceResponse_tags :: Lens.Lens' GetServiceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getServiceResponse_tags = Lens.lens (\GetServiceResponse' {tags} -> tags) (\s@GetServiceResponse' {} a -> s {tags = a} :: GetServiceResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The configuration for the URL endpoint type.
+--
+-- The __Url__ isthe URL of the endpoint type.
+--
+-- The __HealthUrl__ is the health check URL of the endpoint type.
+getServiceResponse_urlEndpoint :: Lens.Lens' GetServiceResponse (Prelude.Maybe UrlEndpointConfig)
+getServiceResponse_urlEndpoint = Lens.lens (\GetServiceResponse' {urlEndpoint} -> urlEndpoint) (\s@GetServiceResponse' {} a -> s {urlEndpoint = a} :: GetServiceResponse)
+
+-- | The ID of the virtual private cloud (VPC).
+getServiceResponse_vpcId :: Lens.Lens' GetServiceResponse (Prelude.Maybe Prelude.Text)
+getServiceResponse_vpcId = Lens.lens (\GetServiceResponse' {vpcId} -> vpcId) (\s@GetServiceResponse' {} a -> s {vpcId = a} :: GetServiceResponse)
+
+-- | The response's http status code.
+getServiceResponse_httpStatus :: Lens.Lens' GetServiceResponse Prelude.Int
+getServiceResponse_httpStatus = Lens.lens (\GetServiceResponse' {httpStatus} -> httpStatus) (\s@GetServiceResponse' {} a -> s {httpStatus = a} :: GetServiceResponse)
+
+instance Prelude.NFData GetServiceResponse where
+  rnf GetServiceResponse' {..} =
+    Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdByAccountId
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf endpointType
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf lambdaEndpoint
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf serviceId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf urlEndpoint
+      `Prelude.seq` Prelude.rnf vpcId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Lens.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Lens.hs
@@ -0,0 +1,500 @@
+{-# 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.MigrationHubReFactorSpaces.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.MigrationHubReFactorSpaces.Lens
+  ( -- * Operations
+
+    -- ** CreateApplication
+    createApplication_apiGatewayProxy,
+    createApplication_clientToken,
+    createApplication_tags,
+    createApplication_environmentIdentifier,
+    createApplication_name,
+    createApplication_proxyType,
+    createApplication_vpcId,
+    createApplicationResponse_apiGatewayProxy,
+    createApplicationResponse_applicationId,
+    createApplicationResponse_arn,
+    createApplicationResponse_createdByAccountId,
+    createApplicationResponse_createdTime,
+    createApplicationResponse_environmentId,
+    createApplicationResponse_lastUpdatedTime,
+    createApplicationResponse_name,
+    createApplicationResponse_ownerAccountId,
+    createApplicationResponse_proxyType,
+    createApplicationResponse_state,
+    createApplicationResponse_tags,
+    createApplicationResponse_vpcId,
+    createApplicationResponse_httpStatus,
+
+    -- ** CreateEnvironment
+    createEnvironment_clientToken,
+    createEnvironment_description,
+    createEnvironment_tags,
+    createEnvironment_name,
+    createEnvironment_networkFabricType,
+    createEnvironmentResponse_arn,
+    createEnvironmentResponse_createdTime,
+    createEnvironmentResponse_description,
+    createEnvironmentResponse_environmentId,
+    createEnvironmentResponse_lastUpdatedTime,
+    createEnvironmentResponse_name,
+    createEnvironmentResponse_networkFabricType,
+    createEnvironmentResponse_ownerAccountId,
+    createEnvironmentResponse_state,
+    createEnvironmentResponse_tags,
+    createEnvironmentResponse_httpStatus,
+
+    -- ** CreateRoute
+    createRoute_clientToken,
+    createRoute_defaultRoute,
+    createRoute_tags,
+    createRoute_uriPathRoute,
+    createRoute_applicationIdentifier,
+    createRoute_environmentIdentifier,
+    createRoute_routeType,
+    createRoute_serviceIdentifier,
+    createRouteResponse_applicationId,
+    createRouteResponse_arn,
+    createRouteResponse_createdByAccountId,
+    createRouteResponse_createdTime,
+    createRouteResponse_lastUpdatedTime,
+    createRouteResponse_ownerAccountId,
+    createRouteResponse_routeId,
+    createRouteResponse_routeType,
+    createRouteResponse_serviceId,
+    createRouteResponse_state,
+    createRouteResponse_tags,
+    createRouteResponse_uriPathRoute,
+    createRouteResponse_httpStatus,
+
+    -- ** CreateService
+    createService_clientToken,
+    createService_description,
+    createService_lambdaEndpoint,
+    createService_tags,
+    createService_urlEndpoint,
+    createService_vpcId,
+    createService_applicationIdentifier,
+    createService_endpointType,
+    createService_environmentIdentifier,
+    createService_name,
+    createServiceResponse_applicationId,
+    createServiceResponse_arn,
+    createServiceResponse_createdByAccountId,
+    createServiceResponse_createdTime,
+    createServiceResponse_description,
+    createServiceResponse_endpointType,
+    createServiceResponse_environmentId,
+    createServiceResponse_lambdaEndpoint,
+    createServiceResponse_lastUpdatedTime,
+    createServiceResponse_name,
+    createServiceResponse_ownerAccountId,
+    createServiceResponse_serviceId,
+    createServiceResponse_state,
+    createServiceResponse_tags,
+    createServiceResponse_urlEndpoint,
+    createServiceResponse_vpcId,
+    createServiceResponse_httpStatus,
+
+    -- ** DeleteApplication
+    deleteApplication_applicationIdentifier,
+    deleteApplication_environmentIdentifier,
+    deleteApplicationResponse_applicationId,
+    deleteApplicationResponse_arn,
+    deleteApplicationResponse_environmentId,
+    deleteApplicationResponse_lastUpdatedTime,
+    deleteApplicationResponse_name,
+    deleteApplicationResponse_state,
+    deleteApplicationResponse_httpStatus,
+
+    -- ** DeleteEnvironment
+    deleteEnvironment_environmentIdentifier,
+    deleteEnvironmentResponse_arn,
+    deleteEnvironmentResponse_environmentId,
+    deleteEnvironmentResponse_lastUpdatedTime,
+    deleteEnvironmentResponse_name,
+    deleteEnvironmentResponse_state,
+    deleteEnvironmentResponse_httpStatus,
+
+    -- ** DeleteResourcePolicy
+    deleteResourcePolicy_identifier,
+    deleteResourcePolicyResponse_httpStatus,
+
+    -- ** DeleteRoute
+    deleteRoute_applicationIdentifier,
+    deleteRoute_environmentIdentifier,
+    deleteRoute_routeIdentifier,
+    deleteRouteResponse_applicationId,
+    deleteRouteResponse_arn,
+    deleteRouteResponse_lastUpdatedTime,
+    deleteRouteResponse_routeId,
+    deleteRouteResponse_serviceId,
+    deleteRouteResponse_state,
+    deleteRouteResponse_httpStatus,
+
+    -- ** DeleteService
+    deleteService_applicationIdentifier,
+    deleteService_environmentIdentifier,
+    deleteService_serviceIdentifier,
+    deleteServiceResponse_applicationId,
+    deleteServiceResponse_arn,
+    deleteServiceResponse_environmentId,
+    deleteServiceResponse_lastUpdatedTime,
+    deleteServiceResponse_name,
+    deleteServiceResponse_serviceId,
+    deleteServiceResponse_state,
+    deleteServiceResponse_httpStatus,
+
+    -- ** GetApplication
+    getApplication_applicationIdentifier,
+    getApplication_environmentIdentifier,
+    getApplicationResponse_apiGatewayProxy,
+    getApplicationResponse_applicationId,
+    getApplicationResponse_arn,
+    getApplicationResponse_createdByAccountId,
+    getApplicationResponse_createdTime,
+    getApplicationResponse_environmentId,
+    getApplicationResponse_error,
+    getApplicationResponse_lastUpdatedTime,
+    getApplicationResponse_name,
+    getApplicationResponse_ownerAccountId,
+    getApplicationResponse_proxyType,
+    getApplicationResponse_state,
+    getApplicationResponse_tags,
+    getApplicationResponse_vpcId,
+    getApplicationResponse_httpStatus,
+
+    -- ** GetEnvironment
+    getEnvironment_environmentIdentifier,
+    getEnvironmentResponse_arn,
+    getEnvironmentResponse_createdTime,
+    getEnvironmentResponse_description,
+    getEnvironmentResponse_environmentId,
+    getEnvironmentResponse_error,
+    getEnvironmentResponse_lastUpdatedTime,
+    getEnvironmentResponse_name,
+    getEnvironmentResponse_networkFabricType,
+    getEnvironmentResponse_ownerAccountId,
+    getEnvironmentResponse_state,
+    getEnvironmentResponse_tags,
+    getEnvironmentResponse_transitGatewayId,
+    getEnvironmentResponse_httpStatus,
+
+    -- ** GetResourcePolicy
+    getResourcePolicy_identifier,
+    getResourcePolicyResponse_policy,
+    getResourcePolicyResponse_httpStatus,
+
+    -- ** GetRoute
+    getRoute_applicationIdentifier,
+    getRoute_environmentIdentifier,
+    getRoute_routeIdentifier,
+    getRouteResponse_applicationId,
+    getRouteResponse_arn,
+    getRouteResponse_createdByAccountId,
+    getRouteResponse_createdTime,
+    getRouteResponse_environmentId,
+    getRouteResponse_error,
+    getRouteResponse_includeChildPaths,
+    getRouteResponse_lastUpdatedTime,
+    getRouteResponse_methods,
+    getRouteResponse_ownerAccountId,
+    getRouteResponse_pathResourceToId,
+    getRouteResponse_routeId,
+    getRouteResponse_routeType,
+    getRouteResponse_serviceId,
+    getRouteResponse_sourcePath,
+    getRouteResponse_state,
+    getRouteResponse_tags,
+    getRouteResponse_httpStatus,
+
+    -- ** GetService
+    getService_applicationIdentifier,
+    getService_environmentIdentifier,
+    getService_serviceIdentifier,
+    getServiceResponse_applicationId,
+    getServiceResponse_arn,
+    getServiceResponse_createdByAccountId,
+    getServiceResponse_createdTime,
+    getServiceResponse_description,
+    getServiceResponse_endpointType,
+    getServiceResponse_environmentId,
+    getServiceResponse_error,
+    getServiceResponse_lambdaEndpoint,
+    getServiceResponse_lastUpdatedTime,
+    getServiceResponse_name,
+    getServiceResponse_ownerAccountId,
+    getServiceResponse_serviceId,
+    getServiceResponse_state,
+    getServiceResponse_tags,
+    getServiceResponse_urlEndpoint,
+    getServiceResponse_vpcId,
+    getServiceResponse_httpStatus,
+
+    -- ** ListApplications
+    listApplications_maxResults,
+    listApplications_nextToken,
+    listApplications_environmentIdentifier,
+    listApplicationsResponse_applicationSummaryList,
+    listApplicationsResponse_nextToken,
+    listApplicationsResponse_httpStatus,
+
+    -- ** ListEnvironmentVpcs
+    listEnvironmentVpcs_maxResults,
+    listEnvironmentVpcs_nextToken,
+    listEnvironmentVpcs_environmentIdentifier,
+    listEnvironmentVpcsResponse_environmentVpcList,
+    listEnvironmentVpcsResponse_nextToken,
+    listEnvironmentVpcsResponse_httpStatus,
+
+    -- ** ListEnvironments
+    listEnvironments_maxResults,
+    listEnvironments_nextToken,
+    listEnvironmentsResponse_environmentSummaryList,
+    listEnvironmentsResponse_nextToken,
+    listEnvironmentsResponse_httpStatus,
+
+    -- ** ListRoutes
+    listRoutes_maxResults,
+    listRoutes_nextToken,
+    listRoutes_applicationIdentifier,
+    listRoutes_environmentIdentifier,
+    listRoutesResponse_nextToken,
+    listRoutesResponse_routeSummaryList,
+    listRoutesResponse_httpStatus,
+
+    -- ** ListServices
+    listServices_maxResults,
+    listServices_nextToken,
+    listServices_applicationIdentifier,
+    listServices_environmentIdentifier,
+    listServicesResponse_nextToken,
+    listServicesResponse_serviceSummaryList,
+    listServicesResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** PutResourcePolicy
+    putResourcePolicy_policy,
+    putResourcePolicy_resourceArn,
+    putResourcePolicyResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdateRoute
+    updateRoute_activationState,
+    updateRoute_applicationIdentifier,
+    updateRoute_environmentIdentifier,
+    updateRoute_routeIdentifier,
+    updateRouteResponse_applicationId,
+    updateRouteResponse_arn,
+    updateRouteResponse_lastUpdatedTime,
+    updateRouteResponse_routeId,
+    updateRouteResponse_serviceId,
+    updateRouteResponse_state,
+    updateRouteResponse_httpStatus,
+
+    -- * Types
+
+    -- ** ApiGatewayProxyConfig
+    apiGatewayProxyConfig_apiGatewayId,
+    apiGatewayProxyConfig_endpointType,
+    apiGatewayProxyConfig_nlbArn,
+    apiGatewayProxyConfig_nlbName,
+    apiGatewayProxyConfig_proxyUrl,
+    apiGatewayProxyConfig_stageName,
+    apiGatewayProxyConfig_vpcLinkId,
+
+    -- ** ApiGatewayProxyInput
+    apiGatewayProxyInput_endpointType,
+    apiGatewayProxyInput_stageName,
+
+    -- ** ApiGatewayProxySummary
+    apiGatewayProxySummary_apiGatewayId,
+    apiGatewayProxySummary_endpointType,
+    apiGatewayProxySummary_nlbArn,
+    apiGatewayProxySummary_nlbName,
+    apiGatewayProxySummary_proxyUrl,
+    apiGatewayProxySummary_stageName,
+    apiGatewayProxySummary_vpcLinkId,
+
+    -- ** ApplicationSummary
+    applicationSummary_apiGatewayProxy,
+    applicationSummary_applicationId,
+    applicationSummary_arn,
+    applicationSummary_createdByAccountId,
+    applicationSummary_createdTime,
+    applicationSummary_environmentId,
+    applicationSummary_error,
+    applicationSummary_lastUpdatedTime,
+    applicationSummary_name,
+    applicationSummary_ownerAccountId,
+    applicationSummary_proxyType,
+    applicationSummary_state,
+    applicationSummary_tags,
+    applicationSummary_vpcId,
+
+    -- ** DefaultRouteInput
+    defaultRouteInput_activationState,
+
+    -- ** EnvironmentSummary
+    environmentSummary_arn,
+    environmentSummary_createdTime,
+    environmentSummary_description,
+    environmentSummary_environmentId,
+    environmentSummary_error,
+    environmentSummary_lastUpdatedTime,
+    environmentSummary_name,
+    environmentSummary_networkFabricType,
+    environmentSummary_ownerAccountId,
+    environmentSummary_state,
+    environmentSummary_tags,
+    environmentSummary_transitGatewayId,
+
+    -- ** EnvironmentVpc
+    environmentVpc_accountId,
+    environmentVpc_cidrBlocks,
+    environmentVpc_createdTime,
+    environmentVpc_environmentId,
+    environmentVpc_lastUpdatedTime,
+    environmentVpc_vpcId,
+    environmentVpc_vpcName,
+
+    -- ** ErrorResponse
+    errorResponse_accountId,
+    errorResponse_additionalDetails,
+    errorResponse_code,
+    errorResponse_message,
+    errorResponse_resourceIdentifier,
+    errorResponse_resourceType,
+
+    -- ** LambdaEndpointConfig
+    lambdaEndpointConfig_arn,
+
+    -- ** LambdaEndpointInput
+    lambdaEndpointInput_arn,
+
+    -- ** LambdaEndpointSummary
+    lambdaEndpointSummary_arn,
+
+    -- ** RouteSummary
+    routeSummary_applicationId,
+    routeSummary_arn,
+    routeSummary_createdByAccountId,
+    routeSummary_createdTime,
+    routeSummary_environmentId,
+    routeSummary_error,
+    routeSummary_includeChildPaths,
+    routeSummary_lastUpdatedTime,
+    routeSummary_methods,
+    routeSummary_ownerAccountId,
+    routeSummary_pathResourceToId,
+    routeSummary_routeId,
+    routeSummary_routeType,
+    routeSummary_serviceId,
+    routeSummary_sourcePath,
+    routeSummary_state,
+    routeSummary_tags,
+
+    -- ** ServiceSummary
+    serviceSummary_applicationId,
+    serviceSummary_arn,
+    serviceSummary_createdByAccountId,
+    serviceSummary_createdTime,
+    serviceSummary_description,
+    serviceSummary_endpointType,
+    serviceSummary_environmentId,
+    serviceSummary_error,
+    serviceSummary_lambdaEndpoint,
+    serviceSummary_lastUpdatedTime,
+    serviceSummary_name,
+    serviceSummary_ownerAccountId,
+    serviceSummary_serviceId,
+    serviceSummary_state,
+    serviceSummary_tags,
+    serviceSummary_urlEndpoint,
+    serviceSummary_vpcId,
+
+    -- ** UriPathRouteInput
+    uriPathRouteInput_includeChildPaths,
+    uriPathRouteInput_methods,
+    uriPathRouteInput_activationState,
+    uriPathRouteInput_sourcePath,
+
+    -- ** UrlEndpointConfig
+    urlEndpointConfig_healthUrl,
+    urlEndpointConfig_url,
+
+    -- ** UrlEndpointInput
+    urlEndpointInput_healthUrl,
+    urlEndpointInput_url,
+
+    -- ** UrlEndpointSummary
+    urlEndpointSummary_healthUrl,
+    urlEndpointSummary_url,
+  )
+where
+
+import Amazonka.MigrationHubReFactorSpaces.CreateApplication
+import Amazonka.MigrationHubReFactorSpaces.CreateEnvironment
+import Amazonka.MigrationHubReFactorSpaces.CreateRoute
+import Amazonka.MigrationHubReFactorSpaces.CreateService
+import Amazonka.MigrationHubReFactorSpaces.DeleteApplication
+import Amazonka.MigrationHubReFactorSpaces.DeleteEnvironment
+import Amazonka.MigrationHubReFactorSpaces.DeleteResourcePolicy
+import Amazonka.MigrationHubReFactorSpaces.DeleteRoute
+import Amazonka.MigrationHubReFactorSpaces.DeleteService
+import Amazonka.MigrationHubReFactorSpaces.GetApplication
+import Amazonka.MigrationHubReFactorSpaces.GetEnvironment
+import Amazonka.MigrationHubReFactorSpaces.GetResourcePolicy
+import Amazonka.MigrationHubReFactorSpaces.GetRoute
+import Amazonka.MigrationHubReFactorSpaces.GetService
+import Amazonka.MigrationHubReFactorSpaces.ListApplications
+import Amazonka.MigrationHubReFactorSpaces.ListEnvironmentVpcs
+import Amazonka.MigrationHubReFactorSpaces.ListEnvironments
+import Amazonka.MigrationHubReFactorSpaces.ListRoutes
+import Amazonka.MigrationHubReFactorSpaces.ListServices
+import Amazonka.MigrationHubReFactorSpaces.ListTagsForResource
+import Amazonka.MigrationHubReFactorSpaces.PutResourcePolicy
+import Amazonka.MigrationHubReFactorSpaces.TagResource
+import Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayProxyConfig
+import Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayProxyInput
+import Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayProxySummary
+import Amazonka.MigrationHubReFactorSpaces.Types.ApplicationSummary
+import Amazonka.MigrationHubReFactorSpaces.Types.DefaultRouteInput
+import Amazonka.MigrationHubReFactorSpaces.Types.EnvironmentSummary
+import Amazonka.MigrationHubReFactorSpaces.Types.EnvironmentVpc
+import Amazonka.MigrationHubReFactorSpaces.Types.ErrorResponse
+import Amazonka.MigrationHubReFactorSpaces.Types.LambdaEndpointConfig
+import Amazonka.MigrationHubReFactorSpaces.Types.LambdaEndpointInput
+import Amazonka.MigrationHubReFactorSpaces.Types.LambdaEndpointSummary
+import Amazonka.MigrationHubReFactorSpaces.Types.RouteSummary
+import Amazonka.MigrationHubReFactorSpaces.Types.ServiceSummary
+import Amazonka.MigrationHubReFactorSpaces.Types.UriPathRouteInput
+import Amazonka.MigrationHubReFactorSpaces.Types.UrlEndpointConfig
+import Amazonka.MigrationHubReFactorSpaces.Types.UrlEndpointInput
+import Amazonka.MigrationHubReFactorSpaces.Types.UrlEndpointSummary
+import Amazonka.MigrationHubReFactorSpaces.UntagResource
+import Amazonka.MigrationHubReFactorSpaces.UpdateRoute
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/ListApplications.hs b/gen/Amazonka/MigrationHubReFactorSpaces/ListApplications.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/ListApplications.hs
@@ -0,0 +1,240 @@
+{-# 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.MigrationHubReFactorSpaces.ListApplications
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all the Amazon Web Services Migration Hub Refactor Spaces
+-- applications within an environment.
+--
+-- This operation returns paginated results.
+module Amazonka.MigrationHubReFactorSpaces.ListApplications
+  ( -- * Creating a Request
+    ListApplications (..),
+    newListApplications,
+
+    -- * Request Lenses
+    listApplications_maxResults,
+    listApplications_nextToken,
+    listApplications_environmentIdentifier,
+
+    -- * Destructuring the Response
+    ListApplicationsResponse (..),
+    newListApplicationsResponse,
+
+    -- * Response Lenses
+    listApplicationsResponse_applicationSummaryList,
+    listApplicationsResponse_nextToken,
+    listApplicationsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListApplications' smart constructor.
+data ListApplications = ListApplications'
+  { -- | The maximum number of results to return with a single call. To retrieve
+    -- the remaining results, make another call with the returned @nextToken@
+    -- value.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the environment.
+    environmentIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListApplications' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listApplications_maxResults' - The maximum number of results to return with a single call. To retrieve
+-- the remaining results, make another call with the returned @nextToken@
+-- value.
+--
+-- 'nextToken', 'listApplications_nextToken' - The token for the next page of results.
+--
+-- 'environmentIdentifier', 'listApplications_environmentIdentifier' - The ID of the environment.
+newListApplications ::
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  ListApplications
+newListApplications pEnvironmentIdentifier_ =
+  ListApplications'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      environmentIdentifier = pEnvironmentIdentifier_
+    }
+
+-- | The maximum number of results to return with a single call. To retrieve
+-- the remaining results, make another call with the returned @nextToken@
+-- value.
+listApplications_maxResults :: Lens.Lens' ListApplications (Prelude.Maybe Prelude.Natural)
+listApplications_maxResults = Lens.lens (\ListApplications' {maxResults} -> maxResults) (\s@ListApplications' {} a -> s {maxResults = a} :: ListApplications)
+
+-- | The token for the next page of results.
+listApplications_nextToken :: Lens.Lens' ListApplications (Prelude.Maybe Prelude.Text)
+listApplications_nextToken = Lens.lens (\ListApplications' {nextToken} -> nextToken) (\s@ListApplications' {} a -> s {nextToken = a} :: ListApplications)
+
+-- | The ID of the environment.
+listApplications_environmentIdentifier :: Lens.Lens' ListApplications Prelude.Text
+listApplications_environmentIdentifier = Lens.lens (\ListApplications' {environmentIdentifier} -> environmentIdentifier) (\s@ListApplications' {} a -> s {environmentIdentifier = a} :: ListApplications)
+
+instance Core.AWSPager ListApplications where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listApplicationsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listApplicationsResponse_applicationSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listApplications_nextToken
+          Lens..~ rs
+          Lens.^? listApplicationsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListApplications where
+  type
+    AWSResponse ListApplications =
+      ListApplicationsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListApplicationsResponse'
+            Prelude.<$> ( x
+                            Data..?> "ApplicationSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListApplications where
+  hashWithSalt _salt ListApplications' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` environmentIdentifier
+
+instance Prelude.NFData ListApplications where
+  rnf ListApplications' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf environmentIdentifier
+
+instance Data.ToHeaders ListApplications where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListApplications where
+  toPath ListApplications' {..} =
+    Prelude.mconcat
+      [ "/environments/",
+        Data.toBS environmentIdentifier,
+        "/applications"
+      ]
+
+instance Data.ToQuery ListApplications where
+  toQuery ListApplications' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListApplicationsResponse' smart constructor.
+data ListApplicationsResponse = ListApplicationsResponse'
+  { -- | The list of @ApplicationSummary@ objects.
+    applicationSummaryList :: Prelude.Maybe [ApplicationSummary],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListApplicationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationSummaryList', 'listApplicationsResponse_applicationSummaryList' - The list of @ApplicationSummary@ objects.
+--
+-- 'nextToken', 'listApplicationsResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'listApplicationsResponse_httpStatus' - The response's http status code.
+newListApplicationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListApplicationsResponse
+newListApplicationsResponse pHttpStatus_ =
+  ListApplicationsResponse'
+    { applicationSummaryList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of @ApplicationSummary@ objects.
+listApplicationsResponse_applicationSummaryList :: Lens.Lens' ListApplicationsResponse (Prelude.Maybe [ApplicationSummary])
+listApplicationsResponse_applicationSummaryList = Lens.lens (\ListApplicationsResponse' {applicationSummaryList} -> applicationSummaryList) (\s@ListApplicationsResponse' {} a -> s {applicationSummaryList = a} :: ListApplicationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+listApplicationsResponse_nextToken :: Lens.Lens' ListApplicationsResponse (Prelude.Maybe Prelude.Text)
+listApplicationsResponse_nextToken = Lens.lens (\ListApplicationsResponse' {nextToken} -> nextToken) (\s@ListApplicationsResponse' {} a -> s {nextToken = a} :: ListApplicationsResponse)
+
+-- | The response's http status code.
+listApplicationsResponse_httpStatus :: Lens.Lens' ListApplicationsResponse Prelude.Int
+listApplicationsResponse_httpStatus = Lens.lens (\ListApplicationsResponse' {httpStatus} -> httpStatus) (\s@ListApplicationsResponse' {} a -> s {httpStatus = a} :: ListApplicationsResponse)
+
+instance Prelude.NFData ListApplicationsResponse where
+  rnf ListApplicationsResponse' {..} =
+    Prelude.rnf applicationSummaryList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/ListEnvironmentVpcs.hs b/gen/Amazonka/MigrationHubReFactorSpaces/ListEnvironmentVpcs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/ListEnvironmentVpcs.hs
@@ -0,0 +1,240 @@
+{-# 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.MigrationHubReFactorSpaces.ListEnvironmentVpcs
+-- 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 all Amazon Web Services Migration Hub Refactor Spaces service
+-- virtual private clouds (VPCs) that are part of the environment.
+--
+-- This operation returns paginated results.
+module Amazonka.MigrationHubReFactorSpaces.ListEnvironmentVpcs
+  ( -- * Creating a Request
+    ListEnvironmentVpcs (..),
+    newListEnvironmentVpcs,
+
+    -- * Request Lenses
+    listEnvironmentVpcs_maxResults,
+    listEnvironmentVpcs_nextToken,
+    listEnvironmentVpcs_environmentIdentifier,
+
+    -- * Destructuring the Response
+    ListEnvironmentVpcsResponse (..),
+    newListEnvironmentVpcsResponse,
+
+    -- * Response Lenses
+    listEnvironmentVpcsResponse_environmentVpcList,
+    listEnvironmentVpcsResponse_nextToken,
+    listEnvironmentVpcsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListEnvironmentVpcs' smart constructor.
+data ListEnvironmentVpcs = ListEnvironmentVpcs'
+  { -- | The maximum number of results to return with a single call. To retrieve
+    -- the remaining results, make another call with the returned @nextToken@
+    -- value.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the environment.
+    environmentIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEnvironmentVpcs' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listEnvironmentVpcs_maxResults' - The maximum number of results to return with a single call. To retrieve
+-- the remaining results, make another call with the returned @nextToken@
+-- value.
+--
+-- 'nextToken', 'listEnvironmentVpcs_nextToken' - The token for the next page of results.
+--
+-- 'environmentIdentifier', 'listEnvironmentVpcs_environmentIdentifier' - The ID of the environment.
+newListEnvironmentVpcs ::
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  ListEnvironmentVpcs
+newListEnvironmentVpcs pEnvironmentIdentifier_ =
+  ListEnvironmentVpcs'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      environmentIdentifier = pEnvironmentIdentifier_
+    }
+
+-- | The maximum number of results to return with a single call. To retrieve
+-- the remaining results, make another call with the returned @nextToken@
+-- value.
+listEnvironmentVpcs_maxResults :: Lens.Lens' ListEnvironmentVpcs (Prelude.Maybe Prelude.Natural)
+listEnvironmentVpcs_maxResults = Lens.lens (\ListEnvironmentVpcs' {maxResults} -> maxResults) (\s@ListEnvironmentVpcs' {} a -> s {maxResults = a} :: ListEnvironmentVpcs)
+
+-- | The token for the next page of results.
+listEnvironmentVpcs_nextToken :: Lens.Lens' ListEnvironmentVpcs (Prelude.Maybe Prelude.Text)
+listEnvironmentVpcs_nextToken = Lens.lens (\ListEnvironmentVpcs' {nextToken} -> nextToken) (\s@ListEnvironmentVpcs' {} a -> s {nextToken = a} :: ListEnvironmentVpcs)
+
+-- | The ID of the environment.
+listEnvironmentVpcs_environmentIdentifier :: Lens.Lens' ListEnvironmentVpcs Prelude.Text
+listEnvironmentVpcs_environmentIdentifier = Lens.lens (\ListEnvironmentVpcs' {environmentIdentifier} -> environmentIdentifier) (\s@ListEnvironmentVpcs' {} a -> s {environmentIdentifier = a} :: ListEnvironmentVpcs)
+
+instance Core.AWSPager ListEnvironmentVpcs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listEnvironmentVpcsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listEnvironmentVpcsResponse_environmentVpcList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listEnvironmentVpcs_nextToken
+          Lens..~ rs
+          Lens.^? listEnvironmentVpcsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListEnvironmentVpcs where
+  type
+    AWSResponse ListEnvironmentVpcs =
+      ListEnvironmentVpcsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListEnvironmentVpcsResponse'
+            Prelude.<$> ( x
+                            Data..?> "EnvironmentVpcList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListEnvironmentVpcs where
+  hashWithSalt _salt ListEnvironmentVpcs' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` environmentIdentifier
+
+instance Prelude.NFData ListEnvironmentVpcs where
+  rnf ListEnvironmentVpcs' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf environmentIdentifier
+
+instance Data.ToHeaders ListEnvironmentVpcs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListEnvironmentVpcs where
+  toPath ListEnvironmentVpcs' {..} =
+    Prelude.mconcat
+      [ "/environments/",
+        Data.toBS environmentIdentifier,
+        "/vpcs"
+      ]
+
+instance Data.ToQuery ListEnvironmentVpcs where
+  toQuery ListEnvironmentVpcs' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListEnvironmentVpcsResponse' smart constructor.
+data ListEnvironmentVpcsResponse = ListEnvironmentVpcsResponse'
+  { -- | The list of @EnvironmentVpc@ objects.
+    environmentVpcList :: Prelude.Maybe [EnvironmentVpc],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEnvironmentVpcsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'environmentVpcList', 'listEnvironmentVpcsResponse_environmentVpcList' - The list of @EnvironmentVpc@ objects.
+--
+-- 'nextToken', 'listEnvironmentVpcsResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'listEnvironmentVpcsResponse_httpStatus' - The response's http status code.
+newListEnvironmentVpcsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListEnvironmentVpcsResponse
+newListEnvironmentVpcsResponse pHttpStatus_ =
+  ListEnvironmentVpcsResponse'
+    { environmentVpcList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of @EnvironmentVpc@ objects.
+listEnvironmentVpcsResponse_environmentVpcList :: Lens.Lens' ListEnvironmentVpcsResponse (Prelude.Maybe [EnvironmentVpc])
+listEnvironmentVpcsResponse_environmentVpcList = Lens.lens (\ListEnvironmentVpcsResponse' {environmentVpcList} -> environmentVpcList) (\s@ListEnvironmentVpcsResponse' {} a -> s {environmentVpcList = a} :: ListEnvironmentVpcsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+listEnvironmentVpcsResponse_nextToken :: Lens.Lens' ListEnvironmentVpcsResponse (Prelude.Maybe Prelude.Text)
+listEnvironmentVpcsResponse_nextToken = Lens.lens (\ListEnvironmentVpcsResponse' {nextToken} -> nextToken) (\s@ListEnvironmentVpcsResponse' {} a -> s {nextToken = a} :: ListEnvironmentVpcsResponse)
+
+-- | The response's http status code.
+listEnvironmentVpcsResponse_httpStatus :: Lens.Lens' ListEnvironmentVpcsResponse Prelude.Int
+listEnvironmentVpcsResponse_httpStatus = Lens.lens (\ListEnvironmentVpcsResponse' {httpStatus} -> httpStatus) (\s@ListEnvironmentVpcsResponse' {} a -> s {httpStatus = a} :: ListEnvironmentVpcsResponse)
+
+instance Prelude.NFData ListEnvironmentVpcsResponse where
+  rnf ListEnvironmentVpcsResponse' {..} =
+    Prelude.rnf environmentVpcList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/ListEnvironments.hs b/gen/Amazonka/MigrationHubReFactorSpaces/ListEnvironments.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/ListEnvironments.hs
@@ -0,0 +1,221 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.ListEnvironments
+-- 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 Amazon Web Services Migration Hub Refactor Spaces environments
+-- owned by a caller account or shared with the caller account.
+--
+-- This operation returns paginated results.
+module Amazonka.MigrationHubReFactorSpaces.ListEnvironments
+  ( -- * Creating a Request
+    ListEnvironments (..),
+    newListEnvironments,
+
+    -- * Request Lenses
+    listEnvironments_maxResults,
+    listEnvironments_nextToken,
+
+    -- * Destructuring the Response
+    ListEnvironmentsResponse (..),
+    newListEnvironmentsResponse,
+
+    -- * Response Lenses
+    listEnvironmentsResponse_environmentSummaryList,
+    listEnvironmentsResponse_nextToken,
+    listEnvironmentsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListEnvironments' smart constructor.
+data ListEnvironments = ListEnvironments'
+  { -- | The maximum number of results to return with a single call. To retrieve
+    -- the remaining results, make another call with the returned @nextToken@
+    -- value.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEnvironments' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listEnvironments_maxResults' - The maximum number of results to return with a single call. To retrieve
+-- the remaining results, make another call with the returned @nextToken@
+-- value.
+--
+-- 'nextToken', 'listEnvironments_nextToken' - The token for the next page of results.
+newListEnvironments ::
+  ListEnvironments
+newListEnvironments =
+  ListEnvironments'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return with a single call. To retrieve
+-- the remaining results, make another call with the returned @nextToken@
+-- value.
+listEnvironments_maxResults :: Lens.Lens' ListEnvironments (Prelude.Maybe Prelude.Natural)
+listEnvironments_maxResults = Lens.lens (\ListEnvironments' {maxResults} -> maxResults) (\s@ListEnvironments' {} a -> s {maxResults = a} :: ListEnvironments)
+
+-- | The token for the next page of results.
+listEnvironments_nextToken :: Lens.Lens' ListEnvironments (Prelude.Maybe Prelude.Text)
+listEnvironments_nextToken = Lens.lens (\ListEnvironments' {nextToken} -> nextToken) (\s@ListEnvironments' {} a -> s {nextToken = a} :: ListEnvironments)
+
+instance Core.AWSPager ListEnvironments where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listEnvironmentsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listEnvironmentsResponse_environmentSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listEnvironments_nextToken
+          Lens..~ rs
+          Lens.^? listEnvironmentsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListEnvironments where
+  type
+    AWSResponse ListEnvironments =
+      ListEnvironmentsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListEnvironmentsResponse'
+            Prelude.<$> ( x
+                            Data..?> "EnvironmentSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListEnvironments where
+  hashWithSalt _salt ListEnvironments' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListEnvironments where
+  rnf ListEnvironments' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListEnvironments where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListEnvironments where
+  toPath = Prelude.const "/environments"
+
+instance Data.ToQuery ListEnvironments where
+  toQuery ListEnvironments' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListEnvironmentsResponse' smart constructor.
+data ListEnvironmentsResponse = ListEnvironmentsResponse'
+  { -- | The list of @EnvironmentSummary@ objects.
+    environmentSummaryList :: Prelude.Maybe [EnvironmentSummary],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEnvironmentsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'environmentSummaryList', 'listEnvironmentsResponse_environmentSummaryList' - The list of @EnvironmentSummary@ objects.
+--
+-- 'nextToken', 'listEnvironmentsResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'listEnvironmentsResponse_httpStatus' - The response's http status code.
+newListEnvironmentsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListEnvironmentsResponse
+newListEnvironmentsResponse pHttpStatus_ =
+  ListEnvironmentsResponse'
+    { environmentSummaryList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of @EnvironmentSummary@ objects.
+listEnvironmentsResponse_environmentSummaryList :: Lens.Lens' ListEnvironmentsResponse (Prelude.Maybe [EnvironmentSummary])
+listEnvironmentsResponse_environmentSummaryList = Lens.lens (\ListEnvironmentsResponse' {environmentSummaryList} -> environmentSummaryList) (\s@ListEnvironmentsResponse' {} a -> s {environmentSummaryList = a} :: ListEnvironmentsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+listEnvironmentsResponse_nextToken :: Lens.Lens' ListEnvironmentsResponse (Prelude.Maybe Prelude.Text)
+listEnvironmentsResponse_nextToken = Lens.lens (\ListEnvironmentsResponse' {nextToken} -> nextToken) (\s@ListEnvironmentsResponse' {} a -> s {nextToken = a} :: ListEnvironmentsResponse)
+
+-- | The response's http status code.
+listEnvironmentsResponse_httpStatus :: Lens.Lens' ListEnvironmentsResponse Prelude.Int
+listEnvironmentsResponse_httpStatus = Lens.lens (\ListEnvironmentsResponse' {httpStatus} -> httpStatus) (\s@ListEnvironmentsResponse' {} a -> s {httpStatus = a} :: ListEnvironmentsResponse)
+
+instance Prelude.NFData ListEnvironmentsResponse where
+  rnf ListEnvironmentsResponse' {..} =
+    Prelude.rnf environmentSummaryList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/ListRoutes.hs b/gen/Amazonka/MigrationHubReFactorSpaces/ListRoutes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/ListRoutes.hs
@@ -0,0 +1,255 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.ListRoutes
+-- 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 all the Amazon Web Services Migration Hub Refactor Spaces routes
+-- within an application.
+--
+-- This operation returns paginated results.
+module Amazonka.MigrationHubReFactorSpaces.ListRoutes
+  ( -- * Creating a Request
+    ListRoutes (..),
+    newListRoutes,
+
+    -- * Request Lenses
+    listRoutes_maxResults,
+    listRoutes_nextToken,
+    listRoutes_applicationIdentifier,
+    listRoutes_environmentIdentifier,
+
+    -- * Destructuring the Response
+    ListRoutesResponse (..),
+    newListRoutesResponse,
+
+    -- * Response Lenses
+    listRoutesResponse_nextToken,
+    listRoutesResponse_routeSummaryList,
+    listRoutesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListRoutes' smart constructor.
+data ListRoutes = ListRoutes'
+  { -- | The maximum number of results to return with a single call. To retrieve
+    -- the remaining results, make another call with the returned @nextToken@
+    -- value.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the application.
+    applicationIdentifier :: Prelude.Text,
+    -- | The ID of the environment.
+    environmentIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRoutes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRoutes_maxResults' - The maximum number of results to return with a single call. To retrieve
+-- the remaining results, make another call with the returned @nextToken@
+-- value.
+--
+-- 'nextToken', 'listRoutes_nextToken' - The token for the next page of results.
+--
+-- 'applicationIdentifier', 'listRoutes_applicationIdentifier' - The ID of the application.
+--
+-- 'environmentIdentifier', 'listRoutes_environmentIdentifier' - The ID of the environment.
+newListRoutes ::
+  -- | 'applicationIdentifier'
+  Prelude.Text ->
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  ListRoutes
+newListRoutes
+  pApplicationIdentifier_
+  pEnvironmentIdentifier_ =
+    ListRoutes'
+      { maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        applicationIdentifier = pApplicationIdentifier_,
+        environmentIdentifier = pEnvironmentIdentifier_
+      }
+
+-- | The maximum number of results to return with a single call. To retrieve
+-- the remaining results, make another call with the returned @nextToken@
+-- value.
+listRoutes_maxResults :: Lens.Lens' ListRoutes (Prelude.Maybe Prelude.Natural)
+listRoutes_maxResults = Lens.lens (\ListRoutes' {maxResults} -> maxResults) (\s@ListRoutes' {} a -> s {maxResults = a} :: ListRoutes)
+
+-- | The token for the next page of results.
+listRoutes_nextToken :: Lens.Lens' ListRoutes (Prelude.Maybe Prelude.Text)
+listRoutes_nextToken = Lens.lens (\ListRoutes' {nextToken} -> nextToken) (\s@ListRoutes' {} a -> s {nextToken = a} :: ListRoutes)
+
+-- | The ID of the application.
+listRoutes_applicationIdentifier :: Lens.Lens' ListRoutes Prelude.Text
+listRoutes_applicationIdentifier = Lens.lens (\ListRoutes' {applicationIdentifier} -> applicationIdentifier) (\s@ListRoutes' {} a -> s {applicationIdentifier = a} :: ListRoutes)
+
+-- | The ID of the environment.
+listRoutes_environmentIdentifier :: Lens.Lens' ListRoutes Prelude.Text
+listRoutes_environmentIdentifier = Lens.lens (\ListRoutes' {environmentIdentifier} -> environmentIdentifier) (\s@ListRoutes' {} a -> s {environmentIdentifier = a} :: ListRoutes)
+
+instance Core.AWSPager ListRoutes where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listRoutesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listRoutesResponse_routeSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listRoutes_nextToken
+          Lens..~ rs
+          Lens.^? listRoutesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListRoutes where
+  type AWSResponse ListRoutes = ListRoutesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListRoutesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "RouteSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListRoutes where
+  hashWithSalt _salt ListRoutes' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` applicationIdentifier
+      `Prelude.hashWithSalt` environmentIdentifier
+
+instance Prelude.NFData ListRoutes where
+  rnf ListRoutes' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf applicationIdentifier
+      `Prelude.seq` Prelude.rnf environmentIdentifier
+
+instance Data.ToHeaders ListRoutes where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListRoutes where
+  toPath ListRoutes' {..} =
+    Prelude.mconcat
+      [ "/environments/",
+        Data.toBS environmentIdentifier,
+        "/applications/",
+        Data.toBS applicationIdentifier,
+        "/routes"
+      ]
+
+instance Data.ToQuery ListRoutes where
+  toQuery ListRoutes' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListRoutesResponse' smart constructor.
+data ListRoutesResponse = ListRoutesResponse'
+  { -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The list of @RouteSummary@ objects.
+    routeSummaryList :: Prelude.Maybe [RouteSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRoutesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRoutesResponse_nextToken' - The token for the next page of results.
+--
+-- 'routeSummaryList', 'listRoutesResponse_routeSummaryList' - The list of @RouteSummary@ objects.
+--
+-- 'httpStatus', 'listRoutesResponse_httpStatus' - The response's http status code.
+newListRoutesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListRoutesResponse
+newListRoutesResponse pHttpStatus_ =
+  ListRoutesResponse'
+    { nextToken = Prelude.Nothing,
+      routeSummaryList = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token for the next page of results.
+listRoutesResponse_nextToken :: Lens.Lens' ListRoutesResponse (Prelude.Maybe Prelude.Text)
+listRoutesResponse_nextToken = Lens.lens (\ListRoutesResponse' {nextToken} -> nextToken) (\s@ListRoutesResponse' {} a -> s {nextToken = a} :: ListRoutesResponse)
+
+-- | The list of @RouteSummary@ objects.
+listRoutesResponse_routeSummaryList :: Lens.Lens' ListRoutesResponse (Prelude.Maybe [RouteSummary])
+listRoutesResponse_routeSummaryList = Lens.lens (\ListRoutesResponse' {routeSummaryList} -> routeSummaryList) (\s@ListRoutesResponse' {} a -> s {routeSummaryList = a} :: ListRoutesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listRoutesResponse_httpStatus :: Lens.Lens' ListRoutesResponse Prelude.Int
+listRoutesResponse_httpStatus = Lens.lens (\ListRoutesResponse' {httpStatus} -> httpStatus) (\s@ListRoutesResponse' {} a -> s {httpStatus = a} :: ListRoutesResponse)
+
+instance Prelude.NFData ListRoutesResponse where
+  rnf ListRoutesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf routeSummaryList
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/ListServices.hs b/gen/Amazonka/MigrationHubReFactorSpaces/ListServices.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/ListServices.hs
@@ -0,0 +1,255 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.ListServices
+-- 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 all the Amazon Web Services Migration Hub Refactor Spaces services
+-- within an application.
+--
+-- This operation returns paginated results.
+module Amazonka.MigrationHubReFactorSpaces.ListServices
+  ( -- * Creating a Request
+    ListServices (..),
+    newListServices,
+
+    -- * Request Lenses
+    listServices_maxResults,
+    listServices_nextToken,
+    listServices_applicationIdentifier,
+    listServices_environmentIdentifier,
+
+    -- * Destructuring the Response
+    ListServicesResponse (..),
+    newListServicesResponse,
+
+    -- * Response Lenses
+    listServicesResponse_nextToken,
+    listServicesResponse_serviceSummaryList,
+    listServicesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListServices' smart constructor.
+data ListServices = ListServices'
+  { -- | The maximum number of results to return with a single call. To retrieve
+    -- the remaining results, make another call with the returned @nextToken@
+    -- value.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the application.
+    applicationIdentifier :: Prelude.Text,
+    -- | The ID of the environment.
+    environmentIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListServices' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listServices_maxResults' - The maximum number of results to return with a single call. To retrieve
+-- the remaining results, make another call with the returned @nextToken@
+-- value.
+--
+-- 'nextToken', 'listServices_nextToken' - The token for the next page of results.
+--
+-- 'applicationIdentifier', 'listServices_applicationIdentifier' - The ID of the application.
+--
+-- 'environmentIdentifier', 'listServices_environmentIdentifier' - The ID of the environment.
+newListServices ::
+  -- | 'applicationIdentifier'
+  Prelude.Text ->
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  ListServices
+newListServices
+  pApplicationIdentifier_
+  pEnvironmentIdentifier_ =
+    ListServices'
+      { maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        applicationIdentifier = pApplicationIdentifier_,
+        environmentIdentifier = pEnvironmentIdentifier_
+      }
+
+-- | The maximum number of results to return with a single call. To retrieve
+-- the remaining results, make another call with the returned @nextToken@
+-- value.
+listServices_maxResults :: Lens.Lens' ListServices (Prelude.Maybe Prelude.Natural)
+listServices_maxResults = Lens.lens (\ListServices' {maxResults} -> maxResults) (\s@ListServices' {} a -> s {maxResults = a} :: ListServices)
+
+-- | The token for the next page of results.
+listServices_nextToken :: Lens.Lens' ListServices (Prelude.Maybe Prelude.Text)
+listServices_nextToken = Lens.lens (\ListServices' {nextToken} -> nextToken) (\s@ListServices' {} a -> s {nextToken = a} :: ListServices)
+
+-- | The ID of the application.
+listServices_applicationIdentifier :: Lens.Lens' ListServices Prelude.Text
+listServices_applicationIdentifier = Lens.lens (\ListServices' {applicationIdentifier} -> applicationIdentifier) (\s@ListServices' {} a -> s {applicationIdentifier = a} :: ListServices)
+
+-- | The ID of the environment.
+listServices_environmentIdentifier :: Lens.Lens' ListServices Prelude.Text
+listServices_environmentIdentifier = Lens.lens (\ListServices' {environmentIdentifier} -> environmentIdentifier) (\s@ListServices' {} a -> s {environmentIdentifier = a} :: ListServices)
+
+instance Core.AWSPager ListServices where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listServicesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listServicesResponse_serviceSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listServices_nextToken
+          Lens..~ rs
+          Lens.^? listServicesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListServices where
+  type AWSResponse ListServices = ListServicesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListServicesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "ServiceSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListServices where
+  hashWithSalt _salt ListServices' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` applicationIdentifier
+      `Prelude.hashWithSalt` environmentIdentifier
+
+instance Prelude.NFData ListServices where
+  rnf ListServices' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf applicationIdentifier
+      `Prelude.seq` Prelude.rnf environmentIdentifier
+
+instance Data.ToHeaders ListServices where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListServices where
+  toPath ListServices' {..} =
+    Prelude.mconcat
+      [ "/environments/",
+        Data.toBS environmentIdentifier,
+        "/applications/",
+        Data.toBS applicationIdentifier,
+        "/services"
+      ]
+
+instance Data.ToQuery ListServices where
+  toQuery ListServices' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListServicesResponse' smart constructor.
+data ListServicesResponse = ListServicesResponse'
+  { -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The list of @ServiceSummary@ objects.
+    serviceSummaryList :: Prelude.Maybe [ServiceSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListServicesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listServicesResponse_nextToken' - The token for the next page of results.
+--
+-- 'serviceSummaryList', 'listServicesResponse_serviceSummaryList' - The list of @ServiceSummary@ objects.
+--
+-- 'httpStatus', 'listServicesResponse_httpStatus' - The response's http status code.
+newListServicesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListServicesResponse
+newListServicesResponse pHttpStatus_ =
+  ListServicesResponse'
+    { nextToken = Prelude.Nothing,
+      serviceSummaryList = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token for the next page of results.
+listServicesResponse_nextToken :: Lens.Lens' ListServicesResponse (Prelude.Maybe Prelude.Text)
+listServicesResponse_nextToken = Lens.lens (\ListServicesResponse' {nextToken} -> nextToken) (\s@ListServicesResponse' {} a -> s {nextToken = a} :: ListServicesResponse)
+
+-- | The list of @ServiceSummary@ objects.
+listServicesResponse_serviceSummaryList :: Lens.Lens' ListServicesResponse (Prelude.Maybe [ServiceSummary])
+listServicesResponse_serviceSummaryList = Lens.lens (\ListServicesResponse' {serviceSummaryList} -> serviceSummaryList) (\s@ListServicesResponse' {} a -> s {serviceSummaryList = a} :: ListServicesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listServicesResponse_httpStatus :: Lens.Lens' ListServicesResponse Prelude.Int
+listServicesResponse_httpStatus = Lens.lens (\ListServicesResponse' {httpStatus} -> httpStatus) (\s@ListServicesResponse' {} a -> s {httpStatus = a} :: ListServicesResponse)
+
+instance Prelude.NFData ListServicesResponse where
+  rnf ListServicesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf serviceSummaryList
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/ListTagsForResource.hs b/gen/Amazonka/MigrationHubReFactorSpaces/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/ListTagsForResource.hs
@@ -0,0 +1,161 @@
+{-# 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.MigrationHubReFactorSpaces.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 of a resource. The caller account must be the same as the
+-- resource’s @OwnerAccountId@. Listing tags in other accounts is not
+-- supported.
+module Amazonka.MigrationHubReFactorSpaces.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the resource.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The Amazon Resource Name (ARN) of the resource.
+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceArn
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath ListTagsForResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | The list of tags assigned to the resource.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - The list of tags assigned to the resource.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of tags assigned to the resource.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. 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/MigrationHubReFactorSpaces/PutResourcePolicy.hs b/gen/Amazonka/MigrationHubReFactorSpaces/PutResourcePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/PutResourcePolicy.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.MigrationHubReFactorSpaces.PutResourcePolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Attaches a resource-based permission policy to the Amazon Web Services
+-- Migration Hub Refactor Spaces environment. The policy must contain the
+-- same actions and condition statements as the
+-- @arn:aws:ram::aws:permission\/AWSRAMDefaultPermissionRefactorSpacesEnvironment@
+-- permission in Resource Access Manager. The policy must not contain new
+-- lines or blank lines.
+module Amazonka.MigrationHubReFactorSpaces.PutResourcePolicy
+  ( -- * Creating a Request
+    PutResourcePolicy (..),
+    newPutResourcePolicy,
+
+    -- * Request Lenses
+    putResourcePolicy_policy,
+    putResourcePolicy_resourceArn,
+
+    -- * Destructuring the Response
+    PutResourcePolicyResponse (..),
+    newPutResourcePolicyResponse,
+
+    -- * Response Lenses
+    putResourcePolicyResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutResourcePolicy' smart constructor.
+data PutResourcePolicy = PutResourcePolicy'
+  { -- | A JSON-formatted string for an Amazon Web Services resource-based
+    -- policy.
+    policy :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the resource to which the policy is
+    -- being attached.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutResourcePolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'policy', 'putResourcePolicy_policy' - A JSON-formatted string for an Amazon Web Services resource-based
+-- policy.
+--
+-- 'resourceArn', 'putResourcePolicy_resourceArn' - The Amazon Resource Name (ARN) of the resource to which the policy is
+-- being attached.
+newPutResourcePolicy ::
+  -- | 'policy'
+  Prelude.Text ->
+  -- | 'resourceArn'
+  Prelude.Text ->
+  PutResourcePolicy
+newPutResourcePolicy pPolicy_ pResourceArn_ =
+  PutResourcePolicy'
+    { policy = pPolicy_,
+      resourceArn = pResourceArn_
+    }
+
+-- | A JSON-formatted string for an Amazon Web Services resource-based
+-- policy.
+putResourcePolicy_policy :: Lens.Lens' PutResourcePolicy Prelude.Text
+putResourcePolicy_policy = Lens.lens (\PutResourcePolicy' {policy} -> policy) (\s@PutResourcePolicy' {} a -> s {policy = a} :: PutResourcePolicy)
+
+-- | The Amazon Resource Name (ARN) of the resource to which the policy is
+-- being attached.
+putResourcePolicy_resourceArn :: Lens.Lens' PutResourcePolicy Prelude.Text
+putResourcePolicy_resourceArn = Lens.lens (\PutResourcePolicy' {resourceArn} -> resourceArn) (\s@PutResourcePolicy' {} a -> s {resourceArn = a} :: PutResourcePolicy)
+
+instance Core.AWSRequest PutResourcePolicy where
+  type
+    AWSResponse PutResourcePolicy =
+      PutResourcePolicyResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          PutResourcePolicyResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable PutResourcePolicy where
+  hashWithSalt _salt PutResourcePolicy' {..} =
+    _salt
+      `Prelude.hashWithSalt` policy
+      `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData PutResourcePolicy where
+  rnf PutResourcePolicy' {..} =
+    Prelude.rnf policy
+      `Prelude.seq` Prelude.rnf resourceArn
+
+instance Data.ToHeaders PutResourcePolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON PutResourcePolicy where
+  toJSON PutResourcePolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Policy" Data..= policy),
+            Prelude.Just ("ResourceArn" Data..= resourceArn)
+          ]
+      )
+
+instance Data.ToPath PutResourcePolicy where
+  toPath = Prelude.const "/resourcepolicy"
+
+instance Data.ToQuery PutResourcePolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutResourcePolicyResponse' smart constructor.
+data PutResourcePolicyResponse = PutResourcePolicyResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutResourcePolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'putResourcePolicyResponse_httpStatus' - The response's http status code.
+newPutResourcePolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutResourcePolicyResponse
+newPutResourcePolicyResponse pHttpStatus_ =
+  PutResourcePolicyResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+putResourcePolicyResponse_httpStatus :: Lens.Lens' PutResourcePolicyResponse Prelude.Int
+putResourcePolicyResponse_httpStatus = Lens.lens (\PutResourcePolicyResponse' {httpStatus} -> httpStatus) (\s@PutResourcePolicyResponse' {} a -> s {httpStatus = a} :: PutResourcePolicyResponse)
+
+instance Prelude.NFData PutResourcePolicyResponse where
+  rnf PutResourcePolicyResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/TagResource.hs b/gen/Amazonka/MigrationHubReFactorSpaces/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/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.MigrationHubReFactorSpaces.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)
+--
+-- Removes the tags of a given resource. Tags are metadata which can be
+-- used to manage a resource. To tag a resource, the caller account must be
+-- the same as the resource’s @OwnerAccountId@. Tagging resources in other
+-- accounts is not supported.
+--
+-- Amazon Web Services Migration Hub Refactor Spaces does not propagate
+-- tags to orchestrated resources, such as an environment’s transit
+-- gateway.
+module Amazonka.MigrationHubReFactorSpaces.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    resourceArn :: Prelude.Text,
+    -- | The new or modified tags for the resource.
+    tags :: Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'tags', 'tagResource_tags' - The new or modified tags for the resource.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+-- | The new or modified tags for the resource.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Data._Sensitive Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Tags" Data..= tags)]
+      )
+
+instance Data.ToPath TagResource where
+  toPath TagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.
+newTagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pHttpStatus_ =
+  TagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types.hs
@@ -0,0 +1,412 @@
+{-# 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.MigrationHubReFactorSpaces.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.MigrationHubReFactorSpaces.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _InternalServerException,
+    _InvalidResourcePolicyException,
+    _ResourceNotFoundException,
+    _ServiceQuotaExceededException,
+    _ThrottlingException,
+    _ValidationException,
+
+    -- * ApiGatewayEndpointType
+    ApiGatewayEndpointType (..),
+
+    -- * ApplicationState
+    ApplicationState (..),
+
+    -- * EnvironmentState
+    EnvironmentState (..),
+
+    -- * ErrorCode
+    ErrorCode (..),
+
+    -- * ErrorResourceType
+    ErrorResourceType (..),
+
+    -- * HttpMethod
+    HttpMethod (..),
+
+    -- * NetworkFabricType
+    NetworkFabricType (..),
+
+    -- * ProxyType
+    ProxyType (..),
+
+    -- * RouteActivationState
+    RouteActivationState (..),
+
+    -- * RouteState
+    RouteState (..),
+
+    -- * RouteType
+    RouteType (..),
+
+    -- * ServiceEndpointType
+    ServiceEndpointType (..),
+
+    -- * ServiceState
+    ServiceState (..),
+
+    -- * ApiGatewayProxyConfig
+    ApiGatewayProxyConfig (..),
+    newApiGatewayProxyConfig,
+    apiGatewayProxyConfig_apiGatewayId,
+    apiGatewayProxyConfig_endpointType,
+    apiGatewayProxyConfig_nlbArn,
+    apiGatewayProxyConfig_nlbName,
+    apiGatewayProxyConfig_proxyUrl,
+    apiGatewayProxyConfig_stageName,
+    apiGatewayProxyConfig_vpcLinkId,
+
+    -- * ApiGatewayProxyInput
+    ApiGatewayProxyInput (..),
+    newApiGatewayProxyInput,
+    apiGatewayProxyInput_endpointType,
+    apiGatewayProxyInput_stageName,
+
+    -- * ApiGatewayProxySummary
+    ApiGatewayProxySummary (..),
+    newApiGatewayProxySummary,
+    apiGatewayProxySummary_apiGatewayId,
+    apiGatewayProxySummary_endpointType,
+    apiGatewayProxySummary_nlbArn,
+    apiGatewayProxySummary_nlbName,
+    apiGatewayProxySummary_proxyUrl,
+    apiGatewayProxySummary_stageName,
+    apiGatewayProxySummary_vpcLinkId,
+
+    -- * ApplicationSummary
+    ApplicationSummary (..),
+    newApplicationSummary,
+    applicationSummary_apiGatewayProxy,
+    applicationSummary_applicationId,
+    applicationSummary_arn,
+    applicationSummary_createdByAccountId,
+    applicationSummary_createdTime,
+    applicationSummary_environmentId,
+    applicationSummary_error,
+    applicationSummary_lastUpdatedTime,
+    applicationSummary_name,
+    applicationSummary_ownerAccountId,
+    applicationSummary_proxyType,
+    applicationSummary_state,
+    applicationSummary_tags,
+    applicationSummary_vpcId,
+
+    -- * DefaultRouteInput
+    DefaultRouteInput (..),
+    newDefaultRouteInput,
+    defaultRouteInput_activationState,
+
+    -- * EnvironmentSummary
+    EnvironmentSummary (..),
+    newEnvironmentSummary,
+    environmentSummary_arn,
+    environmentSummary_createdTime,
+    environmentSummary_description,
+    environmentSummary_environmentId,
+    environmentSummary_error,
+    environmentSummary_lastUpdatedTime,
+    environmentSummary_name,
+    environmentSummary_networkFabricType,
+    environmentSummary_ownerAccountId,
+    environmentSummary_state,
+    environmentSummary_tags,
+    environmentSummary_transitGatewayId,
+
+    -- * EnvironmentVpc
+    EnvironmentVpc (..),
+    newEnvironmentVpc,
+    environmentVpc_accountId,
+    environmentVpc_cidrBlocks,
+    environmentVpc_createdTime,
+    environmentVpc_environmentId,
+    environmentVpc_lastUpdatedTime,
+    environmentVpc_vpcId,
+    environmentVpc_vpcName,
+
+    -- * ErrorResponse
+    ErrorResponse (..),
+    newErrorResponse,
+    errorResponse_accountId,
+    errorResponse_additionalDetails,
+    errorResponse_code,
+    errorResponse_message,
+    errorResponse_resourceIdentifier,
+    errorResponse_resourceType,
+
+    -- * LambdaEndpointConfig
+    LambdaEndpointConfig (..),
+    newLambdaEndpointConfig,
+    lambdaEndpointConfig_arn,
+
+    -- * LambdaEndpointInput
+    LambdaEndpointInput (..),
+    newLambdaEndpointInput,
+    lambdaEndpointInput_arn,
+
+    -- * LambdaEndpointSummary
+    LambdaEndpointSummary (..),
+    newLambdaEndpointSummary,
+    lambdaEndpointSummary_arn,
+
+    -- * RouteSummary
+    RouteSummary (..),
+    newRouteSummary,
+    routeSummary_applicationId,
+    routeSummary_arn,
+    routeSummary_createdByAccountId,
+    routeSummary_createdTime,
+    routeSummary_environmentId,
+    routeSummary_error,
+    routeSummary_includeChildPaths,
+    routeSummary_lastUpdatedTime,
+    routeSummary_methods,
+    routeSummary_ownerAccountId,
+    routeSummary_pathResourceToId,
+    routeSummary_routeId,
+    routeSummary_routeType,
+    routeSummary_serviceId,
+    routeSummary_sourcePath,
+    routeSummary_state,
+    routeSummary_tags,
+
+    -- * ServiceSummary
+    ServiceSummary (..),
+    newServiceSummary,
+    serviceSummary_applicationId,
+    serviceSummary_arn,
+    serviceSummary_createdByAccountId,
+    serviceSummary_createdTime,
+    serviceSummary_description,
+    serviceSummary_endpointType,
+    serviceSummary_environmentId,
+    serviceSummary_error,
+    serviceSummary_lambdaEndpoint,
+    serviceSummary_lastUpdatedTime,
+    serviceSummary_name,
+    serviceSummary_ownerAccountId,
+    serviceSummary_serviceId,
+    serviceSummary_state,
+    serviceSummary_tags,
+    serviceSummary_urlEndpoint,
+    serviceSummary_vpcId,
+
+    -- * UriPathRouteInput
+    UriPathRouteInput (..),
+    newUriPathRouteInput,
+    uriPathRouteInput_includeChildPaths,
+    uriPathRouteInput_methods,
+    uriPathRouteInput_activationState,
+    uriPathRouteInput_sourcePath,
+
+    -- * UrlEndpointConfig
+    UrlEndpointConfig (..),
+    newUrlEndpointConfig,
+    urlEndpointConfig_healthUrl,
+    urlEndpointConfig_url,
+
+    -- * UrlEndpointInput
+    UrlEndpointInput (..),
+    newUrlEndpointInput,
+    urlEndpointInput_healthUrl,
+    urlEndpointInput_url,
+
+    -- * UrlEndpointSummary
+    UrlEndpointSummary (..),
+    newUrlEndpointSummary,
+    urlEndpointSummary_healthUrl,
+    urlEndpointSummary_url,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayEndpointType
+import Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayProxyConfig
+import Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayProxyInput
+import Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayProxySummary
+import Amazonka.MigrationHubReFactorSpaces.Types.ApplicationState
+import Amazonka.MigrationHubReFactorSpaces.Types.ApplicationSummary
+import Amazonka.MigrationHubReFactorSpaces.Types.DefaultRouteInput
+import Amazonka.MigrationHubReFactorSpaces.Types.EnvironmentState
+import Amazonka.MigrationHubReFactorSpaces.Types.EnvironmentSummary
+import Amazonka.MigrationHubReFactorSpaces.Types.EnvironmentVpc
+import Amazonka.MigrationHubReFactorSpaces.Types.ErrorCode
+import Amazonka.MigrationHubReFactorSpaces.Types.ErrorResourceType
+import Amazonka.MigrationHubReFactorSpaces.Types.ErrorResponse
+import Amazonka.MigrationHubReFactorSpaces.Types.HttpMethod
+import Amazonka.MigrationHubReFactorSpaces.Types.LambdaEndpointConfig
+import Amazonka.MigrationHubReFactorSpaces.Types.LambdaEndpointInput
+import Amazonka.MigrationHubReFactorSpaces.Types.LambdaEndpointSummary
+import Amazonka.MigrationHubReFactorSpaces.Types.NetworkFabricType
+import Amazonka.MigrationHubReFactorSpaces.Types.ProxyType
+import Amazonka.MigrationHubReFactorSpaces.Types.RouteActivationState
+import Amazonka.MigrationHubReFactorSpaces.Types.RouteState
+import Amazonka.MigrationHubReFactorSpaces.Types.RouteSummary
+import Amazonka.MigrationHubReFactorSpaces.Types.RouteType
+import Amazonka.MigrationHubReFactorSpaces.Types.ServiceEndpointType
+import Amazonka.MigrationHubReFactorSpaces.Types.ServiceState
+import Amazonka.MigrationHubReFactorSpaces.Types.ServiceSummary
+import Amazonka.MigrationHubReFactorSpaces.Types.UriPathRouteInput
+import Amazonka.MigrationHubReFactorSpaces.Types.UrlEndpointConfig
+import Amazonka.MigrationHubReFactorSpaces.Types.UrlEndpointInput
+import Amazonka.MigrationHubReFactorSpaces.Types.UrlEndpointSummary
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2021-10-26@ of the Amazon Migration Hub Refactor Spaces SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev =
+        "MigrationHubReFactorSpaces",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "refactor-spaces",
+      Core.signingName = "refactor-spaces",
+      Core.version = "2021-10-26",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error =
+        Core.parseJSONError "MigrationHubReFactorSpaces",
+      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 user does not have sufficient access to perform this action.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 403
+
+-- | Updating or deleting a resource can cause an inconsistent state.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | An unexpected error occurred while processing the request.
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+    Prelude.. Core.hasStatus 500
+
+-- | The resource policy is not valid.
+_InvalidResourcePolicyException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidResourcePolicyException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidResourcePolicyException"
+    Prelude.. Core.hasStatus 400
+
+-- | The request references a resource that does not exist.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | The request would cause a service quota to be exceeded.
+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceQuotaExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceQuotaExceededException"
+    Prelude.. Core.hasStatus 402
+
+-- | Request was denied because the request was throttled.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+    Prelude.. Core.hasStatus 429
+
+-- | The input does not satisfy the constraints specified by an Amazon Web
+-- Service.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApiGatewayEndpointType.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApiGatewayEndpointType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApiGatewayEndpointType.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.MigrationHubReFactorSpaces.Types.ApiGatewayEndpointType
+-- 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.MigrationHubReFactorSpaces.Types.ApiGatewayEndpointType
+  ( ApiGatewayEndpointType
+      ( ..,
+        ApiGatewayEndpointType_PRIVATE,
+        ApiGatewayEndpointType_REGIONAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ApiGatewayEndpointType = ApiGatewayEndpointType'
+  { fromApiGatewayEndpointType ::
+      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 ApiGatewayEndpointType_PRIVATE :: ApiGatewayEndpointType
+pattern ApiGatewayEndpointType_PRIVATE = ApiGatewayEndpointType' "PRIVATE"
+
+pattern ApiGatewayEndpointType_REGIONAL :: ApiGatewayEndpointType
+pattern ApiGatewayEndpointType_REGIONAL = ApiGatewayEndpointType' "REGIONAL"
+
+{-# COMPLETE
+  ApiGatewayEndpointType_PRIVATE,
+  ApiGatewayEndpointType_REGIONAL,
+  ApiGatewayEndpointType'
+  #-}
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApiGatewayProxyConfig.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApiGatewayProxyConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApiGatewayProxyConfig.hs
@@ -0,0 +1,152 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayProxyConfig
+-- 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.MigrationHubReFactorSpaces.Types.ApiGatewayProxyConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayEndpointType
+import qualified Amazonka.Prelude as Prelude
+
+-- | A wrapper object holding the Amazon API Gateway proxy configuration.
+--
+-- /See:/ 'newApiGatewayProxyConfig' smart constructor.
+data ApiGatewayProxyConfig = ApiGatewayProxyConfig'
+  { -- | The resource ID of the API Gateway for the proxy.
+    apiGatewayId :: Prelude.Maybe Prelude.Text,
+    -- | The type of API Gateway endpoint created.
+    endpointType :: Prelude.Maybe ApiGatewayEndpointType,
+    -- | The Amazon Resource Name (ARN) of the Network Load Balancer configured
+    -- by the API Gateway proxy.
+    nlbArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the Network Load Balancer that is configured by the API
+    -- Gateway proxy.
+    nlbName :: Prelude.Maybe Prelude.Text,
+    -- | The endpoint URL of the API Gateway proxy.
+    proxyUrl :: Prelude.Maybe Prelude.Text,
+    -- | The name of the API Gateway stage. The name defaults to @prod@.
+    stageName :: Prelude.Maybe Prelude.Text,
+    -- | The @VpcLink@ ID of the API Gateway proxy.
+    vpcLinkId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ApiGatewayProxyConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiGatewayId', 'apiGatewayProxyConfig_apiGatewayId' - The resource ID of the API Gateway for the proxy.
+--
+-- 'endpointType', 'apiGatewayProxyConfig_endpointType' - The type of API Gateway endpoint created.
+--
+-- 'nlbArn', 'apiGatewayProxyConfig_nlbArn' - The Amazon Resource Name (ARN) of the Network Load Balancer configured
+-- by the API Gateway proxy.
+--
+-- 'nlbName', 'apiGatewayProxyConfig_nlbName' - The name of the Network Load Balancer that is configured by the API
+-- Gateway proxy.
+--
+-- 'proxyUrl', 'apiGatewayProxyConfig_proxyUrl' - The endpoint URL of the API Gateway proxy.
+--
+-- 'stageName', 'apiGatewayProxyConfig_stageName' - The name of the API Gateway stage. The name defaults to @prod@.
+--
+-- 'vpcLinkId', 'apiGatewayProxyConfig_vpcLinkId' - The @VpcLink@ ID of the API Gateway proxy.
+newApiGatewayProxyConfig ::
+  ApiGatewayProxyConfig
+newApiGatewayProxyConfig =
+  ApiGatewayProxyConfig'
+    { apiGatewayId =
+        Prelude.Nothing,
+      endpointType = Prelude.Nothing,
+      nlbArn = Prelude.Nothing,
+      nlbName = Prelude.Nothing,
+      proxyUrl = Prelude.Nothing,
+      stageName = Prelude.Nothing,
+      vpcLinkId = Prelude.Nothing
+    }
+
+-- | The resource ID of the API Gateway for the proxy.
+apiGatewayProxyConfig_apiGatewayId :: Lens.Lens' ApiGatewayProxyConfig (Prelude.Maybe Prelude.Text)
+apiGatewayProxyConfig_apiGatewayId = Lens.lens (\ApiGatewayProxyConfig' {apiGatewayId} -> apiGatewayId) (\s@ApiGatewayProxyConfig' {} a -> s {apiGatewayId = a} :: ApiGatewayProxyConfig)
+
+-- | The type of API Gateway endpoint created.
+apiGatewayProxyConfig_endpointType :: Lens.Lens' ApiGatewayProxyConfig (Prelude.Maybe ApiGatewayEndpointType)
+apiGatewayProxyConfig_endpointType = Lens.lens (\ApiGatewayProxyConfig' {endpointType} -> endpointType) (\s@ApiGatewayProxyConfig' {} a -> s {endpointType = a} :: ApiGatewayProxyConfig)
+
+-- | The Amazon Resource Name (ARN) of the Network Load Balancer configured
+-- by the API Gateway proxy.
+apiGatewayProxyConfig_nlbArn :: Lens.Lens' ApiGatewayProxyConfig (Prelude.Maybe Prelude.Text)
+apiGatewayProxyConfig_nlbArn = Lens.lens (\ApiGatewayProxyConfig' {nlbArn} -> nlbArn) (\s@ApiGatewayProxyConfig' {} a -> s {nlbArn = a} :: ApiGatewayProxyConfig)
+
+-- | The name of the Network Load Balancer that is configured by the API
+-- Gateway proxy.
+apiGatewayProxyConfig_nlbName :: Lens.Lens' ApiGatewayProxyConfig (Prelude.Maybe Prelude.Text)
+apiGatewayProxyConfig_nlbName = Lens.lens (\ApiGatewayProxyConfig' {nlbName} -> nlbName) (\s@ApiGatewayProxyConfig' {} a -> s {nlbName = a} :: ApiGatewayProxyConfig)
+
+-- | The endpoint URL of the API Gateway proxy.
+apiGatewayProxyConfig_proxyUrl :: Lens.Lens' ApiGatewayProxyConfig (Prelude.Maybe Prelude.Text)
+apiGatewayProxyConfig_proxyUrl = Lens.lens (\ApiGatewayProxyConfig' {proxyUrl} -> proxyUrl) (\s@ApiGatewayProxyConfig' {} a -> s {proxyUrl = a} :: ApiGatewayProxyConfig)
+
+-- | The name of the API Gateway stage. The name defaults to @prod@.
+apiGatewayProxyConfig_stageName :: Lens.Lens' ApiGatewayProxyConfig (Prelude.Maybe Prelude.Text)
+apiGatewayProxyConfig_stageName = Lens.lens (\ApiGatewayProxyConfig' {stageName} -> stageName) (\s@ApiGatewayProxyConfig' {} a -> s {stageName = a} :: ApiGatewayProxyConfig)
+
+-- | The @VpcLink@ ID of the API Gateway proxy.
+apiGatewayProxyConfig_vpcLinkId :: Lens.Lens' ApiGatewayProxyConfig (Prelude.Maybe Prelude.Text)
+apiGatewayProxyConfig_vpcLinkId = Lens.lens (\ApiGatewayProxyConfig' {vpcLinkId} -> vpcLinkId) (\s@ApiGatewayProxyConfig' {} a -> s {vpcLinkId = a} :: ApiGatewayProxyConfig)
+
+instance Data.FromJSON ApiGatewayProxyConfig where
+  parseJSON =
+    Data.withObject
+      "ApiGatewayProxyConfig"
+      ( \x ->
+          ApiGatewayProxyConfig'
+            Prelude.<$> (x Data..:? "ApiGatewayId")
+            Prelude.<*> (x Data..:? "EndpointType")
+            Prelude.<*> (x Data..:? "NlbArn")
+            Prelude.<*> (x Data..:? "NlbName")
+            Prelude.<*> (x Data..:? "ProxyUrl")
+            Prelude.<*> (x Data..:? "StageName")
+            Prelude.<*> (x Data..:? "VpcLinkId")
+      )
+
+instance Prelude.Hashable ApiGatewayProxyConfig where
+  hashWithSalt _salt ApiGatewayProxyConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` apiGatewayId
+      `Prelude.hashWithSalt` endpointType
+      `Prelude.hashWithSalt` nlbArn
+      `Prelude.hashWithSalt` nlbName
+      `Prelude.hashWithSalt` proxyUrl
+      `Prelude.hashWithSalt` stageName
+      `Prelude.hashWithSalt` vpcLinkId
+
+instance Prelude.NFData ApiGatewayProxyConfig where
+  rnf ApiGatewayProxyConfig' {..} =
+    Prelude.rnf apiGatewayId
+      `Prelude.seq` Prelude.rnf endpointType
+      `Prelude.seq` Prelude.rnf nlbArn
+      `Prelude.seq` Prelude.rnf nlbName
+      `Prelude.seq` Prelude.rnf proxyUrl
+      `Prelude.seq` Prelude.rnf stageName
+      `Prelude.seq` Prelude.rnf vpcLinkId
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApiGatewayProxyInput.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApiGatewayProxyInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApiGatewayProxyInput.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayProxyInput
+-- 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.MigrationHubReFactorSpaces.Types.ApiGatewayProxyInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayEndpointType
+import qualified Amazonka.Prelude as Prelude
+
+-- | A wrapper object holding the Amazon API Gateway endpoint input.
+--
+-- /See:/ 'newApiGatewayProxyInput' smart constructor.
+data ApiGatewayProxyInput = ApiGatewayProxyInput'
+  { -- | The type of endpoint to use for the API Gateway proxy. If no value is
+    -- specified in the request, the value is set to @REGIONAL@ by default.
+    --
+    -- If the value is set to @PRIVATE@ in the request, this creates a private
+    -- API endpoint that is isolated from the public internet. The private
+    -- endpoint can only be accessed by using Amazon Virtual Private Cloud
+    -- (Amazon VPC) endpoints for Amazon API Gateway that have been granted
+    -- access.
+    endpointType :: Prelude.Maybe ApiGatewayEndpointType,
+    -- | The name of the API Gateway stage. The name defaults to @prod@.
+    stageName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ApiGatewayProxyInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'endpointType', 'apiGatewayProxyInput_endpointType' - The type of endpoint to use for the API Gateway proxy. If no value is
+-- specified in the request, the value is set to @REGIONAL@ by default.
+--
+-- If the value is set to @PRIVATE@ in the request, this creates a private
+-- API endpoint that is isolated from the public internet. The private
+-- endpoint can only be accessed by using Amazon Virtual Private Cloud
+-- (Amazon VPC) endpoints for Amazon API Gateway that have been granted
+-- access.
+--
+-- 'stageName', 'apiGatewayProxyInput_stageName' - The name of the API Gateway stage. The name defaults to @prod@.
+newApiGatewayProxyInput ::
+  ApiGatewayProxyInput
+newApiGatewayProxyInput =
+  ApiGatewayProxyInput'
+    { endpointType =
+        Prelude.Nothing,
+      stageName = Prelude.Nothing
+    }
+
+-- | The type of endpoint to use for the API Gateway proxy. If no value is
+-- specified in the request, the value is set to @REGIONAL@ by default.
+--
+-- If the value is set to @PRIVATE@ in the request, this creates a private
+-- API endpoint that is isolated from the public internet. The private
+-- endpoint can only be accessed by using Amazon Virtual Private Cloud
+-- (Amazon VPC) endpoints for Amazon API Gateway that have been granted
+-- access.
+apiGatewayProxyInput_endpointType :: Lens.Lens' ApiGatewayProxyInput (Prelude.Maybe ApiGatewayEndpointType)
+apiGatewayProxyInput_endpointType = Lens.lens (\ApiGatewayProxyInput' {endpointType} -> endpointType) (\s@ApiGatewayProxyInput' {} a -> s {endpointType = a} :: ApiGatewayProxyInput)
+
+-- | The name of the API Gateway stage. The name defaults to @prod@.
+apiGatewayProxyInput_stageName :: Lens.Lens' ApiGatewayProxyInput (Prelude.Maybe Prelude.Text)
+apiGatewayProxyInput_stageName = Lens.lens (\ApiGatewayProxyInput' {stageName} -> stageName) (\s@ApiGatewayProxyInput' {} a -> s {stageName = a} :: ApiGatewayProxyInput)
+
+instance Data.FromJSON ApiGatewayProxyInput where
+  parseJSON =
+    Data.withObject
+      "ApiGatewayProxyInput"
+      ( \x ->
+          ApiGatewayProxyInput'
+            Prelude.<$> (x Data..:? "EndpointType")
+            Prelude.<*> (x Data..:? "StageName")
+      )
+
+instance Prelude.Hashable ApiGatewayProxyInput where
+  hashWithSalt _salt ApiGatewayProxyInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` endpointType
+      `Prelude.hashWithSalt` stageName
+
+instance Prelude.NFData ApiGatewayProxyInput where
+  rnf ApiGatewayProxyInput' {..} =
+    Prelude.rnf endpointType
+      `Prelude.seq` Prelude.rnf stageName
+
+instance Data.ToJSON ApiGatewayProxyInput where
+  toJSON ApiGatewayProxyInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EndpointType" Data..=) Prelude.<$> endpointType,
+            ("StageName" Data..=) Prelude.<$> stageName
+          ]
+      )
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApiGatewayProxySummary.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApiGatewayProxySummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApiGatewayProxySummary.hs
@@ -0,0 +1,152 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayProxySummary
+-- 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.MigrationHubReFactorSpaces.Types.ApiGatewayProxySummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayEndpointType
+import qualified Amazonka.Prelude as Prelude
+
+-- | A wrapper object holding the Amazon API Gateway proxy summary.
+--
+-- /See:/ 'newApiGatewayProxySummary' smart constructor.
+data ApiGatewayProxySummary = ApiGatewayProxySummary'
+  { -- | The resource ID of the API Gateway for the proxy.
+    apiGatewayId :: Prelude.Maybe Prelude.Text,
+    -- | The type of API Gateway endpoint created.
+    endpointType :: Prelude.Maybe ApiGatewayEndpointType,
+    -- | The Amazon Resource Name (ARN) of the Network Load Balancer configured
+    -- by the API Gateway proxy.
+    nlbArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the Network Load Balancer that is configured by the API
+    -- Gateway proxy.
+    nlbName :: Prelude.Maybe Prelude.Text,
+    -- | The endpoint URL of the API Gateway proxy.
+    proxyUrl :: Prelude.Maybe Prelude.Text,
+    -- | The name of the API Gateway stage. The name defaults to @prod@.
+    stageName :: Prelude.Maybe Prelude.Text,
+    -- | The @VpcLink@ ID of the API Gateway proxy.
+    vpcLinkId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ApiGatewayProxySummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiGatewayId', 'apiGatewayProxySummary_apiGatewayId' - The resource ID of the API Gateway for the proxy.
+--
+-- 'endpointType', 'apiGatewayProxySummary_endpointType' - The type of API Gateway endpoint created.
+--
+-- 'nlbArn', 'apiGatewayProxySummary_nlbArn' - The Amazon Resource Name (ARN) of the Network Load Balancer configured
+-- by the API Gateway proxy.
+--
+-- 'nlbName', 'apiGatewayProxySummary_nlbName' - The name of the Network Load Balancer that is configured by the API
+-- Gateway proxy.
+--
+-- 'proxyUrl', 'apiGatewayProxySummary_proxyUrl' - The endpoint URL of the API Gateway proxy.
+--
+-- 'stageName', 'apiGatewayProxySummary_stageName' - The name of the API Gateway stage. The name defaults to @prod@.
+--
+-- 'vpcLinkId', 'apiGatewayProxySummary_vpcLinkId' - The @VpcLink@ ID of the API Gateway proxy.
+newApiGatewayProxySummary ::
+  ApiGatewayProxySummary
+newApiGatewayProxySummary =
+  ApiGatewayProxySummary'
+    { apiGatewayId =
+        Prelude.Nothing,
+      endpointType = Prelude.Nothing,
+      nlbArn = Prelude.Nothing,
+      nlbName = Prelude.Nothing,
+      proxyUrl = Prelude.Nothing,
+      stageName = Prelude.Nothing,
+      vpcLinkId = Prelude.Nothing
+    }
+
+-- | The resource ID of the API Gateway for the proxy.
+apiGatewayProxySummary_apiGatewayId :: Lens.Lens' ApiGatewayProxySummary (Prelude.Maybe Prelude.Text)
+apiGatewayProxySummary_apiGatewayId = Lens.lens (\ApiGatewayProxySummary' {apiGatewayId} -> apiGatewayId) (\s@ApiGatewayProxySummary' {} a -> s {apiGatewayId = a} :: ApiGatewayProxySummary)
+
+-- | The type of API Gateway endpoint created.
+apiGatewayProxySummary_endpointType :: Lens.Lens' ApiGatewayProxySummary (Prelude.Maybe ApiGatewayEndpointType)
+apiGatewayProxySummary_endpointType = Lens.lens (\ApiGatewayProxySummary' {endpointType} -> endpointType) (\s@ApiGatewayProxySummary' {} a -> s {endpointType = a} :: ApiGatewayProxySummary)
+
+-- | The Amazon Resource Name (ARN) of the Network Load Balancer configured
+-- by the API Gateway proxy.
+apiGatewayProxySummary_nlbArn :: Lens.Lens' ApiGatewayProxySummary (Prelude.Maybe Prelude.Text)
+apiGatewayProxySummary_nlbArn = Lens.lens (\ApiGatewayProxySummary' {nlbArn} -> nlbArn) (\s@ApiGatewayProxySummary' {} a -> s {nlbArn = a} :: ApiGatewayProxySummary)
+
+-- | The name of the Network Load Balancer that is configured by the API
+-- Gateway proxy.
+apiGatewayProxySummary_nlbName :: Lens.Lens' ApiGatewayProxySummary (Prelude.Maybe Prelude.Text)
+apiGatewayProxySummary_nlbName = Lens.lens (\ApiGatewayProxySummary' {nlbName} -> nlbName) (\s@ApiGatewayProxySummary' {} a -> s {nlbName = a} :: ApiGatewayProxySummary)
+
+-- | The endpoint URL of the API Gateway proxy.
+apiGatewayProxySummary_proxyUrl :: Lens.Lens' ApiGatewayProxySummary (Prelude.Maybe Prelude.Text)
+apiGatewayProxySummary_proxyUrl = Lens.lens (\ApiGatewayProxySummary' {proxyUrl} -> proxyUrl) (\s@ApiGatewayProxySummary' {} a -> s {proxyUrl = a} :: ApiGatewayProxySummary)
+
+-- | The name of the API Gateway stage. The name defaults to @prod@.
+apiGatewayProxySummary_stageName :: Lens.Lens' ApiGatewayProxySummary (Prelude.Maybe Prelude.Text)
+apiGatewayProxySummary_stageName = Lens.lens (\ApiGatewayProxySummary' {stageName} -> stageName) (\s@ApiGatewayProxySummary' {} a -> s {stageName = a} :: ApiGatewayProxySummary)
+
+-- | The @VpcLink@ ID of the API Gateway proxy.
+apiGatewayProxySummary_vpcLinkId :: Lens.Lens' ApiGatewayProxySummary (Prelude.Maybe Prelude.Text)
+apiGatewayProxySummary_vpcLinkId = Lens.lens (\ApiGatewayProxySummary' {vpcLinkId} -> vpcLinkId) (\s@ApiGatewayProxySummary' {} a -> s {vpcLinkId = a} :: ApiGatewayProxySummary)
+
+instance Data.FromJSON ApiGatewayProxySummary where
+  parseJSON =
+    Data.withObject
+      "ApiGatewayProxySummary"
+      ( \x ->
+          ApiGatewayProxySummary'
+            Prelude.<$> (x Data..:? "ApiGatewayId")
+            Prelude.<*> (x Data..:? "EndpointType")
+            Prelude.<*> (x Data..:? "NlbArn")
+            Prelude.<*> (x Data..:? "NlbName")
+            Prelude.<*> (x Data..:? "ProxyUrl")
+            Prelude.<*> (x Data..:? "StageName")
+            Prelude.<*> (x Data..:? "VpcLinkId")
+      )
+
+instance Prelude.Hashable ApiGatewayProxySummary where
+  hashWithSalt _salt ApiGatewayProxySummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` apiGatewayId
+      `Prelude.hashWithSalt` endpointType
+      `Prelude.hashWithSalt` nlbArn
+      `Prelude.hashWithSalt` nlbName
+      `Prelude.hashWithSalt` proxyUrl
+      `Prelude.hashWithSalt` stageName
+      `Prelude.hashWithSalt` vpcLinkId
+
+instance Prelude.NFData ApiGatewayProxySummary where
+  rnf ApiGatewayProxySummary' {..} =
+    Prelude.rnf apiGatewayId
+      `Prelude.seq` Prelude.rnf endpointType
+      `Prelude.seq` Prelude.rnf nlbArn
+      `Prelude.seq` Prelude.rnf nlbName
+      `Prelude.seq` Prelude.rnf proxyUrl
+      `Prelude.seq` Prelude.rnf stageName
+      `Prelude.seq` Prelude.rnf vpcLinkId
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApplicationState.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApplicationState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApplicationState.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.MigrationHubReFactorSpaces.Types.ApplicationState
+-- 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.MigrationHubReFactorSpaces.Types.ApplicationState
+  ( ApplicationState
+      ( ..,
+        ApplicationState_ACTIVE,
+        ApplicationState_CREATING,
+        ApplicationState_DELETING,
+        ApplicationState_FAILED,
+        ApplicationState_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ApplicationState = ApplicationState'
+  { fromApplicationState ::
+      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 ApplicationState_ACTIVE :: ApplicationState
+pattern ApplicationState_ACTIVE = ApplicationState' "ACTIVE"
+
+pattern ApplicationState_CREATING :: ApplicationState
+pattern ApplicationState_CREATING = ApplicationState' "CREATING"
+
+pattern ApplicationState_DELETING :: ApplicationState
+pattern ApplicationState_DELETING = ApplicationState' "DELETING"
+
+pattern ApplicationState_FAILED :: ApplicationState
+pattern ApplicationState_FAILED = ApplicationState' "FAILED"
+
+pattern ApplicationState_UPDATING :: ApplicationState
+pattern ApplicationState_UPDATING = ApplicationState' "UPDATING"
+
+{-# COMPLETE
+  ApplicationState_ACTIVE,
+  ApplicationState_CREATING,
+  ApplicationState_DELETING,
+  ApplicationState_FAILED,
+  ApplicationState_UPDATING,
+  ApplicationState'
+  #-}
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApplicationSummary.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApplicationSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ApplicationSummary.hs
@@ -0,0 +1,236 @@
+{-# 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.MigrationHubReFactorSpaces.Types.ApplicationSummary
+-- 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.MigrationHubReFactorSpaces.Types.ApplicationSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types.ApiGatewayProxySummary
+import Amazonka.MigrationHubReFactorSpaces.Types.ApplicationState
+import Amazonka.MigrationHubReFactorSpaces.Types.ErrorResponse
+import Amazonka.MigrationHubReFactorSpaces.Types.ProxyType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The list of @ApplicationSummary@ objects.
+--
+-- /See:/ 'newApplicationSummary' smart constructor.
+data ApplicationSummary = ApplicationSummary'
+  { -- | The endpoint URL of the Amazon API Gateway proxy.
+    apiGatewayProxy :: Prelude.Maybe ApiGatewayProxySummary,
+    -- | The unique identifier of the application.
+    applicationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the application.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of the application creator.
+    createdByAccountId :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the application is created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The unique identifier of the environment.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | Any error associated with the application resource.
+    error :: Prelude.Maybe ErrorResponse,
+    -- | A timestamp that indicates when the application was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the application.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of the application owner (which is
+    -- always the same as the environment owner account ID).
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The proxy type of the proxy created within the application.
+    proxyType :: Prelude.Maybe ProxyType,
+    -- | The current state of the application.
+    state :: Prelude.Maybe ApplicationState,
+    -- | The tags assigned to the application.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The ID of the virtual private cloud (VPC).
+    vpcId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ApplicationSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apiGatewayProxy', 'applicationSummary_apiGatewayProxy' - The endpoint URL of the Amazon API Gateway proxy.
+--
+-- 'applicationId', 'applicationSummary_applicationId' - The unique identifier of the application.
+--
+-- 'arn', 'applicationSummary_arn' - The Amazon Resource Name (ARN) of the application.
+--
+-- 'createdByAccountId', 'applicationSummary_createdByAccountId' - The Amazon Web Services account ID of the application creator.
+--
+-- 'createdTime', 'applicationSummary_createdTime' - A timestamp that indicates when the application is created.
+--
+-- 'environmentId', 'applicationSummary_environmentId' - The unique identifier of the environment.
+--
+-- 'error', 'applicationSummary_error' - Any error associated with the application resource.
+--
+-- 'lastUpdatedTime', 'applicationSummary_lastUpdatedTime' - A timestamp that indicates when the application was last updated.
+--
+-- 'name', 'applicationSummary_name' - The name of the application.
+--
+-- 'ownerAccountId', 'applicationSummary_ownerAccountId' - The Amazon Web Services account ID of the application owner (which is
+-- always the same as the environment owner account ID).
+--
+-- 'proxyType', 'applicationSummary_proxyType' - The proxy type of the proxy created within the application.
+--
+-- 'state', 'applicationSummary_state' - The current state of the application.
+--
+-- 'tags', 'applicationSummary_tags' - The tags assigned to the application.
+--
+-- 'vpcId', 'applicationSummary_vpcId' - The ID of the virtual private cloud (VPC).
+newApplicationSummary ::
+  ApplicationSummary
+newApplicationSummary =
+  ApplicationSummary'
+    { apiGatewayProxy =
+        Prelude.Nothing,
+      applicationId = Prelude.Nothing,
+      arn = Prelude.Nothing,
+      createdByAccountId = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      error = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      proxyType = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      vpcId = Prelude.Nothing
+    }
+
+-- | The endpoint URL of the Amazon API Gateway proxy.
+applicationSummary_apiGatewayProxy :: Lens.Lens' ApplicationSummary (Prelude.Maybe ApiGatewayProxySummary)
+applicationSummary_apiGatewayProxy = Lens.lens (\ApplicationSummary' {apiGatewayProxy} -> apiGatewayProxy) (\s@ApplicationSummary' {} a -> s {apiGatewayProxy = a} :: ApplicationSummary)
+
+-- | The unique identifier of the application.
+applicationSummary_applicationId :: Lens.Lens' ApplicationSummary (Prelude.Maybe Prelude.Text)
+applicationSummary_applicationId = Lens.lens (\ApplicationSummary' {applicationId} -> applicationId) (\s@ApplicationSummary' {} a -> s {applicationId = a} :: ApplicationSummary)
+
+-- | The Amazon Resource Name (ARN) of the application.
+applicationSummary_arn :: Lens.Lens' ApplicationSummary (Prelude.Maybe Prelude.Text)
+applicationSummary_arn = Lens.lens (\ApplicationSummary' {arn} -> arn) (\s@ApplicationSummary' {} a -> s {arn = a} :: ApplicationSummary)
+
+-- | The Amazon Web Services account ID of the application creator.
+applicationSummary_createdByAccountId :: Lens.Lens' ApplicationSummary (Prelude.Maybe Prelude.Text)
+applicationSummary_createdByAccountId = Lens.lens (\ApplicationSummary' {createdByAccountId} -> createdByAccountId) (\s@ApplicationSummary' {} a -> s {createdByAccountId = a} :: ApplicationSummary)
+
+-- | A timestamp that indicates when the application is created.
+applicationSummary_createdTime :: Lens.Lens' ApplicationSummary (Prelude.Maybe Prelude.UTCTime)
+applicationSummary_createdTime = Lens.lens (\ApplicationSummary' {createdTime} -> createdTime) (\s@ApplicationSummary' {} a -> s {createdTime = a} :: ApplicationSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The unique identifier of the environment.
+applicationSummary_environmentId :: Lens.Lens' ApplicationSummary (Prelude.Maybe Prelude.Text)
+applicationSummary_environmentId = Lens.lens (\ApplicationSummary' {environmentId} -> environmentId) (\s@ApplicationSummary' {} a -> s {environmentId = a} :: ApplicationSummary)
+
+-- | Any error associated with the application resource.
+applicationSummary_error :: Lens.Lens' ApplicationSummary (Prelude.Maybe ErrorResponse)
+applicationSummary_error = Lens.lens (\ApplicationSummary' {error} -> error) (\s@ApplicationSummary' {} a -> s {error = a} :: ApplicationSummary)
+
+-- | A timestamp that indicates when the application was last updated.
+applicationSummary_lastUpdatedTime :: Lens.Lens' ApplicationSummary (Prelude.Maybe Prelude.UTCTime)
+applicationSummary_lastUpdatedTime = Lens.lens (\ApplicationSummary' {lastUpdatedTime} -> lastUpdatedTime) (\s@ApplicationSummary' {} a -> s {lastUpdatedTime = a} :: ApplicationSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the application.
+applicationSummary_name :: Lens.Lens' ApplicationSummary (Prelude.Maybe Prelude.Text)
+applicationSummary_name = Lens.lens (\ApplicationSummary' {name} -> name) (\s@ApplicationSummary' {} a -> s {name = a} :: ApplicationSummary)
+
+-- | The Amazon Web Services account ID of the application owner (which is
+-- always the same as the environment owner account ID).
+applicationSummary_ownerAccountId :: Lens.Lens' ApplicationSummary (Prelude.Maybe Prelude.Text)
+applicationSummary_ownerAccountId = Lens.lens (\ApplicationSummary' {ownerAccountId} -> ownerAccountId) (\s@ApplicationSummary' {} a -> s {ownerAccountId = a} :: ApplicationSummary)
+
+-- | The proxy type of the proxy created within the application.
+applicationSummary_proxyType :: Lens.Lens' ApplicationSummary (Prelude.Maybe ProxyType)
+applicationSummary_proxyType = Lens.lens (\ApplicationSummary' {proxyType} -> proxyType) (\s@ApplicationSummary' {} a -> s {proxyType = a} :: ApplicationSummary)
+
+-- | The current state of the application.
+applicationSummary_state :: Lens.Lens' ApplicationSummary (Prelude.Maybe ApplicationState)
+applicationSummary_state = Lens.lens (\ApplicationSummary' {state} -> state) (\s@ApplicationSummary' {} a -> s {state = a} :: ApplicationSummary)
+
+-- | The tags assigned to the application.
+applicationSummary_tags :: Lens.Lens' ApplicationSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+applicationSummary_tags = Lens.lens (\ApplicationSummary' {tags} -> tags) (\s@ApplicationSummary' {} a -> s {tags = a} :: ApplicationSummary) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The ID of the virtual private cloud (VPC).
+applicationSummary_vpcId :: Lens.Lens' ApplicationSummary (Prelude.Maybe Prelude.Text)
+applicationSummary_vpcId = Lens.lens (\ApplicationSummary' {vpcId} -> vpcId) (\s@ApplicationSummary' {} a -> s {vpcId = a} :: ApplicationSummary)
+
+instance Data.FromJSON ApplicationSummary where
+  parseJSON =
+    Data.withObject
+      "ApplicationSummary"
+      ( \x ->
+          ApplicationSummary'
+            Prelude.<$> (x Data..:? "ApiGatewayProxy")
+            Prelude.<*> (x Data..:? "ApplicationId")
+            Prelude.<*> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedByAccountId")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "EnvironmentId")
+            Prelude.<*> (x Data..:? "Error")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "OwnerAccountId")
+            Prelude.<*> (x Data..:? "ProxyType")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "VpcId")
+      )
+
+instance Prelude.Hashable ApplicationSummary where
+  hashWithSalt _salt ApplicationSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` apiGatewayProxy
+      `Prelude.hashWithSalt` applicationId
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdByAccountId
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` environmentId
+      `Prelude.hashWithSalt` error
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` ownerAccountId
+      `Prelude.hashWithSalt` proxyType
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` vpcId
+
+instance Prelude.NFData ApplicationSummary where
+  rnf ApplicationSummary' {..} =
+    Prelude.rnf apiGatewayProxy
+      `Prelude.seq` Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdByAccountId
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf proxyType
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf vpcId
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/DefaultRouteInput.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/DefaultRouteInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/DefaultRouteInput.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.DefaultRouteInput
+-- 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.MigrationHubReFactorSpaces.Types.DefaultRouteInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types.RouteActivationState
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for the default route type.
+--
+-- /See:/ 'newDefaultRouteInput' smart constructor.
+data DefaultRouteInput = DefaultRouteInput'
+  { -- | If set to @ACTIVE@, traffic is forwarded to this route’s service after
+    -- the route is created.
+    activationState :: Prelude.Maybe RouteActivationState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DefaultRouteInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activationState', 'defaultRouteInput_activationState' - If set to @ACTIVE@, traffic is forwarded to this route’s service after
+-- the route is created.
+newDefaultRouteInput ::
+  DefaultRouteInput
+newDefaultRouteInput =
+  DefaultRouteInput'
+    { activationState =
+        Prelude.Nothing
+    }
+
+-- | If set to @ACTIVE@, traffic is forwarded to this route’s service after
+-- the route is created.
+defaultRouteInput_activationState :: Lens.Lens' DefaultRouteInput (Prelude.Maybe RouteActivationState)
+defaultRouteInput_activationState = Lens.lens (\DefaultRouteInput' {activationState} -> activationState) (\s@DefaultRouteInput' {} a -> s {activationState = a} :: DefaultRouteInput)
+
+instance Prelude.Hashable DefaultRouteInput where
+  hashWithSalt _salt DefaultRouteInput' {..} =
+    _salt `Prelude.hashWithSalt` activationState
+
+instance Prelude.NFData DefaultRouteInput where
+  rnf DefaultRouteInput' {..} =
+    Prelude.rnf activationState
+
+instance Data.ToJSON DefaultRouteInput where
+  toJSON DefaultRouteInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ActivationState" Data..=)
+              Prelude.<$> activationState
+          ]
+      )
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/EnvironmentState.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/EnvironmentState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/EnvironmentState.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.EnvironmentState
+-- 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.MigrationHubReFactorSpaces.Types.EnvironmentState
+  ( EnvironmentState
+      ( ..,
+        EnvironmentState_ACTIVE,
+        EnvironmentState_CREATING,
+        EnvironmentState_DELETING,
+        EnvironmentState_FAILED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EnvironmentState = EnvironmentState'
+  { fromEnvironmentState ::
+      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 EnvironmentState_ACTIVE :: EnvironmentState
+pattern EnvironmentState_ACTIVE = EnvironmentState' "ACTIVE"
+
+pattern EnvironmentState_CREATING :: EnvironmentState
+pattern EnvironmentState_CREATING = EnvironmentState' "CREATING"
+
+pattern EnvironmentState_DELETING :: EnvironmentState
+pattern EnvironmentState_DELETING = EnvironmentState' "DELETING"
+
+pattern EnvironmentState_FAILED :: EnvironmentState
+pattern EnvironmentState_FAILED = EnvironmentState' "FAILED"
+
+{-# COMPLETE
+  EnvironmentState_ACTIVE,
+  EnvironmentState_CREATING,
+  EnvironmentState_DELETING,
+  EnvironmentState_FAILED,
+  EnvironmentState'
+  #-}
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/EnvironmentSummary.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/EnvironmentSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/EnvironmentSummary.hs
@@ -0,0 +1,208 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.EnvironmentSummary
+-- 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.MigrationHubReFactorSpaces.Types.EnvironmentSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types.EnvironmentState
+import Amazonka.MigrationHubReFactorSpaces.Types.ErrorResponse
+import Amazonka.MigrationHubReFactorSpaces.Types.NetworkFabricType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The summary information for environments as a response to
+-- @ListEnvironments@.
+--
+-- /See:/ 'newEnvironmentSummary' smart constructor.
+data EnvironmentSummary = EnvironmentSummary'
+  { -- | The Amazon Resource Name (ARN) of the environment.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the environment is created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | A description of the environment.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The unique identifier of the environment.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | Any error associated with the environment resource.
+    error :: Prelude.Maybe ErrorResponse,
+    -- | A timestamp that indicates when the environment was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the environment.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The network fabric type of the environment.
+    networkFabricType :: Prelude.Maybe NetworkFabricType,
+    -- | The Amazon Web Services account ID of the environment owner.
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the environment.
+    state :: Prelude.Maybe EnvironmentState,
+    -- | The tags assigned to the environment.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The ID of the transit gateway set up by the environment.
+    transitGatewayId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EnvironmentSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'environmentSummary_arn' - The Amazon Resource Name (ARN) of the environment.
+--
+-- 'createdTime', 'environmentSummary_createdTime' - A timestamp that indicates when the environment is created.
+--
+-- 'description', 'environmentSummary_description' - A description of the environment.
+--
+-- 'environmentId', 'environmentSummary_environmentId' - The unique identifier of the environment.
+--
+-- 'error', 'environmentSummary_error' - Any error associated with the environment resource.
+--
+-- 'lastUpdatedTime', 'environmentSummary_lastUpdatedTime' - A timestamp that indicates when the environment was last updated.
+--
+-- 'name', 'environmentSummary_name' - The name of the environment.
+--
+-- 'networkFabricType', 'environmentSummary_networkFabricType' - The network fabric type of the environment.
+--
+-- 'ownerAccountId', 'environmentSummary_ownerAccountId' - The Amazon Web Services account ID of the environment owner.
+--
+-- 'state', 'environmentSummary_state' - The current state of the environment.
+--
+-- 'tags', 'environmentSummary_tags' - The tags assigned to the environment.
+--
+-- 'transitGatewayId', 'environmentSummary_transitGatewayId' - The ID of the transit gateway set up by the environment.
+newEnvironmentSummary ::
+  EnvironmentSummary
+newEnvironmentSummary =
+  EnvironmentSummary'
+    { arn = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      error = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      networkFabricType = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      transitGatewayId = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the environment.
+environmentSummary_arn :: Lens.Lens' EnvironmentSummary (Prelude.Maybe Prelude.Text)
+environmentSummary_arn = Lens.lens (\EnvironmentSummary' {arn} -> arn) (\s@EnvironmentSummary' {} a -> s {arn = a} :: EnvironmentSummary)
+
+-- | A timestamp that indicates when the environment is created.
+environmentSummary_createdTime :: Lens.Lens' EnvironmentSummary (Prelude.Maybe Prelude.UTCTime)
+environmentSummary_createdTime = Lens.lens (\EnvironmentSummary' {createdTime} -> createdTime) (\s@EnvironmentSummary' {} a -> s {createdTime = a} :: EnvironmentSummary) Prelude.. Lens.mapping Data._Time
+
+-- | A description of the environment.
+environmentSummary_description :: Lens.Lens' EnvironmentSummary (Prelude.Maybe Prelude.Text)
+environmentSummary_description = Lens.lens (\EnvironmentSummary' {description} -> description) (\s@EnvironmentSummary' {} a -> s {description = a} :: EnvironmentSummary)
+
+-- | The unique identifier of the environment.
+environmentSummary_environmentId :: Lens.Lens' EnvironmentSummary (Prelude.Maybe Prelude.Text)
+environmentSummary_environmentId = Lens.lens (\EnvironmentSummary' {environmentId} -> environmentId) (\s@EnvironmentSummary' {} a -> s {environmentId = a} :: EnvironmentSummary)
+
+-- | Any error associated with the environment resource.
+environmentSummary_error :: Lens.Lens' EnvironmentSummary (Prelude.Maybe ErrorResponse)
+environmentSummary_error = Lens.lens (\EnvironmentSummary' {error} -> error) (\s@EnvironmentSummary' {} a -> s {error = a} :: EnvironmentSummary)
+
+-- | A timestamp that indicates when the environment was last updated.
+environmentSummary_lastUpdatedTime :: Lens.Lens' EnvironmentSummary (Prelude.Maybe Prelude.UTCTime)
+environmentSummary_lastUpdatedTime = Lens.lens (\EnvironmentSummary' {lastUpdatedTime} -> lastUpdatedTime) (\s@EnvironmentSummary' {} a -> s {lastUpdatedTime = a} :: EnvironmentSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the environment.
+environmentSummary_name :: Lens.Lens' EnvironmentSummary (Prelude.Maybe Prelude.Text)
+environmentSummary_name = Lens.lens (\EnvironmentSummary' {name} -> name) (\s@EnvironmentSummary' {} a -> s {name = a} :: EnvironmentSummary)
+
+-- | The network fabric type of the environment.
+environmentSummary_networkFabricType :: Lens.Lens' EnvironmentSummary (Prelude.Maybe NetworkFabricType)
+environmentSummary_networkFabricType = Lens.lens (\EnvironmentSummary' {networkFabricType} -> networkFabricType) (\s@EnvironmentSummary' {} a -> s {networkFabricType = a} :: EnvironmentSummary)
+
+-- | The Amazon Web Services account ID of the environment owner.
+environmentSummary_ownerAccountId :: Lens.Lens' EnvironmentSummary (Prelude.Maybe Prelude.Text)
+environmentSummary_ownerAccountId = Lens.lens (\EnvironmentSummary' {ownerAccountId} -> ownerAccountId) (\s@EnvironmentSummary' {} a -> s {ownerAccountId = a} :: EnvironmentSummary)
+
+-- | The current state of the environment.
+environmentSummary_state :: Lens.Lens' EnvironmentSummary (Prelude.Maybe EnvironmentState)
+environmentSummary_state = Lens.lens (\EnvironmentSummary' {state} -> state) (\s@EnvironmentSummary' {} a -> s {state = a} :: EnvironmentSummary)
+
+-- | The tags assigned to the environment.
+environmentSummary_tags :: Lens.Lens' EnvironmentSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+environmentSummary_tags = Lens.lens (\EnvironmentSummary' {tags} -> tags) (\s@EnvironmentSummary' {} a -> s {tags = a} :: EnvironmentSummary) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The ID of the transit gateway set up by the environment.
+environmentSummary_transitGatewayId :: Lens.Lens' EnvironmentSummary (Prelude.Maybe Prelude.Text)
+environmentSummary_transitGatewayId = Lens.lens (\EnvironmentSummary' {transitGatewayId} -> transitGatewayId) (\s@EnvironmentSummary' {} a -> s {transitGatewayId = a} :: EnvironmentSummary)
+
+instance Data.FromJSON EnvironmentSummary where
+  parseJSON =
+    Data.withObject
+      "EnvironmentSummary"
+      ( \x ->
+          EnvironmentSummary'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "EnvironmentId")
+            Prelude.<*> (x Data..:? "Error")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "NetworkFabricType")
+            Prelude.<*> (x Data..:? "OwnerAccountId")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "TransitGatewayId")
+      )
+
+instance Prelude.Hashable EnvironmentSummary where
+  hashWithSalt _salt EnvironmentSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` environmentId
+      `Prelude.hashWithSalt` error
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` networkFabricType
+      `Prelude.hashWithSalt` ownerAccountId
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` transitGatewayId
+
+instance Prelude.NFData EnvironmentSummary where
+  rnf EnvironmentSummary' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf networkFabricType
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf transitGatewayId
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/EnvironmentVpc.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/EnvironmentVpc.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/EnvironmentVpc.hs
@@ -0,0 +1,154 @@
+{-# 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.MigrationHubReFactorSpaces.Types.EnvironmentVpc
+-- 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.MigrationHubReFactorSpaces.Types.EnvironmentVpc where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provides summary information for the @EnvironmentVpc@ resource as a
+-- response to @ListEnvironmentVpc@.
+--
+-- /See:/ 'newEnvironmentVpc' smart constructor.
+data EnvironmentVpc = EnvironmentVpc'
+  { -- | The Amazon Web Services account ID of the virtual private cloud (VPC)
+    -- owner.
+    accountId :: Prelude.Maybe Prelude.Text,
+    -- | The list of Amazon Virtual Private Cloud (Amazon VPC) CIDR blocks.
+    cidrBlocks :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | A timestamp that indicates when the VPC is first added to the
+    -- environment.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The unique identifier of the environment.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the VPC was last updated by the
+    -- environment.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the VPC.
+    vpcId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the VPC at the time it is added to the environment.
+    vpcName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EnvironmentVpc' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'environmentVpc_accountId' - The Amazon Web Services account ID of the virtual private cloud (VPC)
+-- owner.
+--
+-- 'cidrBlocks', 'environmentVpc_cidrBlocks' - The list of Amazon Virtual Private Cloud (Amazon VPC) CIDR blocks.
+--
+-- 'createdTime', 'environmentVpc_createdTime' - A timestamp that indicates when the VPC is first added to the
+-- environment.
+--
+-- 'environmentId', 'environmentVpc_environmentId' - The unique identifier of the environment.
+--
+-- 'lastUpdatedTime', 'environmentVpc_lastUpdatedTime' - A timestamp that indicates when the VPC was last updated by the
+-- environment.
+--
+-- 'vpcId', 'environmentVpc_vpcId' - The ID of the VPC.
+--
+-- 'vpcName', 'environmentVpc_vpcName' - The name of the VPC at the time it is added to the environment.
+newEnvironmentVpc ::
+  EnvironmentVpc
+newEnvironmentVpc =
+  EnvironmentVpc'
+    { accountId = Prelude.Nothing,
+      cidrBlocks = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      vpcId = Prelude.Nothing,
+      vpcName = Prelude.Nothing
+    }
+
+-- | The Amazon Web Services account ID of the virtual private cloud (VPC)
+-- owner.
+environmentVpc_accountId :: Lens.Lens' EnvironmentVpc (Prelude.Maybe Prelude.Text)
+environmentVpc_accountId = Lens.lens (\EnvironmentVpc' {accountId} -> accountId) (\s@EnvironmentVpc' {} a -> s {accountId = a} :: EnvironmentVpc)
+
+-- | The list of Amazon Virtual Private Cloud (Amazon VPC) CIDR blocks.
+environmentVpc_cidrBlocks :: Lens.Lens' EnvironmentVpc (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+environmentVpc_cidrBlocks = Lens.lens (\EnvironmentVpc' {cidrBlocks} -> cidrBlocks) (\s@EnvironmentVpc' {} a -> s {cidrBlocks = a} :: EnvironmentVpc) Prelude.. Lens.mapping Lens.coerced
+
+-- | A timestamp that indicates when the VPC is first added to the
+-- environment.
+environmentVpc_createdTime :: Lens.Lens' EnvironmentVpc (Prelude.Maybe Prelude.UTCTime)
+environmentVpc_createdTime = Lens.lens (\EnvironmentVpc' {createdTime} -> createdTime) (\s@EnvironmentVpc' {} a -> s {createdTime = a} :: EnvironmentVpc) Prelude.. Lens.mapping Data._Time
+
+-- | The unique identifier of the environment.
+environmentVpc_environmentId :: Lens.Lens' EnvironmentVpc (Prelude.Maybe Prelude.Text)
+environmentVpc_environmentId = Lens.lens (\EnvironmentVpc' {environmentId} -> environmentId) (\s@EnvironmentVpc' {} a -> s {environmentId = a} :: EnvironmentVpc)
+
+-- | A timestamp that indicates when the VPC was last updated by the
+-- environment.
+environmentVpc_lastUpdatedTime :: Lens.Lens' EnvironmentVpc (Prelude.Maybe Prelude.UTCTime)
+environmentVpc_lastUpdatedTime = Lens.lens (\EnvironmentVpc' {lastUpdatedTime} -> lastUpdatedTime) (\s@EnvironmentVpc' {} a -> s {lastUpdatedTime = a} :: EnvironmentVpc) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the VPC.
+environmentVpc_vpcId :: Lens.Lens' EnvironmentVpc (Prelude.Maybe Prelude.Text)
+environmentVpc_vpcId = Lens.lens (\EnvironmentVpc' {vpcId} -> vpcId) (\s@EnvironmentVpc' {} a -> s {vpcId = a} :: EnvironmentVpc)
+
+-- | The name of the VPC at the time it is added to the environment.
+environmentVpc_vpcName :: Lens.Lens' EnvironmentVpc (Prelude.Maybe Prelude.Text)
+environmentVpc_vpcName = Lens.lens (\EnvironmentVpc' {vpcName} -> vpcName) (\s@EnvironmentVpc' {} a -> s {vpcName = a} :: EnvironmentVpc)
+
+instance Data.FromJSON EnvironmentVpc where
+  parseJSON =
+    Data.withObject
+      "EnvironmentVpc"
+      ( \x ->
+          EnvironmentVpc'
+            Prelude.<$> (x Data..:? "AccountId")
+            Prelude.<*> (x Data..:? "CidrBlocks")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "EnvironmentId")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "VpcId")
+            Prelude.<*> (x Data..:? "VpcName")
+      )
+
+instance Prelude.Hashable EnvironmentVpc where
+  hashWithSalt _salt EnvironmentVpc' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` cidrBlocks
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` environmentId
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` vpcId
+      `Prelude.hashWithSalt` vpcName
+
+instance Prelude.NFData EnvironmentVpc where
+  rnf EnvironmentVpc' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf cidrBlocks
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf vpcId
+      `Prelude.seq` Prelude.rnf vpcName
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/ErrorCode.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ErrorCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ErrorCode.hs
@@ -0,0 +1,121 @@
+{-# 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.MigrationHubReFactorSpaces.Types.ErrorCode
+-- 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.MigrationHubReFactorSpaces.Types.ErrorCode
+  ( ErrorCode
+      ( ..,
+        ErrorCode_INVALID_RESOURCE_STATE,
+        ErrorCode_NOT_AUTHORIZED,
+        ErrorCode_REQUEST_LIMIT_EXCEEDED,
+        ErrorCode_RESOURCE_CREATION_FAILURE,
+        ErrorCode_RESOURCE_DELETION_FAILURE,
+        ErrorCode_RESOURCE_IN_USE,
+        ErrorCode_RESOURCE_LIMIT_EXCEEDED,
+        ErrorCode_RESOURCE_NOT_FOUND,
+        ErrorCode_RESOURCE_RETRIEVAL_FAILURE,
+        ErrorCode_RESOURCE_UPDATE_FAILURE,
+        ErrorCode_SERVICE_ENDPOINT_HEALTH_CHECK_FAILURE,
+        ErrorCode_STATE_TRANSITION_FAILURE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ErrorCode = ErrorCode'
+  { fromErrorCode ::
+      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 ErrorCode_INVALID_RESOURCE_STATE :: ErrorCode
+pattern ErrorCode_INVALID_RESOURCE_STATE = ErrorCode' "INVALID_RESOURCE_STATE"
+
+pattern ErrorCode_NOT_AUTHORIZED :: ErrorCode
+pattern ErrorCode_NOT_AUTHORIZED = ErrorCode' "NOT_AUTHORIZED"
+
+pattern ErrorCode_REQUEST_LIMIT_EXCEEDED :: ErrorCode
+pattern ErrorCode_REQUEST_LIMIT_EXCEEDED = ErrorCode' "REQUEST_LIMIT_EXCEEDED"
+
+pattern ErrorCode_RESOURCE_CREATION_FAILURE :: ErrorCode
+pattern ErrorCode_RESOURCE_CREATION_FAILURE = ErrorCode' "RESOURCE_CREATION_FAILURE"
+
+pattern ErrorCode_RESOURCE_DELETION_FAILURE :: ErrorCode
+pattern ErrorCode_RESOURCE_DELETION_FAILURE = ErrorCode' "RESOURCE_DELETION_FAILURE"
+
+pattern ErrorCode_RESOURCE_IN_USE :: ErrorCode
+pattern ErrorCode_RESOURCE_IN_USE = ErrorCode' "RESOURCE_IN_USE"
+
+pattern ErrorCode_RESOURCE_LIMIT_EXCEEDED :: ErrorCode
+pattern ErrorCode_RESOURCE_LIMIT_EXCEEDED = ErrorCode' "RESOURCE_LIMIT_EXCEEDED"
+
+pattern ErrorCode_RESOURCE_NOT_FOUND :: ErrorCode
+pattern ErrorCode_RESOURCE_NOT_FOUND = ErrorCode' "RESOURCE_NOT_FOUND"
+
+pattern ErrorCode_RESOURCE_RETRIEVAL_FAILURE :: ErrorCode
+pattern ErrorCode_RESOURCE_RETRIEVAL_FAILURE = ErrorCode' "RESOURCE_RETRIEVAL_FAILURE"
+
+pattern ErrorCode_RESOURCE_UPDATE_FAILURE :: ErrorCode
+pattern ErrorCode_RESOURCE_UPDATE_FAILURE = ErrorCode' "RESOURCE_UPDATE_FAILURE"
+
+pattern ErrorCode_SERVICE_ENDPOINT_HEALTH_CHECK_FAILURE :: ErrorCode
+pattern ErrorCode_SERVICE_ENDPOINT_HEALTH_CHECK_FAILURE = ErrorCode' "SERVICE_ENDPOINT_HEALTH_CHECK_FAILURE"
+
+pattern ErrorCode_STATE_TRANSITION_FAILURE :: ErrorCode
+pattern ErrorCode_STATE_TRANSITION_FAILURE = ErrorCode' "STATE_TRANSITION_FAILURE"
+
+{-# COMPLETE
+  ErrorCode_INVALID_RESOURCE_STATE,
+  ErrorCode_NOT_AUTHORIZED,
+  ErrorCode_REQUEST_LIMIT_EXCEEDED,
+  ErrorCode_RESOURCE_CREATION_FAILURE,
+  ErrorCode_RESOURCE_DELETION_FAILURE,
+  ErrorCode_RESOURCE_IN_USE,
+  ErrorCode_RESOURCE_LIMIT_EXCEEDED,
+  ErrorCode_RESOURCE_NOT_FOUND,
+  ErrorCode_RESOURCE_RETRIEVAL_FAILURE,
+  ErrorCode_RESOURCE_UPDATE_FAILURE,
+  ErrorCode_SERVICE_ENDPOINT_HEALTH_CHECK_FAILURE,
+  ErrorCode_STATE_TRANSITION_FAILURE,
+  ErrorCode'
+  #-}
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/ErrorResourceType.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ErrorResourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ErrorResourceType.hs
@@ -0,0 +1,156 @@
+{-# 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.MigrationHubReFactorSpaces.Types.ErrorResourceType
+-- 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.MigrationHubReFactorSpaces.Types.ErrorResourceType
+  ( ErrorResourceType
+      ( ..,
+        ErrorResourceType_API_GATEWAY,
+        ErrorResourceType_APPLICATION,
+        ErrorResourceType_ENVIRONMENT,
+        ErrorResourceType_IAM_ROLE,
+        ErrorResourceType_LAMBDA,
+        ErrorResourceType_LOAD_BALANCER_LISTENER,
+        ErrorResourceType_NLB,
+        ErrorResourceType_RESOURCE_SHARE,
+        ErrorResourceType_ROUTE,
+        ErrorResourceType_ROUTE_TABLE,
+        ErrorResourceType_SECURITY_GROUP,
+        ErrorResourceType_SERVICE,
+        ErrorResourceType_SUBNET,
+        ErrorResourceType_TARGET_GROUP,
+        ErrorResourceType_TRANSIT_GATEWAY,
+        ErrorResourceType_TRANSIT_GATEWAY_ATTACHMENT,
+        ErrorResourceType_VPC,
+        ErrorResourceType_VPC_ENDPOINT_SERVICE_CONFIGURATION,
+        ErrorResourceType_VPC_LINK
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ErrorResourceType = ErrorResourceType'
+  { fromErrorResourceType ::
+      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 ErrorResourceType_API_GATEWAY :: ErrorResourceType
+pattern ErrorResourceType_API_GATEWAY = ErrorResourceType' "API_GATEWAY"
+
+pattern ErrorResourceType_APPLICATION :: ErrorResourceType
+pattern ErrorResourceType_APPLICATION = ErrorResourceType' "APPLICATION"
+
+pattern ErrorResourceType_ENVIRONMENT :: ErrorResourceType
+pattern ErrorResourceType_ENVIRONMENT = ErrorResourceType' "ENVIRONMENT"
+
+pattern ErrorResourceType_IAM_ROLE :: ErrorResourceType
+pattern ErrorResourceType_IAM_ROLE = ErrorResourceType' "IAM_ROLE"
+
+pattern ErrorResourceType_LAMBDA :: ErrorResourceType
+pattern ErrorResourceType_LAMBDA = ErrorResourceType' "LAMBDA"
+
+pattern ErrorResourceType_LOAD_BALANCER_LISTENER :: ErrorResourceType
+pattern ErrorResourceType_LOAD_BALANCER_LISTENER = ErrorResourceType' "LOAD_BALANCER_LISTENER"
+
+pattern ErrorResourceType_NLB :: ErrorResourceType
+pattern ErrorResourceType_NLB = ErrorResourceType' "NLB"
+
+pattern ErrorResourceType_RESOURCE_SHARE :: ErrorResourceType
+pattern ErrorResourceType_RESOURCE_SHARE = ErrorResourceType' "RESOURCE_SHARE"
+
+pattern ErrorResourceType_ROUTE :: ErrorResourceType
+pattern ErrorResourceType_ROUTE = ErrorResourceType' "ROUTE"
+
+pattern ErrorResourceType_ROUTE_TABLE :: ErrorResourceType
+pattern ErrorResourceType_ROUTE_TABLE = ErrorResourceType' "ROUTE_TABLE"
+
+pattern ErrorResourceType_SECURITY_GROUP :: ErrorResourceType
+pattern ErrorResourceType_SECURITY_GROUP = ErrorResourceType' "SECURITY_GROUP"
+
+pattern ErrorResourceType_SERVICE :: ErrorResourceType
+pattern ErrorResourceType_SERVICE = ErrorResourceType' "SERVICE"
+
+pattern ErrorResourceType_SUBNET :: ErrorResourceType
+pattern ErrorResourceType_SUBNET = ErrorResourceType' "SUBNET"
+
+pattern ErrorResourceType_TARGET_GROUP :: ErrorResourceType
+pattern ErrorResourceType_TARGET_GROUP = ErrorResourceType' "TARGET_GROUP"
+
+pattern ErrorResourceType_TRANSIT_GATEWAY :: ErrorResourceType
+pattern ErrorResourceType_TRANSIT_GATEWAY = ErrorResourceType' "TRANSIT_GATEWAY"
+
+pattern ErrorResourceType_TRANSIT_GATEWAY_ATTACHMENT :: ErrorResourceType
+pattern ErrorResourceType_TRANSIT_GATEWAY_ATTACHMENT = ErrorResourceType' "TRANSIT_GATEWAY_ATTACHMENT"
+
+pattern ErrorResourceType_VPC :: ErrorResourceType
+pattern ErrorResourceType_VPC = ErrorResourceType' "VPC"
+
+pattern ErrorResourceType_VPC_ENDPOINT_SERVICE_CONFIGURATION :: ErrorResourceType
+pattern ErrorResourceType_VPC_ENDPOINT_SERVICE_CONFIGURATION = ErrorResourceType' "VPC_ENDPOINT_SERVICE_CONFIGURATION"
+
+pattern ErrorResourceType_VPC_LINK :: ErrorResourceType
+pattern ErrorResourceType_VPC_LINK = ErrorResourceType' "VPC_LINK"
+
+{-# COMPLETE
+  ErrorResourceType_API_GATEWAY,
+  ErrorResourceType_APPLICATION,
+  ErrorResourceType_ENVIRONMENT,
+  ErrorResourceType_IAM_ROLE,
+  ErrorResourceType_LAMBDA,
+  ErrorResourceType_LOAD_BALANCER_LISTENER,
+  ErrorResourceType_NLB,
+  ErrorResourceType_RESOURCE_SHARE,
+  ErrorResourceType_ROUTE,
+  ErrorResourceType_ROUTE_TABLE,
+  ErrorResourceType_SECURITY_GROUP,
+  ErrorResourceType_SERVICE,
+  ErrorResourceType_SUBNET,
+  ErrorResourceType_TARGET_GROUP,
+  ErrorResourceType_TRANSIT_GATEWAY,
+  ErrorResourceType_TRANSIT_GATEWAY_ATTACHMENT,
+  ErrorResourceType_VPC,
+  ErrorResourceType_VPC_ENDPOINT_SERVICE_CONFIGURATION,
+  ErrorResourceType_VPC_LINK,
+  ErrorResourceType'
+  #-}
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/ErrorResponse.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ErrorResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ErrorResponse.hs
@@ -0,0 +1,138 @@
+{-# 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.MigrationHubReFactorSpaces.Types.ErrorResponse
+-- 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.MigrationHubReFactorSpaces.Types.ErrorResponse where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types.ErrorCode
+import Amazonka.MigrationHubReFactorSpaces.Types.ErrorResourceType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Error associated with a resource returned for a Get or List resource
+-- response.
+--
+-- /See:/ 'newErrorResponse' smart constructor.
+data ErrorResponse = ErrorResponse'
+  { -- | The Amazon Web Services account ID of the resource owner.
+    accountId :: Prelude.Maybe Prelude.Text,
+    -- | Additional details about the error.
+    additionalDetails :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The error code associated with the error.
+    code :: Prelude.Maybe ErrorCode,
+    -- | The message associated with the error.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the resource.
+    resourceIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The type of resource.
+    resourceType :: Prelude.Maybe ErrorResourceType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ErrorResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'errorResponse_accountId' - The Amazon Web Services account ID of the resource owner.
+--
+-- 'additionalDetails', 'errorResponse_additionalDetails' - Additional details about the error.
+--
+-- 'code', 'errorResponse_code' - The error code associated with the error.
+--
+-- 'message', 'errorResponse_message' - The message associated with the error.
+--
+-- 'resourceIdentifier', 'errorResponse_resourceIdentifier' - The ID of the resource.
+--
+-- 'resourceType', 'errorResponse_resourceType' - The type of resource.
+newErrorResponse ::
+  ErrorResponse
+newErrorResponse =
+  ErrorResponse'
+    { accountId = Prelude.Nothing,
+      additionalDetails = Prelude.Nothing,
+      code = Prelude.Nothing,
+      message = Prelude.Nothing,
+      resourceIdentifier = Prelude.Nothing,
+      resourceType = Prelude.Nothing
+    }
+
+-- | The Amazon Web Services account ID of the resource owner.
+errorResponse_accountId :: Lens.Lens' ErrorResponse (Prelude.Maybe Prelude.Text)
+errorResponse_accountId = Lens.lens (\ErrorResponse' {accountId} -> accountId) (\s@ErrorResponse' {} a -> s {accountId = a} :: ErrorResponse)
+
+-- | Additional details about the error.
+errorResponse_additionalDetails :: Lens.Lens' ErrorResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+errorResponse_additionalDetails = Lens.lens (\ErrorResponse' {additionalDetails} -> additionalDetails) (\s@ErrorResponse' {} a -> s {additionalDetails = a} :: ErrorResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The error code associated with the error.
+errorResponse_code :: Lens.Lens' ErrorResponse (Prelude.Maybe ErrorCode)
+errorResponse_code = Lens.lens (\ErrorResponse' {code} -> code) (\s@ErrorResponse' {} a -> s {code = a} :: ErrorResponse)
+
+-- | The message associated with the error.
+errorResponse_message :: Lens.Lens' ErrorResponse (Prelude.Maybe Prelude.Text)
+errorResponse_message = Lens.lens (\ErrorResponse' {message} -> message) (\s@ErrorResponse' {} a -> s {message = a} :: ErrorResponse)
+
+-- | The ID of the resource.
+errorResponse_resourceIdentifier :: Lens.Lens' ErrorResponse (Prelude.Maybe Prelude.Text)
+errorResponse_resourceIdentifier = Lens.lens (\ErrorResponse' {resourceIdentifier} -> resourceIdentifier) (\s@ErrorResponse' {} a -> s {resourceIdentifier = a} :: ErrorResponse)
+
+-- | The type of resource.
+errorResponse_resourceType :: Lens.Lens' ErrorResponse (Prelude.Maybe ErrorResourceType)
+errorResponse_resourceType = Lens.lens (\ErrorResponse' {resourceType} -> resourceType) (\s@ErrorResponse' {} a -> s {resourceType = a} :: ErrorResponse)
+
+instance Data.FromJSON ErrorResponse where
+  parseJSON =
+    Data.withObject
+      "ErrorResponse"
+      ( \x ->
+          ErrorResponse'
+            Prelude.<$> (x Data..:? "AccountId")
+            Prelude.<*> ( x
+                            Data..:? "AdditionalDetails"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Code")
+            Prelude.<*> (x Data..:? "Message")
+            Prelude.<*> (x Data..:? "ResourceIdentifier")
+            Prelude.<*> (x Data..:? "ResourceType")
+      )
+
+instance Prelude.Hashable ErrorResponse where
+  hashWithSalt _salt ErrorResponse' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` additionalDetails
+      `Prelude.hashWithSalt` code
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` resourceIdentifier
+      `Prelude.hashWithSalt` resourceType
+
+instance Prelude.NFData ErrorResponse where
+  rnf ErrorResponse' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf additionalDetails
+      `Prelude.seq` Prelude.rnf code
+      `Prelude.seq` Prelude.rnf message
+      `Prelude.seq` Prelude.rnf resourceIdentifier
+      `Prelude.seq` Prelude.rnf resourceType
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/HttpMethod.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/HttpMethod.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/HttpMethod.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.HttpMethod
+-- 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.MigrationHubReFactorSpaces.Types.HttpMethod
+  ( HttpMethod
+      ( ..,
+        HttpMethod_DELETE,
+        HttpMethod_GET,
+        HttpMethod_HEAD,
+        HttpMethod_OPTIONS,
+        HttpMethod_PATCH,
+        HttpMethod_POST,
+        HttpMethod_PUT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HttpMethod = HttpMethod'
+  { fromHttpMethod ::
+      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 HttpMethod_DELETE :: HttpMethod
+pattern HttpMethod_DELETE = HttpMethod' "DELETE"
+
+pattern HttpMethod_GET :: HttpMethod
+pattern HttpMethod_GET = HttpMethod' "GET"
+
+pattern HttpMethod_HEAD :: HttpMethod
+pattern HttpMethod_HEAD = HttpMethod' "HEAD"
+
+pattern HttpMethod_OPTIONS :: HttpMethod
+pattern HttpMethod_OPTIONS = HttpMethod' "OPTIONS"
+
+pattern HttpMethod_PATCH :: HttpMethod
+pattern HttpMethod_PATCH = HttpMethod' "PATCH"
+
+pattern HttpMethod_POST :: HttpMethod
+pattern HttpMethod_POST = HttpMethod' "POST"
+
+pattern HttpMethod_PUT :: HttpMethod
+pattern HttpMethod_PUT = HttpMethod' "PUT"
+
+{-# COMPLETE
+  HttpMethod_DELETE,
+  HttpMethod_GET,
+  HttpMethod_HEAD,
+  HttpMethod_OPTIONS,
+  HttpMethod_PATCH,
+  HttpMethod_POST,
+  HttpMethod_PUT,
+  HttpMethod'
+  #-}
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/LambdaEndpointConfig.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/LambdaEndpointConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/LambdaEndpointConfig.hs
@@ -0,0 +1,67 @@
+{-# 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.MigrationHubReFactorSpaces.Types.LambdaEndpointConfig
+-- 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.MigrationHubReFactorSpaces.Types.LambdaEndpointConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for the Lambda endpoint type.
+--
+-- /See:/ 'newLambdaEndpointConfig' smart constructor.
+data LambdaEndpointConfig = LambdaEndpointConfig'
+  { -- | The Amazon Resource Name (ARN) of the Lambda endpoint.
+    arn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LambdaEndpointConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'lambdaEndpointConfig_arn' - The Amazon Resource Name (ARN) of the Lambda endpoint.
+newLambdaEndpointConfig ::
+  LambdaEndpointConfig
+newLambdaEndpointConfig =
+  LambdaEndpointConfig' {arn = Prelude.Nothing}
+
+-- | The Amazon Resource Name (ARN) of the Lambda endpoint.
+lambdaEndpointConfig_arn :: Lens.Lens' LambdaEndpointConfig (Prelude.Maybe Prelude.Text)
+lambdaEndpointConfig_arn = Lens.lens (\LambdaEndpointConfig' {arn} -> arn) (\s@LambdaEndpointConfig' {} a -> s {arn = a} :: LambdaEndpointConfig)
+
+instance Data.FromJSON LambdaEndpointConfig where
+  parseJSON =
+    Data.withObject
+      "LambdaEndpointConfig"
+      ( \x ->
+          LambdaEndpointConfig' Prelude.<$> (x Data..:? "Arn")
+      )
+
+instance Prelude.Hashable LambdaEndpointConfig where
+  hashWithSalt _salt LambdaEndpointConfig' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData LambdaEndpointConfig where
+  rnf LambdaEndpointConfig' {..} = Prelude.rnf arn
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/LambdaEndpointInput.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/LambdaEndpointInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/LambdaEndpointInput.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.LambdaEndpointInput
+-- 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.MigrationHubReFactorSpaces.Types.LambdaEndpointInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The input for the Lambda endpoint type.
+--
+-- /See:/ 'newLambdaEndpointInput' smart constructor.
+data LambdaEndpointInput = LambdaEndpointInput'
+  { -- | The Amazon Resource Name (ARN) of the Lambda function or alias.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LambdaEndpointInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'lambdaEndpointInput_arn' - The Amazon Resource Name (ARN) of the Lambda function or alias.
+newLambdaEndpointInput ::
+  -- | 'arn'
+  Prelude.Text ->
+  LambdaEndpointInput
+newLambdaEndpointInput pArn_ =
+  LambdaEndpointInput' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the Lambda function or alias.
+lambdaEndpointInput_arn :: Lens.Lens' LambdaEndpointInput Prelude.Text
+lambdaEndpointInput_arn = Lens.lens (\LambdaEndpointInput' {arn} -> arn) (\s@LambdaEndpointInput' {} a -> s {arn = a} :: LambdaEndpointInput)
+
+instance Data.FromJSON LambdaEndpointInput where
+  parseJSON =
+    Data.withObject
+      "LambdaEndpointInput"
+      ( \x ->
+          LambdaEndpointInput' Prelude.<$> (x Data..: "Arn")
+      )
+
+instance Prelude.Hashable LambdaEndpointInput where
+  hashWithSalt _salt LambdaEndpointInput' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData LambdaEndpointInput where
+  rnf LambdaEndpointInput' {..} = Prelude.rnf arn
+
+instance Data.ToJSON LambdaEndpointInput where
+  toJSON LambdaEndpointInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Arn" Data..= arn)]
+      )
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/LambdaEndpointSummary.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/LambdaEndpointSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/LambdaEndpointSummary.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.LambdaEndpointSummary
+-- 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.MigrationHubReFactorSpaces.Types.LambdaEndpointSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The summary for the Lambda endpoint type.
+--
+-- /See:/ 'newLambdaEndpointSummary' smart constructor.
+data LambdaEndpointSummary = LambdaEndpointSummary'
+  { -- | The Amazon Resource Name (ARN) of the Lambda endpoint.
+    arn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LambdaEndpointSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'lambdaEndpointSummary_arn' - The Amazon Resource Name (ARN) of the Lambda endpoint.
+newLambdaEndpointSummary ::
+  LambdaEndpointSummary
+newLambdaEndpointSummary =
+  LambdaEndpointSummary' {arn = Prelude.Nothing}
+
+-- | The Amazon Resource Name (ARN) of the Lambda endpoint.
+lambdaEndpointSummary_arn :: Lens.Lens' LambdaEndpointSummary (Prelude.Maybe Prelude.Text)
+lambdaEndpointSummary_arn = Lens.lens (\LambdaEndpointSummary' {arn} -> arn) (\s@LambdaEndpointSummary' {} a -> s {arn = a} :: LambdaEndpointSummary)
+
+instance Data.FromJSON LambdaEndpointSummary where
+  parseJSON =
+    Data.withObject
+      "LambdaEndpointSummary"
+      ( \x ->
+          LambdaEndpointSummary'
+            Prelude.<$> (x Data..:? "Arn")
+      )
+
+instance Prelude.Hashable LambdaEndpointSummary where
+  hashWithSalt _salt LambdaEndpointSummary' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData LambdaEndpointSummary where
+  rnf LambdaEndpointSummary' {..} = Prelude.rnf arn
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/NetworkFabricType.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/NetworkFabricType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/NetworkFabricType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.NetworkFabricType
+-- 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.MigrationHubReFactorSpaces.Types.NetworkFabricType
+  ( NetworkFabricType
+      ( ..,
+        NetworkFabricType_TRANSIT_GATEWAY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NetworkFabricType = NetworkFabricType'
+  { fromNetworkFabricType ::
+      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 NetworkFabricType_TRANSIT_GATEWAY :: NetworkFabricType
+pattern NetworkFabricType_TRANSIT_GATEWAY = NetworkFabricType' "TRANSIT_GATEWAY"
+
+{-# COMPLETE
+  NetworkFabricType_TRANSIT_GATEWAY,
+  NetworkFabricType'
+  #-}
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/ProxyType.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ProxyType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ProxyType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.ProxyType
+-- 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.MigrationHubReFactorSpaces.Types.ProxyType
+  ( ProxyType
+      ( ..,
+        ProxyType_API_GATEWAY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProxyType = ProxyType'
+  { fromProxyType ::
+      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 ProxyType_API_GATEWAY :: ProxyType
+pattern ProxyType_API_GATEWAY = ProxyType' "API_GATEWAY"
+
+{-# COMPLETE
+  ProxyType_API_GATEWAY,
+  ProxyType'
+  #-}
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/RouteActivationState.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/RouteActivationState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/RouteActivationState.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.MigrationHubReFactorSpaces.Types.RouteActivationState
+-- 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.MigrationHubReFactorSpaces.Types.RouteActivationState
+  ( RouteActivationState
+      ( ..,
+        RouteActivationState_ACTIVE,
+        RouteActivationState_INACTIVE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RouteActivationState = RouteActivationState'
+  { fromRouteActivationState ::
+      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 RouteActivationState_ACTIVE :: RouteActivationState
+pattern RouteActivationState_ACTIVE = RouteActivationState' "ACTIVE"
+
+pattern RouteActivationState_INACTIVE :: RouteActivationState
+pattern RouteActivationState_INACTIVE = RouteActivationState' "INACTIVE"
+
+{-# COMPLETE
+  RouteActivationState_ACTIVE,
+  RouteActivationState_INACTIVE,
+  RouteActivationState'
+  #-}
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/RouteState.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/RouteState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/RouteState.hs
@@ -0,0 +1,91 @@
+{-# 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.MigrationHubReFactorSpaces.Types.RouteState
+-- 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.MigrationHubReFactorSpaces.Types.RouteState
+  ( RouteState
+      ( ..,
+        RouteState_ACTIVE,
+        RouteState_CREATING,
+        RouteState_DELETING,
+        RouteState_FAILED,
+        RouteState_INACTIVE,
+        RouteState_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RouteState = RouteState'
+  { fromRouteState ::
+      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 RouteState_ACTIVE :: RouteState
+pattern RouteState_ACTIVE = RouteState' "ACTIVE"
+
+pattern RouteState_CREATING :: RouteState
+pattern RouteState_CREATING = RouteState' "CREATING"
+
+pattern RouteState_DELETING :: RouteState
+pattern RouteState_DELETING = RouteState' "DELETING"
+
+pattern RouteState_FAILED :: RouteState
+pattern RouteState_FAILED = RouteState' "FAILED"
+
+pattern RouteState_INACTIVE :: RouteState
+pattern RouteState_INACTIVE = RouteState' "INACTIVE"
+
+pattern RouteState_UPDATING :: RouteState
+pattern RouteState_UPDATING = RouteState' "UPDATING"
+
+{-# COMPLETE
+  RouteState_ACTIVE,
+  RouteState_CREATING,
+  RouteState_DELETING,
+  RouteState_FAILED,
+  RouteState_INACTIVE,
+  RouteState_UPDATING,
+  RouteState'
+  #-}
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/RouteSummary.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/RouteSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/RouteSummary.hs
@@ -0,0 +1,286 @@
+{-# 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.MigrationHubReFactorSpaces.Types.RouteSummary
+-- 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.MigrationHubReFactorSpaces.Types.RouteSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types.ErrorResponse
+import Amazonka.MigrationHubReFactorSpaces.Types.HttpMethod
+import Amazonka.MigrationHubReFactorSpaces.Types.RouteState
+import Amazonka.MigrationHubReFactorSpaces.Types.RouteType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The summary information for the routes as a response to @ListRoutes@.
+--
+-- /See:/ 'newRouteSummary' smart constructor.
+data RouteSummary = RouteSummary'
+  { -- | The unique identifier of the application.
+    applicationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the route.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of the route creator.
+    createdByAccountId :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the route is created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | The unique identifier of the environment.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | Any error associated with the route resource.
+    error :: Prelude.Maybe ErrorResponse,
+    -- | Indicates whether to match all subpaths of the given source path. If
+    -- this value is @false@, requests must match the source path exactly
+    -- before they are forwarded to this route\'s service.
+    includeChildPaths :: Prelude.Maybe Prelude.Bool,
+    -- | A timestamp that indicates when the route was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | A list of HTTP methods to match. An empty list matches all values. If a
+    -- method is present, only HTTP requests using that method are forwarded to
+    -- this route’s service.
+    methods :: Prelude.Maybe [HttpMethod],
+    -- | The Amazon Web Services account ID of the route owner.
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | A mapping of Amazon API Gateway path resources to resource IDs.
+    pathResourceToId :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The unique identifier of the route.
+    routeId :: Prelude.Maybe Prelude.Text,
+    -- | The route type of the route.
+    routeType :: Prelude.Maybe RouteType,
+    -- | The unique identifier of the service.
+    serviceId :: Prelude.Maybe Prelude.Text,
+    -- | The path to use to match traffic. Paths must start with @\/@ and are
+    -- relative to the base of the application.
+    sourcePath :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the route.
+    state :: Prelude.Maybe RouteState,
+    -- | The tags assigned to the route.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text))
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RouteSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationId', 'routeSummary_applicationId' - The unique identifier of the application.
+--
+-- 'arn', 'routeSummary_arn' - The Amazon Resource Name (ARN) of the route.
+--
+-- 'createdByAccountId', 'routeSummary_createdByAccountId' - The Amazon Web Services account ID of the route creator.
+--
+-- 'createdTime', 'routeSummary_createdTime' - A timestamp that indicates when the route is created.
+--
+-- 'environmentId', 'routeSummary_environmentId' - The unique identifier of the environment.
+--
+-- 'error', 'routeSummary_error' - Any error associated with the route resource.
+--
+-- 'includeChildPaths', 'routeSummary_includeChildPaths' - Indicates whether to match all subpaths of the given source path. If
+-- this value is @false@, requests must match the source path exactly
+-- before they are forwarded to this route\'s service.
+--
+-- 'lastUpdatedTime', 'routeSummary_lastUpdatedTime' - A timestamp that indicates when the route was last updated.
+--
+-- 'methods', 'routeSummary_methods' - A list of HTTP methods to match. An empty list matches all values. If a
+-- method is present, only HTTP requests using that method are forwarded to
+-- this route’s service.
+--
+-- 'ownerAccountId', 'routeSummary_ownerAccountId' - The Amazon Web Services account ID of the route owner.
+--
+-- 'pathResourceToId', 'routeSummary_pathResourceToId' - A mapping of Amazon API Gateway path resources to resource IDs.
+--
+-- 'routeId', 'routeSummary_routeId' - The unique identifier of the route.
+--
+-- 'routeType', 'routeSummary_routeType' - The route type of the route.
+--
+-- 'serviceId', 'routeSummary_serviceId' - The unique identifier of the service.
+--
+-- 'sourcePath', 'routeSummary_sourcePath' - The path to use to match traffic. Paths must start with @\/@ and are
+-- relative to the base of the application.
+--
+-- 'state', 'routeSummary_state' - The current state of the route.
+--
+-- 'tags', 'routeSummary_tags' - The tags assigned to the route.
+newRouteSummary ::
+  RouteSummary
+newRouteSummary =
+  RouteSummary'
+    { applicationId = Prelude.Nothing,
+      arn = Prelude.Nothing,
+      createdByAccountId = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      error = Prelude.Nothing,
+      includeChildPaths = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      methods = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      pathResourceToId = Prelude.Nothing,
+      routeId = Prelude.Nothing,
+      routeType = Prelude.Nothing,
+      serviceId = Prelude.Nothing,
+      sourcePath = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The unique identifier of the application.
+routeSummary_applicationId :: Lens.Lens' RouteSummary (Prelude.Maybe Prelude.Text)
+routeSummary_applicationId = Lens.lens (\RouteSummary' {applicationId} -> applicationId) (\s@RouteSummary' {} a -> s {applicationId = a} :: RouteSummary)
+
+-- | The Amazon Resource Name (ARN) of the route.
+routeSummary_arn :: Lens.Lens' RouteSummary (Prelude.Maybe Prelude.Text)
+routeSummary_arn = Lens.lens (\RouteSummary' {arn} -> arn) (\s@RouteSummary' {} a -> s {arn = a} :: RouteSummary)
+
+-- | The Amazon Web Services account ID of the route creator.
+routeSummary_createdByAccountId :: Lens.Lens' RouteSummary (Prelude.Maybe Prelude.Text)
+routeSummary_createdByAccountId = Lens.lens (\RouteSummary' {createdByAccountId} -> createdByAccountId) (\s@RouteSummary' {} a -> s {createdByAccountId = a} :: RouteSummary)
+
+-- | A timestamp that indicates when the route is created.
+routeSummary_createdTime :: Lens.Lens' RouteSummary (Prelude.Maybe Prelude.UTCTime)
+routeSummary_createdTime = Lens.lens (\RouteSummary' {createdTime} -> createdTime) (\s@RouteSummary' {} a -> s {createdTime = a} :: RouteSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The unique identifier of the environment.
+routeSummary_environmentId :: Lens.Lens' RouteSummary (Prelude.Maybe Prelude.Text)
+routeSummary_environmentId = Lens.lens (\RouteSummary' {environmentId} -> environmentId) (\s@RouteSummary' {} a -> s {environmentId = a} :: RouteSummary)
+
+-- | Any error associated with the route resource.
+routeSummary_error :: Lens.Lens' RouteSummary (Prelude.Maybe ErrorResponse)
+routeSummary_error = Lens.lens (\RouteSummary' {error} -> error) (\s@RouteSummary' {} a -> s {error = a} :: RouteSummary)
+
+-- | Indicates whether to match all subpaths of the given source path. If
+-- this value is @false@, requests must match the source path exactly
+-- before they are forwarded to this route\'s service.
+routeSummary_includeChildPaths :: Lens.Lens' RouteSummary (Prelude.Maybe Prelude.Bool)
+routeSummary_includeChildPaths = Lens.lens (\RouteSummary' {includeChildPaths} -> includeChildPaths) (\s@RouteSummary' {} a -> s {includeChildPaths = a} :: RouteSummary)
+
+-- | A timestamp that indicates when the route was last updated.
+routeSummary_lastUpdatedTime :: Lens.Lens' RouteSummary (Prelude.Maybe Prelude.UTCTime)
+routeSummary_lastUpdatedTime = Lens.lens (\RouteSummary' {lastUpdatedTime} -> lastUpdatedTime) (\s@RouteSummary' {} a -> s {lastUpdatedTime = a} :: RouteSummary) Prelude.. Lens.mapping Data._Time
+
+-- | A list of HTTP methods to match. An empty list matches all values. If a
+-- method is present, only HTTP requests using that method are forwarded to
+-- this route’s service.
+routeSummary_methods :: Lens.Lens' RouteSummary (Prelude.Maybe [HttpMethod])
+routeSummary_methods = Lens.lens (\RouteSummary' {methods} -> methods) (\s@RouteSummary' {} a -> s {methods = a} :: RouteSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services account ID of the route owner.
+routeSummary_ownerAccountId :: Lens.Lens' RouteSummary (Prelude.Maybe Prelude.Text)
+routeSummary_ownerAccountId = Lens.lens (\RouteSummary' {ownerAccountId} -> ownerAccountId) (\s@RouteSummary' {} a -> s {ownerAccountId = a} :: RouteSummary)
+
+-- | A mapping of Amazon API Gateway path resources to resource IDs.
+routeSummary_pathResourceToId :: Lens.Lens' RouteSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+routeSummary_pathResourceToId = Lens.lens (\RouteSummary' {pathResourceToId} -> pathResourceToId) (\s@RouteSummary' {} a -> s {pathResourceToId = a} :: RouteSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The unique identifier of the route.
+routeSummary_routeId :: Lens.Lens' RouteSummary (Prelude.Maybe Prelude.Text)
+routeSummary_routeId = Lens.lens (\RouteSummary' {routeId} -> routeId) (\s@RouteSummary' {} a -> s {routeId = a} :: RouteSummary)
+
+-- | The route type of the route.
+routeSummary_routeType :: Lens.Lens' RouteSummary (Prelude.Maybe RouteType)
+routeSummary_routeType = Lens.lens (\RouteSummary' {routeType} -> routeType) (\s@RouteSummary' {} a -> s {routeType = a} :: RouteSummary)
+
+-- | The unique identifier of the service.
+routeSummary_serviceId :: Lens.Lens' RouteSummary (Prelude.Maybe Prelude.Text)
+routeSummary_serviceId = Lens.lens (\RouteSummary' {serviceId} -> serviceId) (\s@RouteSummary' {} a -> s {serviceId = a} :: RouteSummary)
+
+-- | The path to use to match traffic. Paths must start with @\/@ and are
+-- relative to the base of the application.
+routeSummary_sourcePath :: Lens.Lens' RouteSummary (Prelude.Maybe Prelude.Text)
+routeSummary_sourcePath = Lens.lens (\RouteSummary' {sourcePath} -> sourcePath) (\s@RouteSummary' {} a -> s {sourcePath = a} :: RouteSummary)
+
+-- | The current state of the route.
+routeSummary_state :: Lens.Lens' RouteSummary (Prelude.Maybe RouteState)
+routeSummary_state = Lens.lens (\RouteSummary' {state} -> state) (\s@RouteSummary' {} a -> s {state = a} :: RouteSummary)
+
+-- | The tags assigned to the route.
+routeSummary_tags :: Lens.Lens' RouteSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+routeSummary_tags = Lens.lens (\RouteSummary' {tags} -> tags) (\s@RouteSummary' {} a -> s {tags = a} :: RouteSummary) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+instance Data.FromJSON RouteSummary where
+  parseJSON =
+    Data.withObject
+      "RouteSummary"
+      ( \x ->
+          RouteSummary'
+            Prelude.<$> (x Data..:? "ApplicationId")
+            Prelude.<*> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedByAccountId")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "EnvironmentId")
+            Prelude.<*> (x Data..:? "Error")
+            Prelude.<*> (x Data..:? "IncludeChildPaths")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Methods" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "OwnerAccountId")
+            Prelude.<*> ( x
+                            Data..:? "PathResourceToId"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "RouteId")
+            Prelude.<*> (x Data..:? "RouteType")
+            Prelude.<*> (x Data..:? "ServiceId")
+            Prelude.<*> (x Data..:? "SourcePath")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable RouteSummary where
+  hashWithSalt _salt RouteSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationId
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdByAccountId
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` environmentId
+      `Prelude.hashWithSalt` error
+      `Prelude.hashWithSalt` includeChildPaths
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` methods
+      `Prelude.hashWithSalt` ownerAccountId
+      `Prelude.hashWithSalt` pathResourceToId
+      `Prelude.hashWithSalt` routeId
+      `Prelude.hashWithSalt` routeType
+      `Prelude.hashWithSalt` serviceId
+      `Prelude.hashWithSalt` sourcePath
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData RouteSummary where
+  rnf RouteSummary' {..} =
+    Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdByAccountId
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf includeChildPaths
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf methods
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf pathResourceToId
+      `Prelude.seq` Prelude.rnf routeId
+      `Prelude.seq` Prelude.rnf routeType
+      `Prelude.seq` Prelude.rnf serviceId
+      `Prelude.seq` Prelude.rnf sourcePath
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/RouteType.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/RouteType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/RouteType.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.MigrationHubReFactorSpaces.Types.RouteType
+-- 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.MigrationHubReFactorSpaces.Types.RouteType
+  ( RouteType
+      ( ..,
+        RouteType_DEFAULT,
+        RouteType_URI_PATH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RouteType = RouteType'
+  { fromRouteType ::
+      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 RouteType_DEFAULT :: RouteType
+pattern RouteType_DEFAULT = RouteType' "DEFAULT"
+
+pattern RouteType_URI_PATH :: RouteType
+pattern RouteType_URI_PATH = RouteType' "URI_PATH"
+
+{-# COMPLETE
+  RouteType_DEFAULT,
+  RouteType_URI_PATH,
+  RouteType'
+  #-}
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/ServiceEndpointType.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ServiceEndpointType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ServiceEndpointType.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.MigrationHubReFactorSpaces.Types.ServiceEndpointType
+-- 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.MigrationHubReFactorSpaces.Types.ServiceEndpointType
+  ( ServiceEndpointType
+      ( ..,
+        ServiceEndpointType_LAMBDA,
+        ServiceEndpointType_URL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ServiceEndpointType = ServiceEndpointType'
+  { fromServiceEndpointType ::
+      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 ServiceEndpointType_LAMBDA :: ServiceEndpointType
+pattern ServiceEndpointType_LAMBDA = ServiceEndpointType' "LAMBDA"
+
+pattern ServiceEndpointType_URL :: ServiceEndpointType
+pattern ServiceEndpointType_URL = ServiceEndpointType' "URL"
+
+{-# COMPLETE
+  ServiceEndpointType_LAMBDA,
+  ServiceEndpointType_URL,
+  ServiceEndpointType'
+  #-}
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/ServiceState.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ServiceState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ServiceState.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.ServiceState
+-- 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.MigrationHubReFactorSpaces.Types.ServiceState
+  ( ServiceState
+      ( ..,
+        ServiceState_ACTIVE,
+        ServiceState_CREATING,
+        ServiceState_DELETING,
+        ServiceState_FAILED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ServiceState = ServiceState'
+  { fromServiceState ::
+      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 ServiceState_ACTIVE :: ServiceState
+pattern ServiceState_ACTIVE = ServiceState' "ACTIVE"
+
+pattern ServiceState_CREATING :: ServiceState
+pattern ServiceState_CREATING = ServiceState' "CREATING"
+
+pattern ServiceState_DELETING :: ServiceState
+pattern ServiceState_DELETING = ServiceState' "DELETING"
+
+pattern ServiceState_FAILED :: ServiceState
+pattern ServiceState_FAILED = ServiceState' "FAILED"
+
+{-# COMPLETE
+  ServiceState_ACTIVE,
+  ServiceState_CREATING,
+  ServiceState_DELETING,
+  ServiceState_FAILED,
+  ServiceState'
+  #-}
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/ServiceSummary.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ServiceSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/ServiceSummary.hs
@@ -0,0 +1,269 @@
+{-# 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.MigrationHubReFactorSpaces.Types.ServiceSummary
+-- 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.MigrationHubReFactorSpaces.Types.ServiceSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types.ErrorResponse
+import Amazonka.MigrationHubReFactorSpaces.Types.LambdaEndpointSummary
+import Amazonka.MigrationHubReFactorSpaces.Types.ServiceEndpointType
+import Amazonka.MigrationHubReFactorSpaces.Types.ServiceState
+import Amazonka.MigrationHubReFactorSpaces.Types.UrlEndpointSummary
+import qualified Amazonka.Prelude as Prelude
+
+-- | A summary for the service as a response to @ListServices@.
+--
+-- /See:/ 'newServiceSummary' smart constructor.
+data ServiceSummary = ServiceSummary'
+  { -- | The unique identifier of the application.
+    applicationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the service.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of the service creator.
+    createdByAccountId :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the service is created.
+    createdTime :: Prelude.Maybe Data.POSIX,
+    -- | A description of the service.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The endpoint type of the service.
+    endpointType :: Prelude.Maybe ServiceEndpointType,
+    -- | The unique identifier of the environment.
+    environmentId :: Prelude.Maybe Prelude.Text,
+    -- | Any error associated with the service resource.
+    error :: Prelude.Maybe ErrorResponse,
+    -- | A summary of the configuration for the Lambda endpoint type.
+    lambdaEndpoint :: Prelude.Maybe LambdaEndpointSummary,
+    -- | A timestamp that indicates when the service was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the service.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account ID of the service owner.
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The unique identifier of the service.
+    serviceId :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the service.
+    state :: Prelude.Maybe ServiceState,
+    -- | The tags assigned to the service.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The summary of the configuration for the URL endpoint type.
+    urlEndpoint :: Prelude.Maybe UrlEndpointSummary,
+    -- | The ID of the virtual private cloud (VPC).
+    vpcId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ServiceSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationId', 'serviceSummary_applicationId' - The unique identifier of the application.
+--
+-- 'arn', 'serviceSummary_arn' - The Amazon Resource Name (ARN) of the service.
+--
+-- 'createdByAccountId', 'serviceSummary_createdByAccountId' - The Amazon Web Services account ID of the service creator.
+--
+-- 'createdTime', 'serviceSummary_createdTime' - A timestamp that indicates when the service is created.
+--
+-- 'description', 'serviceSummary_description' - A description of the service.
+--
+-- 'endpointType', 'serviceSummary_endpointType' - The endpoint type of the service.
+--
+-- 'environmentId', 'serviceSummary_environmentId' - The unique identifier of the environment.
+--
+-- 'error', 'serviceSummary_error' - Any error associated with the service resource.
+--
+-- 'lambdaEndpoint', 'serviceSummary_lambdaEndpoint' - A summary of the configuration for the Lambda endpoint type.
+--
+-- 'lastUpdatedTime', 'serviceSummary_lastUpdatedTime' - A timestamp that indicates when the service was last updated.
+--
+-- 'name', 'serviceSummary_name' - The name of the service.
+--
+-- 'ownerAccountId', 'serviceSummary_ownerAccountId' - The Amazon Web Services account ID of the service owner.
+--
+-- 'serviceId', 'serviceSummary_serviceId' - The unique identifier of the service.
+--
+-- 'state', 'serviceSummary_state' - The current state of the service.
+--
+-- 'tags', 'serviceSummary_tags' - The tags assigned to the service.
+--
+-- 'urlEndpoint', 'serviceSummary_urlEndpoint' - The summary of the configuration for the URL endpoint type.
+--
+-- 'vpcId', 'serviceSummary_vpcId' - The ID of the virtual private cloud (VPC).
+newServiceSummary ::
+  ServiceSummary
+newServiceSummary =
+  ServiceSummary'
+    { applicationId = Prelude.Nothing,
+      arn = Prelude.Nothing,
+      createdByAccountId = Prelude.Nothing,
+      createdTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      endpointType = Prelude.Nothing,
+      environmentId = Prelude.Nothing,
+      error = Prelude.Nothing,
+      lambdaEndpoint = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      serviceId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      urlEndpoint = Prelude.Nothing,
+      vpcId = Prelude.Nothing
+    }
+
+-- | The unique identifier of the application.
+serviceSummary_applicationId :: Lens.Lens' ServiceSummary (Prelude.Maybe Prelude.Text)
+serviceSummary_applicationId = Lens.lens (\ServiceSummary' {applicationId} -> applicationId) (\s@ServiceSummary' {} a -> s {applicationId = a} :: ServiceSummary)
+
+-- | The Amazon Resource Name (ARN) of the service.
+serviceSummary_arn :: Lens.Lens' ServiceSummary (Prelude.Maybe Prelude.Text)
+serviceSummary_arn = Lens.lens (\ServiceSummary' {arn} -> arn) (\s@ServiceSummary' {} a -> s {arn = a} :: ServiceSummary)
+
+-- | The Amazon Web Services account ID of the service creator.
+serviceSummary_createdByAccountId :: Lens.Lens' ServiceSummary (Prelude.Maybe Prelude.Text)
+serviceSummary_createdByAccountId = Lens.lens (\ServiceSummary' {createdByAccountId} -> createdByAccountId) (\s@ServiceSummary' {} a -> s {createdByAccountId = a} :: ServiceSummary)
+
+-- | A timestamp that indicates when the service is created.
+serviceSummary_createdTime :: Lens.Lens' ServiceSummary (Prelude.Maybe Prelude.UTCTime)
+serviceSummary_createdTime = Lens.lens (\ServiceSummary' {createdTime} -> createdTime) (\s@ServiceSummary' {} a -> s {createdTime = a} :: ServiceSummary) Prelude.. Lens.mapping Data._Time
+
+-- | A description of the service.
+serviceSummary_description :: Lens.Lens' ServiceSummary (Prelude.Maybe Prelude.Text)
+serviceSummary_description = Lens.lens (\ServiceSummary' {description} -> description) (\s@ServiceSummary' {} a -> s {description = a} :: ServiceSummary)
+
+-- | The endpoint type of the service.
+serviceSummary_endpointType :: Lens.Lens' ServiceSummary (Prelude.Maybe ServiceEndpointType)
+serviceSummary_endpointType = Lens.lens (\ServiceSummary' {endpointType} -> endpointType) (\s@ServiceSummary' {} a -> s {endpointType = a} :: ServiceSummary)
+
+-- | The unique identifier of the environment.
+serviceSummary_environmentId :: Lens.Lens' ServiceSummary (Prelude.Maybe Prelude.Text)
+serviceSummary_environmentId = Lens.lens (\ServiceSummary' {environmentId} -> environmentId) (\s@ServiceSummary' {} a -> s {environmentId = a} :: ServiceSummary)
+
+-- | Any error associated with the service resource.
+serviceSummary_error :: Lens.Lens' ServiceSummary (Prelude.Maybe ErrorResponse)
+serviceSummary_error = Lens.lens (\ServiceSummary' {error} -> error) (\s@ServiceSummary' {} a -> s {error = a} :: ServiceSummary)
+
+-- | A summary of the configuration for the Lambda endpoint type.
+serviceSummary_lambdaEndpoint :: Lens.Lens' ServiceSummary (Prelude.Maybe LambdaEndpointSummary)
+serviceSummary_lambdaEndpoint = Lens.lens (\ServiceSummary' {lambdaEndpoint} -> lambdaEndpoint) (\s@ServiceSummary' {} a -> s {lambdaEndpoint = a} :: ServiceSummary)
+
+-- | A timestamp that indicates when the service was last updated.
+serviceSummary_lastUpdatedTime :: Lens.Lens' ServiceSummary (Prelude.Maybe Prelude.UTCTime)
+serviceSummary_lastUpdatedTime = Lens.lens (\ServiceSummary' {lastUpdatedTime} -> lastUpdatedTime) (\s@ServiceSummary' {} a -> s {lastUpdatedTime = a} :: ServiceSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the service.
+serviceSummary_name :: Lens.Lens' ServiceSummary (Prelude.Maybe Prelude.Text)
+serviceSummary_name = Lens.lens (\ServiceSummary' {name} -> name) (\s@ServiceSummary' {} a -> s {name = a} :: ServiceSummary)
+
+-- | The Amazon Web Services account ID of the service owner.
+serviceSummary_ownerAccountId :: Lens.Lens' ServiceSummary (Prelude.Maybe Prelude.Text)
+serviceSummary_ownerAccountId = Lens.lens (\ServiceSummary' {ownerAccountId} -> ownerAccountId) (\s@ServiceSummary' {} a -> s {ownerAccountId = a} :: ServiceSummary)
+
+-- | The unique identifier of the service.
+serviceSummary_serviceId :: Lens.Lens' ServiceSummary (Prelude.Maybe Prelude.Text)
+serviceSummary_serviceId = Lens.lens (\ServiceSummary' {serviceId} -> serviceId) (\s@ServiceSummary' {} a -> s {serviceId = a} :: ServiceSummary)
+
+-- | The current state of the service.
+serviceSummary_state :: Lens.Lens' ServiceSummary (Prelude.Maybe ServiceState)
+serviceSummary_state = Lens.lens (\ServiceSummary' {state} -> state) (\s@ServiceSummary' {} a -> s {state = a} :: ServiceSummary)
+
+-- | The tags assigned to the service.
+serviceSummary_tags :: Lens.Lens' ServiceSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+serviceSummary_tags = Lens.lens (\ServiceSummary' {tags} -> tags) (\s@ServiceSummary' {} a -> s {tags = a} :: ServiceSummary) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The summary of the configuration for the URL endpoint type.
+serviceSummary_urlEndpoint :: Lens.Lens' ServiceSummary (Prelude.Maybe UrlEndpointSummary)
+serviceSummary_urlEndpoint = Lens.lens (\ServiceSummary' {urlEndpoint} -> urlEndpoint) (\s@ServiceSummary' {} a -> s {urlEndpoint = a} :: ServiceSummary)
+
+-- | The ID of the virtual private cloud (VPC).
+serviceSummary_vpcId :: Lens.Lens' ServiceSummary (Prelude.Maybe Prelude.Text)
+serviceSummary_vpcId = Lens.lens (\ServiceSummary' {vpcId} -> vpcId) (\s@ServiceSummary' {} a -> s {vpcId = a} :: ServiceSummary)
+
+instance Data.FromJSON ServiceSummary where
+  parseJSON =
+    Data.withObject
+      "ServiceSummary"
+      ( \x ->
+          ServiceSummary'
+            Prelude.<$> (x Data..:? "ApplicationId")
+            Prelude.<*> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreatedByAccountId")
+            Prelude.<*> (x Data..:? "CreatedTime")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "EndpointType")
+            Prelude.<*> (x Data..:? "EnvironmentId")
+            Prelude.<*> (x Data..:? "Error")
+            Prelude.<*> (x Data..:? "LambdaEndpoint")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "OwnerAccountId")
+            Prelude.<*> (x Data..:? "ServiceId")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "UrlEndpoint")
+            Prelude.<*> (x Data..:? "VpcId")
+      )
+
+instance Prelude.Hashable ServiceSummary where
+  hashWithSalt _salt ServiceSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationId
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` createdByAccountId
+      `Prelude.hashWithSalt` createdTime
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` endpointType
+      `Prelude.hashWithSalt` environmentId
+      `Prelude.hashWithSalt` error
+      `Prelude.hashWithSalt` lambdaEndpoint
+      `Prelude.hashWithSalt` lastUpdatedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` ownerAccountId
+      `Prelude.hashWithSalt` serviceId
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` urlEndpoint
+      `Prelude.hashWithSalt` vpcId
+
+instance Prelude.NFData ServiceSummary where
+  rnf ServiceSummary' {..} =
+    Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf createdByAccountId
+      `Prelude.seq` Prelude.rnf createdTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf endpointType
+      `Prelude.seq` Prelude.rnf environmentId
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf lambdaEndpoint
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf serviceId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf urlEndpoint
+      `Prelude.seq` Prelude.rnf vpcId
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/UriPathRouteInput.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/UriPathRouteInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/UriPathRouteInput.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.UriPathRouteInput
+-- 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.MigrationHubReFactorSpaces.Types.UriPathRouteInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types.HttpMethod
+import Amazonka.MigrationHubReFactorSpaces.Types.RouteActivationState
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for the URI path route type.
+--
+-- /See:/ 'newUriPathRouteInput' smart constructor.
+data UriPathRouteInput = UriPathRouteInput'
+  { -- | Indicates whether to match all subpaths of the given source path. If
+    -- this value is @false@, requests must match the source path exactly
+    -- before they are forwarded to this route\'s service.
+    includeChildPaths :: Prelude.Maybe Prelude.Bool,
+    -- | A list of HTTP methods to match. An empty list matches all values. If a
+    -- method is present, only HTTP requests using that method are forwarded to
+    -- this route’s service.
+    methods :: Prelude.Maybe [HttpMethod],
+    -- | If set to @ACTIVE@, traffic is forwarded to this route’s service after
+    -- the route is created.
+    activationState :: RouteActivationState,
+    -- | The path to use to match traffic. Paths must start with @\/@ and are
+    -- relative to the base of the application.
+    sourcePath :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UriPathRouteInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'includeChildPaths', 'uriPathRouteInput_includeChildPaths' - Indicates whether to match all subpaths of the given source path. If
+-- this value is @false@, requests must match the source path exactly
+-- before they are forwarded to this route\'s service.
+--
+-- 'methods', 'uriPathRouteInput_methods' - A list of HTTP methods to match. An empty list matches all values. If a
+-- method is present, only HTTP requests using that method are forwarded to
+-- this route’s service.
+--
+-- 'activationState', 'uriPathRouteInput_activationState' - If set to @ACTIVE@, traffic is forwarded to this route’s service after
+-- the route is created.
+--
+-- 'sourcePath', 'uriPathRouteInput_sourcePath' - The path to use to match traffic. Paths must start with @\/@ and are
+-- relative to the base of the application.
+newUriPathRouteInput ::
+  -- | 'activationState'
+  RouteActivationState ->
+  -- | 'sourcePath'
+  Prelude.Text ->
+  UriPathRouteInput
+newUriPathRouteInput pActivationState_ pSourcePath_ =
+  UriPathRouteInput'
+    { includeChildPaths =
+        Prelude.Nothing,
+      methods = Prelude.Nothing,
+      activationState = pActivationState_,
+      sourcePath = pSourcePath_
+    }
+
+-- | Indicates whether to match all subpaths of the given source path. If
+-- this value is @false@, requests must match the source path exactly
+-- before they are forwarded to this route\'s service.
+uriPathRouteInput_includeChildPaths :: Lens.Lens' UriPathRouteInput (Prelude.Maybe Prelude.Bool)
+uriPathRouteInput_includeChildPaths = Lens.lens (\UriPathRouteInput' {includeChildPaths} -> includeChildPaths) (\s@UriPathRouteInput' {} a -> s {includeChildPaths = a} :: UriPathRouteInput)
+
+-- | A list of HTTP methods to match. An empty list matches all values. If a
+-- method is present, only HTTP requests using that method are forwarded to
+-- this route’s service.
+uriPathRouteInput_methods :: Lens.Lens' UriPathRouteInput (Prelude.Maybe [HttpMethod])
+uriPathRouteInput_methods = Lens.lens (\UriPathRouteInput' {methods} -> methods) (\s@UriPathRouteInput' {} a -> s {methods = a} :: UriPathRouteInput) Prelude.. Lens.mapping Lens.coerced
+
+-- | If set to @ACTIVE@, traffic is forwarded to this route’s service after
+-- the route is created.
+uriPathRouteInput_activationState :: Lens.Lens' UriPathRouteInput RouteActivationState
+uriPathRouteInput_activationState = Lens.lens (\UriPathRouteInput' {activationState} -> activationState) (\s@UriPathRouteInput' {} a -> s {activationState = a} :: UriPathRouteInput)
+
+-- | The path to use to match traffic. Paths must start with @\/@ and are
+-- relative to the base of the application.
+uriPathRouteInput_sourcePath :: Lens.Lens' UriPathRouteInput Prelude.Text
+uriPathRouteInput_sourcePath = Lens.lens (\UriPathRouteInput' {sourcePath} -> sourcePath) (\s@UriPathRouteInput' {} a -> s {sourcePath = a} :: UriPathRouteInput)
+
+instance Data.FromJSON UriPathRouteInput where
+  parseJSON =
+    Data.withObject
+      "UriPathRouteInput"
+      ( \x ->
+          UriPathRouteInput'
+            Prelude.<$> (x Data..:? "IncludeChildPaths")
+            Prelude.<*> (x Data..:? "Methods" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "ActivationState")
+            Prelude.<*> (x Data..: "SourcePath")
+      )
+
+instance Prelude.Hashable UriPathRouteInput where
+  hashWithSalt _salt UriPathRouteInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` includeChildPaths
+      `Prelude.hashWithSalt` methods
+      `Prelude.hashWithSalt` activationState
+      `Prelude.hashWithSalt` sourcePath
+
+instance Prelude.NFData UriPathRouteInput where
+  rnf UriPathRouteInput' {..} =
+    Prelude.rnf includeChildPaths
+      `Prelude.seq` Prelude.rnf methods
+      `Prelude.seq` Prelude.rnf activationState
+      `Prelude.seq` Prelude.rnf sourcePath
+
+instance Data.ToJSON UriPathRouteInput where
+  toJSON UriPathRouteInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("IncludeChildPaths" Data..=)
+              Prelude.<$> includeChildPaths,
+            ("Methods" Data..=) Prelude.<$> methods,
+            Prelude.Just
+              ("ActivationState" Data..= activationState),
+            Prelude.Just ("SourcePath" Data..= sourcePath)
+          ]
+      )
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/UrlEndpointConfig.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/UrlEndpointConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/UrlEndpointConfig.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.UrlEndpointConfig
+-- 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.MigrationHubReFactorSpaces.Types.UrlEndpointConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for the URL endpoint type.
+--
+-- /See:/ 'newUrlEndpointConfig' smart constructor.
+data UrlEndpointConfig = UrlEndpointConfig'
+  { -- | The health check URL of the URL endpoint type.
+    healthUrl :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP URL endpoint.
+    url :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UrlEndpointConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'healthUrl', 'urlEndpointConfig_healthUrl' - The health check URL of the URL endpoint type.
+--
+-- 'url', 'urlEndpointConfig_url' - The HTTP URL endpoint.
+newUrlEndpointConfig ::
+  UrlEndpointConfig
+newUrlEndpointConfig =
+  UrlEndpointConfig'
+    { healthUrl = Prelude.Nothing,
+      url = Prelude.Nothing
+    }
+
+-- | The health check URL of the URL endpoint type.
+urlEndpointConfig_healthUrl :: Lens.Lens' UrlEndpointConfig (Prelude.Maybe Prelude.Text)
+urlEndpointConfig_healthUrl = Lens.lens (\UrlEndpointConfig' {healthUrl} -> healthUrl) (\s@UrlEndpointConfig' {} a -> s {healthUrl = a} :: UrlEndpointConfig)
+
+-- | The HTTP URL endpoint.
+urlEndpointConfig_url :: Lens.Lens' UrlEndpointConfig (Prelude.Maybe Prelude.Text)
+urlEndpointConfig_url = Lens.lens (\UrlEndpointConfig' {url} -> url) (\s@UrlEndpointConfig' {} a -> s {url = a} :: UrlEndpointConfig)
+
+instance Data.FromJSON UrlEndpointConfig where
+  parseJSON =
+    Data.withObject
+      "UrlEndpointConfig"
+      ( \x ->
+          UrlEndpointConfig'
+            Prelude.<$> (x Data..:? "HealthUrl")
+            Prelude.<*> (x Data..:? "Url")
+      )
+
+instance Prelude.Hashable UrlEndpointConfig where
+  hashWithSalt _salt UrlEndpointConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` healthUrl
+      `Prelude.hashWithSalt` url
+
+instance Prelude.NFData UrlEndpointConfig where
+  rnf UrlEndpointConfig' {..} =
+    Prelude.rnf healthUrl `Prelude.seq` Prelude.rnf url
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/UrlEndpointInput.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/UrlEndpointInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/UrlEndpointInput.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.UrlEndpointInput
+-- 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.MigrationHubReFactorSpaces.Types.UrlEndpointInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for the URL endpoint type.
+--
+-- /See:/ 'newUrlEndpointInput' smart constructor.
+data UrlEndpointInput = UrlEndpointInput'
+  { -- | The health check URL of the URL endpoint type. If the URL is a public
+    -- endpoint, the @HealthUrl@ must also be a public endpoint. If the URL is
+    -- a private endpoint inside a virtual private cloud (VPC), the health URL
+    -- must also be a private endpoint, and the host must be the same as the
+    -- URL.
+    healthUrl :: Prelude.Maybe Prelude.Text,
+    -- | The URL to route traffic to. The URL must be an
+    -- <https://datatracker.ietf.org/doc/html/rfc3986 rfc3986-formatted URL>.
+    -- If the host is a domain name, the name must be resolvable over the
+    -- public internet. If the scheme is @https@, the top level domain of the
+    -- host must be listed in the
+    -- <https://www.iana.org/domains/root/db IANA root zone database>.
+    url :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UrlEndpointInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'healthUrl', 'urlEndpointInput_healthUrl' - The health check URL of the URL endpoint type. If the URL is a public
+-- endpoint, the @HealthUrl@ must also be a public endpoint. If the URL is
+-- a private endpoint inside a virtual private cloud (VPC), the health URL
+-- must also be a private endpoint, and the host must be the same as the
+-- URL.
+--
+-- 'url', 'urlEndpointInput_url' - The URL to route traffic to. The URL must be an
+-- <https://datatracker.ietf.org/doc/html/rfc3986 rfc3986-formatted URL>.
+-- If the host is a domain name, the name must be resolvable over the
+-- public internet. If the scheme is @https@, the top level domain of the
+-- host must be listed in the
+-- <https://www.iana.org/domains/root/db IANA root zone database>.
+newUrlEndpointInput ::
+  -- | 'url'
+  Prelude.Text ->
+  UrlEndpointInput
+newUrlEndpointInput pUrl_ =
+  UrlEndpointInput'
+    { healthUrl = Prelude.Nothing,
+      url = pUrl_
+    }
+
+-- | The health check URL of the URL endpoint type. If the URL is a public
+-- endpoint, the @HealthUrl@ must also be a public endpoint. If the URL is
+-- a private endpoint inside a virtual private cloud (VPC), the health URL
+-- must also be a private endpoint, and the host must be the same as the
+-- URL.
+urlEndpointInput_healthUrl :: Lens.Lens' UrlEndpointInput (Prelude.Maybe Prelude.Text)
+urlEndpointInput_healthUrl = Lens.lens (\UrlEndpointInput' {healthUrl} -> healthUrl) (\s@UrlEndpointInput' {} a -> s {healthUrl = a} :: UrlEndpointInput)
+
+-- | The URL to route traffic to. The URL must be an
+-- <https://datatracker.ietf.org/doc/html/rfc3986 rfc3986-formatted URL>.
+-- If the host is a domain name, the name must be resolvable over the
+-- public internet. If the scheme is @https@, the top level domain of the
+-- host must be listed in the
+-- <https://www.iana.org/domains/root/db IANA root zone database>.
+urlEndpointInput_url :: Lens.Lens' UrlEndpointInput Prelude.Text
+urlEndpointInput_url = Lens.lens (\UrlEndpointInput' {url} -> url) (\s@UrlEndpointInput' {} a -> s {url = a} :: UrlEndpointInput)
+
+instance Data.FromJSON UrlEndpointInput where
+  parseJSON =
+    Data.withObject
+      "UrlEndpointInput"
+      ( \x ->
+          UrlEndpointInput'
+            Prelude.<$> (x Data..:? "HealthUrl")
+            Prelude.<*> (x Data..: "Url")
+      )
+
+instance Prelude.Hashable UrlEndpointInput where
+  hashWithSalt _salt UrlEndpointInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` healthUrl
+      `Prelude.hashWithSalt` url
+
+instance Prelude.NFData UrlEndpointInput where
+  rnf UrlEndpointInput' {..} =
+    Prelude.rnf healthUrl `Prelude.seq` Prelude.rnf url
+
+instance Data.ToJSON UrlEndpointInput where
+  toJSON UrlEndpointInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HealthUrl" Data..=) Prelude.<$> healthUrl,
+            Prelude.Just ("Url" Data..= url)
+          ]
+      )
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Types/UrlEndpointSummary.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Types/UrlEndpointSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/Types/UrlEndpointSummary.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.Types.UrlEndpointSummary
+-- 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.MigrationHubReFactorSpaces.Types.UrlEndpointSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The summary of the configuration for the URL endpoint type.
+--
+-- /See:/ 'newUrlEndpointSummary' smart constructor.
+data UrlEndpointSummary = UrlEndpointSummary'
+  { -- | The health check URL of the URL endpoint type. If the URL is a public
+    -- endpoint, the @HealthUrl@ must also be a public endpoint. If the URL is
+    -- a private endpoint inside a virtual private cloud (VPC), the health URL
+    -- must also be a private endpoint, and the host must be the same as the
+    -- URL.
+    healthUrl :: Prelude.Maybe Prelude.Text,
+    -- | The URL to route traffic to. The URL must be an
+    -- <https://datatracker.ietf.org/doc/html/rfc3986 rfc3986-formatted URL>.
+    -- If the host is a domain name, the name must be resolvable over the
+    -- public internet. If the scheme is @https@, the top level domain of the
+    -- host must be listed in the
+    -- <https://www.iana.org/domains/root/db IANA root zone database>.
+    url :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UrlEndpointSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'healthUrl', 'urlEndpointSummary_healthUrl' - The health check URL of the URL endpoint type. If the URL is a public
+-- endpoint, the @HealthUrl@ must also be a public endpoint. If the URL is
+-- a private endpoint inside a virtual private cloud (VPC), the health URL
+-- must also be a private endpoint, and the host must be the same as the
+-- URL.
+--
+-- 'url', 'urlEndpointSummary_url' - The URL to route traffic to. The URL must be an
+-- <https://datatracker.ietf.org/doc/html/rfc3986 rfc3986-formatted URL>.
+-- If the host is a domain name, the name must be resolvable over the
+-- public internet. If the scheme is @https@, the top level domain of the
+-- host must be listed in the
+-- <https://www.iana.org/domains/root/db IANA root zone database>.
+newUrlEndpointSummary ::
+  UrlEndpointSummary
+newUrlEndpointSummary =
+  UrlEndpointSummary'
+    { healthUrl = Prelude.Nothing,
+      url = Prelude.Nothing
+    }
+
+-- | The health check URL of the URL endpoint type. If the URL is a public
+-- endpoint, the @HealthUrl@ must also be a public endpoint. If the URL is
+-- a private endpoint inside a virtual private cloud (VPC), the health URL
+-- must also be a private endpoint, and the host must be the same as the
+-- URL.
+urlEndpointSummary_healthUrl :: Lens.Lens' UrlEndpointSummary (Prelude.Maybe Prelude.Text)
+urlEndpointSummary_healthUrl = Lens.lens (\UrlEndpointSummary' {healthUrl} -> healthUrl) (\s@UrlEndpointSummary' {} a -> s {healthUrl = a} :: UrlEndpointSummary)
+
+-- | The URL to route traffic to. The URL must be an
+-- <https://datatracker.ietf.org/doc/html/rfc3986 rfc3986-formatted URL>.
+-- If the host is a domain name, the name must be resolvable over the
+-- public internet. If the scheme is @https@, the top level domain of the
+-- host must be listed in the
+-- <https://www.iana.org/domains/root/db IANA root zone database>.
+urlEndpointSummary_url :: Lens.Lens' UrlEndpointSummary (Prelude.Maybe Prelude.Text)
+urlEndpointSummary_url = Lens.lens (\UrlEndpointSummary' {url} -> url) (\s@UrlEndpointSummary' {} a -> s {url = a} :: UrlEndpointSummary)
+
+instance Data.FromJSON UrlEndpointSummary where
+  parseJSON =
+    Data.withObject
+      "UrlEndpointSummary"
+      ( \x ->
+          UrlEndpointSummary'
+            Prelude.<$> (x Data..:? "HealthUrl")
+            Prelude.<*> (x Data..:? "Url")
+      )
+
+instance Prelude.Hashable UrlEndpointSummary where
+  hashWithSalt _salt UrlEndpointSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` healthUrl
+      `Prelude.hashWithSalt` url
+
+instance Prelude.NFData UrlEndpointSummary where
+  rnf UrlEndpointSummary' {..} =
+    Prelude.rnf healthUrl `Prelude.seq` Prelude.rnf url
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/UntagResource.hs b/gen/Amazonka/MigrationHubReFactorSpaces/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/UntagResource.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MigrationHubReFactorSpaces.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)
+--
+-- Adds to or modifies the tags of the given resource. Tags are metadata
+-- which can be used to manage a resource. To untag a resource, the caller
+-- account must be the same as the resource’s @OwnerAccountId@. Untagging
+-- resources across accounts is not supported.
+module Amazonka.MigrationHubReFactorSpaces.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 Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    resourceArn :: Prelude.Text,
+    -- | The list of keys of the tags to be removed from the resource.
+    tagKeys :: Data.Sensitive [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The list of keys of the tags to be removed from the resource.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+-- | The list of keys of the tags to be removed from the resource.
+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Data._Sensitive 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/MigrationHubReFactorSpaces/UpdateRoute.hs b/gen/Amazonka/MigrationHubReFactorSpaces/UpdateRoute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/UpdateRoute.hs
@@ -0,0 +1,300 @@
+{-# 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.MigrationHubReFactorSpaces.UpdateRoute
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an Amazon Web Services Migration Hub Refactor Spaces route.
+module Amazonka.MigrationHubReFactorSpaces.UpdateRoute
+  ( -- * Creating a Request
+    UpdateRoute (..),
+    newUpdateRoute,
+
+    -- * Request Lenses
+    updateRoute_activationState,
+    updateRoute_applicationIdentifier,
+    updateRoute_environmentIdentifier,
+    updateRoute_routeIdentifier,
+
+    -- * Destructuring the Response
+    UpdateRouteResponse (..),
+    newUpdateRouteResponse,
+
+    -- * Response Lenses
+    updateRouteResponse_applicationId,
+    updateRouteResponse_arn,
+    updateRouteResponse_lastUpdatedTime,
+    updateRouteResponse_routeId,
+    updateRouteResponse_serviceId,
+    updateRouteResponse_state,
+    updateRouteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateRoute' smart constructor.
+data UpdateRoute = UpdateRoute'
+  { -- | If set to @ACTIVE@, traffic is forwarded to this route’s service after
+    -- the route is updated.
+    activationState :: RouteActivationState,
+    -- | The ID of the application within which the route is being updated.
+    applicationIdentifier :: Prelude.Text,
+    -- | The ID of the environment in which the route is being updated.
+    environmentIdentifier :: Prelude.Text,
+    -- | The unique identifier of the route to update.
+    routeIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateRoute' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activationState', 'updateRoute_activationState' - If set to @ACTIVE@, traffic is forwarded to this route’s service after
+-- the route is updated.
+--
+-- 'applicationIdentifier', 'updateRoute_applicationIdentifier' - The ID of the application within which the route is being updated.
+--
+-- 'environmentIdentifier', 'updateRoute_environmentIdentifier' - The ID of the environment in which the route is being updated.
+--
+-- 'routeIdentifier', 'updateRoute_routeIdentifier' - The unique identifier of the route to update.
+newUpdateRoute ::
+  -- | 'activationState'
+  RouteActivationState ->
+  -- | 'applicationIdentifier'
+  Prelude.Text ->
+  -- | 'environmentIdentifier'
+  Prelude.Text ->
+  -- | 'routeIdentifier'
+  Prelude.Text ->
+  UpdateRoute
+newUpdateRoute
+  pActivationState_
+  pApplicationIdentifier_
+  pEnvironmentIdentifier_
+  pRouteIdentifier_ =
+    UpdateRoute'
+      { activationState = pActivationState_,
+        applicationIdentifier = pApplicationIdentifier_,
+        environmentIdentifier = pEnvironmentIdentifier_,
+        routeIdentifier = pRouteIdentifier_
+      }
+
+-- | If set to @ACTIVE@, traffic is forwarded to this route’s service after
+-- the route is updated.
+updateRoute_activationState :: Lens.Lens' UpdateRoute RouteActivationState
+updateRoute_activationState = Lens.lens (\UpdateRoute' {activationState} -> activationState) (\s@UpdateRoute' {} a -> s {activationState = a} :: UpdateRoute)
+
+-- | The ID of the application within which the route is being updated.
+updateRoute_applicationIdentifier :: Lens.Lens' UpdateRoute Prelude.Text
+updateRoute_applicationIdentifier = Lens.lens (\UpdateRoute' {applicationIdentifier} -> applicationIdentifier) (\s@UpdateRoute' {} a -> s {applicationIdentifier = a} :: UpdateRoute)
+
+-- | The ID of the environment in which the route is being updated.
+updateRoute_environmentIdentifier :: Lens.Lens' UpdateRoute Prelude.Text
+updateRoute_environmentIdentifier = Lens.lens (\UpdateRoute' {environmentIdentifier} -> environmentIdentifier) (\s@UpdateRoute' {} a -> s {environmentIdentifier = a} :: UpdateRoute)
+
+-- | The unique identifier of the route to update.
+updateRoute_routeIdentifier :: Lens.Lens' UpdateRoute Prelude.Text
+updateRoute_routeIdentifier = Lens.lens (\UpdateRoute' {routeIdentifier} -> routeIdentifier) (\s@UpdateRoute' {} a -> s {routeIdentifier = a} :: UpdateRoute)
+
+instance Core.AWSRequest UpdateRoute where
+  type AWSResponse UpdateRoute = UpdateRouteResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateRouteResponse'
+            Prelude.<$> (x Data..?> "ApplicationId")
+            Prelude.<*> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (x Data..?> "RouteId")
+            Prelude.<*> (x Data..?> "ServiceId")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateRoute where
+  hashWithSalt _salt UpdateRoute' {..} =
+    _salt
+      `Prelude.hashWithSalt` activationState
+      `Prelude.hashWithSalt` applicationIdentifier
+      `Prelude.hashWithSalt` environmentIdentifier
+      `Prelude.hashWithSalt` routeIdentifier
+
+instance Prelude.NFData UpdateRoute where
+  rnf UpdateRoute' {..} =
+    Prelude.rnf activationState
+      `Prelude.seq` Prelude.rnf applicationIdentifier
+      `Prelude.seq` Prelude.rnf environmentIdentifier
+      `Prelude.seq` Prelude.rnf routeIdentifier
+
+instance Data.ToHeaders UpdateRoute where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateRoute where
+  toJSON UpdateRoute' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ActivationState" Data..= activationState)
+          ]
+      )
+
+instance Data.ToPath UpdateRoute where
+  toPath UpdateRoute' {..} =
+    Prelude.mconcat
+      [ "/environments/",
+        Data.toBS environmentIdentifier,
+        "/applications/",
+        Data.toBS applicationIdentifier,
+        "/routes/",
+        Data.toBS routeIdentifier
+      ]
+
+instance Data.ToQuery UpdateRoute where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateRouteResponse' smart constructor.
+data UpdateRouteResponse = UpdateRouteResponse'
+  { -- | The ID of the application in which the route is being updated.
+    applicationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the route. The format for this ARN is
+    -- @arn:aws:refactor-spaces:@/@region@/@:@/@account-id@/@:@/@resource-type\/resource-id@/@ @.
+    -- For more information about ARNs, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
+    -- in the /Amazon Web Services General Reference/.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A timestamp that indicates when the route was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The unique identifier of the route.
+    routeId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of service in which the route was created. Traffic that matches
+    -- this route is forwarded to this service.
+    serviceId :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the route.
+    state :: Prelude.Maybe RouteState,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateRouteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationId', 'updateRouteResponse_applicationId' - The ID of the application in which the route is being updated.
+--
+-- 'arn', 'updateRouteResponse_arn' - The Amazon Resource Name (ARN) of the route. The format for this ARN is
+-- @arn:aws:refactor-spaces:@/@region@/@:@/@account-id@/@:@/@resource-type\/resource-id@/@ @.
+-- For more information about ARNs, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
+-- in the /Amazon Web Services General Reference/.
+--
+-- 'lastUpdatedTime', 'updateRouteResponse_lastUpdatedTime' - A timestamp that indicates when the route was last updated.
+--
+-- 'routeId', 'updateRouteResponse_routeId' - The unique identifier of the route.
+--
+-- 'serviceId', 'updateRouteResponse_serviceId' - The ID of service in which the route was created. Traffic that matches
+-- this route is forwarded to this service.
+--
+-- 'state', 'updateRouteResponse_state' - The current state of the route.
+--
+-- 'httpStatus', 'updateRouteResponse_httpStatus' - The response's http status code.
+newUpdateRouteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateRouteResponse
+newUpdateRouteResponse pHttpStatus_ =
+  UpdateRouteResponse'
+    { applicationId =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      routeId = Prelude.Nothing,
+      serviceId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the application in which the route is being updated.
+updateRouteResponse_applicationId :: Lens.Lens' UpdateRouteResponse (Prelude.Maybe Prelude.Text)
+updateRouteResponse_applicationId = Lens.lens (\UpdateRouteResponse' {applicationId} -> applicationId) (\s@UpdateRouteResponse' {} a -> s {applicationId = a} :: UpdateRouteResponse)
+
+-- | The Amazon Resource Name (ARN) of the route. The format for this ARN is
+-- @arn:aws:refactor-spaces:@/@region@/@:@/@account-id@/@:@/@resource-type\/resource-id@/@ @.
+-- For more information about ARNs, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
+-- in the /Amazon Web Services General Reference/.
+updateRouteResponse_arn :: Lens.Lens' UpdateRouteResponse (Prelude.Maybe Prelude.Text)
+updateRouteResponse_arn = Lens.lens (\UpdateRouteResponse' {arn} -> arn) (\s@UpdateRouteResponse' {} a -> s {arn = a} :: UpdateRouteResponse)
+
+-- | A timestamp that indicates when the route was last updated.
+updateRouteResponse_lastUpdatedTime :: Lens.Lens' UpdateRouteResponse (Prelude.Maybe Prelude.UTCTime)
+updateRouteResponse_lastUpdatedTime = Lens.lens (\UpdateRouteResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@UpdateRouteResponse' {} a -> s {lastUpdatedTime = a} :: UpdateRouteResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The unique identifier of the route.
+updateRouteResponse_routeId :: Lens.Lens' UpdateRouteResponse (Prelude.Maybe Prelude.Text)
+updateRouteResponse_routeId = Lens.lens (\UpdateRouteResponse' {routeId} -> routeId) (\s@UpdateRouteResponse' {} a -> s {routeId = a} :: UpdateRouteResponse)
+
+-- | The ID of service in which the route was created. Traffic that matches
+-- this route is forwarded to this service.
+updateRouteResponse_serviceId :: Lens.Lens' UpdateRouteResponse (Prelude.Maybe Prelude.Text)
+updateRouteResponse_serviceId = Lens.lens (\UpdateRouteResponse' {serviceId} -> serviceId) (\s@UpdateRouteResponse' {} a -> s {serviceId = a} :: UpdateRouteResponse)
+
+-- | The current state of the route.
+updateRouteResponse_state :: Lens.Lens' UpdateRouteResponse (Prelude.Maybe RouteState)
+updateRouteResponse_state = Lens.lens (\UpdateRouteResponse' {state} -> state) (\s@UpdateRouteResponse' {} a -> s {state = a} :: UpdateRouteResponse)
+
+-- | The response's http status code.
+updateRouteResponse_httpStatus :: Lens.Lens' UpdateRouteResponse Prelude.Int
+updateRouteResponse_httpStatus = Lens.lens (\UpdateRouteResponse' {httpStatus} -> httpStatus) (\s@UpdateRouteResponse' {} a -> s {httpStatus = a} :: UpdateRouteResponse)
+
+instance Prelude.NFData UpdateRouteResponse where
+  rnf UpdateRouteResponse' {..} =
+    Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf routeId
+      `Prelude.seq` Prelude.rnf serviceId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHubReFactorSpaces/Waiters.hs b/gen/Amazonka/MigrationHubReFactorSpaces/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHubReFactorSpaces/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.MigrationHubReFactorSpaces.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.MigrationHubReFactorSpaces.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHubReFactorSpaces.Lens
+import Amazonka.MigrationHubReFactorSpaces.Types
+import qualified Amazonka.Prelude as Prelude
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Main (main) where
+
+import Test.Amazonka.MigrationHubReFactorSpaces
+import Test.Amazonka.MigrationHubReFactorSpaces.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "MigrationHubReFactorSpaces"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/MigrationHubReFactorSpaces.hs b/test/Test/Amazonka/Gen/MigrationHubReFactorSpaces.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/MigrationHubReFactorSpaces.hs
@@ -0,0 +1,518 @@
+{-# 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.MigrationHubReFactorSpaces
+-- 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.MigrationHubReFactorSpaces where
+
+import Amazonka.MigrationHubReFactorSpaces
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.MigrationHubReFactorSpaces.Internal
+import Test.Amazonka.Prelude
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestCreateApplication $
+--             newCreateApplication
+--
+--         , requestCreateEnvironment $
+--             newCreateEnvironment
+--
+--         , requestCreateRoute $
+--             newCreateRoute
+--
+--         , requestCreateService $
+--             newCreateService
+--
+--         , requestDeleteApplication $
+--             newDeleteApplication
+--
+--         , requestDeleteEnvironment $
+--             newDeleteEnvironment
+--
+--         , requestDeleteResourcePolicy $
+--             newDeleteResourcePolicy
+--
+--         , requestDeleteRoute $
+--             newDeleteRoute
+--
+--         , requestDeleteService $
+--             newDeleteService
+--
+--         , requestGetApplication $
+--             newGetApplication
+--
+--         , requestGetEnvironment $
+--             newGetEnvironment
+--
+--         , requestGetResourcePolicy $
+--             newGetResourcePolicy
+--
+--         , requestGetRoute $
+--             newGetRoute
+--
+--         , requestGetService $
+--             newGetService
+--
+--         , requestListApplications $
+--             newListApplications
+--
+--         , requestListEnvironmentVpcs $
+--             newListEnvironmentVpcs
+--
+--         , requestListEnvironments $
+--             newListEnvironments
+--
+--         , requestListRoutes $
+--             newListRoutes
+--
+--         , requestListServices $
+--             newListServices
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestPutResourcePolicy $
+--             newPutResourcePolicy
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateRoute $
+--             newUpdateRoute
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseCreateApplication $
+--             newCreateApplicationResponse
+--
+--         , responseCreateEnvironment $
+--             newCreateEnvironmentResponse
+--
+--         , responseCreateRoute $
+--             newCreateRouteResponse
+--
+--         , responseCreateService $
+--             newCreateServiceResponse
+--
+--         , responseDeleteApplication $
+--             newDeleteApplicationResponse
+--
+--         , responseDeleteEnvironment $
+--             newDeleteEnvironmentResponse
+--
+--         , responseDeleteResourcePolicy $
+--             newDeleteResourcePolicyResponse
+--
+--         , responseDeleteRoute $
+--             newDeleteRouteResponse
+--
+--         , responseDeleteService $
+--             newDeleteServiceResponse
+--
+--         , responseGetApplication $
+--             newGetApplicationResponse
+--
+--         , responseGetEnvironment $
+--             newGetEnvironmentResponse
+--
+--         , responseGetResourcePolicy $
+--             newGetResourcePolicyResponse
+--
+--         , responseGetRoute $
+--             newGetRouteResponse
+--
+--         , responseGetService $
+--             newGetServiceResponse
+--
+--         , responseListApplications $
+--             newListApplicationsResponse
+--
+--         , responseListEnvironmentVpcs $
+--             newListEnvironmentVpcsResponse
+--
+--         , responseListEnvironments $
+--             newListEnvironmentsResponse
+--
+--         , responseListRoutes $
+--             newListRoutesResponse
+--
+--         , responseListServices $
+--             newListServicesResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responsePutResourcePolicy $
+--             newPutResourcePolicyResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateRoute $
+--             newUpdateRouteResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestCreateApplication :: CreateApplication -> TestTree
+requestCreateApplication =
+  req
+    "CreateApplication"
+    "fixture/CreateApplication.yaml"
+
+requestCreateEnvironment :: CreateEnvironment -> TestTree
+requestCreateEnvironment =
+  req
+    "CreateEnvironment"
+    "fixture/CreateEnvironment.yaml"
+
+requestCreateRoute :: CreateRoute -> TestTree
+requestCreateRoute =
+  req
+    "CreateRoute"
+    "fixture/CreateRoute.yaml"
+
+requestCreateService :: CreateService -> TestTree
+requestCreateService =
+  req
+    "CreateService"
+    "fixture/CreateService.yaml"
+
+requestDeleteApplication :: DeleteApplication -> TestTree
+requestDeleteApplication =
+  req
+    "DeleteApplication"
+    "fixture/DeleteApplication.yaml"
+
+requestDeleteEnvironment :: DeleteEnvironment -> TestTree
+requestDeleteEnvironment =
+  req
+    "DeleteEnvironment"
+    "fixture/DeleteEnvironment.yaml"
+
+requestDeleteResourcePolicy :: DeleteResourcePolicy -> TestTree
+requestDeleteResourcePolicy =
+  req
+    "DeleteResourcePolicy"
+    "fixture/DeleteResourcePolicy.yaml"
+
+requestDeleteRoute :: DeleteRoute -> TestTree
+requestDeleteRoute =
+  req
+    "DeleteRoute"
+    "fixture/DeleteRoute.yaml"
+
+requestDeleteService :: DeleteService -> TestTree
+requestDeleteService =
+  req
+    "DeleteService"
+    "fixture/DeleteService.yaml"
+
+requestGetApplication :: GetApplication -> TestTree
+requestGetApplication =
+  req
+    "GetApplication"
+    "fixture/GetApplication.yaml"
+
+requestGetEnvironment :: GetEnvironment -> TestTree
+requestGetEnvironment =
+  req
+    "GetEnvironment"
+    "fixture/GetEnvironment.yaml"
+
+requestGetResourcePolicy :: GetResourcePolicy -> TestTree
+requestGetResourcePolicy =
+  req
+    "GetResourcePolicy"
+    "fixture/GetResourcePolicy.yaml"
+
+requestGetRoute :: GetRoute -> TestTree
+requestGetRoute =
+  req
+    "GetRoute"
+    "fixture/GetRoute.yaml"
+
+requestGetService :: GetService -> TestTree
+requestGetService =
+  req
+    "GetService"
+    "fixture/GetService.yaml"
+
+requestListApplications :: ListApplications -> TestTree
+requestListApplications =
+  req
+    "ListApplications"
+    "fixture/ListApplications.yaml"
+
+requestListEnvironmentVpcs :: ListEnvironmentVpcs -> TestTree
+requestListEnvironmentVpcs =
+  req
+    "ListEnvironmentVpcs"
+    "fixture/ListEnvironmentVpcs.yaml"
+
+requestListEnvironments :: ListEnvironments -> TestTree
+requestListEnvironments =
+  req
+    "ListEnvironments"
+    "fixture/ListEnvironments.yaml"
+
+requestListRoutes :: ListRoutes -> TestTree
+requestListRoutes =
+  req
+    "ListRoutes"
+    "fixture/ListRoutes.yaml"
+
+requestListServices :: ListServices -> TestTree
+requestListServices =
+  req
+    "ListServices"
+    "fixture/ListServices.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestPutResourcePolicy :: PutResourcePolicy -> TestTree
+requestPutResourcePolicy =
+  req
+    "PutResourcePolicy"
+    "fixture/PutResourcePolicy.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateRoute :: UpdateRoute -> TestTree
+requestUpdateRoute =
+  req
+    "UpdateRoute"
+    "fixture/UpdateRoute.yaml"
+
+-- Responses
+
+responseCreateApplication :: CreateApplicationResponse -> TestTree
+responseCreateApplication =
+  res
+    "CreateApplicationResponse"
+    "fixture/CreateApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateApplication)
+
+responseCreateEnvironment :: CreateEnvironmentResponse -> TestTree
+responseCreateEnvironment =
+  res
+    "CreateEnvironmentResponse"
+    "fixture/CreateEnvironmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateEnvironment)
+
+responseCreateRoute :: CreateRouteResponse -> TestTree
+responseCreateRoute =
+  res
+    "CreateRouteResponse"
+    "fixture/CreateRouteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateRoute)
+
+responseCreateService :: CreateServiceResponse -> TestTree
+responseCreateService =
+  res
+    "CreateServiceResponse"
+    "fixture/CreateServiceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateService)
+
+responseDeleteApplication :: DeleteApplicationResponse -> TestTree
+responseDeleteApplication =
+  res
+    "DeleteApplicationResponse"
+    "fixture/DeleteApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteApplication)
+
+responseDeleteEnvironment :: DeleteEnvironmentResponse -> TestTree
+responseDeleteEnvironment =
+  res
+    "DeleteEnvironmentResponse"
+    "fixture/DeleteEnvironmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteEnvironment)
+
+responseDeleteResourcePolicy :: DeleteResourcePolicyResponse -> TestTree
+responseDeleteResourcePolicy =
+  res
+    "DeleteResourcePolicyResponse"
+    "fixture/DeleteResourcePolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteResourcePolicy)
+
+responseDeleteRoute :: DeleteRouteResponse -> TestTree
+responseDeleteRoute =
+  res
+    "DeleteRouteResponse"
+    "fixture/DeleteRouteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteRoute)
+
+responseDeleteService :: DeleteServiceResponse -> TestTree
+responseDeleteService =
+  res
+    "DeleteServiceResponse"
+    "fixture/DeleteServiceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteService)
+
+responseGetApplication :: GetApplicationResponse -> TestTree
+responseGetApplication =
+  res
+    "GetApplicationResponse"
+    "fixture/GetApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetApplication)
+
+responseGetEnvironment :: GetEnvironmentResponse -> TestTree
+responseGetEnvironment =
+  res
+    "GetEnvironmentResponse"
+    "fixture/GetEnvironmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetEnvironment)
+
+responseGetResourcePolicy :: GetResourcePolicyResponse -> TestTree
+responseGetResourcePolicy =
+  res
+    "GetResourcePolicyResponse"
+    "fixture/GetResourcePolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetResourcePolicy)
+
+responseGetRoute :: GetRouteResponse -> TestTree
+responseGetRoute =
+  res
+    "GetRouteResponse"
+    "fixture/GetRouteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetRoute)
+
+responseGetService :: GetServiceResponse -> TestTree
+responseGetService =
+  res
+    "GetServiceResponse"
+    "fixture/GetServiceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetService)
+
+responseListApplications :: ListApplicationsResponse -> TestTree
+responseListApplications =
+  res
+    "ListApplicationsResponse"
+    "fixture/ListApplicationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListApplications)
+
+responseListEnvironmentVpcs :: ListEnvironmentVpcsResponse -> TestTree
+responseListEnvironmentVpcs =
+  res
+    "ListEnvironmentVpcsResponse"
+    "fixture/ListEnvironmentVpcsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListEnvironmentVpcs)
+
+responseListEnvironments :: ListEnvironmentsResponse -> TestTree
+responseListEnvironments =
+  res
+    "ListEnvironmentsResponse"
+    "fixture/ListEnvironmentsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListEnvironments)
+
+responseListRoutes :: ListRoutesResponse -> TestTree
+responseListRoutes =
+  res
+    "ListRoutesResponse"
+    "fixture/ListRoutesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListRoutes)
+
+responseListServices :: ListServicesResponse -> TestTree
+responseListServices =
+  res
+    "ListServicesResponse"
+    "fixture/ListServicesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListServices)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responsePutResourcePolicy :: PutResourcePolicyResponse -> TestTree
+responsePutResourcePolicy =
+  res
+    "PutResourcePolicyResponse"
+    "fixture/PutResourcePolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutResourcePolicy)
+
+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)
+
+responseUpdateRoute :: UpdateRouteResponse -> TestTree
+responseUpdateRoute =
+  res
+    "UpdateRouteResponse"
+    "fixture/UpdateRouteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateRoute)
diff --git a/test/Test/Amazonka/MigrationHubReFactorSpaces.hs b/test/Test/Amazonka/MigrationHubReFactorSpaces.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/MigrationHubReFactorSpaces.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.MigrationHubReFactorSpaces
+-- 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.MigrationHubReFactorSpaces
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/MigrationHubReFactorSpaces/Internal.hs b/test/Test/Amazonka/MigrationHubReFactorSpaces/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/MigrationHubReFactorSpaces/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.MigrationHubReFactorSpaces.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.MigrationHubReFactorSpaces.Internal where
