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 SimSpace Weaver SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2022-10-28@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-simspaceweaver)
+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.SimSpaceWeaver](http://hackage.haskell.org/package/amazonka-simspaceweaver/docs/Amazonka-SimSpaceWeaver.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-simspaceweaver` 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-simspaceweaver.cabal b/amazonka-simspaceweaver.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-simspaceweaver.cabal
@@ -0,0 +1,117 @@
+cabal-version:      2.2
+name:               amazonka-simspaceweaver
+version:            2.0
+synopsis:           Amazon SimSpace Weaver SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
+description:
+  Derived from API version @2022-10-28@ of the AWS service descriptions, licensed under Apache 2.0.
+  .
+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,
+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.
+  .
+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.
+  .
+  Generated lenses can be found in "Amazonka.SimSpaceWeaver.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.SimSpaceWeaver" 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-simspaceweaver
+
+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.SimSpaceWeaver
+    Amazonka.SimSpaceWeaver.DeleteApp
+    Amazonka.SimSpaceWeaver.DeleteSimulation
+    Amazonka.SimSpaceWeaver.DescribeApp
+    Amazonka.SimSpaceWeaver.DescribeSimulation
+    Amazonka.SimSpaceWeaver.Lens
+    Amazonka.SimSpaceWeaver.ListApps
+    Amazonka.SimSpaceWeaver.ListSimulations
+    Amazonka.SimSpaceWeaver.ListTagsForResource
+    Amazonka.SimSpaceWeaver.StartApp
+    Amazonka.SimSpaceWeaver.StartClock
+    Amazonka.SimSpaceWeaver.StartSimulation
+    Amazonka.SimSpaceWeaver.StopApp
+    Amazonka.SimSpaceWeaver.StopClock
+    Amazonka.SimSpaceWeaver.StopSimulation
+    Amazonka.SimSpaceWeaver.TagResource
+    Amazonka.SimSpaceWeaver.Types
+    Amazonka.SimSpaceWeaver.Types.ClockStatus
+    Amazonka.SimSpaceWeaver.Types.ClockTargetStatus
+    Amazonka.SimSpaceWeaver.Types.CloudWatchLogsLogGroup
+    Amazonka.SimSpaceWeaver.Types.Domain
+    Amazonka.SimSpaceWeaver.Types.LaunchOverrides
+    Amazonka.SimSpaceWeaver.Types.LifecycleManagementStrategy
+    Amazonka.SimSpaceWeaver.Types.LiveSimulationState
+    Amazonka.SimSpaceWeaver.Types.LogDestination
+    Amazonka.SimSpaceWeaver.Types.LoggingConfiguration
+    Amazonka.SimSpaceWeaver.Types.S3Location
+    Amazonka.SimSpaceWeaver.Types.SimulationAppEndpointInfo
+    Amazonka.SimSpaceWeaver.Types.SimulationAppMetadata
+    Amazonka.SimSpaceWeaver.Types.SimulationAppPortMapping
+    Amazonka.SimSpaceWeaver.Types.SimulationAppStatus
+    Amazonka.SimSpaceWeaver.Types.SimulationAppTargetStatus
+    Amazonka.SimSpaceWeaver.Types.SimulationClock
+    Amazonka.SimSpaceWeaver.Types.SimulationMetadata
+    Amazonka.SimSpaceWeaver.Types.SimulationStatus
+    Amazonka.SimSpaceWeaver.Types.SimulationTargetStatus
+    Amazonka.SimSpaceWeaver.UntagResource
+    Amazonka.SimSpaceWeaver.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-simspaceweaver-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.SimSpaceWeaver
+    Test.Amazonka.SimSpaceWeaver
+    Test.Amazonka.SimSpaceWeaver.Internal
+
+  build-depends:
+    , amazonka-core            >=2.0 && <2.1
+    , amazonka-simspaceweaver
+    , amazonka-test            >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/DeleteApp.yaml b/fixture/DeleteApp.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteApp.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/DeleteAppResponse.proto b/fixture/DeleteAppResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAppResponse.proto
diff --git a/fixture/DeleteSimulation.yaml b/fixture/DeleteSimulation.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSimulation.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/DeleteSimulationResponse.proto b/fixture/DeleteSimulationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSimulationResponse.proto
diff --git a/fixture/DescribeApp.yaml b/fixture/DescribeApp.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeApp.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/DescribeAppResponse.proto b/fixture/DescribeAppResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAppResponse.proto
diff --git a/fixture/DescribeSimulation.yaml b/fixture/DescribeSimulation.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeSimulation.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/DescribeSimulationResponse.proto b/fixture/DescribeSimulationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeSimulationResponse.proto
diff --git a/fixture/ListApps.yaml b/fixture/ListApps.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListApps.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/ListAppsResponse.proto b/fixture/ListAppsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAppsResponse.proto
diff --git a/fixture/ListSimulations.yaml b/fixture/ListSimulations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListSimulations.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/ListSimulationsResponse.proto b/fixture/ListSimulationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListSimulationsResponse.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/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/StartApp.yaml b/fixture/StartApp.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartApp.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/StartAppResponse.proto b/fixture/StartAppResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartAppResponse.proto
diff --git a/fixture/StartClock.yaml b/fixture/StartClock.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartClock.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/StartClockResponse.proto b/fixture/StartClockResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartClockResponse.proto
diff --git a/fixture/StartSimulation.yaml b/fixture/StartSimulation.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartSimulation.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/StartSimulationResponse.proto b/fixture/StartSimulationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartSimulationResponse.proto
diff --git a/fixture/StopApp.yaml b/fixture/StopApp.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopApp.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/StopAppResponse.proto b/fixture/StopAppResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopAppResponse.proto
diff --git a/fixture/StopClock.yaml b/fixture/StopClock.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopClock.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/StopClockResponse.proto b/fixture/StopClockResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopClockResponse.proto
diff --git a/fixture/StopSimulation.yaml b/fixture/StopSimulation.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopSimulation.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/StopSimulationResponse.proto b/fixture/StopSimulationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopSimulationResponse.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/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/simspaceweaver/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  simspaceweaver.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/gen/Amazonka/SimSpaceWeaver.hs b/gen/Amazonka/SimSpaceWeaver.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver.hs
@@ -0,0 +1,272 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2022-10-28@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon Web Services SimSpace Weaver (SimSpace Weaver) is a managed
+-- service that you can use to build and operate large-scale spatial
+-- simulations in the Amazon Web Services Cloud. For example, you can
+-- create a digital twin of a city, crowd simulations with millions of
+-- people and objects, and massilvely-multiplayer games with hundreds of
+-- thousands of connected players. For more information about SimSpace
+-- Weaver, see the
+-- /<https://docs.aws.amazon.com/simspaceweaver/latest/userguide/ Amazon Web Services SimSpace Weaver User Guide>/
+-- .
+--
+-- This API reference describes the API operations and data types that you
+-- can use to communicate directly with SimSpace Weaver.
+--
+-- SimSpace Weaver also provides the SimSpace Weaver app SDK, which you use
+-- for app development. The SimSpace Weaver app SDK API reference is
+-- included in the SimSpace Weaver app SDK documentation, which is part of
+-- the SimSpace Weaver app SDK distributable package.
+module Amazonka.SimSpaceWeaver
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ServiceQuotaExceededException
+    _ServiceQuotaExceededException,
+
+    -- ** TooManyTagsException
+    _TooManyTagsException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** DeleteApp
+    DeleteApp (DeleteApp'),
+    newDeleteApp,
+    DeleteAppResponse (DeleteAppResponse'),
+    newDeleteAppResponse,
+
+    -- ** DeleteSimulation
+    DeleteSimulation (DeleteSimulation'),
+    newDeleteSimulation,
+    DeleteSimulationResponse (DeleteSimulationResponse'),
+    newDeleteSimulationResponse,
+
+    -- ** DescribeApp
+    DescribeApp (DescribeApp'),
+    newDescribeApp,
+    DescribeAppResponse (DescribeAppResponse'),
+    newDescribeAppResponse,
+
+    -- ** DescribeSimulation
+    DescribeSimulation (DescribeSimulation'),
+    newDescribeSimulation,
+    DescribeSimulationResponse (DescribeSimulationResponse'),
+    newDescribeSimulationResponse,
+
+    -- ** ListApps
+    ListApps (ListApps'),
+    newListApps,
+    ListAppsResponse (ListAppsResponse'),
+    newListAppsResponse,
+
+    -- ** ListSimulations
+    ListSimulations (ListSimulations'),
+    newListSimulations,
+    ListSimulationsResponse (ListSimulationsResponse'),
+    newListSimulationsResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** StartApp
+    StartApp (StartApp'),
+    newStartApp,
+    StartAppResponse (StartAppResponse'),
+    newStartAppResponse,
+
+    -- ** StartClock
+    StartClock (StartClock'),
+    newStartClock,
+    StartClockResponse (StartClockResponse'),
+    newStartClockResponse,
+
+    -- ** StartSimulation
+    StartSimulation (StartSimulation'),
+    newStartSimulation,
+    StartSimulationResponse (StartSimulationResponse'),
+    newStartSimulationResponse,
+
+    -- ** StopApp
+    StopApp (StopApp'),
+    newStopApp,
+    StopAppResponse (StopAppResponse'),
+    newStopAppResponse,
+
+    -- ** StopClock
+    StopClock (StopClock'),
+    newStopClock,
+    StopClockResponse (StopClockResponse'),
+    newStopClockResponse,
+
+    -- ** StopSimulation
+    StopSimulation (StopSimulation'),
+    newStopSimulation,
+    StopSimulationResponse (StopSimulationResponse'),
+    newStopSimulationResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- * Types
+
+    -- ** ClockStatus
+    ClockStatus (..),
+
+    -- ** ClockTargetStatus
+    ClockTargetStatus (..),
+
+    -- ** LifecycleManagementStrategy
+    LifecycleManagementStrategy (..),
+
+    -- ** SimulationAppStatus
+    SimulationAppStatus (..),
+
+    -- ** SimulationAppTargetStatus
+    SimulationAppTargetStatus (..),
+
+    -- ** SimulationStatus
+    SimulationStatus (..),
+
+    -- ** SimulationTargetStatus
+    SimulationTargetStatus (..),
+
+    -- ** CloudWatchLogsLogGroup
+    CloudWatchLogsLogGroup (CloudWatchLogsLogGroup'),
+    newCloudWatchLogsLogGroup,
+
+    -- ** Domain
+    Domain (Domain'),
+    newDomain,
+
+    -- ** LaunchOverrides
+    LaunchOverrides (LaunchOverrides'),
+    newLaunchOverrides,
+
+    -- ** LiveSimulationState
+    LiveSimulationState (LiveSimulationState'),
+    newLiveSimulationState,
+
+    -- ** LogDestination
+    LogDestination (LogDestination'),
+    newLogDestination,
+
+    -- ** LoggingConfiguration
+    LoggingConfiguration (LoggingConfiguration'),
+    newLoggingConfiguration,
+
+    -- ** S3Location
+    S3Location (S3Location'),
+    newS3Location,
+
+    -- ** SimulationAppEndpointInfo
+    SimulationAppEndpointInfo (SimulationAppEndpointInfo'),
+    newSimulationAppEndpointInfo,
+
+    -- ** SimulationAppMetadata
+    SimulationAppMetadata (SimulationAppMetadata'),
+    newSimulationAppMetadata,
+
+    -- ** SimulationAppPortMapping
+    SimulationAppPortMapping (SimulationAppPortMapping'),
+    newSimulationAppPortMapping,
+
+    -- ** SimulationClock
+    SimulationClock (SimulationClock'),
+    newSimulationClock,
+
+    -- ** SimulationMetadata
+    SimulationMetadata (SimulationMetadata'),
+    newSimulationMetadata,
+  )
+where
+
+import Amazonka.SimSpaceWeaver.DeleteApp
+import Amazonka.SimSpaceWeaver.DeleteSimulation
+import Amazonka.SimSpaceWeaver.DescribeApp
+import Amazonka.SimSpaceWeaver.DescribeSimulation
+import Amazonka.SimSpaceWeaver.Lens
+import Amazonka.SimSpaceWeaver.ListApps
+import Amazonka.SimSpaceWeaver.ListSimulations
+import Amazonka.SimSpaceWeaver.ListTagsForResource
+import Amazonka.SimSpaceWeaver.StartApp
+import Amazonka.SimSpaceWeaver.StartClock
+import Amazonka.SimSpaceWeaver.StartSimulation
+import Amazonka.SimSpaceWeaver.StopApp
+import Amazonka.SimSpaceWeaver.StopClock
+import Amazonka.SimSpaceWeaver.StopSimulation
+import Amazonka.SimSpaceWeaver.TagResource
+import Amazonka.SimSpaceWeaver.Types
+import Amazonka.SimSpaceWeaver.UntagResource
+import Amazonka.SimSpaceWeaver.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 'SimSpaceWeaver'.
+
+-- $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/SimSpaceWeaver/DeleteApp.hs b/gen/Amazonka/SimSpaceWeaver/DeleteApp.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/DeleteApp.hs
@@ -0,0 +1,176 @@
+{-# 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.SimSpaceWeaver.DeleteApp
+-- 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 instance of the given custom app.
+module Amazonka.SimSpaceWeaver.DeleteApp
+  ( -- * Creating a Request
+    DeleteApp (..),
+    newDeleteApp,
+
+    -- * Request Lenses
+    deleteApp_app,
+    deleteApp_domain,
+    deleteApp_simulation,
+
+    -- * Destructuring the Response
+    DeleteAppResponse (..),
+    newDeleteAppResponse,
+
+    -- * Response Lenses
+    deleteAppResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newDeleteApp' smart constructor.
+data DeleteApp = DeleteApp'
+  { -- | The name of the app.
+    app :: Prelude.Text,
+    -- | The name of the domain of the app.
+    domain :: Prelude.Text,
+    -- | The name of the simulation of the app.
+    simulation :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApp' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'app', 'deleteApp_app' - The name of the app.
+--
+-- 'domain', 'deleteApp_domain' - The name of the domain of the app.
+--
+-- 'simulation', 'deleteApp_simulation' - The name of the simulation of the app.
+newDeleteApp ::
+  -- | 'app'
+  Prelude.Text ->
+  -- | 'domain'
+  Prelude.Text ->
+  -- | 'simulation'
+  Prelude.Text ->
+  DeleteApp
+newDeleteApp pApp_ pDomain_ pSimulation_ =
+  DeleteApp'
+    { app = pApp_,
+      domain = pDomain_,
+      simulation = pSimulation_
+    }
+
+-- | The name of the app.
+deleteApp_app :: Lens.Lens' DeleteApp Prelude.Text
+deleteApp_app = Lens.lens (\DeleteApp' {app} -> app) (\s@DeleteApp' {} a -> s {app = a} :: DeleteApp)
+
+-- | The name of the domain of the app.
+deleteApp_domain :: Lens.Lens' DeleteApp Prelude.Text
+deleteApp_domain = Lens.lens (\DeleteApp' {domain} -> domain) (\s@DeleteApp' {} a -> s {domain = a} :: DeleteApp)
+
+-- | The name of the simulation of the app.
+deleteApp_simulation :: Lens.Lens' DeleteApp Prelude.Text
+deleteApp_simulation = Lens.lens (\DeleteApp' {simulation} -> simulation) (\s@DeleteApp' {} a -> s {simulation = a} :: DeleteApp)
+
+instance Core.AWSRequest DeleteApp where
+  type AWSResponse DeleteApp = DeleteAppResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteAppResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteApp where
+  hashWithSalt _salt DeleteApp' {..} =
+    _salt
+      `Prelude.hashWithSalt` app
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` simulation
+
+instance Prelude.NFData DeleteApp where
+  rnf DeleteApp' {..} =
+    Prelude.rnf app
+      `Prelude.seq` Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf simulation
+
+instance Data.ToHeaders DeleteApp where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteApp where
+  toPath = Prelude.const "/deleteapp"
+
+instance Data.ToQuery DeleteApp where
+  toQuery DeleteApp' {..} =
+    Prelude.mconcat
+      [ "app" Data.=: app,
+        "domain" Data.=: domain,
+        "simulation" Data.=: simulation
+      ]
+
+-- | /See:/ 'newDeleteAppResponse' smart constructor.
+data DeleteAppResponse = DeleteAppResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAppResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteAppResponse_httpStatus' - The response's http status code.
+newDeleteAppResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteAppResponse
+newDeleteAppResponse pHttpStatus_ =
+  DeleteAppResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteAppResponse_httpStatus :: Lens.Lens' DeleteAppResponse Prelude.Int
+deleteAppResponse_httpStatus = Lens.lens (\DeleteAppResponse' {httpStatus} -> httpStatus) (\s@DeleteAppResponse' {} a -> s {httpStatus = a} :: DeleteAppResponse)
+
+instance Prelude.NFData DeleteAppResponse where
+  rnf DeleteAppResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/DeleteSimulation.hs b/gen/Amazonka/SimSpaceWeaver/DeleteSimulation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/DeleteSimulation.hs
@@ -0,0 +1,150 @@
+{-# 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.SimSpaceWeaver.DeleteSimulation
+-- 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 all SimSpace Weaver resources assigned to the given simulation.
+--
+-- Your simulation uses resources in other Amazon Web Services services.
+-- This API operation doesn\'t delete resources in other Amazon Web
+-- Services services.
+module Amazonka.SimSpaceWeaver.DeleteSimulation
+  ( -- * Creating a Request
+    DeleteSimulation (..),
+    newDeleteSimulation,
+
+    -- * Request Lenses
+    deleteSimulation_simulation,
+
+    -- * Destructuring the Response
+    DeleteSimulationResponse (..),
+    newDeleteSimulationResponse,
+
+    -- * Response Lenses
+    deleteSimulationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newDeleteSimulation' smart constructor.
+data DeleteSimulation = DeleteSimulation'
+  { -- | The name of the simulation.
+    simulation :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSimulation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'simulation', 'deleteSimulation_simulation' - The name of the simulation.
+newDeleteSimulation ::
+  -- | 'simulation'
+  Prelude.Text ->
+  DeleteSimulation
+newDeleteSimulation pSimulation_ =
+  DeleteSimulation' {simulation = pSimulation_}
+
+-- | The name of the simulation.
+deleteSimulation_simulation :: Lens.Lens' DeleteSimulation Prelude.Text
+deleteSimulation_simulation = Lens.lens (\DeleteSimulation' {simulation} -> simulation) (\s@DeleteSimulation' {} a -> s {simulation = a} :: DeleteSimulation)
+
+instance Core.AWSRequest DeleteSimulation where
+  type
+    AWSResponse DeleteSimulation =
+      DeleteSimulationResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteSimulationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteSimulation where
+  hashWithSalt _salt DeleteSimulation' {..} =
+    _salt `Prelude.hashWithSalt` simulation
+
+instance Prelude.NFData DeleteSimulation where
+  rnf DeleteSimulation' {..} = Prelude.rnf simulation
+
+instance Data.ToHeaders DeleteSimulation where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteSimulation where
+  toPath = Prelude.const "/deletesimulation"
+
+instance Data.ToQuery DeleteSimulation where
+  toQuery DeleteSimulation' {..} =
+    Prelude.mconcat ["simulation" Data.=: simulation]
+
+-- | /See:/ 'newDeleteSimulationResponse' smart constructor.
+data DeleteSimulationResponse = DeleteSimulationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSimulationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteSimulationResponse_httpStatus' - The response's http status code.
+newDeleteSimulationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteSimulationResponse
+newDeleteSimulationResponse pHttpStatus_ =
+  DeleteSimulationResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteSimulationResponse_httpStatus :: Lens.Lens' DeleteSimulationResponse Prelude.Int
+deleteSimulationResponse_httpStatus = Lens.lens (\DeleteSimulationResponse' {httpStatus} -> httpStatus) (\s@DeleteSimulationResponse' {} a -> s {httpStatus = a} :: DeleteSimulationResponse)
+
+instance Prelude.NFData DeleteSimulationResponse where
+  rnf DeleteSimulationResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/DescribeApp.hs b/gen/Amazonka/SimSpaceWeaver/DescribeApp.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/DescribeApp.hs
@@ -0,0 +1,277 @@
+{-# 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.SimSpaceWeaver.DescribeApp
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the state of the given custom app.
+module Amazonka.SimSpaceWeaver.DescribeApp
+  ( -- * Creating a Request
+    DescribeApp (..),
+    newDescribeApp,
+
+    -- * Request Lenses
+    describeApp_app,
+    describeApp_domain,
+    describeApp_simulation,
+
+    -- * Destructuring the Response
+    DescribeAppResponse (..),
+    newDescribeAppResponse,
+
+    -- * Response Lenses
+    describeAppResponse_description,
+    describeAppResponse_domain,
+    describeAppResponse_endpointInfo,
+    describeAppResponse_launchOverrides,
+    describeAppResponse_name,
+    describeAppResponse_simulation,
+    describeAppResponse_status,
+    describeAppResponse_targetStatus,
+    describeAppResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newDescribeApp' smart constructor.
+data DescribeApp = DescribeApp'
+  { -- | The name of the app.
+    app :: Prelude.Text,
+    -- | The name of the domain of the app.
+    domain :: Prelude.Text,
+    -- | The name of the simulation of the app.
+    simulation :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeApp' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'app', 'describeApp_app' - The name of the app.
+--
+-- 'domain', 'describeApp_domain' - The name of the domain of the app.
+--
+-- 'simulation', 'describeApp_simulation' - The name of the simulation of the app.
+newDescribeApp ::
+  -- | 'app'
+  Prelude.Text ->
+  -- | 'domain'
+  Prelude.Text ->
+  -- | 'simulation'
+  Prelude.Text ->
+  DescribeApp
+newDescribeApp pApp_ pDomain_ pSimulation_ =
+  DescribeApp'
+    { app = pApp_,
+      domain = pDomain_,
+      simulation = pSimulation_
+    }
+
+-- | The name of the app.
+describeApp_app :: Lens.Lens' DescribeApp Prelude.Text
+describeApp_app = Lens.lens (\DescribeApp' {app} -> app) (\s@DescribeApp' {} a -> s {app = a} :: DescribeApp)
+
+-- | The name of the domain of the app.
+describeApp_domain :: Lens.Lens' DescribeApp Prelude.Text
+describeApp_domain = Lens.lens (\DescribeApp' {domain} -> domain) (\s@DescribeApp' {} a -> s {domain = a} :: DescribeApp)
+
+-- | The name of the simulation of the app.
+describeApp_simulation :: Lens.Lens' DescribeApp Prelude.Text
+describeApp_simulation = Lens.lens (\DescribeApp' {simulation} -> simulation) (\s@DescribeApp' {} a -> s {simulation = a} :: DescribeApp)
+
+instance Core.AWSRequest DescribeApp where
+  type AWSResponse DescribeApp = DescribeAppResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAppResponse'
+            Prelude.<$> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "Domain")
+            Prelude.<*> (x Data..?> "EndpointInfo")
+            Prelude.<*> (x Data..?> "LaunchOverrides")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "Simulation")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (x Data..?> "TargetStatus")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeApp where
+  hashWithSalt _salt DescribeApp' {..} =
+    _salt
+      `Prelude.hashWithSalt` app
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` simulation
+
+instance Prelude.NFData DescribeApp where
+  rnf DescribeApp' {..} =
+    Prelude.rnf app
+      `Prelude.seq` Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf simulation
+
+instance Data.ToHeaders DescribeApp where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeApp where
+  toPath = Prelude.const "/describeapp"
+
+instance Data.ToQuery DescribeApp where
+  toQuery DescribeApp' {..} =
+    Prelude.mconcat
+      [ "app" Data.=: app,
+        "domain" Data.=: domain,
+        "simulation" Data.=: simulation
+      ]
+
+-- | /See:/ 'newDescribeAppResponse' smart constructor.
+data DescribeAppResponse = DescribeAppResponse'
+  { -- | The description of the app.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The name of the domain of the app.
+    domain :: Prelude.Maybe Prelude.Text,
+    -- | Information about the network endpoint for the custom app. You can use
+    -- the endpoint to connect to the custom app.
+    endpointInfo :: Prelude.Maybe SimulationAppEndpointInfo,
+    launchOverrides :: Prelude.Maybe LaunchOverrides,
+    -- | The name of the app.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The name of the simulation of the app.
+    simulation :: Prelude.Maybe Prelude.Text,
+    -- | The current lifecycle state of the custom app.
+    status :: Prelude.Maybe SimulationAppStatus,
+    -- | The desired lifecycle state of the custom app.
+    targetStatus :: Prelude.Maybe SimulationAppTargetStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAppResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'describeAppResponse_description' - The description of the app.
+--
+-- 'domain', 'describeAppResponse_domain' - The name of the domain of the app.
+--
+-- 'endpointInfo', 'describeAppResponse_endpointInfo' - Information about the network endpoint for the custom app. You can use
+-- the endpoint to connect to the custom app.
+--
+-- 'launchOverrides', 'describeAppResponse_launchOverrides' - Undocumented member.
+--
+-- 'name', 'describeAppResponse_name' - The name of the app.
+--
+-- 'simulation', 'describeAppResponse_simulation' - The name of the simulation of the app.
+--
+-- 'status', 'describeAppResponse_status' - The current lifecycle state of the custom app.
+--
+-- 'targetStatus', 'describeAppResponse_targetStatus' - The desired lifecycle state of the custom app.
+--
+-- 'httpStatus', 'describeAppResponse_httpStatus' - The response's http status code.
+newDescribeAppResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeAppResponse
+newDescribeAppResponse pHttpStatus_ =
+  DescribeAppResponse'
+    { description = Prelude.Nothing,
+      domain = Prelude.Nothing,
+      endpointInfo = Prelude.Nothing,
+      launchOverrides = Prelude.Nothing,
+      name = Prelude.Nothing,
+      simulation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      targetStatus = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The description of the app.
+describeAppResponse_description :: Lens.Lens' DescribeAppResponse (Prelude.Maybe Prelude.Text)
+describeAppResponse_description = Lens.lens (\DescribeAppResponse' {description} -> description) (\s@DescribeAppResponse' {} a -> s {description = a} :: DescribeAppResponse)
+
+-- | The name of the domain of the app.
+describeAppResponse_domain :: Lens.Lens' DescribeAppResponse (Prelude.Maybe Prelude.Text)
+describeAppResponse_domain = Lens.lens (\DescribeAppResponse' {domain} -> domain) (\s@DescribeAppResponse' {} a -> s {domain = a} :: DescribeAppResponse)
+
+-- | Information about the network endpoint for the custom app. You can use
+-- the endpoint to connect to the custom app.
+describeAppResponse_endpointInfo :: Lens.Lens' DescribeAppResponse (Prelude.Maybe SimulationAppEndpointInfo)
+describeAppResponse_endpointInfo = Lens.lens (\DescribeAppResponse' {endpointInfo} -> endpointInfo) (\s@DescribeAppResponse' {} a -> s {endpointInfo = a} :: DescribeAppResponse)
+
+-- | Undocumented member.
+describeAppResponse_launchOverrides :: Lens.Lens' DescribeAppResponse (Prelude.Maybe LaunchOverrides)
+describeAppResponse_launchOverrides = Lens.lens (\DescribeAppResponse' {launchOverrides} -> launchOverrides) (\s@DescribeAppResponse' {} a -> s {launchOverrides = a} :: DescribeAppResponse)
+
+-- | The name of the app.
+describeAppResponse_name :: Lens.Lens' DescribeAppResponse (Prelude.Maybe Prelude.Text)
+describeAppResponse_name = Lens.lens (\DescribeAppResponse' {name} -> name) (\s@DescribeAppResponse' {} a -> s {name = a} :: DescribeAppResponse)
+
+-- | The name of the simulation of the app.
+describeAppResponse_simulation :: Lens.Lens' DescribeAppResponse (Prelude.Maybe Prelude.Text)
+describeAppResponse_simulation = Lens.lens (\DescribeAppResponse' {simulation} -> simulation) (\s@DescribeAppResponse' {} a -> s {simulation = a} :: DescribeAppResponse)
+
+-- | The current lifecycle state of the custom app.
+describeAppResponse_status :: Lens.Lens' DescribeAppResponse (Prelude.Maybe SimulationAppStatus)
+describeAppResponse_status = Lens.lens (\DescribeAppResponse' {status} -> status) (\s@DescribeAppResponse' {} a -> s {status = a} :: DescribeAppResponse)
+
+-- | The desired lifecycle state of the custom app.
+describeAppResponse_targetStatus :: Lens.Lens' DescribeAppResponse (Prelude.Maybe SimulationAppTargetStatus)
+describeAppResponse_targetStatus = Lens.lens (\DescribeAppResponse' {targetStatus} -> targetStatus) (\s@DescribeAppResponse' {} a -> s {targetStatus = a} :: DescribeAppResponse)
+
+-- | The response's http status code.
+describeAppResponse_httpStatus :: Lens.Lens' DescribeAppResponse Prelude.Int
+describeAppResponse_httpStatus = Lens.lens (\DescribeAppResponse' {httpStatus} -> httpStatus) (\s@DescribeAppResponse' {} a -> s {httpStatus = a} :: DescribeAppResponse)
+
+instance Prelude.NFData DescribeAppResponse where
+  rnf DescribeAppResponse' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf endpointInfo
+      `Prelude.seq` Prelude.rnf launchOverrides
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf simulation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf targetStatus
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/DescribeSimulation.hs b/gen/Amazonka/SimSpaceWeaver/DescribeSimulation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/DescribeSimulation.hs
@@ -0,0 +1,361 @@
+{-# 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.SimSpaceWeaver.DescribeSimulation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the current state of the given simulation.
+module Amazonka.SimSpaceWeaver.DescribeSimulation
+  ( -- * Creating a Request
+    DescribeSimulation (..),
+    newDescribeSimulation,
+
+    -- * Request Lenses
+    describeSimulation_simulation,
+
+    -- * Destructuring the Response
+    DescribeSimulationResponse (..),
+    newDescribeSimulationResponse,
+
+    -- * Response Lenses
+    describeSimulationResponse_arn,
+    describeSimulationResponse_creationTime,
+    describeSimulationResponse_description,
+    describeSimulationResponse_executionId,
+    describeSimulationResponse_liveSimulationState,
+    describeSimulationResponse_loggingConfiguration,
+    describeSimulationResponse_maximumDuration,
+    describeSimulationResponse_name,
+    describeSimulationResponse_roleArn,
+    describeSimulationResponse_schemaError,
+    describeSimulationResponse_schemaS3Location,
+    describeSimulationResponse_status,
+    describeSimulationResponse_targetStatus,
+    describeSimulationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newDescribeSimulation' smart constructor.
+data DescribeSimulation = DescribeSimulation'
+  { -- | The name of the simulation.
+    simulation :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeSimulation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'simulation', 'describeSimulation_simulation' - The name of the simulation.
+newDescribeSimulation ::
+  -- | 'simulation'
+  Prelude.Text ->
+  DescribeSimulation
+newDescribeSimulation pSimulation_ =
+  DescribeSimulation' {simulation = pSimulation_}
+
+-- | The name of the simulation.
+describeSimulation_simulation :: Lens.Lens' DescribeSimulation Prelude.Text
+describeSimulation_simulation = Lens.lens (\DescribeSimulation' {simulation} -> simulation) (\s@DescribeSimulation' {} a -> s {simulation = a} :: DescribeSimulation)
+
+instance Core.AWSRequest DescribeSimulation where
+  type
+    AWSResponse DescribeSimulation =
+      DescribeSimulationResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeSimulationResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "ExecutionId")
+            Prelude.<*> (x Data..?> "LiveSimulationState")
+            Prelude.<*> (x Data..?> "LoggingConfiguration")
+            Prelude.<*> (x Data..?> "MaximumDuration")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> (x Data..?> "SchemaError")
+            Prelude.<*> (x Data..?> "SchemaS3Location")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (x Data..?> "TargetStatus")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeSimulation where
+  hashWithSalt _salt DescribeSimulation' {..} =
+    _salt `Prelude.hashWithSalt` simulation
+
+instance Prelude.NFData DescribeSimulation where
+  rnf DescribeSimulation' {..} = Prelude.rnf simulation
+
+instance Data.ToHeaders DescribeSimulation where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeSimulation where
+  toPath = Prelude.const "/describesimulation"
+
+instance Data.ToQuery DescribeSimulation where
+  toQuery DescribeSimulation' {..} =
+    Prelude.mconcat ["simulation" Data.=: simulation]
+
+-- | /See:/ 'newDescribeSimulationResponse' smart constructor.
+data DescribeSimulationResponse = DescribeSimulationResponse'
+  { -- | The Amazon Resource Name (ARN) of the simulation. 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 time when the simulation was created, expressed as the number of
+    -- seconds and milliseconds in UTC since the Unix epoch (0:0:0.000, January
+    -- 1, 1970).
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The description of the simulation.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | A universally unique identifier (UUID) for this simulation.
+    executionId :: Prelude.Maybe Prelude.Text,
+    -- | A collection of additional state information, such as domain and clock
+    -- configuration.
+    liveSimulationState :: Prelude.Maybe LiveSimulationState,
+    -- | Settings that control how SimSpace Weaver handles your simulation log
+    -- data.
+    loggingConfiguration :: Prelude.Maybe LoggingConfiguration,
+    -- | The maximum running time of the simulation, specified as a number of
+    -- months (m or M), hours (h or H), or days (d or D). The simulation stops
+    -- when it reaches this limit.
+    maximumDuration :: Prelude.Maybe Prelude.Text,
+    -- | The name of the simulation.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the Identity and Access Management
+    -- (IAM) role that the simulation assumes to perform actions. 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/. For more information
+    -- about IAM roles, see
+    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html IAM roles>
+    -- in the /Identity and Access Management User Guide/.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | An error message that SimSpace Weaver returns only if there is a problem
+    -- with the simulation schema.
+    schemaError :: Prelude.Maybe Prelude.Text,
+    -- | The location of the simulation schema in Amazon Simple Storage Service
+    -- (Amazon S3). For more information about Amazon S3, see the
+    -- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html Amazon Simple Storage Service User Guide>
+    -- .
+    schemaS3Location :: Prelude.Maybe S3Location,
+    -- | The current lifecycle state of the simulation.
+    status :: Prelude.Maybe SimulationStatus,
+    -- | The desired lifecycle state of the simulation.
+    targetStatus :: Prelude.Maybe SimulationTargetStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeSimulationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeSimulationResponse_arn' - The Amazon Resource Name (ARN) of the simulation. 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/.
+--
+-- 'creationTime', 'describeSimulationResponse_creationTime' - The time when the simulation was created, expressed as the number of
+-- seconds and milliseconds in UTC since the Unix epoch (0:0:0.000, January
+-- 1, 1970).
+--
+-- 'description', 'describeSimulationResponse_description' - The description of the simulation.
+--
+-- 'executionId', 'describeSimulationResponse_executionId' - A universally unique identifier (UUID) for this simulation.
+--
+-- 'liveSimulationState', 'describeSimulationResponse_liveSimulationState' - A collection of additional state information, such as domain and clock
+-- configuration.
+--
+-- 'loggingConfiguration', 'describeSimulationResponse_loggingConfiguration' - Settings that control how SimSpace Weaver handles your simulation log
+-- data.
+--
+-- 'maximumDuration', 'describeSimulationResponse_maximumDuration' - The maximum running time of the simulation, specified as a number of
+-- months (m or M), hours (h or H), or days (d or D). The simulation stops
+-- when it reaches this limit.
+--
+-- 'name', 'describeSimulationResponse_name' - The name of the simulation.
+--
+-- 'roleArn', 'describeSimulationResponse_roleArn' - The Amazon Resource Name (ARN) of the Identity and Access Management
+-- (IAM) role that the simulation assumes to perform actions. 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/. For more information
+-- about IAM roles, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html IAM roles>
+-- in the /Identity and Access Management User Guide/.
+--
+-- 'schemaError', 'describeSimulationResponse_schemaError' - An error message that SimSpace Weaver returns only if there is a problem
+-- with the simulation schema.
+--
+-- 'schemaS3Location', 'describeSimulationResponse_schemaS3Location' - The location of the simulation schema in Amazon Simple Storage Service
+-- (Amazon S3). For more information about Amazon S3, see the
+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html Amazon Simple Storage Service User Guide>
+-- .
+--
+-- 'status', 'describeSimulationResponse_status' - The current lifecycle state of the simulation.
+--
+-- 'targetStatus', 'describeSimulationResponse_targetStatus' - The desired lifecycle state of the simulation.
+--
+-- 'httpStatus', 'describeSimulationResponse_httpStatus' - The response's http status code.
+newDescribeSimulationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeSimulationResponse
+newDescribeSimulationResponse pHttpStatus_ =
+  DescribeSimulationResponse'
+    { arn = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      executionId = Prelude.Nothing,
+      liveSimulationState = Prelude.Nothing,
+      loggingConfiguration = Prelude.Nothing,
+      maximumDuration = Prelude.Nothing,
+      name = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      schemaError = Prelude.Nothing,
+      schemaS3Location = Prelude.Nothing,
+      status = Prelude.Nothing,
+      targetStatus = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the simulation. 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/.
+describeSimulationResponse_arn :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.Text)
+describeSimulationResponse_arn = Lens.lens (\DescribeSimulationResponse' {arn} -> arn) (\s@DescribeSimulationResponse' {} a -> s {arn = a} :: DescribeSimulationResponse)
+
+-- | The time when the simulation was created, expressed as the number of
+-- seconds and milliseconds in UTC since the Unix epoch (0:0:0.000, January
+-- 1, 1970).
+describeSimulationResponse_creationTime :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.UTCTime)
+describeSimulationResponse_creationTime = Lens.lens (\DescribeSimulationResponse' {creationTime} -> creationTime) (\s@DescribeSimulationResponse' {} a -> s {creationTime = a} :: DescribeSimulationResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the simulation.
+describeSimulationResponse_description :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.Text)
+describeSimulationResponse_description = Lens.lens (\DescribeSimulationResponse' {description} -> description) (\s@DescribeSimulationResponse' {} a -> s {description = a} :: DescribeSimulationResponse)
+
+-- | A universally unique identifier (UUID) for this simulation.
+describeSimulationResponse_executionId :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.Text)
+describeSimulationResponse_executionId = Lens.lens (\DescribeSimulationResponse' {executionId} -> executionId) (\s@DescribeSimulationResponse' {} a -> s {executionId = a} :: DescribeSimulationResponse)
+
+-- | A collection of additional state information, such as domain and clock
+-- configuration.
+describeSimulationResponse_liveSimulationState :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe LiveSimulationState)
+describeSimulationResponse_liveSimulationState = Lens.lens (\DescribeSimulationResponse' {liveSimulationState} -> liveSimulationState) (\s@DescribeSimulationResponse' {} a -> s {liveSimulationState = a} :: DescribeSimulationResponse)
+
+-- | Settings that control how SimSpace Weaver handles your simulation log
+-- data.
+describeSimulationResponse_loggingConfiguration :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe LoggingConfiguration)
+describeSimulationResponse_loggingConfiguration = Lens.lens (\DescribeSimulationResponse' {loggingConfiguration} -> loggingConfiguration) (\s@DescribeSimulationResponse' {} a -> s {loggingConfiguration = a} :: DescribeSimulationResponse)
+
+-- | The maximum running time of the simulation, specified as a number of
+-- months (m or M), hours (h or H), or days (d or D). The simulation stops
+-- when it reaches this limit.
+describeSimulationResponse_maximumDuration :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.Text)
+describeSimulationResponse_maximumDuration = Lens.lens (\DescribeSimulationResponse' {maximumDuration} -> maximumDuration) (\s@DescribeSimulationResponse' {} a -> s {maximumDuration = a} :: DescribeSimulationResponse)
+
+-- | The name of the simulation.
+describeSimulationResponse_name :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.Text)
+describeSimulationResponse_name = Lens.lens (\DescribeSimulationResponse' {name} -> name) (\s@DescribeSimulationResponse' {} a -> s {name = a} :: DescribeSimulationResponse)
+
+-- | The Amazon Resource Name (ARN) of the Identity and Access Management
+-- (IAM) role that the simulation assumes to perform actions. 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/. For more information
+-- about IAM roles, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html IAM roles>
+-- in the /Identity and Access Management User Guide/.
+describeSimulationResponse_roleArn :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.Text)
+describeSimulationResponse_roleArn = Lens.lens (\DescribeSimulationResponse' {roleArn} -> roleArn) (\s@DescribeSimulationResponse' {} a -> s {roleArn = a} :: DescribeSimulationResponse)
+
+-- | An error message that SimSpace Weaver returns only if there is a problem
+-- with the simulation schema.
+describeSimulationResponse_schemaError :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.Text)
+describeSimulationResponse_schemaError = Lens.lens (\DescribeSimulationResponse' {schemaError} -> schemaError) (\s@DescribeSimulationResponse' {} a -> s {schemaError = a} :: DescribeSimulationResponse)
+
+-- | The location of the simulation schema in Amazon Simple Storage Service
+-- (Amazon S3). For more information about Amazon S3, see the
+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html Amazon Simple Storage Service User Guide>
+-- .
+describeSimulationResponse_schemaS3Location :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe S3Location)
+describeSimulationResponse_schemaS3Location = Lens.lens (\DescribeSimulationResponse' {schemaS3Location} -> schemaS3Location) (\s@DescribeSimulationResponse' {} a -> s {schemaS3Location = a} :: DescribeSimulationResponse)
+
+-- | The current lifecycle state of the simulation.
+describeSimulationResponse_status :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe SimulationStatus)
+describeSimulationResponse_status = Lens.lens (\DescribeSimulationResponse' {status} -> status) (\s@DescribeSimulationResponse' {} a -> s {status = a} :: DescribeSimulationResponse)
+
+-- | The desired lifecycle state of the simulation.
+describeSimulationResponse_targetStatus :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe SimulationTargetStatus)
+describeSimulationResponse_targetStatus = Lens.lens (\DescribeSimulationResponse' {targetStatus} -> targetStatus) (\s@DescribeSimulationResponse' {} a -> s {targetStatus = a} :: DescribeSimulationResponse)
+
+-- | The response's http status code.
+describeSimulationResponse_httpStatus :: Lens.Lens' DescribeSimulationResponse Prelude.Int
+describeSimulationResponse_httpStatus = Lens.lens (\DescribeSimulationResponse' {httpStatus} -> httpStatus) (\s@DescribeSimulationResponse' {} a -> s {httpStatus = a} :: DescribeSimulationResponse)
+
+instance Prelude.NFData DescribeSimulationResponse where
+  rnf DescribeSimulationResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf executionId
+      `Prelude.seq` Prelude.rnf liveSimulationState
+      `Prelude.seq` Prelude.rnf loggingConfiguration
+      `Prelude.seq` Prelude.rnf maximumDuration
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf schemaError
+      `Prelude.seq` Prelude.rnf schemaS3Location
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf targetStatus
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/Lens.hs b/gen/Amazonka/SimSpaceWeaver/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Lens.hs
@@ -0,0 +1,212 @@
+{-# 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.SimSpaceWeaver.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.SimSpaceWeaver.Lens
+  ( -- * Operations
+
+    -- ** DeleteApp
+    deleteApp_app,
+    deleteApp_domain,
+    deleteApp_simulation,
+    deleteAppResponse_httpStatus,
+
+    -- ** DeleteSimulation
+    deleteSimulation_simulation,
+    deleteSimulationResponse_httpStatus,
+
+    -- ** DescribeApp
+    describeApp_app,
+    describeApp_domain,
+    describeApp_simulation,
+    describeAppResponse_description,
+    describeAppResponse_domain,
+    describeAppResponse_endpointInfo,
+    describeAppResponse_launchOverrides,
+    describeAppResponse_name,
+    describeAppResponse_simulation,
+    describeAppResponse_status,
+    describeAppResponse_targetStatus,
+    describeAppResponse_httpStatus,
+
+    -- ** DescribeSimulation
+    describeSimulation_simulation,
+    describeSimulationResponse_arn,
+    describeSimulationResponse_creationTime,
+    describeSimulationResponse_description,
+    describeSimulationResponse_executionId,
+    describeSimulationResponse_liveSimulationState,
+    describeSimulationResponse_loggingConfiguration,
+    describeSimulationResponse_maximumDuration,
+    describeSimulationResponse_name,
+    describeSimulationResponse_roleArn,
+    describeSimulationResponse_schemaError,
+    describeSimulationResponse_schemaS3Location,
+    describeSimulationResponse_status,
+    describeSimulationResponse_targetStatus,
+    describeSimulationResponse_httpStatus,
+
+    -- ** ListApps
+    listApps_domain,
+    listApps_maxResults,
+    listApps_nextToken,
+    listApps_simulation,
+    listAppsResponse_apps,
+    listAppsResponse_nextToken,
+    listAppsResponse_httpStatus,
+
+    -- ** ListSimulations
+    listSimulations_maxResults,
+    listSimulations_nextToken,
+    listSimulationsResponse_nextToken,
+    listSimulationsResponse_simulations,
+    listSimulationsResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** StartApp
+    startApp_clientToken,
+    startApp_description,
+    startApp_launchOverrides,
+    startApp_domain,
+    startApp_name,
+    startApp_simulation,
+    startAppResponse_domain,
+    startAppResponse_name,
+    startAppResponse_simulation,
+    startAppResponse_httpStatus,
+
+    -- ** StartClock
+    startClock_simulation,
+    startClockResponse_httpStatus,
+
+    -- ** StartSimulation
+    startSimulation_clientToken,
+    startSimulation_description,
+    startSimulation_maximumDuration,
+    startSimulation_tags,
+    startSimulation_name,
+    startSimulation_roleArn,
+    startSimulation_schemaS3Location,
+    startSimulationResponse_arn,
+    startSimulationResponse_creationTime,
+    startSimulationResponse_executionId,
+    startSimulationResponse_httpStatus,
+
+    -- ** StopApp
+    stopApp_app,
+    stopApp_domain,
+    stopApp_simulation,
+    stopAppResponse_httpStatus,
+
+    -- ** StopClock
+    stopClock_simulation,
+    stopClockResponse_httpStatus,
+
+    -- ** StopSimulation
+    stopSimulation_simulation,
+    stopSimulationResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- * Types
+
+    -- ** CloudWatchLogsLogGroup
+    cloudWatchLogsLogGroup_logGroupArn,
+
+    -- ** Domain
+    domain_lifecycle,
+    domain_name,
+
+    -- ** LaunchOverrides
+    launchOverrides_launchCommands,
+
+    -- ** LiveSimulationState
+    liveSimulationState_clocks,
+    liveSimulationState_domains,
+
+    -- ** LogDestination
+    logDestination_cloudWatchLogsLogGroup,
+
+    -- ** LoggingConfiguration
+    loggingConfiguration_destinations,
+
+    -- ** S3Location
+    s3Location_bucketName,
+    s3Location_objectKey,
+
+    -- ** SimulationAppEndpointInfo
+    simulationAppEndpointInfo_address,
+    simulationAppEndpointInfo_ingressPortMappings,
+
+    -- ** SimulationAppMetadata
+    simulationAppMetadata_domain,
+    simulationAppMetadata_name,
+    simulationAppMetadata_simulation,
+    simulationAppMetadata_status,
+    simulationAppMetadata_targetStatus,
+
+    -- ** SimulationAppPortMapping
+    simulationAppPortMapping_actual,
+    simulationAppPortMapping_declared,
+
+    -- ** SimulationClock
+    simulationClock_status,
+    simulationClock_targetStatus,
+
+    -- ** SimulationMetadata
+    simulationMetadata_arn,
+    simulationMetadata_creationTime,
+    simulationMetadata_name,
+    simulationMetadata_status,
+    simulationMetadata_targetStatus,
+  )
+where
+
+import Amazonka.SimSpaceWeaver.DeleteApp
+import Amazonka.SimSpaceWeaver.DeleteSimulation
+import Amazonka.SimSpaceWeaver.DescribeApp
+import Amazonka.SimSpaceWeaver.DescribeSimulation
+import Amazonka.SimSpaceWeaver.ListApps
+import Amazonka.SimSpaceWeaver.ListSimulations
+import Amazonka.SimSpaceWeaver.ListTagsForResource
+import Amazonka.SimSpaceWeaver.StartApp
+import Amazonka.SimSpaceWeaver.StartClock
+import Amazonka.SimSpaceWeaver.StartSimulation
+import Amazonka.SimSpaceWeaver.StopApp
+import Amazonka.SimSpaceWeaver.StopClock
+import Amazonka.SimSpaceWeaver.StopSimulation
+import Amazonka.SimSpaceWeaver.TagResource
+import Amazonka.SimSpaceWeaver.Types.CloudWatchLogsLogGroup
+import Amazonka.SimSpaceWeaver.Types.Domain
+import Amazonka.SimSpaceWeaver.Types.LaunchOverrides
+import Amazonka.SimSpaceWeaver.Types.LiveSimulationState
+import Amazonka.SimSpaceWeaver.Types.LogDestination
+import Amazonka.SimSpaceWeaver.Types.LoggingConfiguration
+import Amazonka.SimSpaceWeaver.Types.S3Location
+import Amazonka.SimSpaceWeaver.Types.SimulationAppEndpointInfo
+import Amazonka.SimSpaceWeaver.Types.SimulationAppMetadata
+import Amazonka.SimSpaceWeaver.Types.SimulationAppPortMapping
+import Amazonka.SimSpaceWeaver.Types.SimulationClock
+import Amazonka.SimSpaceWeaver.Types.SimulationMetadata
+import Amazonka.SimSpaceWeaver.UntagResource
diff --git a/gen/Amazonka/SimSpaceWeaver/ListApps.hs b/gen/Amazonka/SimSpaceWeaver/ListApps.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/ListApps.hs
@@ -0,0 +1,249 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.ListApps
+-- 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 custom apps or service apps for the given simulation and
+-- domain.
+module Amazonka.SimSpaceWeaver.ListApps
+  ( -- * Creating a Request
+    ListApps (..),
+    newListApps,
+
+    -- * Request Lenses
+    listApps_domain,
+    listApps_maxResults,
+    listApps_nextToken,
+    listApps_simulation,
+
+    -- * Destructuring the Response
+    ListAppsResponse (..),
+    newListAppsResponse,
+
+    -- * Response Lenses
+    listAppsResponse_apps,
+    listAppsResponse_nextToken,
+    listAppsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newListApps' smart constructor.
+data ListApps = ListApps'
+  { -- | The name of the domain that you want to list apps for.
+    domain :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of apps to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If SimSpace Weaver returns @nextToken@, there are more results
+    -- available. The value of @nextToken@ is a unique pagination token for
+    -- each page. To retrieve the next page, call the operation again using the
+    -- returned token. Keep all other arguments unchanged. If no results
+    -- remain, @nextToken@ is set to @null@. Each pagination token expires
+    -- after 24 hours. If you provide a token that isn\'t valid, you receive an
+    -- /HTTP 400 ValidationException/ error.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the simulation that you want to list apps for.
+    simulation :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListApps' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domain', 'listApps_domain' - The name of the domain that you want to list apps for.
+--
+-- 'maxResults', 'listApps_maxResults' - The maximum number of apps to list.
+--
+-- 'nextToken', 'listApps_nextToken' - If SimSpace Weaver returns @nextToken@, there are more results
+-- available. The value of @nextToken@ is a unique pagination token for
+-- each page. To retrieve the next page, call the operation again using the
+-- returned token. Keep all other arguments unchanged. If no results
+-- remain, @nextToken@ is set to @null@. Each pagination token expires
+-- after 24 hours. If you provide a token that isn\'t valid, you receive an
+-- /HTTP 400 ValidationException/ error.
+--
+-- 'simulation', 'listApps_simulation' - The name of the simulation that you want to list apps for.
+newListApps ::
+  -- | 'simulation'
+  Prelude.Text ->
+  ListApps
+newListApps pSimulation_ =
+  ListApps'
+    { domain = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      simulation = pSimulation_
+    }
+
+-- | The name of the domain that you want to list apps for.
+listApps_domain :: Lens.Lens' ListApps (Prelude.Maybe Prelude.Text)
+listApps_domain = Lens.lens (\ListApps' {domain} -> domain) (\s@ListApps' {} a -> s {domain = a} :: ListApps)
+
+-- | The maximum number of apps to list.
+listApps_maxResults :: Lens.Lens' ListApps (Prelude.Maybe Prelude.Natural)
+listApps_maxResults = Lens.lens (\ListApps' {maxResults} -> maxResults) (\s@ListApps' {} a -> s {maxResults = a} :: ListApps)
+
+-- | If SimSpace Weaver returns @nextToken@, there are more results
+-- available. The value of @nextToken@ is a unique pagination token for
+-- each page. To retrieve the next page, call the operation again using the
+-- returned token. Keep all other arguments unchanged. If no results
+-- remain, @nextToken@ is set to @null@. Each pagination token expires
+-- after 24 hours. If you provide a token that isn\'t valid, you receive an
+-- /HTTP 400 ValidationException/ error.
+listApps_nextToken :: Lens.Lens' ListApps (Prelude.Maybe Prelude.Text)
+listApps_nextToken = Lens.lens (\ListApps' {nextToken} -> nextToken) (\s@ListApps' {} a -> s {nextToken = a} :: ListApps)
+
+-- | The name of the simulation that you want to list apps for.
+listApps_simulation :: Lens.Lens' ListApps Prelude.Text
+listApps_simulation = Lens.lens (\ListApps' {simulation} -> simulation) (\s@ListApps' {} a -> s {simulation = a} :: ListApps)
+
+instance Core.AWSRequest ListApps where
+  type AWSResponse ListApps = ListAppsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAppsResponse'
+            Prelude.<$> (x Data..?> "Apps" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListApps where
+  hashWithSalt _salt ListApps' {..} =
+    _salt
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` simulation
+
+instance Prelude.NFData ListApps where
+  rnf ListApps' {..} =
+    Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf simulation
+
+instance Data.ToHeaders ListApps where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListApps where
+  toPath = Prelude.const "/listapps"
+
+instance Data.ToQuery ListApps where
+  toQuery ListApps' {..} =
+    Prelude.mconcat
+      [ "domain" Data.=: domain,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "simulation" Data.=: simulation
+      ]
+
+-- | /See:/ 'newListAppsResponse' smart constructor.
+data ListAppsResponse = ListAppsResponse'
+  { -- | The list of apps for the given simulation and domain.
+    apps :: Prelude.Maybe [SimulationAppMetadata],
+    -- | If SimSpace Weaver returns @nextToken@, there are more results
+    -- available. The value of @nextToken@ is a unique pagination token for
+    -- each page. To retrieve the next page, call the operation again using the
+    -- returned token. Keep all other arguments unchanged. If no results
+    -- remain, @nextToken@ is set to @null@. Each pagination token expires
+    -- after 24 hours. If you provide a token that isn\'t valid, you receive an
+    -- /HTTP 400 ValidationException/ error.
+    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 'ListAppsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'apps', 'listAppsResponse_apps' - The list of apps for the given simulation and domain.
+--
+-- 'nextToken', 'listAppsResponse_nextToken' - If SimSpace Weaver returns @nextToken@, there are more results
+-- available. The value of @nextToken@ is a unique pagination token for
+-- each page. To retrieve the next page, call the operation again using the
+-- returned token. Keep all other arguments unchanged. If no results
+-- remain, @nextToken@ is set to @null@. Each pagination token expires
+-- after 24 hours. If you provide a token that isn\'t valid, you receive an
+-- /HTTP 400 ValidationException/ error.
+--
+-- 'httpStatus', 'listAppsResponse_httpStatus' - The response's http status code.
+newListAppsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAppsResponse
+newListAppsResponse pHttpStatus_ =
+  ListAppsResponse'
+    { apps = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of apps for the given simulation and domain.
+listAppsResponse_apps :: Lens.Lens' ListAppsResponse (Prelude.Maybe [SimulationAppMetadata])
+listAppsResponse_apps = Lens.lens (\ListAppsResponse' {apps} -> apps) (\s@ListAppsResponse' {} a -> s {apps = a} :: ListAppsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If SimSpace Weaver returns @nextToken@, there are more results
+-- available. The value of @nextToken@ is a unique pagination token for
+-- each page. To retrieve the next page, call the operation again using the
+-- returned token. Keep all other arguments unchanged. If no results
+-- remain, @nextToken@ is set to @null@. Each pagination token expires
+-- after 24 hours. If you provide a token that isn\'t valid, you receive an
+-- /HTTP 400 ValidationException/ error.
+listAppsResponse_nextToken :: Lens.Lens' ListAppsResponse (Prelude.Maybe Prelude.Text)
+listAppsResponse_nextToken = Lens.lens (\ListAppsResponse' {nextToken} -> nextToken) (\s@ListAppsResponse' {} a -> s {nextToken = a} :: ListAppsResponse)
+
+-- | The response's http status code.
+listAppsResponse_httpStatus :: Lens.Lens' ListAppsResponse Prelude.Int
+listAppsResponse_httpStatus = Lens.lens (\ListAppsResponse' {httpStatus} -> httpStatus) (\s@ListAppsResponse' {} a -> s {httpStatus = a} :: ListAppsResponse)
+
+instance Prelude.NFData ListAppsResponse where
+  rnf ListAppsResponse' {..} =
+    Prelude.rnf apps
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/ListSimulations.hs b/gen/Amazonka/SimSpaceWeaver/ListSimulations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/ListSimulations.hs
@@ -0,0 +1,224 @@
+{-# 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.SimSpaceWeaver.ListSimulations
+-- 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 SimSpace Weaver simulations in the Amazon Web Services account
+-- used to make the API call.
+module Amazonka.SimSpaceWeaver.ListSimulations
+  ( -- * Creating a Request
+    ListSimulations (..),
+    newListSimulations,
+
+    -- * Request Lenses
+    listSimulations_maxResults,
+    listSimulations_nextToken,
+
+    -- * Destructuring the Response
+    ListSimulationsResponse (..),
+    newListSimulationsResponse,
+
+    -- * Response Lenses
+    listSimulationsResponse_nextToken,
+    listSimulationsResponse_simulations,
+    listSimulationsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newListSimulations' smart constructor.
+data ListSimulations = ListSimulations'
+  { -- | The maximum number of simulations to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If SimSpace Weaver returns @nextToken@, there are more results
+    -- available. The value of @nextToken@ is a unique pagination token for
+    -- each page. To retrieve the next page, call the operation again using the
+    -- returned token. Keep all other arguments unchanged. If no results
+    -- remain, @nextToken@ is set to @null@. Each pagination token expires
+    -- after 24 hours. If you provide a token that isn\'t valid, you receive an
+    -- /HTTP 400 ValidationException/ error.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSimulations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listSimulations_maxResults' - The maximum number of simulations to list.
+--
+-- 'nextToken', 'listSimulations_nextToken' - If SimSpace Weaver returns @nextToken@, there are more results
+-- available. The value of @nextToken@ is a unique pagination token for
+-- each page. To retrieve the next page, call the operation again using the
+-- returned token. Keep all other arguments unchanged. If no results
+-- remain, @nextToken@ is set to @null@. Each pagination token expires
+-- after 24 hours. If you provide a token that isn\'t valid, you receive an
+-- /HTTP 400 ValidationException/ error.
+newListSimulations ::
+  ListSimulations
+newListSimulations =
+  ListSimulations'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of simulations to list.
+listSimulations_maxResults :: Lens.Lens' ListSimulations (Prelude.Maybe Prelude.Natural)
+listSimulations_maxResults = Lens.lens (\ListSimulations' {maxResults} -> maxResults) (\s@ListSimulations' {} a -> s {maxResults = a} :: ListSimulations)
+
+-- | If SimSpace Weaver returns @nextToken@, there are more results
+-- available. The value of @nextToken@ is a unique pagination token for
+-- each page. To retrieve the next page, call the operation again using the
+-- returned token. Keep all other arguments unchanged. If no results
+-- remain, @nextToken@ is set to @null@. Each pagination token expires
+-- after 24 hours. If you provide a token that isn\'t valid, you receive an
+-- /HTTP 400 ValidationException/ error.
+listSimulations_nextToken :: Lens.Lens' ListSimulations (Prelude.Maybe Prelude.Text)
+listSimulations_nextToken = Lens.lens (\ListSimulations' {nextToken} -> nextToken) (\s@ListSimulations' {} a -> s {nextToken = a} :: ListSimulations)
+
+instance Core.AWSRequest ListSimulations where
+  type
+    AWSResponse ListSimulations =
+      ListSimulationsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListSimulationsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Simulations" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListSimulations where
+  hashWithSalt _salt ListSimulations' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListSimulations where
+  rnf ListSimulations' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListSimulations where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListSimulations where
+  toPath = Prelude.const "/listsimulations"
+
+instance Data.ToQuery ListSimulations where
+  toQuery ListSimulations' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListSimulationsResponse' smart constructor.
+data ListSimulationsResponse = ListSimulationsResponse'
+  { -- | If SimSpace Weaver returns @nextToken@, there are more results
+    -- available. The value of @nextToken@ is a unique pagination token for
+    -- each page. To retrieve the next page, call the operation again using the
+    -- returned token. Keep all other arguments unchanged. If no results
+    -- remain, @nextToken@ is set to @null@. Each pagination token expires
+    -- after 24 hours. If you provide a token that isn\'t valid, you receive an
+    -- /HTTP 400 ValidationException/ error.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The list of simulations.
+    simulations :: Prelude.Maybe [SimulationMetadata],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSimulationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listSimulationsResponse_nextToken' - If SimSpace Weaver returns @nextToken@, there are more results
+-- available. The value of @nextToken@ is a unique pagination token for
+-- each page. To retrieve the next page, call the operation again using the
+-- returned token. Keep all other arguments unchanged. If no results
+-- remain, @nextToken@ is set to @null@. Each pagination token expires
+-- after 24 hours. If you provide a token that isn\'t valid, you receive an
+-- /HTTP 400 ValidationException/ error.
+--
+-- 'simulations', 'listSimulationsResponse_simulations' - The list of simulations.
+--
+-- 'httpStatus', 'listSimulationsResponse_httpStatus' - The response's http status code.
+newListSimulationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListSimulationsResponse
+newListSimulationsResponse pHttpStatus_ =
+  ListSimulationsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      simulations = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If SimSpace Weaver returns @nextToken@, there are more results
+-- available. The value of @nextToken@ is a unique pagination token for
+-- each page. To retrieve the next page, call the operation again using the
+-- returned token. Keep all other arguments unchanged. If no results
+-- remain, @nextToken@ is set to @null@. Each pagination token expires
+-- after 24 hours. If you provide a token that isn\'t valid, you receive an
+-- /HTTP 400 ValidationException/ error.
+listSimulationsResponse_nextToken :: Lens.Lens' ListSimulationsResponse (Prelude.Maybe Prelude.Text)
+listSimulationsResponse_nextToken = Lens.lens (\ListSimulationsResponse' {nextToken} -> nextToken) (\s@ListSimulationsResponse' {} a -> s {nextToken = a} :: ListSimulationsResponse)
+
+-- | The list of simulations.
+listSimulationsResponse_simulations :: Lens.Lens' ListSimulationsResponse (Prelude.Maybe [SimulationMetadata])
+listSimulationsResponse_simulations = Lens.lens (\ListSimulationsResponse' {simulations} -> simulations) (\s@ListSimulationsResponse' {} a -> s {simulations = a} :: ListSimulationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listSimulationsResponse_httpStatus :: Lens.Lens' ListSimulationsResponse Prelude.Int
+listSimulationsResponse_httpStatus = Lens.lens (\ListSimulationsResponse' {httpStatus} -> httpStatus) (\s@ListSimulationsResponse' {} a -> s {httpStatus = a} :: ListSimulationsResponse)
+
+instance Prelude.NFData ListSimulationsResponse where
+  rnf ListSimulationsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf simulations
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/ListTagsForResource.hs b/gen/Amazonka/SimSpaceWeaver/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/ListTagsForResource.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.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 all tags on a SimSpace Weaver resource.
+module Amazonka.SimSpaceWeaver.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name (ARN) of the resource. 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/.
+    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. 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/.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The Amazon Resource Name (ARN) of the resource. 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/.
+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 for the resource.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - The list of tags for 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 for 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 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/SimSpaceWeaver/StartApp.hs b/gen/Amazonka/SimSpaceWeaver/StartApp.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/StartApp.hs
@@ -0,0 +1,269 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.StartApp
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts a custom app with the configuration specified in the simulation
+-- schema.
+module Amazonka.SimSpaceWeaver.StartApp
+  ( -- * Creating a Request
+    StartApp (..),
+    newStartApp,
+
+    -- * Request Lenses
+    startApp_clientToken,
+    startApp_description,
+    startApp_launchOverrides,
+    startApp_domain,
+    startApp_name,
+    startApp_simulation,
+
+    -- * Destructuring the Response
+    StartAppResponse (..),
+    newStartAppResponse,
+
+    -- * Response Lenses
+    startAppResponse_domain,
+    startAppResponse_name,
+    startAppResponse_simulation,
+    startAppResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newStartApp' smart constructor.
+data StartApp = StartApp'
+  { -- | A value that you provide to ensure that repeated calls to this API
+    -- operation using the same parameters complete only once. A @ClientToken@
+    -- is also known as an /idempotency token/. A @ClientToken@ expires after
+    -- 24 hours.
+    clientToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The description of the app.
+    description :: Prelude.Maybe Prelude.Text,
+    launchOverrides :: Prelude.Maybe LaunchOverrides,
+    -- | The name of the domain of the app.
+    domain :: Prelude.Text,
+    -- | The name of the app.
+    name :: Prelude.Text,
+    -- | The name of the simulation of the app.
+    simulation :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartApp' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'startApp_clientToken' - A value that you provide to ensure that repeated calls to this API
+-- operation using the same parameters complete only once. A @ClientToken@
+-- is also known as an /idempotency token/. A @ClientToken@ expires after
+-- 24 hours.
+--
+-- 'description', 'startApp_description' - The description of the app.
+--
+-- 'launchOverrides', 'startApp_launchOverrides' - Undocumented member.
+--
+-- 'domain', 'startApp_domain' - The name of the domain of the app.
+--
+-- 'name', 'startApp_name' - The name of the app.
+--
+-- 'simulation', 'startApp_simulation' - The name of the simulation of the app.
+newStartApp ::
+  -- | 'domain'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'simulation'
+  Prelude.Text ->
+  StartApp
+newStartApp pDomain_ pName_ pSimulation_ =
+  StartApp'
+    { clientToken = Prelude.Nothing,
+      description = Prelude.Nothing,
+      launchOverrides = Prelude.Nothing,
+      domain = pDomain_,
+      name = pName_,
+      simulation = pSimulation_
+    }
+
+-- | A value that you provide to ensure that repeated calls to this API
+-- operation using the same parameters complete only once. A @ClientToken@
+-- is also known as an /idempotency token/. A @ClientToken@ expires after
+-- 24 hours.
+startApp_clientToken :: Lens.Lens' StartApp (Prelude.Maybe Prelude.Text)
+startApp_clientToken = Lens.lens (\StartApp' {clientToken} -> clientToken) (\s@StartApp' {} a -> s {clientToken = a} :: StartApp) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The description of the app.
+startApp_description :: Lens.Lens' StartApp (Prelude.Maybe Prelude.Text)
+startApp_description = Lens.lens (\StartApp' {description} -> description) (\s@StartApp' {} a -> s {description = a} :: StartApp)
+
+-- | Undocumented member.
+startApp_launchOverrides :: Lens.Lens' StartApp (Prelude.Maybe LaunchOverrides)
+startApp_launchOverrides = Lens.lens (\StartApp' {launchOverrides} -> launchOverrides) (\s@StartApp' {} a -> s {launchOverrides = a} :: StartApp)
+
+-- | The name of the domain of the app.
+startApp_domain :: Lens.Lens' StartApp Prelude.Text
+startApp_domain = Lens.lens (\StartApp' {domain} -> domain) (\s@StartApp' {} a -> s {domain = a} :: StartApp)
+
+-- | The name of the app.
+startApp_name :: Lens.Lens' StartApp Prelude.Text
+startApp_name = Lens.lens (\StartApp' {name} -> name) (\s@StartApp' {} a -> s {name = a} :: StartApp)
+
+-- | The name of the simulation of the app.
+startApp_simulation :: Lens.Lens' StartApp Prelude.Text
+startApp_simulation = Lens.lens (\StartApp' {simulation} -> simulation) (\s@StartApp' {} a -> s {simulation = a} :: StartApp)
+
+instance Core.AWSRequest StartApp where
+  type AWSResponse StartApp = StartAppResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartAppResponse'
+            Prelude.<$> (x Data..?> "Domain")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "Simulation")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartApp where
+  hashWithSalt _salt StartApp' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` launchOverrides
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` simulation
+
+instance Prelude.NFData StartApp where
+  rnf StartApp' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf launchOverrides
+      `Prelude.seq` Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf simulation
+
+instance Data.ToHeaders StartApp where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartApp where
+  toJSON StartApp' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("Description" Data..=) Prelude.<$> description,
+            ("LaunchOverrides" Data..=)
+              Prelude.<$> launchOverrides,
+            Prelude.Just ("Domain" Data..= domain),
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Simulation" Data..= simulation)
+          ]
+      )
+
+instance Data.ToPath StartApp where
+  toPath = Prelude.const "/startapp"
+
+instance Data.ToQuery StartApp where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartAppResponse' smart constructor.
+data StartAppResponse = StartAppResponse'
+  { -- | The name of the domain of the app.
+    domain :: Prelude.Maybe Prelude.Text,
+    -- | The name of the app.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The name of the simulation of the app.
+    simulation :: 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 'StartAppResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domain', 'startAppResponse_domain' - The name of the domain of the app.
+--
+-- 'name', 'startAppResponse_name' - The name of the app.
+--
+-- 'simulation', 'startAppResponse_simulation' - The name of the simulation of the app.
+--
+-- 'httpStatus', 'startAppResponse_httpStatus' - The response's http status code.
+newStartAppResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartAppResponse
+newStartAppResponse pHttpStatus_ =
+  StartAppResponse'
+    { domain = Prelude.Nothing,
+      name = Prelude.Nothing,
+      simulation = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The name of the domain of the app.
+startAppResponse_domain :: Lens.Lens' StartAppResponse (Prelude.Maybe Prelude.Text)
+startAppResponse_domain = Lens.lens (\StartAppResponse' {domain} -> domain) (\s@StartAppResponse' {} a -> s {domain = a} :: StartAppResponse)
+
+-- | The name of the app.
+startAppResponse_name :: Lens.Lens' StartAppResponse (Prelude.Maybe Prelude.Text)
+startAppResponse_name = Lens.lens (\StartAppResponse' {name} -> name) (\s@StartAppResponse' {} a -> s {name = a} :: StartAppResponse)
+
+-- | The name of the simulation of the app.
+startAppResponse_simulation :: Lens.Lens' StartAppResponse (Prelude.Maybe Prelude.Text)
+startAppResponse_simulation = Lens.lens (\StartAppResponse' {simulation} -> simulation) (\s@StartAppResponse' {} a -> s {simulation = a} :: StartAppResponse)
+
+-- | The response's http status code.
+startAppResponse_httpStatus :: Lens.Lens' StartAppResponse Prelude.Int
+startAppResponse_httpStatus = Lens.lens (\StartAppResponse' {httpStatus} -> httpStatus) (\s@StartAppResponse' {} a -> s {httpStatus = a} :: StartAppResponse)
+
+instance Prelude.NFData StartAppResponse where
+  rnf StartAppResponse' {..} =
+    Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf simulation
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/StartClock.hs b/gen/Amazonka/SimSpaceWeaver/StartClock.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/StartClock.hs
@@ -0,0 +1,146 @@
+{-# 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.SimSpaceWeaver.StartClock
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts the simulation clock.
+module Amazonka.SimSpaceWeaver.StartClock
+  ( -- * Creating a Request
+    StartClock (..),
+    newStartClock,
+
+    -- * Request Lenses
+    startClock_simulation,
+
+    -- * Destructuring the Response
+    StartClockResponse (..),
+    newStartClockResponse,
+
+    -- * Response Lenses
+    startClockResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newStartClock' smart constructor.
+data StartClock = StartClock'
+  { -- | The name of the simulation.
+    simulation :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartClock' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'simulation', 'startClock_simulation' - The name of the simulation.
+newStartClock ::
+  -- | 'simulation'
+  Prelude.Text ->
+  StartClock
+newStartClock pSimulation_ =
+  StartClock' {simulation = pSimulation_}
+
+-- | The name of the simulation.
+startClock_simulation :: Lens.Lens' StartClock Prelude.Text
+startClock_simulation = Lens.lens (\StartClock' {simulation} -> simulation) (\s@StartClock' {} a -> s {simulation = a} :: StartClock)
+
+instance Core.AWSRequest StartClock where
+  type AWSResponse StartClock = StartClockResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          StartClockResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartClock where
+  hashWithSalt _salt StartClock' {..} =
+    _salt `Prelude.hashWithSalt` simulation
+
+instance Prelude.NFData StartClock where
+  rnf StartClock' {..} = Prelude.rnf simulation
+
+instance Data.ToHeaders StartClock where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartClock where
+  toJSON StartClock' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Simulation" Data..= simulation)]
+      )
+
+instance Data.ToPath StartClock where
+  toPath = Prelude.const "/startclock"
+
+instance Data.ToQuery StartClock where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartClockResponse' smart constructor.
+data StartClockResponse = StartClockResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartClockResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'startClockResponse_httpStatus' - The response's http status code.
+newStartClockResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartClockResponse
+newStartClockResponse pHttpStatus_ =
+  StartClockResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+startClockResponse_httpStatus :: Lens.Lens' StartClockResponse Prelude.Int
+startClockResponse_httpStatus = Lens.lens (\StartClockResponse' {httpStatus} -> httpStatus) (\s@StartClockResponse' {} a -> s {httpStatus = a} :: StartClockResponse)
+
+instance Prelude.NFData StartClockResponse where
+  rnf StartClockResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/StartSimulation.hs b/gen/Amazonka/SimSpaceWeaver/StartSimulation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/StartSimulation.hs
@@ -0,0 +1,345 @@
+{-# 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.SimSpaceWeaver.StartSimulation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts a simulation with the given name and schema.
+module Amazonka.SimSpaceWeaver.StartSimulation
+  ( -- * Creating a Request
+    StartSimulation (..),
+    newStartSimulation,
+
+    -- * Request Lenses
+    startSimulation_clientToken,
+    startSimulation_description,
+    startSimulation_maximumDuration,
+    startSimulation_tags,
+    startSimulation_name,
+    startSimulation_roleArn,
+    startSimulation_schemaS3Location,
+
+    -- * Destructuring the Response
+    StartSimulationResponse (..),
+    newStartSimulationResponse,
+
+    -- * Response Lenses
+    startSimulationResponse_arn,
+    startSimulationResponse_creationTime,
+    startSimulationResponse_executionId,
+    startSimulationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newStartSimulation' smart constructor.
+data StartSimulation = StartSimulation'
+  { -- | A value that you provide to ensure that repeated calls to this API
+    -- operation using the same parameters complete only once. A @ClientToken@
+    -- is also known as an /idempotency token/. A @ClientToken@ expires after
+    -- 24 hours.
+    clientToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The description of the simulation.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The maximum running time of the simulation, specified as a number of
+    -- months (m or M), hours (h or H), or days (d or D). The simulation stops
+    -- when it reaches this limit.
+    maximumDuration :: Prelude.Maybe Prelude.Text,
+    -- | A list of tags for the simulation. For more information about tags, see
+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services resources>
+    -- in the /Amazon Web Services General Reference/.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The name of the simulation.
+    name :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the Identity and Access Management
+    -- (IAM) role that the simulation assumes to perform actions. 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/. For more information
+    -- about IAM roles, see
+    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html IAM roles>
+    -- in the /Identity and Access Management User Guide/.
+    roleArn :: Prelude.Text,
+    -- | The location of the simulation schema in Amazon Simple Storage Service
+    -- (Amazon S3). For more information about Amazon S3, see the
+    -- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html Amazon Simple Storage Service User Guide>
+    -- .
+    schemaS3Location :: S3Location
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartSimulation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'startSimulation_clientToken' - A value that you provide to ensure that repeated calls to this API
+-- operation using the same parameters complete only once. A @ClientToken@
+-- is also known as an /idempotency token/. A @ClientToken@ expires after
+-- 24 hours.
+--
+-- 'description', 'startSimulation_description' - The description of the simulation.
+--
+-- 'maximumDuration', 'startSimulation_maximumDuration' - The maximum running time of the simulation, specified as a number of
+-- months (m or M), hours (h or H), or days (d or D). The simulation stops
+-- when it reaches this limit.
+--
+-- 'tags', 'startSimulation_tags' - A list of tags for the simulation. For more information about tags, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services resources>
+-- in the /Amazon Web Services General Reference/.
+--
+-- 'name', 'startSimulation_name' - The name of the simulation.
+--
+-- 'roleArn', 'startSimulation_roleArn' - The Amazon Resource Name (ARN) of the Identity and Access Management
+-- (IAM) role that the simulation assumes to perform actions. 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/. For more information
+-- about IAM roles, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html IAM roles>
+-- in the /Identity and Access Management User Guide/.
+--
+-- 'schemaS3Location', 'startSimulation_schemaS3Location' - The location of the simulation schema in Amazon Simple Storage Service
+-- (Amazon S3). For more information about Amazon S3, see the
+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html Amazon Simple Storage Service User Guide>
+-- .
+newStartSimulation ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'schemaS3Location'
+  S3Location ->
+  StartSimulation
+newStartSimulation
+  pName_
+  pRoleArn_
+  pSchemaS3Location_ =
+    StartSimulation'
+      { clientToken = Prelude.Nothing,
+        description = Prelude.Nothing,
+        maximumDuration = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        name = pName_,
+        roleArn = pRoleArn_,
+        schemaS3Location = pSchemaS3Location_
+      }
+
+-- | A value that you provide to ensure that repeated calls to this API
+-- operation using the same parameters complete only once. A @ClientToken@
+-- is also known as an /idempotency token/. A @ClientToken@ expires after
+-- 24 hours.
+startSimulation_clientToken :: Lens.Lens' StartSimulation (Prelude.Maybe Prelude.Text)
+startSimulation_clientToken = Lens.lens (\StartSimulation' {clientToken} -> clientToken) (\s@StartSimulation' {} a -> s {clientToken = a} :: StartSimulation) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The description of the simulation.
+startSimulation_description :: Lens.Lens' StartSimulation (Prelude.Maybe Prelude.Text)
+startSimulation_description = Lens.lens (\StartSimulation' {description} -> description) (\s@StartSimulation' {} a -> s {description = a} :: StartSimulation)
+
+-- | The maximum running time of the simulation, specified as a number of
+-- months (m or M), hours (h or H), or days (d or D). The simulation stops
+-- when it reaches this limit.
+startSimulation_maximumDuration :: Lens.Lens' StartSimulation (Prelude.Maybe Prelude.Text)
+startSimulation_maximumDuration = Lens.lens (\StartSimulation' {maximumDuration} -> maximumDuration) (\s@StartSimulation' {} a -> s {maximumDuration = a} :: StartSimulation)
+
+-- | A list of tags for the simulation. For more information about tags, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services resources>
+-- in the /Amazon Web Services General Reference/.
+startSimulation_tags :: Lens.Lens' StartSimulation (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+startSimulation_tags = Lens.lens (\StartSimulation' {tags} -> tags) (\s@StartSimulation' {} a -> s {tags = a} :: StartSimulation) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the simulation.
+startSimulation_name :: Lens.Lens' StartSimulation Prelude.Text
+startSimulation_name = Lens.lens (\StartSimulation' {name} -> name) (\s@StartSimulation' {} a -> s {name = a} :: StartSimulation)
+
+-- | The Amazon Resource Name (ARN) of the Identity and Access Management
+-- (IAM) role that the simulation assumes to perform actions. 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/. For more information
+-- about IAM roles, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html IAM roles>
+-- in the /Identity and Access Management User Guide/.
+startSimulation_roleArn :: Lens.Lens' StartSimulation Prelude.Text
+startSimulation_roleArn = Lens.lens (\StartSimulation' {roleArn} -> roleArn) (\s@StartSimulation' {} a -> s {roleArn = a} :: StartSimulation)
+
+-- | The location of the simulation schema in Amazon Simple Storage Service
+-- (Amazon S3). For more information about Amazon S3, see the
+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html Amazon Simple Storage Service User Guide>
+-- .
+startSimulation_schemaS3Location :: Lens.Lens' StartSimulation S3Location
+startSimulation_schemaS3Location = Lens.lens (\StartSimulation' {schemaS3Location} -> schemaS3Location) (\s@StartSimulation' {} a -> s {schemaS3Location = a} :: StartSimulation)
+
+instance Core.AWSRequest StartSimulation where
+  type
+    AWSResponse StartSimulation =
+      StartSimulationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartSimulationResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "ExecutionId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartSimulation where
+  hashWithSalt _salt StartSimulation' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` maximumDuration
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` schemaS3Location
+
+instance Prelude.NFData StartSimulation where
+  rnf StartSimulation' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf maximumDuration
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf schemaS3Location
+
+instance Data.ToHeaders StartSimulation where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartSimulation where
+  toJSON StartSimulation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("Description" Data..=) Prelude.<$> description,
+            ("MaximumDuration" Data..=)
+              Prelude.<$> maximumDuration,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("RoleArn" Data..= roleArn),
+            Prelude.Just
+              ("SchemaS3Location" Data..= schemaS3Location)
+          ]
+      )
+
+instance Data.ToPath StartSimulation where
+  toPath = Prelude.const "/startsimulation"
+
+instance Data.ToQuery StartSimulation where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartSimulationResponse' smart constructor.
+data StartSimulationResponse = StartSimulationResponse'
+  { -- | The Amazon Resource Name (ARN) of the simulation. 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 time when the simulation was created, expressed as the number of
+    -- seconds and milliseconds in UTC since the Unix epoch (0:0:0.000, January
+    -- 1, 1970).
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | A universally unique identifier (UUID) for this simulation.
+    executionId :: 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 'StartSimulationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'startSimulationResponse_arn' - The Amazon Resource Name (ARN) of the simulation. 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/.
+--
+-- 'creationTime', 'startSimulationResponse_creationTime' - The time when the simulation was created, expressed as the number of
+-- seconds and milliseconds in UTC since the Unix epoch (0:0:0.000, January
+-- 1, 1970).
+--
+-- 'executionId', 'startSimulationResponse_executionId' - A universally unique identifier (UUID) for this simulation.
+--
+-- 'httpStatus', 'startSimulationResponse_httpStatus' - The response's http status code.
+newStartSimulationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartSimulationResponse
+newStartSimulationResponse pHttpStatus_ =
+  StartSimulationResponse'
+    { arn = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      executionId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the simulation. 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/.
+startSimulationResponse_arn :: Lens.Lens' StartSimulationResponse (Prelude.Maybe Prelude.Text)
+startSimulationResponse_arn = Lens.lens (\StartSimulationResponse' {arn} -> arn) (\s@StartSimulationResponse' {} a -> s {arn = a} :: StartSimulationResponse)
+
+-- | The time when the simulation was created, expressed as the number of
+-- seconds and milliseconds in UTC since the Unix epoch (0:0:0.000, January
+-- 1, 1970).
+startSimulationResponse_creationTime :: Lens.Lens' StartSimulationResponse (Prelude.Maybe Prelude.UTCTime)
+startSimulationResponse_creationTime = Lens.lens (\StartSimulationResponse' {creationTime} -> creationTime) (\s@StartSimulationResponse' {} a -> s {creationTime = a} :: StartSimulationResponse) Prelude.. Lens.mapping Data._Time
+
+-- | A universally unique identifier (UUID) for this simulation.
+startSimulationResponse_executionId :: Lens.Lens' StartSimulationResponse (Prelude.Maybe Prelude.Text)
+startSimulationResponse_executionId = Lens.lens (\StartSimulationResponse' {executionId} -> executionId) (\s@StartSimulationResponse' {} a -> s {executionId = a} :: StartSimulationResponse)
+
+-- | The response's http status code.
+startSimulationResponse_httpStatus :: Lens.Lens' StartSimulationResponse Prelude.Int
+startSimulationResponse_httpStatus = Lens.lens (\StartSimulationResponse' {httpStatus} -> httpStatus) (\s@StartSimulationResponse' {} a -> s {httpStatus = a} :: StartSimulationResponse)
+
+instance Prelude.NFData StartSimulationResponse where
+  rnf StartSimulationResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf executionId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/StopApp.hs b/gen/Amazonka/SimSpaceWeaver/StopApp.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/StopApp.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.StopApp
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops the given custom app and shuts down all of its allocated compute
+-- resources.
+module Amazonka.SimSpaceWeaver.StopApp
+  ( -- * Creating a Request
+    StopApp (..),
+    newStopApp,
+
+    -- * Request Lenses
+    stopApp_app,
+    stopApp_domain,
+    stopApp_simulation,
+
+    -- * Destructuring the Response
+    StopAppResponse (..),
+    newStopAppResponse,
+
+    -- * Response Lenses
+    stopAppResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newStopApp' smart constructor.
+data StopApp = StopApp'
+  { -- | The name of the app.
+    app :: Prelude.Text,
+    -- | The name of the domain of the app.
+    domain :: Prelude.Text,
+    -- | The name of the simulation of the app.
+    simulation :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopApp' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'app', 'stopApp_app' - The name of the app.
+--
+-- 'domain', 'stopApp_domain' - The name of the domain of the app.
+--
+-- 'simulation', 'stopApp_simulation' - The name of the simulation of the app.
+newStopApp ::
+  -- | 'app'
+  Prelude.Text ->
+  -- | 'domain'
+  Prelude.Text ->
+  -- | 'simulation'
+  Prelude.Text ->
+  StopApp
+newStopApp pApp_ pDomain_ pSimulation_ =
+  StopApp'
+    { app = pApp_,
+      domain = pDomain_,
+      simulation = pSimulation_
+    }
+
+-- | The name of the app.
+stopApp_app :: Lens.Lens' StopApp Prelude.Text
+stopApp_app = Lens.lens (\StopApp' {app} -> app) (\s@StopApp' {} a -> s {app = a} :: StopApp)
+
+-- | The name of the domain of the app.
+stopApp_domain :: Lens.Lens' StopApp Prelude.Text
+stopApp_domain = Lens.lens (\StopApp' {domain} -> domain) (\s@StopApp' {} a -> s {domain = a} :: StopApp)
+
+-- | The name of the simulation of the app.
+stopApp_simulation :: Lens.Lens' StopApp Prelude.Text
+stopApp_simulation = Lens.lens (\StopApp' {simulation} -> simulation) (\s@StopApp' {} a -> s {simulation = a} :: StopApp)
+
+instance Core.AWSRequest StopApp where
+  type AWSResponse StopApp = StopAppResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          StopAppResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StopApp where
+  hashWithSalt _salt StopApp' {..} =
+    _salt
+      `Prelude.hashWithSalt` app
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` simulation
+
+instance Prelude.NFData StopApp where
+  rnf StopApp' {..} =
+    Prelude.rnf app
+      `Prelude.seq` Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf simulation
+
+instance Data.ToHeaders StopApp where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopApp where
+  toJSON StopApp' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("App" Data..= app),
+            Prelude.Just ("Domain" Data..= domain),
+            Prelude.Just ("Simulation" Data..= simulation)
+          ]
+      )
+
+instance Data.ToPath StopApp where
+  toPath = Prelude.const "/stopapp"
+
+instance Data.ToQuery StopApp where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopAppResponse' smart constructor.
+data StopAppResponse = StopAppResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopAppResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'stopAppResponse_httpStatus' - The response's http status code.
+newStopAppResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopAppResponse
+newStopAppResponse pHttpStatus_ =
+  StopAppResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+stopAppResponse_httpStatus :: Lens.Lens' StopAppResponse Prelude.Int
+stopAppResponse_httpStatus = Lens.lens (\StopAppResponse' {httpStatus} -> httpStatus) (\s@StopAppResponse' {} a -> s {httpStatus = a} :: StopAppResponse)
+
+instance Prelude.NFData StopAppResponse where
+  rnf StopAppResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/StopClock.hs b/gen/Amazonka/SimSpaceWeaver/StopClock.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/StopClock.hs
@@ -0,0 +1,146 @@
+{-# 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.SimSpaceWeaver.StopClock
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops the simulation clock.
+module Amazonka.SimSpaceWeaver.StopClock
+  ( -- * Creating a Request
+    StopClock (..),
+    newStopClock,
+
+    -- * Request Lenses
+    stopClock_simulation,
+
+    -- * Destructuring the Response
+    StopClockResponse (..),
+    newStopClockResponse,
+
+    -- * Response Lenses
+    stopClockResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newStopClock' smart constructor.
+data StopClock = StopClock'
+  { -- | The name of the simulation.
+    simulation :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopClock' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'simulation', 'stopClock_simulation' - The name of the simulation.
+newStopClock ::
+  -- | 'simulation'
+  Prelude.Text ->
+  StopClock
+newStopClock pSimulation_ =
+  StopClock' {simulation = pSimulation_}
+
+-- | The name of the simulation.
+stopClock_simulation :: Lens.Lens' StopClock Prelude.Text
+stopClock_simulation = Lens.lens (\StopClock' {simulation} -> simulation) (\s@StopClock' {} a -> s {simulation = a} :: StopClock)
+
+instance Core.AWSRequest StopClock where
+  type AWSResponse StopClock = StopClockResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          StopClockResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StopClock where
+  hashWithSalt _salt StopClock' {..} =
+    _salt `Prelude.hashWithSalt` simulation
+
+instance Prelude.NFData StopClock where
+  rnf StopClock' {..} = Prelude.rnf simulation
+
+instance Data.ToHeaders StopClock where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopClock where
+  toJSON StopClock' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Simulation" Data..= simulation)]
+      )
+
+instance Data.ToPath StopClock where
+  toPath = Prelude.const "/stopclock"
+
+instance Data.ToQuery StopClock where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopClockResponse' smart constructor.
+data StopClockResponse = StopClockResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopClockResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'stopClockResponse_httpStatus' - The response's http status code.
+newStopClockResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopClockResponse
+newStopClockResponse pHttpStatus_ =
+  StopClockResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+stopClockResponse_httpStatus :: Lens.Lens' StopClockResponse Prelude.Int
+stopClockResponse_httpStatus = Lens.lens (\StopClockResponse' {httpStatus} -> httpStatus) (\s@StopClockResponse' {} a -> s {httpStatus = a} :: StopClockResponse)
+
+instance Prelude.NFData StopClockResponse where
+  rnf StopClockResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/StopSimulation.hs b/gen/Amazonka/SimSpaceWeaver/StopSimulation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/StopSimulation.hs
@@ -0,0 +1,153 @@
+{-# 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.SimSpaceWeaver.StopSimulation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops the given simulation.
+--
+-- You can\'t restart a simulation after you stop it. If you need to
+-- restart a simulation, you must stop it, delete it, and start a new
+-- instance of it.
+module Amazonka.SimSpaceWeaver.StopSimulation
+  ( -- * Creating a Request
+    StopSimulation (..),
+    newStopSimulation,
+
+    -- * Request Lenses
+    stopSimulation_simulation,
+
+    -- * Destructuring the Response
+    StopSimulationResponse (..),
+    newStopSimulationResponse,
+
+    -- * Response Lenses
+    stopSimulationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newStopSimulation' smart constructor.
+data StopSimulation = StopSimulation'
+  { -- | The name of the simulation.
+    simulation :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopSimulation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'simulation', 'stopSimulation_simulation' - The name of the simulation.
+newStopSimulation ::
+  -- | 'simulation'
+  Prelude.Text ->
+  StopSimulation
+newStopSimulation pSimulation_ =
+  StopSimulation' {simulation = pSimulation_}
+
+-- | The name of the simulation.
+stopSimulation_simulation :: Lens.Lens' StopSimulation Prelude.Text
+stopSimulation_simulation = Lens.lens (\StopSimulation' {simulation} -> simulation) (\s@StopSimulation' {} a -> s {simulation = a} :: StopSimulation)
+
+instance Core.AWSRequest StopSimulation where
+  type
+    AWSResponse StopSimulation =
+      StopSimulationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          StopSimulationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StopSimulation where
+  hashWithSalt _salt StopSimulation' {..} =
+    _salt `Prelude.hashWithSalt` simulation
+
+instance Prelude.NFData StopSimulation where
+  rnf StopSimulation' {..} = Prelude.rnf simulation
+
+instance Data.ToHeaders StopSimulation where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopSimulation where
+  toJSON StopSimulation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Simulation" Data..= simulation)]
+      )
+
+instance Data.ToPath StopSimulation where
+  toPath = Prelude.const "/stopsimulation"
+
+instance Data.ToQuery StopSimulation where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopSimulationResponse' smart constructor.
+data StopSimulationResponse = StopSimulationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopSimulationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'stopSimulationResponse_httpStatus' - The response's http status code.
+newStopSimulationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopSimulationResponse
+newStopSimulationResponse pHttpStatus_ =
+  StopSimulationResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+stopSimulationResponse_httpStatus :: Lens.Lens' StopSimulationResponse Prelude.Int
+stopSimulationResponse_httpStatus = Lens.lens (\StopSimulationResponse' {httpStatus} -> httpStatus) (\s@StopSimulationResponse' {} a -> s {httpStatus = a} :: StopSimulationResponse)
+
+instance Prelude.NFData StopSimulationResponse where
+  rnf StopSimulationResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/TagResource.hs b/gen/Amazonka/SimSpaceWeaver/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/TagResource.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.TagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds tags to a SimSpace Weaver resource. For more information about
+-- tags, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services resources>
+-- in the /Amazon Web Services General Reference/.
+module Amazonka.SimSpaceWeaver.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 qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource that you want to add tags
+    -- to. 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/.
+    resourceArn :: Prelude.Text,
+    -- | A list of tags to apply to the resource.
+    tags :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that you want to add tags
+-- to. 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/.
+--
+-- 'tags', 'tagResource_tags' - A list of tags to apply to the resource.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource that you want to add tags
+-- to. 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/.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+-- | A list of tags to apply to 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.. 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/SimSpaceWeaver/Types.hs b/gen/Amazonka/SimSpaceWeaver/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types.hs
@@ -0,0 +1,267 @@
+{-# 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.SimSpaceWeaver.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.SimSpaceWeaver.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _InternalServerException,
+    _ResourceNotFoundException,
+    _ServiceQuotaExceededException,
+    _TooManyTagsException,
+    _ValidationException,
+
+    -- * ClockStatus
+    ClockStatus (..),
+
+    -- * ClockTargetStatus
+    ClockTargetStatus (..),
+
+    -- * LifecycleManagementStrategy
+    LifecycleManagementStrategy (..),
+
+    -- * SimulationAppStatus
+    SimulationAppStatus (..),
+
+    -- * SimulationAppTargetStatus
+    SimulationAppTargetStatus (..),
+
+    -- * SimulationStatus
+    SimulationStatus (..),
+
+    -- * SimulationTargetStatus
+    SimulationTargetStatus (..),
+
+    -- * CloudWatchLogsLogGroup
+    CloudWatchLogsLogGroup (..),
+    newCloudWatchLogsLogGroup,
+    cloudWatchLogsLogGroup_logGroupArn,
+
+    -- * Domain
+    Domain (..),
+    newDomain,
+    domain_lifecycle,
+    domain_name,
+
+    -- * LaunchOverrides
+    LaunchOverrides (..),
+    newLaunchOverrides,
+    launchOverrides_launchCommands,
+
+    -- * LiveSimulationState
+    LiveSimulationState (..),
+    newLiveSimulationState,
+    liveSimulationState_clocks,
+    liveSimulationState_domains,
+
+    -- * LogDestination
+    LogDestination (..),
+    newLogDestination,
+    logDestination_cloudWatchLogsLogGroup,
+
+    -- * LoggingConfiguration
+    LoggingConfiguration (..),
+    newLoggingConfiguration,
+    loggingConfiguration_destinations,
+
+    -- * S3Location
+    S3Location (..),
+    newS3Location,
+    s3Location_bucketName,
+    s3Location_objectKey,
+
+    -- * SimulationAppEndpointInfo
+    SimulationAppEndpointInfo (..),
+    newSimulationAppEndpointInfo,
+    simulationAppEndpointInfo_address,
+    simulationAppEndpointInfo_ingressPortMappings,
+
+    -- * SimulationAppMetadata
+    SimulationAppMetadata (..),
+    newSimulationAppMetadata,
+    simulationAppMetadata_domain,
+    simulationAppMetadata_name,
+    simulationAppMetadata_simulation,
+    simulationAppMetadata_status,
+    simulationAppMetadata_targetStatus,
+
+    -- * SimulationAppPortMapping
+    SimulationAppPortMapping (..),
+    newSimulationAppPortMapping,
+    simulationAppPortMapping_actual,
+    simulationAppPortMapping_declared,
+
+    -- * SimulationClock
+    SimulationClock (..),
+    newSimulationClock,
+    simulationClock_status,
+    simulationClock_targetStatus,
+
+    -- * SimulationMetadata
+    SimulationMetadata (..),
+    newSimulationMetadata,
+    simulationMetadata_arn,
+    simulationMetadata_creationTime,
+    simulationMetadata_name,
+    simulationMetadata_status,
+    simulationMetadata_targetStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+import Amazonka.SimSpaceWeaver.Types.ClockStatus
+import Amazonka.SimSpaceWeaver.Types.ClockTargetStatus
+import Amazonka.SimSpaceWeaver.Types.CloudWatchLogsLogGroup
+import Amazonka.SimSpaceWeaver.Types.Domain
+import Amazonka.SimSpaceWeaver.Types.LaunchOverrides
+import Amazonka.SimSpaceWeaver.Types.LifecycleManagementStrategy
+import Amazonka.SimSpaceWeaver.Types.LiveSimulationState
+import Amazonka.SimSpaceWeaver.Types.LogDestination
+import Amazonka.SimSpaceWeaver.Types.LoggingConfiguration
+import Amazonka.SimSpaceWeaver.Types.S3Location
+import Amazonka.SimSpaceWeaver.Types.SimulationAppEndpointInfo
+import Amazonka.SimSpaceWeaver.Types.SimulationAppMetadata
+import Amazonka.SimSpaceWeaver.Types.SimulationAppPortMapping
+import Amazonka.SimSpaceWeaver.Types.SimulationAppStatus
+import Amazonka.SimSpaceWeaver.Types.SimulationAppTargetStatus
+import Amazonka.SimSpaceWeaver.Types.SimulationClock
+import Amazonka.SimSpaceWeaver.Types.SimulationMetadata
+import Amazonka.SimSpaceWeaver.Types.SimulationStatus
+import Amazonka.SimSpaceWeaver.Types.SimulationTargetStatus
+
+-- | API version @2022-10-28@ of the Amazon SimSpace Weaver SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "SimSpaceWeaver",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "simspaceweaver",
+      Core.signingName = "simspaceweaver",
+      Core.version = "2022-10-28",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "SimSpaceWeaver",
+      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
+
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 403
+
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+    Prelude.. Core.hasStatus 500
+
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceQuotaExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceQuotaExceededException"
+    Prelude.. Core.hasStatus 402
+
+_TooManyTagsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TooManyTagsException =
+  Core._MatchServiceError
+    defaultService
+    "TooManyTagsException"
+    Prelude.. Core.hasStatus 400
+
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/ClockStatus.hs b/gen/Amazonka/SimSpaceWeaver/Types/ClockStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/ClockStatus.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.SimSpaceWeaver.Types.ClockStatus
+-- 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.SimSpaceWeaver.Types.ClockStatus
+  ( ClockStatus
+      ( ..,
+        ClockStatus_STARTED,
+        ClockStatus_STARTING,
+        ClockStatus_STOPPED,
+        ClockStatus_STOPPING,
+        ClockStatus_UNKNOWN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ClockStatus = ClockStatus'
+  { fromClockStatus ::
+      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 ClockStatus_STARTED :: ClockStatus
+pattern ClockStatus_STARTED = ClockStatus' "STARTED"
+
+pattern ClockStatus_STARTING :: ClockStatus
+pattern ClockStatus_STARTING = ClockStatus' "STARTING"
+
+pattern ClockStatus_STOPPED :: ClockStatus
+pattern ClockStatus_STOPPED = ClockStatus' "STOPPED"
+
+pattern ClockStatus_STOPPING :: ClockStatus
+pattern ClockStatus_STOPPING = ClockStatus' "STOPPING"
+
+pattern ClockStatus_UNKNOWN :: ClockStatus
+pattern ClockStatus_UNKNOWN = ClockStatus' "UNKNOWN"
+
+{-# COMPLETE
+  ClockStatus_STARTED,
+  ClockStatus_STARTING,
+  ClockStatus_STOPPED,
+  ClockStatus_STOPPING,
+  ClockStatus_UNKNOWN,
+  ClockStatus'
+  #-}
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/ClockTargetStatus.hs b/gen/Amazonka/SimSpaceWeaver/Types/ClockTargetStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/ClockTargetStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.Types.ClockTargetStatus
+-- 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.SimSpaceWeaver.Types.ClockTargetStatus
+  ( ClockTargetStatus
+      ( ..,
+        ClockTargetStatus_STARTED,
+        ClockTargetStatus_STOPPED,
+        ClockTargetStatus_UNKNOWN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ClockTargetStatus = ClockTargetStatus'
+  { fromClockTargetStatus ::
+      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 ClockTargetStatus_STARTED :: ClockTargetStatus
+pattern ClockTargetStatus_STARTED = ClockTargetStatus' "STARTED"
+
+pattern ClockTargetStatus_STOPPED :: ClockTargetStatus
+pattern ClockTargetStatus_STOPPED = ClockTargetStatus' "STOPPED"
+
+pattern ClockTargetStatus_UNKNOWN :: ClockTargetStatus
+pattern ClockTargetStatus_UNKNOWN = ClockTargetStatus' "UNKNOWN"
+
+{-# COMPLETE
+  ClockTargetStatus_STARTED,
+  ClockTargetStatus_STOPPED,
+  ClockTargetStatus_UNKNOWN,
+  ClockTargetStatus'
+  #-}
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/CloudWatchLogsLogGroup.hs b/gen/Amazonka/SimSpaceWeaver/Types/CloudWatchLogsLogGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/CloudWatchLogsLogGroup.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.Types.CloudWatchLogsLogGroup
+-- 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.SimSpaceWeaver.Types.CloudWatchLogsLogGroup where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Amazon CloudWatch Logs log group for the simulation. For more
+-- information about log groups, see
+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html Working with log groups and log streams>
+-- in the /Amazon CloudWatch Logs User Guide/.
+--
+-- /See:/ 'newCloudWatchLogsLogGroup' smart constructor.
+data CloudWatchLogsLogGroup = CloudWatchLogsLogGroup'
+  { -- | The Amazon Resource Name (ARN) of the Amazon CloudWatch Logs log group
+    -- for the simulation. 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/. For more information
+    -- about log groups, see
+    -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html Working with log groups and log streams>
+    -- in the /Amazon CloudWatch Logs User Guide/.
+    logGroupArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CloudWatchLogsLogGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'logGroupArn', 'cloudWatchLogsLogGroup_logGroupArn' - The Amazon Resource Name (ARN) of the Amazon CloudWatch Logs log group
+-- for the simulation. 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/. For more information
+-- about log groups, see
+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html Working with log groups and log streams>
+-- in the /Amazon CloudWatch Logs User Guide/.
+newCloudWatchLogsLogGroup ::
+  CloudWatchLogsLogGroup
+newCloudWatchLogsLogGroup =
+  CloudWatchLogsLogGroup'
+    { logGroupArn =
+        Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the Amazon CloudWatch Logs log group
+-- for the simulation. 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/. For more information
+-- about log groups, see
+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html Working with log groups and log streams>
+-- in the /Amazon CloudWatch Logs User Guide/.
+cloudWatchLogsLogGroup_logGroupArn :: Lens.Lens' CloudWatchLogsLogGroup (Prelude.Maybe Prelude.Text)
+cloudWatchLogsLogGroup_logGroupArn = Lens.lens (\CloudWatchLogsLogGroup' {logGroupArn} -> logGroupArn) (\s@CloudWatchLogsLogGroup' {} a -> s {logGroupArn = a} :: CloudWatchLogsLogGroup)
+
+instance Data.FromJSON CloudWatchLogsLogGroup where
+  parseJSON =
+    Data.withObject
+      "CloudWatchLogsLogGroup"
+      ( \x ->
+          CloudWatchLogsLogGroup'
+            Prelude.<$> (x Data..:? "LogGroupArn")
+      )
+
+instance Prelude.Hashable CloudWatchLogsLogGroup where
+  hashWithSalt _salt CloudWatchLogsLogGroup' {..} =
+    _salt `Prelude.hashWithSalt` logGroupArn
+
+instance Prelude.NFData CloudWatchLogsLogGroup where
+  rnf CloudWatchLogsLogGroup' {..} =
+    Prelude.rnf logGroupArn
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/Domain.hs b/gen/Amazonka/SimSpaceWeaver/Types/Domain.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/Domain.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.SimSpaceWeaver.Types.Domain
+-- 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.SimSpaceWeaver.Types.Domain where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SimSpaceWeaver.Types.LifecycleManagementStrategy
+
+-- | A collection of app instances that run the same executable app code and
+-- have the same launch options and commands.
+--
+-- For more information about domains, see
+-- <https://docs.aws.amazon.com/simspaceweaver/latest/userguide/what-is_key-concepts.html Key concepts>
+-- in the /Amazon Web Services SimSpace Weaver User Guide/.
+--
+-- /See:/ 'newDomain' smart constructor.
+data Domain = Domain'
+  { -- | The type of lifecycle management for apps in the domain. This value
+    -- indicates whether apps in this domain are /managed/ (SimSpace Weaver
+    -- starts and stops the apps) or /unmanaged/ (you must start and stop the
+    -- apps).
+    --
+    -- __Lifecycle types__
+    --
+    -- -   @PerWorker@ – Managed: SimSpace Weaver starts 1 app on each worker
+    --
+    -- -   @BySpatialSubdivision@ – Managed: SimSpace Weaver starts 1 app for
+    --     each spatial partition
+    --
+    -- -   @ByRequest@ – Unmanaged: You use the __StartApp__ API to start the
+    --     apps and use the __StopApp__ API to stop the apps.
+    --
+    -- The lifecycle types will change when the service is released for general
+    -- availability (GA).
+    lifecycle :: Prelude.Maybe LifecycleManagementStrategy,
+    -- | The name of the domain.
+    name :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Domain' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lifecycle', 'domain_lifecycle' - The type of lifecycle management for apps in the domain. This value
+-- indicates whether apps in this domain are /managed/ (SimSpace Weaver
+-- starts and stops the apps) or /unmanaged/ (you must start and stop the
+-- apps).
+--
+-- __Lifecycle types__
+--
+-- -   @PerWorker@ – Managed: SimSpace Weaver starts 1 app on each worker
+--
+-- -   @BySpatialSubdivision@ – Managed: SimSpace Weaver starts 1 app for
+--     each spatial partition
+--
+-- -   @ByRequest@ – Unmanaged: You use the __StartApp__ API to start the
+--     apps and use the __StopApp__ API to stop the apps.
+--
+-- The lifecycle types will change when the service is released for general
+-- availability (GA).
+--
+-- 'name', 'domain_name' - The name of the domain.
+newDomain ::
+  Domain
+newDomain =
+  Domain'
+    { lifecycle = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | The type of lifecycle management for apps in the domain. This value
+-- indicates whether apps in this domain are /managed/ (SimSpace Weaver
+-- starts and stops the apps) or /unmanaged/ (you must start and stop the
+-- apps).
+--
+-- __Lifecycle types__
+--
+-- -   @PerWorker@ – Managed: SimSpace Weaver starts 1 app on each worker
+--
+-- -   @BySpatialSubdivision@ – Managed: SimSpace Weaver starts 1 app for
+--     each spatial partition
+--
+-- -   @ByRequest@ – Unmanaged: You use the __StartApp__ API to start the
+--     apps and use the __StopApp__ API to stop the apps.
+--
+-- The lifecycle types will change when the service is released for general
+-- availability (GA).
+domain_lifecycle :: Lens.Lens' Domain (Prelude.Maybe LifecycleManagementStrategy)
+domain_lifecycle = Lens.lens (\Domain' {lifecycle} -> lifecycle) (\s@Domain' {} a -> s {lifecycle = a} :: Domain)
+
+-- | The name of the domain.
+domain_name :: Lens.Lens' Domain (Prelude.Maybe Prelude.Text)
+domain_name = Lens.lens (\Domain' {name} -> name) (\s@Domain' {} a -> s {name = a} :: Domain)
+
+instance Data.FromJSON Domain where
+  parseJSON =
+    Data.withObject
+      "Domain"
+      ( \x ->
+          Domain'
+            Prelude.<$> (x Data..:? "Lifecycle")
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable Domain where
+  hashWithSalt _salt Domain' {..} =
+    _salt
+      `Prelude.hashWithSalt` lifecycle
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData Domain where
+  rnf Domain' {..} =
+    Prelude.rnf lifecycle
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/LaunchOverrides.hs b/gen/Amazonka/SimSpaceWeaver/Types/LaunchOverrides.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/LaunchOverrides.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.Types.LaunchOverrides
+-- 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.SimSpaceWeaver.Types.LaunchOverrides 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
+
+-- | Options that apply when the app starts. These optiAons override default
+-- behavior.
+--
+-- /See:/ 'newLaunchOverrides' smart constructor.
+data LaunchOverrides = LaunchOverrides'
+  { -- | App launch commands and command line parameters that override the launch
+    -- command configured in the simulation schema.
+    launchCommands :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LaunchOverrides' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'launchCommands', 'launchOverrides_launchCommands' - App launch commands and command line parameters that override the launch
+-- command configured in the simulation schema.
+newLaunchOverrides ::
+  LaunchOverrides
+newLaunchOverrides =
+  LaunchOverrides' {launchCommands = Prelude.Nothing}
+
+-- | App launch commands and command line parameters that override the launch
+-- command configured in the simulation schema.
+launchOverrides_launchCommands :: Lens.Lens' LaunchOverrides (Prelude.Maybe [Prelude.Text])
+launchOverrides_launchCommands = Lens.lens (\LaunchOverrides' {launchCommands} -> launchCommands) (\s@LaunchOverrides' {} a -> s {launchCommands = a} :: LaunchOverrides) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON LaunchOverrides where
+  parseJSON =
+    Data.withObject
+      "LaunchOverrides"
+      ( \x ->
+          LaunchOverrides'
+            Prelude.<$> ( x
+                            Data..:? "LaunchCommands"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable LaunchOverrides where
+  hashWithSalt _salt LaunchOverrides' {..} =
+    _salt `Prelude.hashWithSalt` launchCommands
+
+instance Prelude.NFData LaunchOverrides where
+  rnf LaunchOverrides' {..} = Prelude.rnf launchCommands
+
+instance Data.ToJSON LaunchOverrides where
+  toJSON LaunchOverrides' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LaunchCommands" Data..=)
+              Prelude.<$> launchCommands
+          ]
+      )
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/LifecycleManagementStrategy.hs b/gen/Amazonka/SimSpaceWeaver/Types/LifecycleManagementStrategy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/LifecycleManagementStrategy.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.SimSpaceWeaver.Types.LifecycleManagementStrategy
+-- 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.SimSpaceWeaver.Types.LifecycleManagementStrategy
+  ( LifecycleManagementStrategy
+      ( ..,
+        LifecycleManagementStrategy_ByRequest,
+        LifecycleManagementStrategy_BySpatialSubdivision,
+        LifecycleManagementStrategy_PerWorker,
+        LifecycleManagementStrategy_Unknown
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LifecycleManagementStrategy = LifecycleManagementStrategy'
+  { fromLifecycleManagementStrategy ::
+      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 LifecycleManagementStrategy_ByRequest :: LifecycleManagementStrategy
+pattern LifecycleManagementStrategy_ByRequest = LifecycleManagementStrategy' "ByRequest"
+
+pattern LifecycleManagementStrategy_BySpatialSubdivision :: LifecycleManagementStrategy
+pattern LifecycleManagementStrategy_BySpatialSubdivision = LifecycleManagementStrategy' "BySpatialSubdivision"
+
+pattern LifecycleManagementStrategy_PerWorker :: LifecycleManagementStrategy
+pattern LifecycleManagementStrategy_PerWorker = LifecycleManagementStrategy' "PerWorker"
+
+pattern LifecycleManagementStrategy_Unknown :: LifecycleManagementStrategy
+pattern LifecycleManagementStrategy_Unknown = LifecycleManagementStrategy' "Unknown"
+
+{-# COMPLETE
+  LifecycleManagementStrategy_ByRequest,
+  LifecycleManagementStrategy_BySpatialSubdivision,
+  LifecycleManagementStrategy_PerWorker,
+  LifecycleManagementStrategy_Unknown,
+  LifecycleManagementStrategy'
+  #-}
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/LiveSimulationState.hs b/gen/Amazonka/SimSpaceWeaver/Types/LiveSimulationState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/LiveSimulationState.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.Types.LiveSimulationState
+-- 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.SimSpaceWeaver.Types.LiveSimulationState where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SimSpaceWeaver.Types.Domain
+import Amazonka.SimSpaceWeaver.Types.SimulationClock
+
+-- | A collection of additional state information, such as domain and clock
+-- configuration.
+--
+-- /See:/ 'newLiveSimulationState' smart constructor.
+data LiveSimulationState = LiveSimulationState'
+  { -- | A list of simulation clocks.
+    --
+    -- At this time, a simulation has only one clock.
+    clocks :: Prelude.Maybe [SimulationClock],
+    -- | A list of domains for the simulation. For more information about
+    -- domains, see
+    -- <https://docs.aws.amazon.com/simspaceweaver/latest/userguide/what-is_key-concepts.html Key concepts>
+    -- in the /Amazon Web Services SimSpace Weaver User Guide/.
+    domains :: Prelude.Maybe [Domain]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LiveSimulationState' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clocks', 'liveSimulationState_clocks' - A list of simulation clocks.
+--
+-- At this time, a simulation has only one clock.
+--
+-- 'domains', 'liveSimulationState_domains' - A list of domains for the simulation. For more information about
+-- domains, see
+-- <https://docs.aws.amazon.com/simspaceweaver/latest/userguide/what-is_key-concepts.html Key concepts>
+-- in the /Amazon Web Services SimSpace Weaver User Guide/.
+newLiveSimulationState ::
+  LiveSimulationState
+newLiveSimulationState =
+  LiveSimulationState'
+    { clocks = Prelude.Nothing,
+      domains = Prelude.Nothing
+    }
+
+-- | A list of simulation clocks.
+--
+-- At this time, a simulation has only one clock.
+liveSimulationState_clocks :: Lens.Lens' LiveSimulationState (Prelude.Maybe [SimulationClock])
+liveSimulationState_clocks = Lens.lens (\LiveSimulationState' {clocks} -> clocks) (\s@LiveSimulationState' {} a -> s {clocks = a} :: LiveSimulationState) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of domains for the simulation. For more information about
+-- domains, see
+-- <https://docs.aws.amazon.com/simspaceweaver/latest/userguide/what-is_key-concepts.html Key concepts>
+-- in the /Amazon Web Services SimSpace Weaver User Guide/.
+liveSimulationState_domains :: Lens.Lens' LiveSimulationState (Prelude.Maybe [Domain])
+liveSimulationState_domains = Lens.lens (\LiveSimulationState' {domains} -> domains) (\s@LiveSimulationState' {} a -> s {domains = a} :: LiveSimulationState) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON LiveSimulationState where
+  parseJSON =
+    Data.withObject
+      "LiveSimulationState"
+      ( \x ->
+          LiveSimulationState'
+            Prelude.<$> (x Data..:? "Clocks" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Domains" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable LiveSimulationState where
+  hashWithSalt _salt LiveSimulationState' {..} =
+    _salt
+      `Prelude.hashWithSalt` clocks
+      `Prelude.hashWithSalt` domains
+
+instance Prelude.NFData LiveSimulationState where
+  rnf LiveSimulationState' {..} =
+    Prelude.rnf clocks
+      `Prelude.seq` Prelude.rnf domains
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/LogDestination.hs b/gen/Amazonka/SimSpaceWeaver/Types/LogDestination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/LogDestination.hs
@@ -0,0 +1,82 @@
+{-# 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.SimSpaceWeaver.Types.LogDestination
+-- 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.SimSpaceWeaver.Types.LogDestination where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SimSpaceWeaver.Types.CloudWatchLogsLogGroup
+
+-- | The location where SimSpace Weaver sends simulation log data.
+--
+-- /See:/ 'newLogDestination' smart constructor.
+data LogDestination = LogDestination'
+  { -- | An Amazon CloudWatch Logs log group that stores simulation log data. For
+    -- more information about log groups, see
+    -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html Working with log groups and log streams>
+    -- in the /Amazon CloudWatch Logs User Guide/.
+    cloudWatchLogsLogGroup :: Prelude.Maybe CloudWatchLogsLogGroup
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LogDestination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cloudWatchLogsLogGroup', 'logDestination_cloudWatchLogsLogGroup' - An Amazon CloudWatch Logs log group that stores simulation log data. For
+-- more information about log groups, see
+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html Working with log groups and log streams>
+-- in the /Amazon CloudWatch Logs User Guide/.
+newLogDestination ::
+  LogDestination
+newLogDestination =
+  LogDestination'
+    { cloudWatchLogsLogGroup =
+        Prelude.Nothing
+    }
+
+-- | An Amazon CloudWatch Logs log group that stores simulation log data. For
+-- more information about log groups, see
+-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html Working with log groups and log streams>
+-- in the /Amazon CloudWatch Logs User Guide/.
+logDestination_cloudWatchLogsLogGroup :: Lens.Lens' LogDestination (Prelude.Maybe CloudWatchLogsLogGroup)
+logDestination_cloudWatchLogsLogGroup = Lens.lens (\LogDestination' {cloudWatchLogsLogGroup} -> cloudWatchLogsLogGroup) (\s@LogDestination' {} a -> s {cloudWatchLogsLogGroup = a} :: LogDestination)
+
+instance Data.FromJSON LogDestination where
+  parseJSON =
+    Data.withObject
+      "LogDestination"
+      ( \x ->
+          LogDestination'
+            Prelude.<$> (x Data..:? "CloudWatchLogsLogGroup")
+      )
+
+instance Prelude.Hashable LogDestination where
+  hashWithSalt _salt LogDestination' {..} =
+    _salt `Prelude.hashWithSalt` cloudWatchLogsLogGroup
+
+instance Prelude.NFData LogDestination where
+  rnf LogDestination' {..} =
+    Prelude.rnf cloudWatchLogsLogGroup
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/LoggingConfiguration.hs b/gen/Amazonka/SimSpaceWeaver/Types/LoggingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/LoggingConfiguration.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.Types.LoggingConfiguration
+-- 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.SimSpaceWeaver.Types.LoggingConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SimSpaceWeaver.Types.LogDestination
+
+-- | The logging configuration for a simulation.
+--
+-- /See:/ 'newLoggingConfiguration' smart constructor.
+data LoggingConfiguration = LoggingConfiguration'
+  { -- | A list of the locations where SimSpace Weaver sends simulation log data.
+    destinations :: Prelude.Maybe [LogDestination]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LoggingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'destinations', 'loggingConfiguration_destinations' - A list of the locations where SimSpace Weaver sends simulation log data.
+newLoggingConfiguration ::
+  LoggingConfiguration
+newLoggingConfiguration =
+  LoggingConfiguration'
+    { destinations =
+        Prelude.Nothing
+    }
+
+-- | A list of the locations where SimSpace Weaver sends simulation log data.
+loggingConfiguration_destinations :: Lens.Lens' LoggingConfiguration (Prelude.Maybe [LogDestination])
+loggingConfiguration_destinations = Lens.lens (\LoggingConfiguration' {destinations} -> destinations) (\s@LoggingConfiguration' {} a -> s {destinations = a} :: LoggingConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON LoggingConfiguration where
+  parseJSON =
+    Data.withObject
+      "LoggingConfiguration"
+      ( \x ->
+          LoggingConfiguration'
+            Prelude.<$> (x Data..:? "Destinations" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable LoggingConfiguration where
+  hashWithSalt _salt LoggingConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` destinations
+
+instance Prelude.NFData LoggingConfiguration where
+  rnf LoggingConfiguration' {..} =
+    Prelude.rnf destinations
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/S3Location.hs b/gen/Amazonka/SimSpaceWeaver/Types/S3Location.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/S3Location.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.Types.S3Location
+-- 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.SimSpaceWeaver.Types.S3Location where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A location in Amazon Simple Storage Service (Amazon S3) where SimSpace
+-- Weaver stores simulation data, such as your app zip files and schema
+-- file. For more information about Amazon S3, see the
+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html Amazon Simple Storage Service User Guide>
+-- .
+--
+-- /See:/ 'newS3Location' smart constructor.
+data S3Location = S3Location'
+  { -- | The name of an Amazon S3 bucket. For more information about buckets, see
+    -- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html Creating, configuring, and working with Amazon S3 buckets>
+    -- in the /Amazon Simple Storage Service User Guide/.
+    bucketName :: Prelude.Maybe Prelude.Text,
+    -- | The key name of an object in Amazon S3. For more information about
+    -- Amazon S3 objects and object keys, see
+    -- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/uploading-downloading-objects.html Uploading, downloading, and working with objects in Amazon S3>
+    -- in the /Amazon Simple Storage Service User Guide/.
+    objectKey :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3Location' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketName', 's3Location_bucketName' - The name of an Amazon S3 bucket. For more information about buckets, see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html Creating, configuring, and working with Amazon S3 buckets>
+-- in the /Amazon Simple Storage Service User Guide/.
+--
+-- 'objectKey', 's3Location_objectKey' - The key name of an object in Amazon S3. For more information about
+-- Amazon S3 objects and object keys, see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/uploading-downloading-objects.html Uploading, downloading, and working with objects in Amazon S3>
+-- in the /Amazon Simple Storage Service User Guide/.
+newS3Location ::
+  S3Location
+newS3Location =
+  S3Location'
+    { bucketName = Prelude.Nothing,
+      objectKey = Prelude.Nothing
+    }
+
+-- | The name of an Amazon S3 bucket. For more information about buckets, see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html Creating, configuring, and working with Amazon S3 buckets>
+-- in the /Amazon Simple Storage Service User Guide/.
+s3Location_bucketName :: Lens.Lens' S3Location (Prelude.Maybe Prelude.Text)
+s3Location_bucketName = Lens.lens (\S3Location' {bucketName} -> bucketName) (\s@S3Location' {} a -> s {bucketName = a} :: S3Location)
+
+-- | The key name of an object in Amazon S3. For more information about
+-- Amazon S3 objects and object keys, see
+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/uploading-downloading-objects.html Uploading, downloading, and working with objects in Amazon S3>
+-- in the /Amazon Simple Storage Service User Guide/.
+s3Location_objectKey :: Lens.Lens' S3Location (Prelude.Maybe Prelude.Text)
+s3Location_objectKey = Lens.lens (\S3Location' {objectKey} -> objectKey) (\s@S3Location' {} a -> s {objectKey = a} :: S3Location)
+
+instance Data.FromJSON S3Location where
+  parseJSON =
+    Data.withObject
+      "S3Location"
+      ( \x ->
+          S3Location'
+            Prelude.<$> (x Data..:? "BucketName")
+            Prelude.<*> (x Data..:? "ObjectKey")
+      )
+
+instance Prelude.Hashable S3Location where
+  hashWithSalt _salt S3Location' {..} =
+    _salt
+      `Prelude.hashWithSalt` bucketName
+      `Prelude.hashWithSalt` objectKey
+
+instance Prelude.NFData S3Location where
+  rnf S3Location' {..} =
+    Prelude.rnf bucketName
+      `Prelude.seq` Prelude.rnf objectKey
+
+instance Data.ToJSON S3Location where
+  toJSON S3Location' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BucketName" Data..=) Prelude.<$> bucketName,
+            ("ObjectKey" Data..=) Prelude.<$> objectKey
+          ]
+      )
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppEndpointInfo.hs b/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppEndpointInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppEndpointInfo.hs
@@ -0,0 +1,96 @@
+{-# 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.SimSpaceWeaver.Types.SimulationAppEndpointInfo
+-- 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.SimSpaceWeaver.Types.SimulationAppEndpointInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SimSpaceWeaver.Types.SimulationAppPortMapping
+
+-- | Information about the network endpoint that you can use to connect to
+-- your custom or service app.
+--
+-- /See:/ 'newSimulationAppEndpointInfo' smart constructor.
+data SimulationAppEndpointInfo = SimulationAppEndpointInfo'
+  { -- | The IP address of the app. SimSpace Weaver dynamically assigns this IP
+    -- address when the app starts.
+    address :: Prelude.Maybe Prelude.Text,
+    -- | The inbound TCP\/UDP port numbers of the app. The combination of an IP
+    -- address and a port number form a network endpoint.
+    ingressPortMappings :: Prelude.Maybe [SimulationAppPortMapping]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SimulationAppEndpointInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'address', 'simulationAppEndpointInfo_address' - The IP address of the app. SimSpace Weaver dynamically assigns this IP
+-- address when the app starts.
+--
+-- 'ingressPortMappings', 'simulationAppEndpointInfo_ingressPortMappings' - The inbound TCP\/UDP port numbers of the app. The combination of an IP
+-- address and a port number form a network endpoint.
+newSimulationAppEndpointInfo ::
+  SimulationAppEndpointInfo
+newSimulationAppEndpointInfo =
+  SimulationAppEndpointInfo'
+    { address =
+        Prelude.Nothing,
+      ingressPortMappings = Prelude.Nothing
+    }
+
+-- | The IP address of the app. SimSpace Weaver dynamically assigns this IP
+-- address when the app starts.
+simulationAppEndpointInfo_address :: Lens.Lens' SimulationAppEndpointInfo (Prelude.Maybe Prelude.Text)
+simulationAppEndpointInfo_address = Lens.lens (\SimulationAppEndpointInfo' {address} -> address) (\s@SimulationAppEndpointInfo' {} a -> s {address = a} :: SimulationAppEndpointInfo)
+
+-- | The inbound TCP\/UDP port numbers of the app. The combination of an IP
+-- address and a port number form a network endpoint.
+simulationAppEndpointInfo_ingressPortMappings :: Lens.Lens' SimulationAppEndpointInfo (Prelude.Maybe [SimulationAppPortMapping])
+simulationAppEndpointInfo_ingressPortMappings = Lens.lens (\SimulationAppEndpointInfo' {ingressPortMappings} -> ingressPortMappings) (\s@SimulationAppEndpointInfo' {} a -> s {ingressPortMappings = a} :: SimulationAppEndpointInfo) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON SimulationAppEndpointInfo where
+  parseJSON =
+    Data.withObject
+      "SimulationAppEndpointInfo"
+      ( \x ->
+          SimulationAppEndpointInfo'
+            Prelude.<$> (x Data..:? "Address")
+            Prelude.<*> ( x
+                            Data..:? "IngressPortMappings"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable SimulationAppEndpointInfo where
+  hashWithSalt _salt SimulationAppEndpointInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` address
+      `Prelude.hashWithSalt` ingressPortMappings
+
+instance Prelude.NFData SimulationAppEndpointInfo where
+  rnf SimulationAppEndpointInfo' {..} =
+    Prelude.rnf address
+      `Prelude.seq` Prelude.rnf ingressPortMappings
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppMetadata.hs b/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppMetadata.hs
@@ -0,0 +1,128 @@
+{-# 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.SimSpaceWeaver.Types.SimulationAppMetadata
+-- 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.SimSpaceWeaver.Types.SimulationAppMetadata where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SimSpaceWeaver.Types.SimulationAppStatus
+import Amazonka.SimSpaceWeaver.Types.SimulationAppTargetStatus
+
+-- | A collection of metadata about an app.
+--
+-- /See:/ 'newSimulationAppMetadata' smart constructor.
+data SimulationAppMetadata = SimulationAppMetadata'
+  { -- | The domain of the app. For more information about domains, see
+    -- <https://docs.aws.amazon.com/simspaceweaver/latest/userguide/what-is_key-concepts.html Key concepts>
+    -- in the /Amazon Web Services SimSpace Weaver User Guide/.
+    domain :: Prelude.Maybe Prelude.Text,
+    -- | The name of the app.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The name of the simulation of the app.
+    simulation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the app.
+    status :: Prelude.Maybe SimulationAppStatus,
+    -- | The desired status of the app.
+    targetStatus :: Prelude.Maybe SimulationAppTargetStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SimulationAppMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domain', 'simulationAppMetadata_domain' - The domain of the app. For more information about domains, see
+-- <https://docs.aws.amazon.com/simspaceweaver/latest/userguide/what-is_key-concepts.html Key concepts>
+-- in the /Amazon Web Services SimSpace Weaver User Guide/.
+--
+-- 'name', 'simulationAppMetadata_name' - The name of the app.
+--
+-- 'simulation', 'simulationAppMetadata_simulation' - The name of the simulation of the app.
+--
+-- 'status', 'simulationAppMetadata_status' - The current status of the app.
+--
+-- 'targetStatus', 'simulationAppMetadata_targetStatus' - The desired status of the app.
+newSimulationAppMetadata ::
+  SimulationAppMetadata
+newSimulationAppMetadata =
+  SimulationAppMetadata'
+    { domain = Prelude.Nothing,
+      name = Prelude.Nothing,
+      simulation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      targetStatus = Prelude.Nothing
+    }
+
+-- | The domain of the app. For more information about domains, see
+-- <https://docs.aws.amazon.com/simspaceweaver/latest/userguide/what-is_key-concepts.html Key concepts>
+-- in the /Amazon Web Services SimSpace Weaver User Guide/.
+simulationAppMetadata_domain :: Lens.Lens' SimulationAppMetadata (Prelude.Maybe Prelude.Text)
+simulationAppMetadata_domain = Lens.lens (\SimulationAppMetadata' {domain} -> domain) (\s@SimulationAppMetadata' {} a -> s {domain = a} :: SimulationAppMetadata)
+
+-- | The name of the app.
+simulationAppMetadata_name :: Lens.Lens' SimulationAppMetadata (Prelude.Maybe Prelude.Text)
+simulationAppMetadata_name = Lens.lens (\SimulationAppMetadata' {name} -> name) (\s@SimulationAppMetadata' {} a -> s {name = a} :: SimulationAppMetadata)
+
+-- | The name of the simulation of the app.
+simulationAppMetadata_simulation :: Lens.Lens' SimulationAppMetadata (Prelude.Maybe Prelude.Text)
+simulationAppMetadata_simulation = Lens.lens (\SimulationAppMetadata' {simulation} -> simulation) (\s@SimulationAppMetadata' {} a -> s {simulation = a} :: SimulationAppMetadata)
+
+-- | The current status of the app.
+simulationAppMetadata_status :: Lens.Lens' SimulationAppMetadata (Prelude.Maybe SimulationAppStatus)
+simulationAppMetadata_status = Lens.lens (\SimulationAppMetadata' {status} -> status) (\s@SimulationAppMetadata' {} a -> s {status = a} :: SimulationAppMetadata)
+
+-- | The desired status of the app.
+simulationAppMetadata_targetStatus :: Lens.Lens' SimulationAppMetadata (Prelude.Maybe SimulationAppTargetStatus)
+simulationAppMetadata_targetStatus = Lens.lens (\SimulationAppMetadata' {targetStatus} -> targetStatus) (\s@SimulationAppMetadata' {} a -> s {targetStatus = a} :: SimulationAppMetadata)
+
+instance Data.FromJSON SimulationAppMetadata where
+  parseJSON =
+    Data.withObject
+      "SimulationAppMetadata"
+      ( \x ->
+          SimulationAppMetadata'
+            Prelude.<$> (x Data..:? "Domain")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Simulation")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "TargetStatus")
+      )
+
+instance Prelude.Hashable SimulationAppMetadata where
+  hashWithSalt _salt SimulationAppMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` simulation
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` targetStatus
+
+instance Prelude.NFData SimulationAppMetadata where
+  rnf SimulationAppMetadata' {..} =
+    Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf simulation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf targetStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppPortMapping.hs b/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppPortMapping.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppPortMapping.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.Types.SimulationAppPortMapping
+-- 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.SimSpaceWeaver.Types.SimulationAppPortMapping where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A collection of TCP\/UDP ports for a custom or service app.
+--
+-- /See:/ 'newSimulationAppPortMapping' smart constructor.
+data SimulationAppPortMapping = SimulationAppPortMapping'
+  { -- | The TCP\/UDP port number of the running app. SimSpace Weaver dynamically
+    -- assigns this port number when the app starts. SimSpace Weaver maps the
+    -- @Declared@ port to the @Actual@ port. Clients connect to the app using
+    -- the app\'s IP address and the @Actual@ port number.
+    actual :: Prelude.Maybe Prelude.Natural,
+    -- | The TCP\/UDP port number of the app, declared in the simulation schema.
+    -- SimSpace Weaver maps the @Declared@ port to the @Actual@ port. The
+    -- source code for the app should bind to the @Declared@ port.
+    declared :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SimulationAppPortMapping' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actual', 'simulationAppPortMapping_actual' - The TCP\/UDP port number of the running app. SimSpace Weaver dynamically
+-- assigns this port number when the app starts. SimSpace Weaver maps the
+-- @Declared@ port to the @Actual@ port. Clients connect to the app using
+-- the app\'s IP address and the @Actual@ port number.
+--
+-- 'declared', 'simulationAppPortMapping_declared' - The TCP\/UDP port number of the app, declared in the simulation schema.
+-- SimSpace Weaver maps the @Declared@ port to the @Actual@ port. The
+-- source code for the app should bind to the @Declared@ port.
+newSimulationAppPortMapping ::
+  SimulationAppPortMapping
+newSimulationAppPortMapping =
+  SimulationAppPortMapping'
+    { actual = Prelude.Nothing,
+      declared = Prelude.Nothing
+    }
+
+-- | The TCP\/UDP port number of the running app. SimSpace Weaver dynamically
+-- assigns this port number when the app starts. SimSpace Weaver maps the
+-- @Declared@ port to the @Actual@ port. Clients connect to the app using
+-- the app\'s IP address and the @Actual@ port number.
+simulationAppPortMapping_actual :: Lens.Lens' SimulationAppPortMapping (Prelude.Maybe Prelude.Natural)
+simulationAppPortMapping_actual = Lens.lens (\SimulationAppPortMapping' {actual} -> actual) (\s@SimulationAppPortMapping' {} a -> s {actual = a} :: SimulationAppPortMapping)
+
+-- | The TCP\/UDP port number of the app, declared in the simulation schema.
+-- SimSpace Weaver maps the @Declared@ port to the @Actual@ port. The
+-- source code for the app should bind to the @Declared@ port.
+simulationAppPortMapping_declared :: Lens.Lens' SimulationAppPortMapping (Prelude.Maybe Prelude.Natural)
+simulationAppPortMapping_declared = Lens.lens (\SimulationAppPortMapping' {declared} -> declared) (\s@SimulationAppPortMapping' {} a -> s {declared = a} :: SimulationAppPortMapping)
+
+instance Data.FromJSON SimulationAppPortMapping where
+  parseJSON =
+    Data.withObject
+      "SimulationAppPortMapping"
+      ( \x ->
+          SimulationAppPortMapping'
+            Prelude.<$> (x Data..:? "Actual")
+            Prelude.<*> (x Data..:? "Declared")
+      )
+
+instance Prelude.Hashable SimulationAppPortMapping where
+  hashWithSalt _salt SimulationAppPortMapping' {..} =
+    _salt
+      `Prelude.hashWithSalt` actual
+      `Prelude.hashWithSalt` declared
+
+instance Prelude.NFData SimulationAppPortMapping where
+  rnf SimulationAppPortMapping' {..} =
+    Prelude.rnf actual
+      `Prelude.seq` Prelude.rnf declared
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppStatus.hs b/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppStatus.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.SimSpaceWeaver.Types.SimulationAppStatus
+-- 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.SimSpaceWeaver.Types.SimulationAppStatus
+  ( SimulationAppStatus
+      ( ..,
+        SimulationAppStatus_ERROR,
+        SimulationAppStatus_STARTED,
+        SimulationAppStatus_STARTING,
+        SimulationAppStatus_STOPPED,
+        SimulationAppStatus_STOPPING,
+        SimulationAppStatus_UNKNOWN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SimulationAppStatus = SimulationAppStatus'
+  { fromSimulationAppStatus ::
+      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 SimulationAppStatus_ERROR :: SimulationAppStatus
+pattern SimulationAppStatus_ERROR = SimulationAppStatus' "ERROR"
+
+pattern SimulationAppStatus_STARTED :: SimulationAppStatus
+pattern SimulationAppStatus_STARTED = SimulationAppStatus' "STARTED"
+
+pattern SimulationAppStatus_STARTING :: SimulationAppStatus
+pattern SimulationAppStatus_STARTING = SimulationAppStatus' "STARTING"
+
+pattern SimulationAppStatus_STOPPED :: SimulationAppStatus
+pattern SimulationAppStatus_STOPPED = SimulationAppStatus' "STOPPED"
+
+pattern SimulationAppStatus_STOPPING :: SimulationAppStatus
+pattern SimulationAppStatus_STOPPING = SimulationAppStatus' "STOPPING"
+
+pattern SimulationAppStatus_UNKNOWN :: SimulationAppStatus
+pattern SimulationAppStatus_UNKNOWN = SimulationAppStatus' "UNKNOWN"
+
+{-# COMPLETE
+  SimulationAppStatus_ERROR,
+  SimulationAppStatus_STARTED,
+  SimulationAppStatus_STARTING,
+  SimulationAppStatus_STOPPED,
+  SimulationAppStatus_STOPPING,
+  SimulationAppStatus_UNKNOWN,
+  SimulationAppStatus'
+  #-}
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppTargetStatus.hs b/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppTargetStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/SimulationAppTargetStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.Types.SimulationAppTargetStatus
+-- 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.SimSpaceWeaver.Types.SimulationAppTargetStatus
+  ( SimulationAppTargetStatus
+      ( ..,
+        SimulationAppTargetStatus_STARTED,
+        SimulationAppTargetStatus_STOPPED,
+        SimulationAppTargetStatus_UNKNOWN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SimulationAppTargetStatus = SimulationAppTargetStatus'
+  { fromSimulationAppTargetStatus ::
+      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 SimulationAppTargetStatus_STARTED :: SimulationAppTargetStatus
+pattern SimulationAppTargetStatus_STARTED = SimulationAppTargetStatus' "STARTED"
+
+pattern SimulationAppTargetStatus_STOPPED :: SimulationAppTargetStatus
+pattern SimulationAppTargetStatus_STOPPED = SimulationAppTargetStatus' "STOPPED"
+
+pattern SimulationAppTargetStatus_UNKNOWN :: SimulationAppTargetStatus
+pattern SimulationAppTargetStatus_UNKNOWN = SimulationAppTargetStatus' "UNKNOWN"
+
+{-# COMPLETE
+  SimulationAppTargetStatus_STARTED,
+  SimulationAppTargetStatus_STOPPED,
+  SimulationAppTargetStatus_UNKNOWN,
+  SimulationAppTargetStatus'
+  #-}
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/SimulationClock.hs b/gen/Amazonka/SimSpaceWeaver/Types/SimulationClock.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/SimulationClock.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.Types.SimulationClock
+-- 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.SimSpaceWeaver.Types.SimulationClock where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SimSpaceWeaver.Types.ClockStatus
+import Amazonka.SimSpaceWeaver.Types.ClockTargetStatus
+
+-- | Status information about the simulation clock.
+--
+-- /See:/ 'newSimulationClock' smart constructor.
+data SimulationClock = SimulationClock'
+  { -- | The current status of the simulation clock.
+    status :: Prelude.Maybe ClockStatus,
+    -- | The desired status of the simulation clock.
+    targetStatus :: Prelude.Maybe ClockTargetStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SimulationClock' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'status', 'simulationClock_status' - The current status of the simulation clock.
+--
+-- 'targetStatus', 'simulationClock_targetStatus' - The desired status of the simulation clock.
+newSimulationClock ::
+  SimulationClock
+newSimulationClock =
+  SimulationClock'
+    { status = Prelude.Nothing,
+      targetStatus = Prelude.Nothing
+    }
+
+-- | The current status of the simulation clock.
+simulationClock_status :: Lens.Lens' SimulationClock (Prelude.Maybe ClockStatus)
+simulationClock_status = Lens.lens (\SimulationClock' {status} -> status) (\s@SimulationClock' {} a -> s {status = a} :: SimulationClock)
+
+-- | The desired status of the simulation clock.
+simulationClock_targetStatus :: Lens.Lens' SimulationClock (Prelude.Maybe ClockTargetStatus)
+simulationClock_targetStatus = Lens.lens (\SimulationClock' {targetStatus} -> targetStatus) (\s@SimulationClock' {} a -> s {targetStatus = a} :: SimulationClock)
+
+instance Data.FromJSON SimulationClock where
+  parseJSON =
+    Data.withObject
+      "SimulationClock"
+      ( \x ->
+          SimulationClock'
+            Prelude.<$> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "TargetStatus")
+      )
+
+instance Prelude.Hashable SimulationClock where
+  hashWithSalt _salt SimulationClock' {..} =
+    _salt
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` targetStatus
+
+instance Prelude.NFData SimulationClock where
+  rnf SimulationClock' {..} =
+    Prelude.rnf status
+      `Prelude.seq` Prelude.rnf targetStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/SimulationMetadata.hs b/gen/Amazonka/SimSpaceWeaver/Types/SimulationMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/SimulationMetadata.hs
@@ -0,0 +1,137 @@
+{-# 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.SimSpaceWeaver.Types.SimulationMetadata
+-- 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.SimSpaceWeaver.Types.SimulationMetadata where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SimSpaceWeaver.Types.SimulationStatus
+import Amazonka.SimSpaceWeaver.Types.SimulationTargetStatus
+
+-- | A collection of data about the simulation.
+--
+-- /See:/ 'newSimulationMetadata' smart constructor.
+data SimulationMetadata = SimulationMetadata'
+  { -- | The Amazon Resource Name (ARN) of the simulation. 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 time when the simulation was created, expressed as the number of
+    -- seconds and milliseconds in UTC since the Unix epoch (0:0:0.000, January
+    -- 1, 1970).
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the simulation.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the simulation.
+    status :: Prelude.Maybe SimulationStatus,
+    -- | The desired status of the simulation.
+    targetStatus :: Prelude.Maybe SimulationTargetStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SimulationMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'simulationMetadata_arn' - The Amazon Resource Name (ARN) of the simulation. 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/.
+--
+-- 'creationTime', 'simulationMetadata_creationTime' - The time when the simulation was created, expressed as the number of
+-- seconds and milliseconds in UTC since the Unix epoch (0:0:0.000, January
+-- 1, 1970).
+--
+-- 'name', 'simulationMetadata_name' - The name of the simulation.
+--
+-- 'status', 'simulationMetadata_status' - The current status of the simulation.
+--
+-- 'targetStatus', 'simulationMetadata_targetStatus' - The desired status of the simulation.
+newSimulationMetadata ::
+  SimulationMetadata
+newSimulationMetadata =
+  SimulationMetadata'
+    { arn = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      status = Prelude.Nothing,
+      targetStatus = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the simulation. 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/.
+simulationMetadata_arn :: Lens.Lens' SimulationMetadata (Prelude.Maybe Prelude.Text)
+simulationMetadata_arn = Lens.lens (\SimulationMetadata' {arn} -> arn) (\s@SimulationMetadata' {} a -> s {arn = a} :: SimulationMetadata)
+
+-- | The time when the simulation was created, expressed as the number of
+-- seconds and milliseconds in UTC since the Unix epoch (0:0:0.000, January
+-- 1, 1970).
+simulationMetadata_creationTime :: Lens.Lens' SimulationMetadata (Prelude.Maybe Prelude.UTCTime)
+simulationMetadata_creationTime = Lens.lens (\SimulationMetadata' {creationTime} -> creationTime) (\s@SimulationMetadata' {} a -> s {creationTime = a} :: SimulationMetadata) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the simulation.
+simulationMetadata_name :: Lens.Lens' SimulationMetadata (Prelude.Maybe Prelude.Text)
+simulationMetadata_name = Lens.lens (\SimulationMetadata' {name} -> name) (\s@SimulationMetadata' {} a -> s {name = a} :: SimulationMetadata)
+
+-- | The current status of the simulation.
+simulationMetadata_status :: Lens.Lens' SimulationMetadata (Prelude.Maybe SimulationStatus)
+simulationMetadata_status = Lens.lens (\SimulationMetadata' {status} -> status) (\s@SimulationMetadata' {} a -> s {status = a} :: SimulationMetadata)
+
+-- | The desired status of the simulation.
+simulationMetadata_targetStatus :: Lens.Lens' SimulationMetadata (Prelude.Maybe SimulationTargetStatus)
+simulationMetadata_targetStatus = Lens.lens (\SimulationMetadata' {targetStatus} -> targetStatus) (\s@SimulationMetadata' {} a -> s {targetStatus = a} :: SimulationMetadata)
+
+instance Data.FromJSON SimulationMetadata where
+  parseJSON =
+    Data.withObject
+      "SimulationMetadata"
+      ( \x ->
+          SimulationMetadata'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "TargetStatus")
+      )
+
+instance Prelude.Hashable SimulationMetadata where
+  hashWithSalt _salt SimulationMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` targetStatus
+
+instance Prelude.NFData SimulationMetadata where
+  rnf SimulationMetadata' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf targetStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/SimulationStatus.hs b/gen/Amazonka/SimSpaceWeaver/Types/SimulationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/SimulationStatus.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.Types.SimulationStatus
+-- 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.SimSpaceWeaver.Types.SimulationStatus
+  ( SimulationStatus
+      ( ..,
+        SimulationStatus_DELETED,
+        SimulationStatus_DELETING,
+        SimulationStatus_FAILED,
+        SimulationStatus_STARTED,
+        SimulationStatus_STARTING,
+        SimulationStatus_STOPPED,
+        SimulationStatus_STOPPING,
+        SimulationStatus_UNKNOWN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SimulationStatus = SimulationStatus'
+  { fromSimulationStatus ::
+      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 SimulationStatus_DELETED :: SimulationStatus
+pattern SimulationStatus_DELETED = SimulationStatus' "DELETED"
+
+pattern SimulationStatus_DELETING :: SimulationStatus
+pattern SimulationStatus_DELETING = SimulationStatus' "DELETING"
+
+pattern SimulationStatus_FAILED :: SimulationStatus
+pattern SimulationStatus_FAILED = SimulationStatus' "FAILED"
+
+pattern SimulationStatus_STARTED :: SimulationStatus
+pattern SimulationStatus_STARTED = SimulationStatus' "STARTED"
+
+pattern SimulationStatus_STARTING :: SimulationStatus
+pattern SimulationStatus_STARTING = SimulationStatus' "STARTING"
+
+pattern SimulationStatus_STOPPED :: SimulationStatus
+pattern SimulationStatus_STOPPED = SimulationStatus' "STOPPED"
+
+pattern SimulationStatus_STOPPING :: SimulationStatus
+pattern SimulationStatus_STOPPING = SimulationStatus' "STOPPING"
+
+pattern SimulationStatus_UNKNOWN :: SimulationStatus
+pattern SimulationStatus_UNKNOWN = SimulationStatus' "UNKNOWN"
+
+{-# COMPLETE
+  SimulationStatus_DELETED,
+  SimulationStatus_DELETING,
+  SimulationStatus_FAILED,
+  SimulationStatus_STARTED,
+  SimulationStatus_STARTING,
+  SimulationStatus_STOPPED,
+  SimulationStatus_STOPPING,
+  SimulationStatus_UNKNOWN,
+  SimulationStatus'
+  #-}
diff --git a/gen/Amazonka/SimSpaceWeaver/Types/SimulationTargetStatus.hs b/gen/Amazonka/SimSpaceWeaver/Types/SimulationTargetStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/Types/SimulationTargetStatus.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.SimSpaceWeaver.Types.SimulationTargetStatus
+-- 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.SimSpaceWeaver.Types.SimulationTargetStatus
+  ( SimulationTargetStatus
+      ( ..,
+        SimulationTargetStatus_DELETED,
+        SimulationTargetStatus_STARTED,
+        SimulationTargetStatus_STOPPED,
+        SimulationTargetStatus_UNKNOWN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SimulationTargetStatus = SimulationTargetStatus'
+  { fromSimulationTargetStatus ::
+      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 SimulationTargetStatus_DELETED :: SimulationTargetStatus
+pattern SimulationTargetStatus_DELETED = SimulationTargetStatus' "DELETED"
+
+pattern SimulationTargetStatus_STARTED :: SimulationTargetStatus
+pattern SimulationTargetStatus_STARTED = SimulationTargetStatus' "STARTED"
+
+pattern SimulationTargetStatus_STOPPED :: SimulationTargetStatus
+pattern SimulationTargetStatus_STOPPED = SimulationTargetStatus' "STOPPED"
+
+pattern SimulationTargetStatus_UNKNOWN :: SimulationTargetStatus
+pattern SimulationTargetStatus_UNKNOWN = SimulationTargetStatus' "UNKNOWN"
+
+{-# COMPLETE
+  SimulationTargetStatus_DELETED,
+  SimulationTargetStatus_STARTED,
+  SimulationTargetStatus_STOPPED,
+  SimulationTargetStatus_UNKNOWN,
+  SimulationTargetStatus'
+  #-}
diff --git a/gen/Amazonka/SimSpaceWeaver/UntagResource.hs b/gen/Amazonka/SimSpaceWeaver/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/UntagResource.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SimSpaceWeaver.UntagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes tags from a SimSpace Weaver resource. For more information about
+-- tags, see
+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services resources>
+-- in the /Amazon Web Services General Reference/.
+module Amazonka.SimSpaceWeaver.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SimSpaceWeaver.Types
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource that you want to remove
+    -- tags from. 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/.
+    resourceArn :: Prelude.Text,
+    -- | A list of tag keys to remove from the resource.
+    tagKeys :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that you want to remove
+-- tags from. 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/.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - A list of tag keys to remove from the resource.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ pTagKeys_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource that you want to remove
+-- tags from. 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/.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+-- | A list of tag keys to remove from the resource.
+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.NonEmpty Prelude.Text)
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery UntagResource where
+  toQuery UntagResource' {..} =
+    Prelude.mconcat
+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SimSpaceWeaver/Waiters.hs b/gen/Amazonka/SimSpaceWeaver/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SimSpaceWeaver/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.SimSpaceWeaver.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.SimSpaceWeaver.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SimSpaceWeaver.Lens
+import Amazonka.SimSpaceWeaver.Types
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Main (main) where
+
+import Test.Amazonka.SimSpaceWeaver
+import Test.Amazonka.SimSpaceWeaver.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "SimSpaceWeaver"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/SimSpaceWeaver.hs b/test/Test/Amazonka/Gen/SimSpaceWeaver.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/SimSpaceWeaver.hs
@@ -0,0 +1,338 @@
+{-# 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.SimSpaceWeaver
+-- 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.SimSpaceWeaver where
+
+import Amazonka.SimSpaceWeaver
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Amazonka.SimSpaceWeaver.Internal
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestDeleteApp $
+--             newDeleteApp
+--
+--         , requestDeleteSimulation $
+--             newDeleteSimulation
+--
+--         , requestDescribeApp $
+--             newDescribeApp
+--
+--         , requestDescribeSimulation $
+--             newDescribeSimulation
+--
+--         , requestListApps $
+--             newListApps
+--
+--         , requestListSimulations $
+--             newListSimulations
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestStartApp $
+--             newStartApp
+--
+--         , requestStartClock $
+--             newStartClock
+--
+--         , requestStartSimulation $
+--             newStartSimulation
+--
+--         , requestStopApp $
+--             newStopApp
+--
+--         , requestStopClock $
+--             newStopClock
+--
+--         , requestStopSimulation $
+--             newStopSimulation
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseDeleteApp $
+--             newDeleteAppResponse
+--
+--         , responseDeleteSimulation $
+--             newDeleteSimulationResponse
+--
+--         , responseDescribeApp $
+--             newDescribeAppResponse
+--
+--         , responseDescribeSimulation $
+--             newDescribeSimulationResponse
+--
+--         , responseListApps $
+--             newListAppsResponse
+--
+--         , responseListSimulations $
+--             newListSimulationsResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseStartApp $
+--             newStartAppResponse
+--
+--         , responseStartClock $
+--             newStartClockResponse
+--
+--         , responseStartSimulation $
+--             newStartSimulationResponse
+--
+--         , responseStopApp $
+--             newStopAppResponse
+--
+--         , responseStopClock $
+--             newStopClockResponse
+--
+--         , responseStopSimulation $
+--             newStopSimulationResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestDeleteApp :: DeleteApp -> TestTree
+requestDeleteApp =
+  req
+    "DeleteApp"
+    "fixture/DeleteApp.yaml"
+
+requestDeleteSimulation :: DeleteSimulation -> TestTree
+requestDeleteSimulation =
+  req
+    "DeleteSimulation"
+    "fixture/DeleteSimulation.yaml"
+
+requestDescribeApp :: DescribeApp -> TestTree
+requestDescribeApp =
+  req
+    "DescribeApp"
+    "fixture/DescribeApp.yaml"
+
+requestDescribeSimulation :: DescribeSimulation -> TestTree
+requestDescribeSimulation =
+  req
+    "DescribeSimulation"
+    "fixture/DescribeSimulation.yaml"
+
+requestListApps :: ListApps -> TestTree
+requestListApps =
+  req
+    "ListApps"
+    "fixture/ListApps.yaml"
+
+requestListSimulations :: ListSimulations -> TestTree
+requestListSimulations =
+  req
+    "ListSimulations"
+    "fixture/ListSimulations.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestStartApp :: StartApp -> TestTree
+requestStartApp =
+  req
+    "StartApp"
+    "fixture/StartApp.yaml"
+
+requestStartClock :: StartClock -> TestTree
+requestStartClock =
+  req
+    "StartClock"
+    "fixture/StartClock.yaml"
+
+requestStartSimulation :: StartSimulation -> TestTree
+requestStartSimulation =
+  req
+    "StartSimulation"
+    "fixture/StartSimulation.yaml"
+
+requestStopApp :: StopApp -> TestTree
+requestStopApp =
+  req
+    "StopApp"
+    "fixture/StopApp.yaml"
+
+requestStopClock :: StopClock -> TestTree
+requestStopClock =
+  req
+    "StopClock"
+    "fixture/StopClock.yaml"
+
+requestStopSimulation :: StopSimulation -> TestTree
+requestStopSimulation =
+  req
+    "StopSimulation"
+    "fixture/StopSimulation.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+-- Responses
+
+responseDeleteApp :: DeleteAppResponse -> TestTree
+responseDeleteApp =
+  res
+    "DeleteAppResponse"
+    "fixture/DeleteAppResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteApp)
+
+responseDeleteSimulation :: DeleteSimulationResponse -> TestTree
+responseDeleteSimulation =
+  res
+    "DeleteSimulationResponse"
+    "fixture/DeleteSimulationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteSimulation)
+
+responseDescribeApp :: DescribeAppResponse -> TestTree
+responseDescribeApp =
+  res
+    "DescribeAppResponse"
+    "fixture/DescribeAppResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeApp)
+
+responseDescribeSimulation :: DescribeSimulationResponse -> TestTree
+responseDescribeSimulation =
+  res
+    "DescribeSimulationResponse"
+    "fixture/DescribeSimulationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeSimulation)
+
+responseListApps :: ListAppsResponse -> TestTree
+responseListApps =
+  res
+    "ListAppsResponse"
+    "fixture/ListAppsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListApps)
+
+responseListSimulations :: ListSimulationsResponse -> TestTree
+responseListSimulations =
+  res
+    "ListSimulationsResponse"
+    "fixture/ListSimulationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListSimulations)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseStartApp :: StartAppResponse -> TestTree
+responseStartApp =
+  res
+    "StartAppResponse"
+    "fixture/StartAppResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartApp)
+
+responseStartClock :: StartClockResponse -> TestTree
+responseStartClock =
+  res
+    "StartClockResponse"
+    "fixture/StartClockResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartClock)
+
+responseStartSimulation :: StartSimulationResponse -> TestTree
+responseStartSimulation =
+  res
+    "StartSimulationResponse"
+    "fixture/StartSimulationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartSimulation)
+
+responseStopApp :: StopAppResponse -> TestTree
+responseStopApp =
+  res
+    "StopAppResponse"
+    "fixture/StopAppResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopApp)
+
+responseStopClock :: StopClockResponse -> TestTree
+responseStopClock =
+  res
+    "StopClockResponse"
+    "fixture/StopClockResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopClock)
+
+responseStopSimulation :: StopSimulationResponse -> TestTree
+responseStopSimulation =
+  res
+    "StopSimulationResponse"
+    "fixture/StopSimulationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopSimulation)
+
+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)
diff --git a/test/Test/Amazonka/SimSpaceWeaver.hs b/test/Test/Amazonka/SimSpaceWeaver.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/SimSpaceWeaver.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.SimSpaceWeaver
+-- 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.SimSpaceWeaver
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/SimSpaceWeaver/Internal.hs b/test/Test/Amazonka/SimSpaceWeaver/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/SimSpaceWeaver/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.SimSpaceWeaver.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.SimSpaceWeaver.Internal where
