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 Network Manager SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2019-07-05@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-networkmanager)
+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.NetworkManager](http://hackage.haskell.org/package/amazonka-networkmanager/docs/Amazonka-NetworkManager.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-networkmanager` 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-networkmanager.cabal b/amazonka-networkmanager.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-networkmanager.cabal
@@ -0,0 +1,257 @@
+cabal-version:      2.2
+name:               amazonka-networkmanager
+version:            2.0
+synopsis:           Amazon Network Manager SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
+description:
+  Derived from API version @2019-07-05@ 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.NetworkManager.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.NetworkManager" 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-networkmanager
+
+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.NetworkManager
+    Amazonka.NetworkManager.AcceptAttachment
+    Amazonka.NetworkManager.AssociateConnectPeer
+    Amazonka.NetworkManager.AssociateCustomerGateway
+    Amazonka.NetworkManager.AssociateLink
+    Amazonka.NetworkManager.AssociateTransitGatewayConnectPeer
+    Amazonka.NetworkManager.CreateConnectAttachment
+    Amazonka.NetworkManager.CreateConnection
+    Amazonka.NetworkManager.CreateConnectPeer
+    Amazonka.NetworkManager.CreateCoreNetwork
+    Amazonka.NetworkManager.CreateDevice
+    Amazonka.NetworkManager.CreateGlobalNetwork
+    Amazonka.NetworkManager.CreateLink
+    Amazonka.NetworkManager.CreateSite
+    Amazonka.NetworkManager.CreateSiteToSiteVpnAttachment
+    Amazonka.NetworkManager.CreateTransitGatewayPeering
+    Amazonka.NetworkManager.CreateTransitGatewayRouteTableAttachment
+    Amazonka.NetworkManager.CreateVpcAttachment
+    Amazonka.NetworkManager.DeleteAttachment
+    Amazonka.NetworkManager.DeleteConnection
+    Amazonka.NetworkManager.DeleteConnectPeer
+    Amazonka.NetworkManager.DeleteCoreNetwork
+    Amazonka.NetworkManager.DeleteCoreNetworkPolicyVersion
+    Amazonka.NetworkManager.DeleteDevice
+    Amazonka.NetworkManager.DeleteGlobalNetwork
+    Amazonka.NetworkManager.DeleteLink
+    Amazonka.NetworkManager.DeletePeering
+    Amazonka.NetworkManager.DeleteResourcePolicy
+    Amazonka.NetworkManager.DeleteSite
+    Amazonka.NetworkManager.DeregisterTransitGateway
+    Amazonka.NetworkManager.DescribeGlobalNetworks
+    Amazonka.NetworkManager.DisassociateConnectPeer
+    Amazonka.NetworkManager.DisassociateCustomerGateway
+    Amazonka.NetworkManager.DisassociateLink
+    Amazonka.NetworkManager.DisassociateTransitGatewayConnectPeer
+    Amazonka.NetworkManager.ExecuteCoreNetworkChangeSet
+    Amazonka.NetworkManager.GetConnectAttachment
+    Amazonka.NetworkManager.GetConnections
+    Amazonka.NetworkManager.GetConnectPeer
+    Amazonka.NetworkManager.GetConnectPeerAssociations
+    Amazonka.NetworkManager.GetCoreNetwork
+    Amazonka.NetworkManager.GetCoreNetworkChangeEvents
+    Amazonka.NetworkManager.GetCoreNetworkChangeSet
+    Amazonka.NetworkManager.GetCoreNetworkPolicy
+    Amazonka.NetworkManager.GetCustomerGatewayAssociations
+    Amazonka.NetworkManager.GetDevices
+    Amazonka.NetworkManager.GetLinkAssociations
+    Amazonka.NetworkManager.GetLinks
+    Amazonka.NetworkManager.GetNetworkResourceCounts
+    Amazonka.NetworkManager.GetNetworkResourceRelationships
+    Amazonka.NetworkManager.GetNetworkResources
+    Amazonka.NetworkManager.GetNetworkRoutes
+    Amazonka.NetworkManager.GetNetworkTelemetry
+    Amazonka.NetworkManager.GetResourcePolicy
+    Amazonka.NetworkManager.GetRouteAnalysis
+    Amazonka.NetworkManager.GetSites
+    Amazonka.NetworkManager.GetSiteToSiteVpnAttachment
+    Amazonka.NetworkManager.GetTransitGatewayConnectPeerAssociations
+    Amazonka.NetworkManager.GetTransitGatewayPeering
+    Amazonka.NetworkManager.GetTransitGatewayRegistrations
+    Amazonka.NetworkManager.GetTransitGatewayRouteTableAttachment
+    Amazonka.NetworkManager.GetVpcAttachment
+    Amazonka.NetworkManager.Lens
+    Amazonka.NetworkManager.ListAttachments
+    Amazonka.NetworkManager.ListConnectPeers
+    Amazonka.NetworkManager.ListCoreNetworkPolicyVersions
+    Amazonka.NetworkManager.ListCoreNetworks
+    Amazonka.NetworkManager.ListOrganizationServiceAccessStatus
+    Amazonka.NetworkManager.ListPeerings
+    Amazonka.NetworkManager.ListTagsForResource
+    Amazonka.NetworkManager.PutCoreNetworkPolicy
+    Amazonka.NetworkManager.PutResourcePolicy
+    Amazonka.NetworkManager.RegisterTransitGateway
+    Amazonka.NetworkManager.RejectAttachment
+    Amazonka.NetworkManager.RestoreCoreNetworkPolicyVersion
+    Amazonka.NetworkManager.StartOrganizationServiceAccessUpdate
+    Amazonka.NetworkManager.StartRouteAnalysis
+    Amazonka.NetworkManager.TagResource
+    Amazonka.NetworkManager.Types
+    Amazonka.NetworkManager.Types.AccountStatus
+    Amazonka.NetworkManager.Types.Attachment
+    Amazonka.NetworkManager.Types.AttachmentState
+    Amazonka.NetworkManager.Types.AttachmentType
+    Amazonka.NetworkManager.Types.AWSLocation
+    Amazonka.NetworkManager.Types.Bandwidth
+    Amazonka.NetworkManager.Types.BgpOptions
+    Amazonka.NetworkManager.Types.ChangeAction
+    Amazonka.NetworkManager.Types.ChangeSetState
+    Amazonka.NetworkManager.Types.ChangeStatus
+    Amazonka.NetworkManager.Types.ChangeType
+    Amazonka.NetworkManager.Types.ConnectAttachment
+    Amazonka.NetworkManager.Types.ConnectAttachmentOptions
+    Amazonka.NetworkManager.Types.Connection
+    Amazonka.NetworkManager.Types.ConnectionHealth
+    Amazonka.NetworkManager.Types.ConnectionState
+    Amazonka.NetworkManager.Types.ConnectionStatus
+    Amazonka.NetworkManager.Types.ConnectionType
+    Amazonka.NetworkManager.Types.ConnectPeer
+    Amazonka.NetworkManager.Types.ConnectPeerAssociation
+    Amazonka.NetworkManager.Types.ConnectPeerAssociationState
+    Amazonka.NetworkManager.Types.ConnectPeerBgpConfiguration
+    Amazonka.NetworkManager.Types.ConnectPeerConfiguration
+    Amazonka.NetworkManager.Types.ConnectPeerState
+    Amazonka.NetworkManager.Types.ConnectPeerSummary
+    Amazonka.NetworkManager.Types.CoreNetwork
+    Amazonka.NetworkManager.Types.CoreNetworkChange
+    Amazonka.NetworkManager.Types.CoreNetworkChangeEvent
+    Amazonka.NetworkManager.Types.CoreNetworkChangeEventValues
+    Amazonka.NetworkManager.Types.CoreNetworkChangeValues
+    Amazonka.NetworkManager.Types.CoreNetworkEdge
+    Amazonka.NetworkManager.Types.CoreNetworkPolicy
+    Amazonka.NetworkManager.Types.CoreNetworkPolicyAlias
+    Amazonka.NetworkManager.Types.CoreNetworkPolicyError
+    Amazonka.NetworkManager.Types.CoreNetworkPolicyVersion
+    Amazonka.NetworkManager.Types.CoreNetworkSegment
+    Amazonka.NetworkManager.Types.CoreNetworkSegmentEdgeIdentifier
+    Amazonka.NetworkManager.Types.CoreNetworkState
+    Amazonka.NetworkManager.Types.CoreNetworkSummary
+    Amazonka.NetworkManager.Types.CustomerGatewayAssociation
+    Amazonka.NetworkManager.Types.CustomerGatewayAssociationState
+    Amazonka.NetworkManager.Types.Device
+    Amazonka.NetworkManager.Types.DeviceState
+    Amazonka.NetworkManager.Types.GlobalNetwork
+    Amazonka.NetworkManager.Types.GlobalNetworkState
+    Amazonka.NetworkManager.Types.Link
+    Amazonka.NetworkManager.Types.LinkAssociation
+    Amazonka.NetworkManager.Types.LinkAssociationState
+    Amazonka.NetworkManager.Types.LinkState
+    Amazonka.NetworkManager.Types.Location
+    Amazonka.NetworkManager.Types.NetworkResource
+    Amazonka.NetworkManager.Types.NetworkResourceCount
+    Amazonka.NetworkManager.Types.NetworkResourceSummary
+    Amazonka.NetworkManager.Types.NetworkRoute
+    Amazonka.NetworkManager.Types.NetworkRouteDestination
+    Amazonka.NetworkManager.Types.NetworkTelemetry
+    Amazonka.NetworkManager.Types.OrganizationStatus
+    Amazonka.NetworkManager.Types.PathComponent
+    Amazonka.NetworkManager.Types.Peering
+    Amazonka.NetworkManager.Types.PeeringState
+    Amazonka.NetworkManager.Types.PeeringType
+    Amazonka.NetworkManager.Types.ProposedSegmentChange
+    Amazonka.NetworkManager.Types.Relationship
+    Amazonka.NetworkManager.Types.RouteAnalysis
+    Amazonka.NetworkManager.Types.RouteAnalysisCompletion
+    Amazonka.NetworkManager.Types.RouteAnalysisCompletionReasonCode
+    Amazonka.NetworkManager.Types.RouteAnalysisCompletionResultCode
+    Amazonka.NetworkManager.Types.RouteAnalysisEndpointOptions
+    Amazonka.NetworkManager.Types.RouteAnalysisEndpointOptionsSpecification
+    Amazonka.NetworkManager.Types.RouteAnalysisPath
+    Amazonka.NetworkManager.Types.RouteAnalysisStatus
+    Amazonka.NetworkManager.Types.RouteState
+    Amazonka.NetworkManager.Types.RouteTableIdentifier
+    Amazonka.NetworkManager.Types.RouteTableType
+    Amazonka.NetworkManager.Types.RouteType
+    Amazonka.NetworkManager.Types.Site
+    Amazonka.NetworkManager.Types.SiteState
+    Amazonka.NetworkManager.Types.SiteToSiteVpnAttachment
+    Amazonka.NetworkManager.Types.Tag
+    Amazonka.NetworkManager.Types.TransitGatewayConnectPeerAssociation
+    Amazonka.NetworkManager.Types.TransitGatewayConnectPeerAssociationState
+    Amazonka.NetworkManager.Types.TransitGatewayPeering
+    Amazonka.NetworkManager.Types.TransitGatewayRegistration
+    Amazonka.NetworkManager.Types.TransitGatewayRegistrationState
+    Amazonka.NetworkManager.Types.TransitGatewayRegistrationStateReason
+    Amazonka.NetworkManager.Types.TransitGatewayRouteTableAttachment
+    Amazonka.NetworkManager.Types.TunnelProtocol
+    Amazonka.NetworkManager.Types.VpcAttachment
+    Amazonka.NetworkManager.Types.VpcOptions
+    Amazonka.NetworkManager.UntagResource
+    Amazonka.NetworkManager.UpdateConnection
+    Amazonka.NetworkManager.UpdateCoreNetwork
+    Amazonka.NetworkManager.UpdateDevice
+    Amazonka.NetworkManager.UpdateGlobalNetwork
+    Amazonka.NetworkManager.UpdateLink
+    Amazonka.NetworkManager.UpdateNetworkResourceMetadata
+    Amazonka.NetworkManager.UpdateSite
+    Amazonka.NetworkManager.UpdateVpcAttachment
+    Amazonka.NetworkManager.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-networkmanager-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.NetworkManager
+    Test.Amazonka.NetworkManager
+    Test.Amazonka.NetworkManager.Internal
+
+  build-depends:
+    , amazonka-core            >=2.0 && <2.1
+    , amazonka-networkmanager
+    , amazonka-test            >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/AcceptAttachment.yaml b/fixture/AcceptAttachment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AcceptAttachment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/AcceptAttachmentResponse.proto b/fixture/AcceptAttachmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AcceptAttachmentResponse.proto
diff --git a/fixture/AssociateConnectPeer.yaml b/fixture/AssociateConnectPeer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateConnectPeer.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/AssociateConnectPeerResponse.proto b/fixture/AssociateConnectPeerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateConnectPeerResponse.proto
diff --git a/fixture/AssociateCustomerGateway.yaml b/fixture/AssociateCustomerGateway.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateCustomerGateway.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/AssociateCustomerGatewayResponse.proto b/fixture/AssociateCustomerGatewayResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateCustomerGatewayResponse.proto
diff --git a/fixture/AssociateLink.yaml b/fixture/AssociateLink.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateLink.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/AssociateLinkResponse.proto b/fixture/AssociateLinkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateLinkResponse.proto
diff --git a/fixture/AssociateTransitGatewayConnectPeer.yaml b/fixture/AssociateTransitGatewayConnectPeer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateTransitGatewayConnectPeer.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/AssociateTransitGatewayConnectPeerResponse.proto b/fixture/AssociateTransitGatewayConnectPeerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateTransitGatewayConnectPeerResponse.proto
diff --git a/fixture/CreateConnectAttachment.yaml b/fixture/CreateConnectAttachment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateConnectAttachment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/CreateConnectAttachmentResponse.proto b/fixture/CreateConnectAttachmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateConnectAttachmentResponse.proto
diff --git a/fixture/CreateConnectPeer.yaml b/fixture/CreateConnectPeer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateConnectPeer.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/CreateConnectPeerResponse.proto b/fixture/CreateConnectPeerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateConnectPeerResponse.proto
diff --git a/fixture/CreateConnection.yaml b/fixture/CreateConnection.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateConnection.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/CreateConnectionResponse.proto b/fixture/CreateConnectionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateConnectionResponse.proto
diff --git a/fixture/CreateCoreNetwork.yaml b/fixture/CreateCoreNetwork.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateCoreNetwork.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/CreateCoreNetworkResponse.proto b/fixture/CreateCoreNetworkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateCoreNetworkResponse.proto
diff --git a/fixture/CreateDevice.yaml b/fixture/CreateDevice.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDevice.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/CreateDeviceResponse.proto b/fixture/CreateDeviceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDeviceResponse.proto
diff --git a/fixture/CreateGlobalNetwork.yaml b/fixture/CreateGlobalNetwork.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateGlobalNetwork.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/CreateGlobalNetworkResponse.proto b/fixture/CreateGlobalNetworkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateGlobalNetworkResponse.proto
diff --git a/fixture/CreateLink.yaml b/fixture/CreateLink.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateLink.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/CreateLinkResponse.proto b/fixture/CreateLinkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateLinkResponse.proto
diff --git a/fixture/CreateSite.yaml b/fixture/CreateSite.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSite.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/CreateSiteResponse.proto b/fixture/CreateSiteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSiteResponse.proto
diff --git a/fixture/CreateSiteToSiteVpnAttachment.yaml b/fixture/CreateSiteToSiteVpnAttachment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSiteToSiteVpnAttachment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/CreateSiteToSiteVpnAttachmentResponse.proto b/fixture/CreateSiteToSiteVpnAttachmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSiteToSiteVpnAttachmentResponse.proto
diff --git a/fixture/CreateTransitGatewayPeering.yaml b/fixture/CreateTransitGatewayPeering.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTransitGatewayPeering.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/CreateTransitGatewayPeeringResponse.proto b/fixture/CreateTransitGatewayPeeringResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTransitGatewayPeeringResponse.proto
diff --git a/fixture/CreateTransitGatewayRouteTableAttachment.yaml b/fixture/CreateTransitGatewayRouteTableAttachment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTransitGatewayRouteTableAttachment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/CreateTransitGatewayRouteTableAttachmentResponse.proto b/fixture/CreateTransitGatewayRouteTableAttachmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTransitGatewayRouteTableAttachmentResponse.proto
diff --git a/fixture/CreateVpcAttachment.yaml b/fixture/CreateVpcAttachment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateVpcAttachment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/CreateVpcAttachmentResponse.proto b/fixture/CreateVpcAttachmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateVpcAttachmentResponse.proto
diff --git a/fixture/DeleteAttachment.yaml b/fixture/DeleteAttachment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAttachment.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DeleteAttachmentResponse.proto b/fixture/DeleteAttachmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAttachmentResponse.proto
diff --git a/fixture/DeleteConnectPeer.yaml b/fixture/DeleteConnectPeer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteConnectPeer.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DeleteConnectPeerResponse.proto b/fixture/DeleteConnectPeerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteConnectPeerResponse.proto
diff --git a/fixture/DeleteConnection.yaml b/fixture/DeleteConnection.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteConnection.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DeleteConnectionResponse.proto b/fixture/DeleteConnectionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteConnectionResponse.proto
diff --git a/fixture/DeleteCoreNetwork.yaml b/fixture/DeleteCoreNetwork.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteCoreNetwork.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DeleteCoreNetworkPolicyVersion.yaml b/fixture/DeleteCoreNetworkPolicyVersion.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteCoreNetworkPolicyVersion.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DeleteCoreNetworkPolicyVersionResponse.proto b/fixture/DeleteCoreNetworkPolicyVersionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteCoreNetworkPolicyVersionResponse.proto
diff --git a/fixture/DeleteCoreNetworkResponse.proto b/fixture/DeleteCoreNetworkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteCoreNetworkResponse.proto
diff --git a/fixture/DeleteDevice.yaml b/fixture/DeleteDevice.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDevice.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DeleteDeviceResponse.proto b/fixture/DeleteDeviceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDeviceResponse.proto
diff --git a/fixture/DeleteGlobalNetwork.yaml b/fixture/DeleteGlobalNetwork.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteGlobalNetwork.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DeleteGlobalNetworkResponse.proto b/fixture/DeleteGlobalNetworkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteGlobalNetworkResponse.proto
diff --git a/fixture/DeleteLink.yaml b/fixture/DeleteLink.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteLink.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DeleteLinkResponse.proto b/fixture/DeleteLinkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteLinkResponse.proto
diff --git a/fixture/DeletePeering.yaml b/fixture/DeletePeering.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePeering.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DeletePeeringResponse.proto b/fixture/DeletePeeringResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePeeringResponse.proto
diff --git a/fixture/DeleteResourcePolicy.yaml b/fixture/DeleteResourcePolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteResourcePolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteResourcePolicyResponse.proto b/fixture/DeleteResourcePolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteResourcePolicyResponse.proto
diff --git a/fixture/DeleteSite.yaml b/fixture/DeleteSite.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSite.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DeleteSiteResponse.proto b/fixture/DeleteSiteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSiteResponse.proto
diff --git a/fixture/DeregisterTransitGateway.yaml b/fixture/DeregisterTransitGateway.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeregisterTransitGateway.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DeregisterTransitGatewayResponse.proto b/fixture/DeregisterTransitGatewayResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeregisterTransitGatewayResponse.proto
diff --git a/fixture/DescribeGlobalNetworks.yaml b/fixture/DescribeGlobalNetworks.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeGlobalNetworks.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DescribeGlobalNetworksResponse.proto b/fixture/DescribeGlobalNetworksResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeGlobalNetworksResponse.proto
diff --git a/fixture/DisassociateConnectPeer.yaml b/fixture/DisassociateConnectPeer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateConnectPeer.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DisassociateConnectPeerResponse.proto b/fixture/DisassociateConnectPeerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateConnectPeerResponse.proto
diff --git a/fixture/DisassociateCustomerGateway.yaml b/fixture/DisassociateCustomerGateway.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateCustomerGateway.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DisassociateCustomerGatewayResponse.proto b/fixture/DisassociateCustomerGatewayResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateCustomerGatewayResponse.proto
diff --git a/fixture/DisassociateLink.yaml b/fixture/DisassociateLink.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateLink.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DisassociateLinkResponse.proto b/fixture/DisassociateLinkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateLinkResponse.proto
diff --git a/fixture/DisassociateTransitGatewayConnectPeer.yaml b/fixture/DisassociateTransitGatewayConnectPeer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateTransitGatewayConnectPeer.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/DisassociateTransitGatewayConnectPeerResponse.proto b/fixture/DisassociateTransitGatewayConnectPeerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateTransitGatewayConnectPeerResponse.proto
diff --git a/fixture/ExecuteCoreNetworkChangeSet.yaml b/fixture/ExecuteCoreNetworkChangeSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ExecuteCoreNetworkChangeSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/ExecuteCoreNetworkChangeSetResponse.proto b/fixture/ExecuteCoreNetworkChangeSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ExecuteCoreNetworkChangeSetResponse.proto
diff --git a/fixture/GetConnectAttachment.yaml b/fixture/GetConnectAttachment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetConnectAttachment.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetConnectAttachmentResponse.proto b/fixture/GetConnectAttachmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetConnectAttachmentResponse.proto
diff --git a/fixture/GetConnectPeer.yaml b/fixture/GetConnectPeer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetConnectPeer.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetConnectPeerAssociations.yaml b/fixture/GetConnectPeerAssociations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetConnectPeerAssociations.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetConnectPeerAssociationsResponse.proto b/fixture/GetConnectPeerAssociationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetConnectPeerAssociationsResponse.proto
diff --git a/fixture/GetConnectPeerResponse.proto b/fixture/GetConnectPeerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetConnectPeerResponse.proto
diff --git a/fixture/GetConnections.yaml b/fixture/GetConnections.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetConnections.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetConnectionsResponse.proto b/fixture/GetConnectionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetConnectionsResponse.proto
diff --git a/fixture/GetCoreNetwork.yaml b/fixture/GetCoreNetwork.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetCoreNetwork.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetCoreNetworkChangeEvents.yaml b/fixture/GetCoreNetworkChangeEvents.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetCoreNetworkChangeEvents.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetCoreNetworkChangeEventsResponse.proto b/fixture/GetCoreNetworkChangeEventsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetCoreNetworkChangeEventsResponse.proto
diff --git a/fixture/GetCoreNetworkChangeSet.yaml b/fixture/GetCoreNetworkChangeSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetCoreNetworkChangeSet.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetCoreNetworkChangeSetResponse.proto b/fixture/GetCoreNetworkChangeSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetCoreNetworkChangeSetResponse.proto
diff --git a/fixture/GetCoreNetworkPolicy.yaml b/fixture/GetCoreNetworkPolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetCoreNetworkPolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetCoreNetworkPolicyResponse.proto b/fixture/GetCoreNetworkPolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetCoreNetworkPolicyResponse.proto
diff --git a/fixture/GetCoreNetworkResponse.proto b/fixture/GetCoreNetworkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetCoreNetworkResponse.proto
diff --git a/fixture/GetCustomerGatewayAssociations.yaml b/fixture/GetCustomerGatewayAssociations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetCustomerGatewayAssociations.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetCustomerGatewayAssociationsResponse.proto b/fixture/GetCustomerGatewayAssociationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetCustomerGatewayAssociationsResponse.proto
diff --git a/fixture/GetDevices.yaml b/fixture/GetDevices.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetDevices.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetDevicesResponse.proto b/fixture/GetDevicesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetDevicesResponse.proto
diff --git a/fixture/GetLinkAssociations.yaml b/fixture/GetLinkAssociations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetLinkAssociations.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetLinkAssociationsResponse.proto b/fixture/GetLinkAssociationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetLinkAssociationsResponse.proto
diff --git a/fixture/GetLinks.yaml b/fixture/GetLinks.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetLinks.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetLinksResponse.proto b/fixture/GetLinksResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetLinksResponse.proto
diff --git a/fixture/GetNetworkResourceCounts.yaml b/fixture/GetNetworkResourceCounts.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkResourceCounts.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetNetworkResourceCountsResponse.proto b/fixture/GetNetworkResourceCountsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkResourceCountsResponse.proto
diff --git a/fixture/GetNetworkResourceRelationships.yaml b/fixture/GetNetworkResourceRelationships.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkResourceRelationships.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetNetworkResourceRelationshipsResponse.proto b/fixture/GetNetworkResourceRelationshipsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkResourceRelationshipsResponse.proto
diff --git a/fixture/GetNetworkResources.yaml b/fixture/GetNetworkResources.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkResources.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetNetworkResourcesResponse.proto b/fixture/GetNetworkResourcesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkResourcesResponse.proto
diff --git a/fixture/GetNetworkRoutes.yaml b/fixture/GetNetworkRoutes.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkRoutes.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetNetworkRoutesResponse.proto b/fixture/GetNetworkRoutesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkRoutesResponse.proto
diff --git a/fixture/GetNetworkTelemetry.yaml b/fixture/GetNetworkTelemetry.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkTelemetry.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetNetworkTelemetryResponse.proto b/fixture/GetNetworkTelemetryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkTelemetryResponse.proto
diff --git a/fixture/GetResourcePolicy.yaml b/fixture/GetResourcePolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetResourcePolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetResourcePolicyResponse.proto b/fixture/GetResourcePolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetResourcePolicyResponse.proto
diff --git a/fixture/GetRouteAnalysis.yaml b/fixture/GetRouteAnalysis.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetRouteAnalysis.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetRouteAnalysisResponse.proto b/fixture/GetRouteAnalysisResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetRouteAnalysisResponse.proto
diff --git a/fixture/GetSiteToSiteVpnAttachment.yaml b/fixture/GetSiteToSiteVpnAttachment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetSiteToSiteVpnAttachment.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetSiteToSiteVpnAttachmentResponse.proto b/fixture/GetSiteToSiteVpnAttachmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetSiteToSiteVpnAttachmentResponse.proto
diff --git a/fixture/GetSites.yaml b/fixture/GetSites.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetSites.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetSitesResponse.proto b/fixture/GetSitesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetSitesResponse.proto
diff --git a/fixture/GetTransitGatewayConnectPeerAssociations.yaml b/fixture/GetTransitGatewayConnectPeerAssociations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetTransitGatewayConnectPeerAssociations.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetTransitGatewayConnectPeerAssociationsResponse.proto b/fixture/GetTransitGatewayConnectPeerAssociationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetTransitGatewayConnectPeerAssociationsResponse.proto
diff --git a/fixture/GetTransitGatewayPeering.yaml b/fixture/GetTransitGatewayPeering.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetTransitGatewayPeering.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetTransitGatewayPeeringResponse.proto b/fixture/GetTransitGatewayPeeringResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetTransitGatewayPeeringResponse.proto
diff --git a/fixture/GetTransitGatewayRegistrations.yaml b/fixture/GetTransitGatewayRegistrations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetTransitGatewayRegistrations.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetTransitGatewayRegistrationsResponse.proto b/fixture/GetTransitGatewayRegistrationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetTransitGatewayRegistrationsResponse.proto
diff --git a/fixture/GetTransitGatewayRouteTableAttachment.yaml b/fixture/GetTransitGatewayRouteTableAttachment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetTransitGatewayRouteTableAttachment.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetTransitGatewayRouteTableAttachmentResponse.proto b/fixture/GetTransitGatewayRouteTableAttachmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetTransitGatewayRouteTableAttachmentResponse.proto
diff --git a/fixture/GetVpcAttachment.yaml b/fixture/GetVpcAttachment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetVpcAttachment.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/GetVpcAttachmentResponse.proto b/fixture/GetVpcAttachmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetVpcAttachmentResponse.proto
diff --git a/fixture/ListAttachments.yaml b/fixture/ListAttachments.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAttachments.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/ListAttachmentsResponse.proto b/fixture/ListAttachmentsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAttachmentsResponse.proto
diff --git a/fixture/ListConnectPeers.yaml b/fixture/ListConnectPeers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListConnectPeers.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/ListConnectPeersResponse.proto b/fixture/ListConnectPeersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListConnectPeersResponse.proto
diff --git a/fixture/ListCoreNetworkPolicyVersions.yaml b/fixture/ListCoreNetworkPolicyVersions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListCoreNetworkPolicyVersions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/ListCoreNetworkPolicyVersionsResponse.proto b/fixture/ListCoreNetworkPolicyVersionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListCoreNetworkPolicyVersionsResponse.proto
diff --git a/fixture/ListCoreNetworks.yaml b/fixture/ListCoreNetworks.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListCoreNetworks.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/ListCoreNetworksResponse.proto b/fixture/ListCoreNetworksResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListCoreNetworksResponse.proto
diff --git a/fixture/ListOrganizationServiceAccessStatus.yaml b/fixture/ListOrganizationServiceAccessStatus.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListOrganizationServiceAccessStatus.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/ListOrganizationServiceAccessStatusResponse.proto b/fixture/ListOrganizationServiceAccessStatusResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListOrganizationServiceAccessStatusResponse.proto
diff --git a/fixture/ListPeerings.yaml b/fixture/ListPeerings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListPeerings.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/ListPeeringsResponse.proto b/fixture/ListPeeringsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListPeeringsResponse.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/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/PutCoreNetworkPolicy.yaml b/fixture/PutCoreNetworkPolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutCoreNetworkPolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/PutCoreNetworkPolicyResponse.proto b/fixture/PutCoreNetworkPolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutCoreNetworkPolicyResponse.proto
diff --git a/fixture/PutResourcePolicy.yaml b/fixture/PutResourcePolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutResourcePolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutResourcePolicyResponse.proto b/fixture/PutResourcePolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutResourcePolicyResponse.proto
diff --git a/fixture/RegisterTransitGateway.yaml b/fixture/RegisterTransitGateway.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterTransitGateway.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/RegisterTransitGatewayResponse.proto b/fixture/RegisterTransitGatewayResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterTransitGatewayResponse.proto
diff --git a/fixture/RejectAttachment.yaml b/fixture/RejectAttachment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RejectAttachment.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/RejectAttachmentResponse.proto b/fixture/RejectAttachmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RejectAttachmentResponse.proto
diff --git a/fixture/RestoreCoreNetworkPolicyVersion.yaml b/fixture/RestoreCoreNetworkPolicyVersion.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RestoreCoreNetworkPolicyVersion.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/RestoreCoreNetworkPolicyVersionResponse.proto b/fixture/RestoreCoreNetworkPolicyVersionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RestoreCoreNetworkPolicyVersionResponse.proto
diff --git a/fixture/StartOrganizationServiceAccessUpdate.yaml b/fixture/StartOrganizationServiceAccessUpdate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartOrganizationServiceAccessUpdate.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/StartOrganizationServiceAccessUpdateResponse.proto b/fixture/StartOrganizationServiceAccessUpdateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartOrganizationServiceAccessUpdateResponse.proto
diff --git a/fixture/StartRouteAnalysis.yaml b/fixture/StartRouteAnalysis.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartRouteAnalysis.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/StartRouteAnalysisResponse.proto b/fixture/StartRouteAnalysisResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartRouteAnalysisResponse.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/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/fixture/UpdateConnection.yaml b/fixture/UpdateConnection.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateConnection.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/UpdateConnectionResponse.proto b/fixture/UpdateConnectionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateConnectionResponse.proto
diff --git a/fixture/UpdateCoreNetwork.yaml b/fixture/UpdateCoreNetwork.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateCoreNetwork.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/UpdateCoreNetworkResponse.proto b/fixture/UpdateCoreNetworkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateCoreNetworkResponse.proto
diff --git a/fixture/UpdateDevice.yaml b/fixture/UpdateDevice.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDevice.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/UpdateDeviceResponse.proto b/fixture/UpdateDeviceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDeviceResponse.proto
diff --git a/fixture/UpdateGlobalNetwork.yaml b/fixture/UpdateGlobalNetwork.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateGlobalNetwork.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/UpdateGlobalNetworkResponse.proto b/fixture/UpdateGlobalNetworkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateGlobalNetworkResponse.proto
diff --git a/fixture/UpdateLink.yaml b/fixture/UpdateLink.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateLink.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/UpdateLinkResponse.proto b/fixture/UpdateLinkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateLinkResponse.proto
diff --git a/fixture/UpdateNetworkResourceMetadata.yaml b/fixture/UpdateNetworkResourceMetadata.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateNetworkResourceMetadata.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/UpdateNetworkResourceMetadataResponse.proto b/fixture/UpdateNetworkResourceMetadataResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateNetworkResourceMetadataResponse.proto
diff --git a/fixture/UpdateSite.yaml b/fixture/UpdateSite.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSite.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/UpdateSiteResponse.proto b/fixture/UpdateSiteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSiteResponse.proto
diff --git a/fixture/UpdateVpcAttachment.yaml b/fixture/UpdateVpcAttachment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateVpcAttachment.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/networkmanager/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  networkmanager.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/UpdateVpcAttachmentResponse.proto b/fixture/UpdateVpcAttachmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateVpcAttachmentResponse.proto
diff --git a/gen/Amazonka/NetworkManager.hs b/gen/Amazonka/NetworkManager.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager.hs
@@ -0,0 +1,1008 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.NetworkManager
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2019-07-05@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon Web Services enables you to centrally manage your Amazon Web
+-- Services Cloud WAN core network and your Transit Gateway network across
+-- Amazon Web Services accounts, Regions, and on-premises locations.
+module Amazonka.NetworkManager
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** CoreNetworkPolicyException
+    _CoreNetworkPolicyException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ServiceQuotaExceededException
+    _ServiceQuotaExceededException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AcceptAttachment
+    AcceptAttachment (AcceptAttachment'),
+    newAcceptAttachment,
+    AcceptAttachmentResponse (AcceptAttachmentResponse'),
+    newAcceptAttachmentResponse,
+
+    -- ** AssociateConnectPeer
+    AssociateConnectPeer (AssociateConnectPeer'),
+    newAssociateConnectPeer,
+    AssociateConnectPeerResponse (AssociateConnectPeerResponse'),
+    newAssociateConnectPeerResponse,
+
+    -- ** AssociateCustomerGateway
+    AssociateCustomerGateway (AssociateCustomerGateway'),
+    newAssociateCustomerGateway,
+    AssociateCustomerGatewayResponse (AssociateCustomerGatewayResponse'),
+    newAssociateCustomerGatewayResponse,
+
+    -- ** AssociateLink
+    AssociateLink (AssociateLink'),
+    newAssociateLink,
+    AssociateLinkResponse (AssociateLinkResponse'),
+    newAssociateLinkResponse,
+
+    -- ** AssociateTransitGatewayConnectPeer
+    AssociateTransitGatewayConnectPeer (AssociateTransitGatewayConnectPeer'),
+    newAssociateTransitGatewayConnectPeer,
+    AssociateTransitGatewayConnectPeerResponse (AssociateTransitGatewayConnectPeerResponse'),
+    newAssociateTransitGatewayConnectPeerResponse,
+
+    -- ** CreateConnectAttachment
+    CreateConnectAttachment (CreateConnectAttachment'),
+    newCreateConnectAttachment,
+    CreateConnectAttachmentResponse (CreateConnectAttachmentResponse'),
+    newCreateConnectAttachmentResponse,
+
+    -- ** CreateConnectPeer
+    CreateConnectPeer (CreateConnectPeer'),
+    newCreateConnectPeer,
+    CreateConnectPeerResponse (CreateConnectPeerResponse'),
+    newCreateConnectPeerResponse,
+
+    -- ** CreateConnection
+    CreateConnection (CreateConnection'),
+    newCreateConnection,
+    CreateConnectionResponse (CreateConnectionResponse'),
+    newCreateConnectionResponse,
+
+    -- ** CreateCoreNetwork
+    CreateCoreNetwork (CreateCoreNetwork'),
+    newCreateCoreNetwork,
+    CreateCoreNetworkResponse (CreateCoreNetworkResponse'),
+    newCreateCoreNetworkResponse,
+
+    -- ** CreateDevice
+    CreateDevice (CreateDevice'),
+    newCreateDevice,
+    CreateDeviceResponse (CreateDeviceResponse'),
+    newCreateDeviceResponse,
+
+    -- ** CreateGlobalNetwork
+    CreateGlobalNetwork (CreateGlobalNetwork'),
+    newCreateGlobalNetwork,
+    CreateGlobalNetworkResponse (CreateGlobalNetworkResponse'),
+    newCreateGlobalNetworkResponse,
+
+    -- ** CreateLink
+    CreateLink (CreateLink'),
+    newCreateLink,
+    CreateLinkResponse (CreateLinkResponse'),
+    newCreateLinkResponse,
+
+    -- ** CreateSite
+    CreateSite (CreateSite'),
+    newCreateSite,
+    CreateSiteResponse (CreateSiteResponse'),
+    newCreateSiteResponse,
+
+    -- ** CreateSiteToSiteVpnAttachment
+    CreateSiteToSiteVpnAttachment (CreateSiteToSiteVpnAttachment'),
+    newCreateSiteToSiteVpnAttachment,
+    CreateSiteToSiteVpnAttachmentResponse (CreateSiteToSiteVpnAttachmentResponse'),
+    newCreateSiteToSiteVpnAttachmentResponse,
+
+    -- ** CreateTransitGatewayPeering
+    CreateTransitGatewayPeering (CreateTransitGatewayPeering'),
+    newCreateTransitGatewayPeering,
+    CreateTransitGatewayPeeringResponse (CreateTransitGatewayPeeringResponse'),
+    newCreateTransitGatewayPeeringResponse,
+
+    -- ** CreateTransitGatewayRouteTableAttachment
+    CreateTransitGatewayRouteTableAttachment (CreateTransitGatewayRouteTableAttachment'),
+    newCreateTransitGatewayRouteTableAttachment,
+    CreateTransitGatewayRouteTableAttachmentResponse (CreateTransitGatewayRouteTableAttachmentResponse'),
+    newCreateTransitGatewayRouteTableAttachmentResponse,
+
+    -- ** CreateVpcAttachment
+    CreateVpcAttachment (CreateVpcAttachment'),
+    newCreateVpcAttachment,
+    CreateVpcAttachmentResponse (CreateVpcAttachmentResponse'),
+    newCreateVpcAttachmentResponse,
+
+    -- ** DeleteAttachment
+    DeleteAttachment (DeleteAttachment'),
+    newDeleteAttachment,
+    DeleteAttachmentResponse (DeleteAttachmentResponse'),
+    newDeleteAttachmentResponse,
+
+    -- ** DeleteConnectPeer
+    DeleteConnectPeer (DeleteConnectPeer'),
+    newDeleteConnectPeer,
+    DeleteConnectPeerResponse (DeleteConnectPeerResponse'),
+    newDeleteConnectPeerResponse,
+
+    -- ** DeleteConnection
+    DeleteConnection (DeleteConnection'),
+    newDeleteConnection,
+    DeleteConnectionResponse (DeleteConnectionResponse'),
+    newDeleteConnectionResponse,
+
+    -- ** DeleteCoreNetwork
+    DeleteCoreNetwork (DeleteCoreNetwork'),
+    newDeleteCoreNetwork,
+    DeleteCoreNetworkResponse (DeleteCoreNetworkResponse'),
+    newDeleteCoreNetworkResponse,
+
+    -- ** DeleteCoreNetworkPolicyVersion
+    DeleteCoreNetworkPolicyVersion (DeleteCoreNetworkPolicyVersion'),
+    newDeleteCoreNetworkPolicyVersion,
+    DeleteCoreNetworkPolicyVersionResponse (DeleteCoreNetworkPolicyVersionResponse'),
+    newDeleteCoreNetworkPolicyVersionResponse,
+
+    -- ** DeleteDevice
+    DeleteDevice (DeleteDevice'),
+    newDeleteDevice,
+    DeleteDeviceResponse (DeleteDeviceResponse'),
+    newDeleteDeviceResponse,
+
+    -- ** DeleteGlobalNetwork
+    DeleteGlobalNetwork (DeleteGlobalNetwork'),
+    newDeleteGlobalNetwork,
+    DeleteGlobalNetworkResponse (DeleteGlobalNetworkResponse'),
+    newDeleteGlobalNetworkResponse,
+
+    -- ** DeleteLink
+    DeleteLink (DeleteLink'),
+    newDeleteLink,
+    DeleteLinkResponse (DeleteLinkResponse'),
+    newDeleteLinkResponse,
+
+    -- ** DeletePeering
+    DeletePeering (DeletePeering'),
+    newDeletePeering,
+    DeletePeeringResponse (DeletePeeringResponse'),
+    newDeletePeeringResponse,
+
+    -- ** DeleteResourcePolicy
+    DeleteResourcePolicy (DeleteResourcePolicy'),
+    newDeleteResourcePolicy,
+    DeleteResourcePolicyResponse (DeleteResourcePolicyResponse'),
+    newDeleteResourcePolicyResponse,
+
+    -- ** DeleteSite
+    DeleteSite (DeleteSite'),
+    newDeleteSite,
+    DeleteSiteResponse (DeleteSiteResponse'),
+    newDeleteSiteResponse,
+
+    -- ** DeregisterTransitGateway
+    DeregisterTransitGateway (DeregisterTransitGateway'),
+    newDeregisterTransitGateway,
+    DeregisterTransitGatewayResponse (DeregisterTransitGatewayResponse'),
+    newDeregisterTransitGatewayResponse,
+
+    -- ** DescribeGlobalNetworks (Paginated)
+    DescribeGlobalNetworks (DescribeGlobalNetworks'),
+    newDescribeGlobalNetworks,
+    DescribeGlobalNetworksResponse (DescribeGlobalNetworksResponse'),
+    newDescribeGlobalNetworksResponse,
+
+    -- ** DisassociateConnectPeer
+    DisassociateConnectPeer (DisassociateConnectPeer'),
+    newDisassociateConnectPeer,
+    DisassociateConnectPeerResponse (DisassociateConnectPeerResponse'),
+    newDisassociateConnectPeerResponse,
+
+    -- ** DisassociateCustomerGateway
+    DisassociateCustomerGateway (DisassociateCustomerGateway'),
+    newDisassociateCustomerGateway,
+    DisassociateCustomerGatewayResponse (DisassociateCustomerGatewayResponse'),
+    newDisassociateCustomerGatewayResponse,
+
+    -- ** DisassociateLink
+    DisassociateLink (DisassociateLink'),
+    newDisassociateLink,
+    DisassociateLinkResponse (DisassociateLinkResponse'),
+    newDisassociateLinkResponse,
+
+    -- ** DisassociateTransitGatewayConnectPeer
+    DisassociateTransitGatewayConnectPeer (DisassociateTransitGatewayConnectPeer'),
+    newDisassociateTransitGatewayConnectPeer,
+    DisassociateTransitGatewayConnectPeerResponse (DisassociateTransitGatewayConnectPeerResponse'),
+    newDisassociateTransitGatewayConnectPeerResponse,
+
+    -- ** ExecuteCoreNetworkChangeSet
+    ExecuteCoreNetworkChangeSet (ExecuteCoreNetworkChangeSet'),
+    newExecuteCoreNetworkChangeSet,
+    ExecuteCoreNetworkChangeSetResponse (ExecuteCoreNetworkChangeSetResponse'),
+    newExecuteCoreNetworkChangeSetResponse,
+
+    -- ** GetConnectAttachment
+    GetConnectAttachment (GetConnectAttachment'),
+    newGetConnectAttachment,
+    GetConnectAttachmentResponse (GetConnectAttachmentResponse'),
+    newGetConnectAttachmentResponse,
+
+    -- ** GetConnectPeer
+    GetConnectPeer (GetConnectPeer'),
+    newGetConnectPeer,
+    GetConnectPeerResponse (GetConnectPeerResponse'),
+    newGetConnectPeerResponse,
+
+    -- ** GetConnectPeerAssociations (Paginated)
+    GetConnectPeerAssociations (GetConnectPeerAssociations'),
+    newGetConnectPeerAssociations,
+    GetConnectPeerAssociationsResponse (GetConnectPeerAssociationsResponse'),
+    newGetConnectPeerAssociationsResponse,
+
+    -- ** GetConnections (Paginated)
+    GetConnections (GetConnections'),
+    newGetConnections,
+    GetConnectionsResponse (GetConnectionsResponse'),
+    newGetConnectionsResponse,
+
+    -- ** GetCoreNetwork
+    GetCoreNetwork (GetCoreNetwork'),
+    newGetCoreNetwork,
+    GetCoreNetworkResponse (GetCoreNetworkResponse'),
+    newGetCoreNetworkResponse,
+
+    -- ** GetCoreNetworkChangeEvents (Paginated)
+    GetCoreNetworkChangeEvents (GetCoreNetworkChangeEvents'),
+    newGetCoreNetworkChangeEvents,
+    GetCoreNetworkChangeEventsResponse (GetCoreNetworkChangeEventsResponse'),
+    newGetCoreNetworkChangeEventsResponse,
+
+    -- ** GetCoreNetworkChangeSet (Paginated)
+    GetCoreNetworkChangeSet (GetCoreNetworkChangeSet'),
+    newGetCoreNetworkChangeSet,
+    GetCoreNetworkChangeSetResponse (GetCoreNetworkChangeSetResponse'),
+    newGetCoreNetworkChangeSetResponse,
+
+    -- ** GetCoreNetworkPolicy
+    GetCoreNetworkPolicy (GetCoreNetworkPolicy'),
+    newGetCoreNetworkPolicy,
+    GetCoreNetworkPolicyResponse (GetCoreNetworkPolicyResponse'),
+    newGetCoreNetworkPolicyResponse,
+
+    -- ** GetCustomerGatewayAssociations (Paginated)
+    GetCustomerGatewayAssociations (GetCustomerGatewayAssociations'),
+    newGetCustomerGatewayAssociations,
+    GetCustomerGatewayAssociationsResponse (GetCustomerGatewayAssociationsResponse'),
+    newGetCustomerGatewayAssociationsResponse,
+
+    -- ** GetDevices (Paginated)
+    GetDevices (GetDevices'),
+    newGetDevices,
+    GetDevicesResponse (GetDevicesResponse'),
+    newGetDevicesResponse,
+
+    -- ** GetLinkAssociations (Paginated)
+    GetLinkAssociations (GetLinkAssociations'),
+    newGetLinkAssociations,
+    GetLinkAssociationsResponse (GetLinkAssociationsResponse'),
+    newGetLinkAssociationsResponse,
+
+    -- ** GetLinks (Paginated)
+    GetLinks (GetLinks'),
+    newGetLinks,
+    GetLinksResponse (GetLinksResponse'),
+    newGetLinksResponse,
+
+    -- ** GetNetworkResourceCounts (Paginated)
+    GetNetworkResourceCounts (GetNetworkResourceCounts'),
+    newGetNetworkResourceCounts,
+    GetNetworkResourceCountsResponse (GetNetworkResourceCountsResponse'),
+    newGetNetworkResourceCountsResponse,
+
+    -- ** GetNetworkResourceRelationships (Paginated)
+    GetNetworkResourceRelationships (GetNetworkResourceRelationships'),
+    newGetNetworkResourceRelationships,
+    GetNetworkResourceRelationshipsResponse (GetNetworkResourceRelationshipsResponse'),
+    newGetNetworkResourceRelationshipsResponse,
+
+    -- ** GetNetworkResources (Paginated)
+    GetNetworkResources (GetNetworkResources'),
+    newGetNetworkResources,
+    GetNetworkResourcesResponse (GetNetworkResourcesResponse'),
+    newGetNetworkResourcesResponse,
+
+    -- ** GetNetworkRoutes
+    GetNetworkRoutes (GetNetworkRoutes'),
+    newGetNetworkRoutes,
+    GetNetworkRoutesResponse (GetNetworkRoutesResponse'),
+    newGetNetworkRoutesResponse,
+
+    -- ** GetNetworkTelemetry (Paginated)
+    GetNetworkTelemetry (GetNetworkTelemetry'),
+    newGetNetworkTelemetry,
+    GetNetworkTelemetryResponse (GetNetworkTelemetryResponse'),
+    newGetNetworkTelemetryResponse,
+
+    -- ** GetResourcePolicy
+    GetResourcePolicy (GetResourcePolicy'),
+    newGetResourcePolicy,
+    GetResourcePolicyResponse (GetResourcePolicyResponse'),
+    newGetResourcePolicyResponse,
+
+    -- ** GetRouteAnalysis
+    GetRouteAnalysis (GetRouteAnalysis'),
+    newGetRouteAnalysis,
+    GetRouteAnalysisResponse (GetRouteAnalysisResponse'),
+    newGetRouteAnalysisResponse,
+
+    -- ** GetSiteToSiteVpnAttachment
+    GetSiteToSiteVpnAttachment (GetSiteToSiteVpnAttachment'),
+    newGetSiteToSiteVpnAttachment,
+    GetSiteToSiteVpnAttachmentResponse (GetSiteToSiteVpnAttachmentResponse'),
+    newGetSiteToSiteVpnAttachmentResponse,
+
+    -- ** GetSites (Paginated)
+    GetSites (GetSites'),
+    newGetSites,
+    GetSitesResponse (GetSitesResponse'),
+    newGetSitesResponse,
+
+    -- ** GetTransitGatewayConnectPeerAssociations (Paginated)
+    GetTransitGatewayConnectPeerAssociations (GetTransitGatewayConnectPeerAssociations'),
+    newGetTransitGatewayConnectPeerAssociations,
+    GetTransitGatewayConnectPeerAssociationsResponse (GetTransitGatewayConnectPeerAssociationsResponse'),
+    newGetTransitGatewayConnectPeerAssociationsResponse,
+
+    -- ** GetTransitGatewayPeering
+    GetTransitGatewayPeering (GetTransitGatewayPeering'),
+    newGetTransitGatewayPeering,
+    GetTransitGatewayPeeringResponse (GetTransitGatewayPeeringResponse'),
+    newGetTransitGatewayPeeringResponse,
+
+    -- ** GetTransitGatewayRegistrations (Paginated)
+    GetTransitGatewayRegistrations (GetTransitGatewayRegistrations'),
+    newGetTransitGatewayRegistrations,
+    GetTransitGatewayRegistrationsResponse (GetTransitGatewayRegistrationsResponse'),
+    newGetTransitGatewayRegistrationsResponse,
+
+    -- ** GetTransitGatewayRouteTableAttachment
+    GetTransitGatewayRouteTableAttachment (GetTransitGatewayRouteTableAttachment'),
+    newGetTransitGatewayRouteTableAttachment,
+    GetTransitGatewayRouteTableAttachmentResponse (GetTransitGatewayRouteTableAttachmentResponse'),
+    newGetTransitGatewayRouteTableAttachmentResponse,
+
+    -- ** GetVpcAttachment
+    GetVpcAttachment (GetVpcAttachment'),
+    newGetVpcAttachment,
+    GetVpcAttachmentResponse (GetVpcAttachmentResponse'),
+    newGetVpcAttachmentResponse,
+
+    -- ** ListAttachments (Paginated)
+    ListAttachments (ListAttachments'),
+    newListAttachments,
+    ListAttachmentsResponse (ListAttachmentsResponse'),
+    newListAttachmentsResponse,
+
+    -- ** ListConnectPeers (Paginated)
+    ListConnectPeers (ListConnectPeers'),
+    newListConnectPeers,
+    ListConnectPeersResponse (ListConnectPeersResponse'),
+    newListConnectPeersResponse,
+
+    -- ** ListCoreNetworkPolicyVersions (Paginated)
+    ListCoreNetworkPolicyVersions (ListCoreNetworkPolicyVersions'),
+    newListCoreNetworkPolicyVersions,
+    ListCoreNetworkPolicyVersionsResponse (ListCoreNetworkPolicyVersionsResponse'),
+    newListCoreNetworkPolicyVersionsResponse,
+
+    -- ** ListCoreNetworks (Paginated)
+    ListCoreNetworks (ListCoreNetworks'),
+    newListCoreNetworks,
+    ListCoreNetworksResponse (ListCoreNetworksResponse'),
+    newListCoreNetworksResponse,
+
+    -- ** ListOrganizationServiceAccessStatus
+    ListOrganizationServiceAccessStatus (ListOrganizationServiceAccessStatus'),
+    newListOrganizationServiceAccessStatus,
+    ListOrganizationServiceAccessStatusResponse (ListOrganizationServiceAccessStatusResponse'),
+    newListOrganizationServiceAccessStatusResponse,
+
+    -- ** ListPeerings (Paginated)
+    ListPeerings (ListPeerings'),
+    newListPeerings,
+    ListPeeringsResponse (ListPeeringsResponse'),
+    newListPeeringsResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** PutCoreNetworkPolicy
+    PutCoreNetworkPolicy (PutCoreNetworkPolicy'),
+    newPutCoreNetworkPolicy,
+    PutCoreNetworkPolicyResponse (PutCoreNetworkPolicyResponse'),
+    newPutCoreNetworkPolicyResponse,
+
+    -- ** PutResourcePolicy
+    PutResourcePolicy (PutResourcePolicy'),
+    newPutResourcePolicy,
+    PutResourcePolicyResponse (PutResourcePolicyResponse'),
+    newPutResourcePolicyResponse,
+
+    -- ** RegisterTransitGateway
+    RegisterTransitGateway (RegisterTransitGateway'),
+    newRegisterTransitGateway,
+    RegisterTransitGatewayResponse (RegisterTransitGatewayResponse'),
+    newRegisterTransitGatewayResponse,
+
+    -- ** RejectAttachment
+    RejectAttachment (RejectAttachment'),
+    newRejectAttachment,
+    RejectAttachmentResponse (RejectAttachmentResponse'),
+    newRejectAttachmentResponse,
+
+    -- ** RestoreCoreNetworkPolicyVersion
+    RestoreCoreNetworkPolicyVersion (RestoreCoreNetworkPolicyVersion'),
+    newRestoreCoreNetworkPolicyVersion,
+    RestoreCoreNetworkPolicyVersionResponse (RestoreCoreNetworkPolicyVersionResponse'),
+    newRestoreCoreNetworkPolicyVersionResponse,
+
+    -- ** StartOrganizationServiceAccessUpdate
+    StartOrganizationServiceAccessUpdate (StartOrganizationServiceAccessUpdate'),
+    newStartOrganizationServiceAccessUpdate,
+    StartOrganizationServiceAccessUpdateResponse (StartOrganizationServiceAccessUpdateResponse'),
+    newStartOrganizationServiceAccessUpdateResponse,
+
+    -- ** StartRouteAnalysis
+    StartRouteAnalysis (StartRouteAnalysis'),
+    newStartRouteAnalysis,
+    StartRouteAnalysisResponse (StartRouteAnalysisResponse'),
+    newStartRouteAnalysisResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateConnection
+    UpdateConnection (UpdateConnection'),
+    newUpdateConnection,
+    UpdateConnectionResponse (UpdateConnectionResponse'),
+    newUpdateConnectionResponse,
+
+    -- ** UpdateCoreNetwork
+    UpdateCoreNetwork (UpdateCoreNetwork'),
+    newUpdateCoreNetwork,
+    UpdateCoreNetworkResponse (UpdateCoreNetworkResponse'),
+    newUpdateCoreNetworkResponse,
+
+    -- ** UpdateDevice
+    UpdateDevice (UpdateDevice'),
+    newUpdateDevice,
+    UpdateDeviceResponse (UpdateDeviceResponse'),
+    newUpdateDeviceResponse,
+
+    -- ** UpdateGlobalNetwork
+    UpdateGlobalNetwork (UpdateGlobalNetwork'),
+    newUpdateGlobalNetwork,
+    UpdateGlobalNetworkResponse (UpdateGlobalNetworkResponse'),
+    newUpdateGlobalNetworkResponse,
+
+    -- ** UpdateLink
+    UpdateLink (UpdateLink'),
+    newUpdateLink,
+    UpdateLinkResponse (UpdateLinkResponse'),
+    newUpdateLinkResponse,
+
+    -- ** UpdateNetworkResourceMetadata
+    UpdateNetworkResourceMetadata (UpdateNetworkResourceMetadata'),
+    newUpdateNetworkResourceMetadata,
+    UpdateNetworkResourceMetadataResponse (UpdateNetworkResourceMetadataResponse'),
+    newUpdateNetworkResourceMetadataResponse,
+
+    -- ** UpdateSite
+    UpdateSite (UpdateSite'),
+    newUpdateSite,
+    UpdateSiteResponse (UpdateSiteResponse'),
+    newUpdateSiteResponse,
+
+    -- ** UpdateVpcAttachment
+    UpdateVpcAttachment (UpdateVpcAttachment'),
+    newUpdateVpcAttachment,
+    UpdateVpcAttachmentResponse (UpdateVpcAttachmentResponse'),
+    newUpdateVpcAttachmentResponse,
+
+    -- * Types
+
+    -- ** AttachmentState
+    AttachmentState (..),
+
+    -- ** AttachmentType
+    AttachmentType (..),
+
+    -- ** ChangeAction
+    ChangeAction (..),
+
+    -- ** ChangeSetState
+    ChangeSetState (..),
+
+    -- ** ChangeStatus
+    ChangeStatus (..),
+
+    -- ** ChangeType
+    ChangeType (..),
+
+    -- ** ConnectPeerAssociationState
+    ConnectPeerAssociationState (..),
+
+    -- ** ConnectPeerState
+    ConnectPeerState (..),
+
+    -- ** ConnectionState
+    ConnectionState (..),
+
+    -- ** ConnectionStatus
+    ConnectionStatus (..),
+
+    -- ** ConnectionType
+    ConnectionType (..),
+
+    -- ** CoreNetworkPolicyAlias
+    CoreNetworkPolicyAlias (..),
+
+    -- ** CoreNetworkState
+    CoreNetworkState (..),
+
+    -- ** CustomerGatewayAssociationState
+    CustomerGatewayAssociationState (..),
+
+    -- ** DeviceState
+    DeviceState (..),
+
+    -- ** GlobalNetworkState
+    GlobalNetworkState (..),
+
+    -- ** LinkAssociationState
+    LinkAssociationState (..),
+
+    -- ** LinkState
+    LinkState (..),
+
+    -- ** PeeringState
+    PeeringState (..),
+
+    -- ** PeeringType
+    PeeringType (..),
+
+    -- ** RouteAnalysisCompletionReasonCode
+    RouteAnalysisCompletionReasonCode (..),
+
+    -- ** RouteAnalysisCompletionResultCode
+    RouteAnalysisCompletionResultCode (..),
+
+    -- ** RouteAnalysisStatus
+    RouteAnalysisStatus (..),
+
+    -- ** RouteState
+    RouteState (..),
+
+    -- ** RouteTableType
+    RouteTableType (..),
+
+    -- ** RouteType
+    RouteType (..),
+
+    -- ** SiteState
+    SiteState (..),
+
+    -- ** TransitGatewayConnectPeerAssociationState
+    TransitGatewayConnectPeerAssociationState (..),
+
+    -- ** TransitGatewayRegistrationState
+    TransitGatewayRegistrationState (..),
+
+    -- ** TunnelProtocol
+    TunnelProtocol (..),
+
+    -- ** AWSLocation
+    AWSLocation (AWSLocation'),
+    newAWSLocation,
+
+    -- ** AccountStatus
+    AccountStatus (AccountStatus'),
+    newAccountStatus,
+
+    -- ** Attachment
+    Attachment (Attachment'),
+    newAttachment,
+
+    -- ** Bandwidth
+    Bandwidth (Bandwidth'),
+    newBandwidth,
+
+    -- ** BgpOptions
+    BgpOptions (BgpOptions'),
+    newBgpOptions,
+
+    -- ** ConnectAttachment
+    ConnectAttachment (ConnectAttachment'),
+    newConnectAttachment,
+
+    -- ** ConnectAttachmentOptions
+    ConnectAttachmentOptions (ConnectAttachmentOptions'),
+    newConnectAttachmentOptions,
+
+    -- ** ConnectPeer
+    ConnectPeer (ConnectPeer'),
+    newConnectPeer,
+
+    -- ** ConnectPeerAssociation
+    ConnectPeerAssociation (ConnectPeerAssociation'),
+    newConnectPeerAssociation,
+
+    -- ** ConnectPeerBgpConfiguration
+    ConnectPeerBgpConfiguration (ConnectPeerBgpConfiguration'),
+    newConnectPeerBgpConfiguration,
+
+    -- ** ConnectPeerConfiguration
+    ConnectPeerConfiguration (ConnectPeerConfiguration'),
+    newConnectPeerConfiguration,
+
+    -- ** ConnectPeerSummary
+    ConnectPeerSummary (ConnectPeerSummary'),
+    newConnectPeerSummary,
+
+    -- ** Connection
+    Connection (Connection'),
+    newConnection,
+
+    -- ** ConnectionHealth
+    ConnectionHealth (ConnectionHealth'),
+    newConnectionHealth,
+
+    -- ** CoreNetwork
+    CoreNetwork (CoreNetwork'),
+    newCoreNetwork,
+
+    -- ** CoreNetworkChange
+    CoreNetworkChange (CoreNetworkChange'),
+    newCoreNetworkChange,
+
+    -- ** CoreNetworkChangeEvent
+    CoreNetworkChangeEvent (CoreNetworkChangeEvent'),
+    newCoreNetworkChangeEvent,
+
+    -- ** CoreNetworkChangeEventValues
+    CoreNetworkChangeEventValues (CoreNetworkChangeEventValues'),
+    newCoreNetworkChangeEventValues,
+
+    -- ** CoreNetworkChangeValues
+    CoreNetworkChangeValues (CoreNetworkChangeValues'),
+    newCoreNetworkChangeValues,
+
+    -- ** CoreNetworkEdge
+    CoreNetworkEdge (CoreNetworkEdge'),
+    newCoreNetworkEdge,
+
+    -- ** CoreNetworkPolicy
+    CoreNetworkPolicy (CoreNetworkPolicy'),
+    newCoreNetworkPolicy,
+
+    -- ** CoreNetworkPolicyError
+    CoreNetworkPolicyError (CoreNetworkPolicyError'),
+    newCoreNetworkPolicyError,
+
+    -- ** CoreNetworkPolicyVersion
+    CoreNetworkPolicyVersion (CoreNetworkPolicyVersion'),
+    newCoreNetworkPolicyVersion,
+
+    -- ** CoreNetworkSegment
+    CoreNetworkSegment (CoreNetworkSegment'),
+    newCoreNetworkSegment,
+
+    -- ** CoreNetworkSegmentEdgeIdentifier
+    CoreNetworkSegmentEdgeIdentifier (CoreNetworkSegmentEdgeIdentifier'),
+    newCoreNetworkSegmentEdgeIdentifier,
+
+    -- ** CoreNetworkSummary
+    CoreNetworkSummary (CoreNetworkSummary'),
+    newCoreNetworkSummary,
+
+    -- ** CustomerGatewayAssociation
+    CustomerGatewayAssociation (CustomerGatewayAssociation'),
+    newCustomerGatewayAssociation,
+
+    -- ** Device
+    Device (Device'),
+    newDevice,
+
+    -- ** GlobalNetwork
+    GlobalNetwork (GlobalNetwork'),
+    newGlobalNetwork,
+
+    -- ** Link
+    Link (Link'),
+    newLink,
+
+    -- ** LinkAssociation
+    LinkAssociation (LinkAssociation'),
+    newLinkAssociation,
+
+    -- ** Location
+    Location (Location'),
+    newLocation,
+
+    -- ** NetworkResource
+    NetworkResource (NetworkResource'),
+    newNetworkResource,
+
+    -- ** NetworkResourceCount
+    NetworkResourceCount (NetworkResourceCount'),
+    newNetworkResourceCount,
+
+    -- ** NetworkResourceSummary
+    NetworkResourceSummary (NetworkResourceSummary'),
+    newNetworkResourceSummary,
+
+    -- ** NetworkRoute
+    NetworkRoute (NetworkRoute'),
+    newNetworkRoute,
+
+    -- ** NetworkRouteDestination
+    NetworkRouteDestination (NetworkRouteDestination'),
+    newNetworkRouteDestination,
+
+    -- ** NetworkTelemetry
+    NetworkTelemetry (NetworkTelemetry'),
+    newNetworkTelemetry,
+
+    -- ** OrganizationStatus
+    OrganizationStatus (OrganizationStatus'),
+    newOrganizationStatus,
+
+    -- ** PathComponent
+    PathComponent (PathComponent'),
+    newPathComponent,
+
+    -- ** Peering
+    Peering (Peering'),
+    newPeering,
+
+    -- ** ProposedSegmentChange
+    ProposedSegmentChange (ProposedSegmentChange'),
+    newProposedSegmentChange,
+
+    -- ** Relationship
+    Relationship (Relationship'),
+    newRelationship,
+
+    -- ** RouteAnalysis
+    RouteAnalysis (RouteAnalysis'),
+    newRouteAnalysis,
+
+    -- ** RouteAnalysisCompletion
+    RouteAnalysisCompletion (RouteAnalysisCompletion'),
+    newRouteAnalysisCompletion,
+
+    -- ** RouteAnalysisEndpointOptions
+    RouteAnalysisEndpointOptions (RouteAnalysisEndpointOptions'),
+    newRouteAnalysisEndpointOptions,
+
+    -- ** RouteAnalysisEndpointOptionsSpecification
+    RouteAnalysisEndpointOptionsSpecification (RouteAnalysisEndpointOptionsSpecification'),
+    newRouteAnalysisEndpointOptionsSpecification,
+
+    -- ** RouteAnalysisPath
+    RouteAnalysisPath (RouteAnalysisPath'),
+    newRouteAnalysisPath,
+
+    -- ** RouteTableIdentifier
+    RouteTableIdentifier (RouteTableIdentifier'),
+    newRouteTableIdentifier,
+
+    -- ** Site
+    Site (Site'),
+    newSite,
+
+    -- ** SiteToSiteVpnAttachment
+    SiteToSiteVpnAttachment (SiteToSiteVpnAttachment'),
+    newSiteToSiteVpnAttachment,
+
+    -- ** Tag
+    Tag (Tag'),
+    newTag,
+
+    -- ** TransitGatewayConnectPeerAssociation
+    TransitGatewayConnectPeerAssociation (TransitGatewayConnectPeerAssociation'),
+    newTransitGatewayConnectPeerAssociation,
+
+    -- ** TransitGatewayPeering
+    TransitGatewayPeering (TransitGatewayPeering'),
+    newTransitGatewayPeering,
+
+    -- ** TransitGatewayRegistration
+    TransitGatewayRegistration (TransitGatewayRegistration'),
+    newTransitGatewayRegistration,
+
+    -- ** TransitGatewayRegistrationStateReason
+    TransitGatewayRegistrationStateReason (TransitGatewayRegistrationStateReason'),
+    newTransitGatewayRegistrationStateReason,
+
+    -- ** TransitGatewayRouteTableAttachment
+    TransitGatewayRouteTableAttachment (TransitGatewayRouteTableAttachment'),
+    newTransitGatewayRouteTableAttachment,
+
+    -- ** VpcAttachment
+    VpcAttachment (VpcAttachment'),
+    newVpcAttachment,
+
+    -- ** VpcOptions
+    VpcOptions (VpcOptions'),
+    newVpcOptions,
+  )
+where
+
+import Amazonka.NetworkManager.AcceptAttachment
+import Amazonka.NetworkManager.AssociateConnectPeer
+import Amazonka.NetworkManager.AssociateCustomerGateway
+import Amazonka.NetworkManager.AssociateLink
+import Amazonka.NetworkManager.AssociateTransitGatewayConnectPeer
+import Amazonka.NetworkManager.CreateConnectAttachment
+import Amazonka.NetworkManager.CreateConnectPeer
+import Amazonka.NetworkManager.CreateConnection
+import Amazonka.NetworkManager.CreateCoreNetwork
+import Amazonka.NetworkManager.CreateDevice
+import Amazonka.NetworkManager.CreateGlobalNetwork
+import Amazonka.NetworkManager.CreateLink
+import Amazonka.NetworkManager.CreateSite
+import Amazonka.NetworkManager.CreateSiteToSiteVpnAttachment
+import Amazonka.NetworkManager.CreateTransitGatewayPeering
+import Amazonka.NetworkManager.CreateTransitGatewayRouteTableAttachment
+import Amazonka.NetworkManager.CreateVpcAttachment
+import Amazonka.NetworkManager.DeleteAttachment
+import Amazonka.NetworkManager.DeleteConnectPeer
+import Amazonka.NetworkManager.DeleteConnection
+import Amazonka.NetworkManager.DeleteCoreNetwork
+import Amazonka.NetworkManager.DeleteCoreNetworkPolicyVersion
+import Amazonka.NetworkManager.DeleteDevice
+import Amazonka.NetworkManager.DeleteGlobalNetwork
+import Amazonka.NetworkManager.DeleteLink
+import Amazonka.NetworkManager.DeletePeering
+import Amazonka.NetworkManager.DeleteResourcePolicy
+import Amazonka.NetworkManager.DeleteSite
+import Amazonka.NetworkManager.DeregisterTransitGateway
+import Amazonka.NetworkManager.DescribeGlobalNetworks
+import Amazonka.NetworkManager.DisassociateConnectPeer
+import Amazonka.NetworkManager.DisassociateCustomerGateway
+import Amazonka.NetworkManager.DisassociateLink
+import Amazonka.NetworkManager.DisassociateTransitGatewayConnectPeer
+import Amazonka.NetworkManager.ExecuteCoreNetworkChangeSet
+import Amazonka.NetworkManager.GetConnectAttachment
+import Amazonka.NetworkManager.GetConnectPeer
+import Amazonka.NetworkManager.GetConnectPeerAssociations
+import Amazonka.NetworkManager.GetConnections
+import Amazonka.NetworkManager.GetCoreNetwork
+import Amazonka.NetworkManager.GetCoreNetworkChangeEvents
+import Amazonka.NetworkManager.GetCoreNetworkChangeSet
+import Amazonka.NetworkManager.GetCoreNetworkPolicy
+import Amazonka.NetworkManager.GetCustomerGatewayAssociations
+import Amazonka.NetworkManager.GetDevices
+import Amazonka.NetworkManager.GetLinkAssociations
+import Amazonka.NetworkManager.GetLinks
+import Amazonka.NetworkManager.GetNetworkResourceCounts
+import Amazonka.NetworkManager.GetNetworkResourceRelationships
+import Amazonka.NetworkManager.GetNetworkResources
+import Amazonka.NetworkManager.GetNetworkRoutes
+import Amazonka.NetworkManager.GetNetworkTelemetry
+import Amazonka.NetworkManager.GetResourcePolicy
+import Amazonka.NetworkManager.GetRouteAnalysis
+import Amazonka.NetworkManager.GetSiteToSiteVpnAttachment
+import Amazonka.NetworkManager.GetSites
+import Amazonka.NetworkManager.GetTransitGatewayConnectPeerAssociations
+import Amazonka.NetworkManager.GetTransitGatewayPeering
+import Amazonka.NetworkManager.GetTransitGatewayRegistrations
+import Amazonka.NetworkManager.GetTransitGatewayRouteTableAttachment
+import Amazonka.NetworkManager.GetVpcAttachment
+import Amazonka.NetworkManager.Lens
+import Amazonka.NetworkManager.ListAttachments
+import Amazonka.NetworkManager.ListConnectPeers
+import Amazonka.NetworkManager.ListCoreNetworkPolicyVersions
+import Amazonka.NetworkManager.ListCoreNetworks
+import Amazonka.NetworkManager.ListOrganizationServiceAccessStatus
+import Amazonka.NetworkManager.ListPeerings
+import Amazonka.NetworkManager.ListTagsForResource
+import Amazonka.NetworkManager.PutCoreNetworkPolicy
+import Amazonka.NetworkManager.PutResourcePolicy
+import Amazonka.NetworkManager.RegisterTransitGateway
+import Amazonka.NetworkManager.RejectAttachment
+import Amazonka.NetworkManager.RestoreCoreNetworkPolicyVersion
+import Amazonka.NetworkManager.StartOrganizationServiceAccessUpdate
+import Amazonka.NetworkManager.StartRouteAnalysis
+import Amazonka.NetworkManager.TagResource
+import Amazonka.NetworkManager.Types
+import Amazonka.NetworkManager.UntagResource
+import Amazonka.NetworkManager.UpdateConnection
+import Amazonka.NetworkManager.UpdateCoreNetwork
+import Amazonka.NetworkManager.UpdateDevice
+import Amazonka.NetworkManager.UpdateGlobalNetwork
+import Amazonka.NetworkManager.UpdateLink
+import Amazonka.NetworkManager.UpdateNetworkResourceMetadata
+import Amazonka.NetworkManager.UpdateSite
+import Amazonka.NetworkManager.UpdateVpcAttachment
+import Amazonka.NetworkManager.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 'NetworkManager'.
+
+-- $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/NetworkManager/AcceptAttachment.hs b/gen/Amazonka/NetworkManager/AcceptAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/AcceptAttachment.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.AcceptAttachment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Accepts a core network attachment request.
+--
+-- Once the attachment request is accepted by a core network owner, the
+-- attachment is created and connected to a core network.
+module Amazonka.NetworkManager.AcceptAttachment
+  ( -- * Creating a Request
+    AcceptAttachment (..),
+    newAcceptAttachment,
+
+    -- * Request Lenses
+    acceptAttachment_attachmentId,
+
+    -- * Destructuring the Response
+    AcceptAttachmentResponse (..),
+    newAcceptAttachmentResponse,
+
+    -- * Response Lenses
+    acceptAttachmentResponse_attachment,
+    acceptAttachmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAcceptAttachment' smart constructor.
+data AcceptAttachment = AcceptAttachment'
+  { -- | The ID of the attachment.
+    attachmentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AcceptAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachmentId', 'acceptAttachment_attachmentId' - The ID of the attachment.
+newAcceptAttachment ::
+  -- | 'attachmentId'
+  Prelude.Text ->
+  AcceptAttachment
+newAcceptAttachment pAttachmentId_ =
+  AcceptAttachment' {attachmentId = pAttachmentId_}
+
+-- | The ID of the attachment.
+acceptAttachment_attachmentId :: Lens.Lens' AcceptAttachment Prelude.Text
+acceptAttachment_attachmentId = Lens.lens (\AcceptAttachment' {attachmentId} -> attachmentId) (\s@AcceptAttachment' {} a -> s {attachmentId = a} :: AcceptAttachment)
+
+instance Core.AWSRequest AcceptAttachment where
+  type
+    AWSResponse AcceptAttachment =
+      AcceptAttachmentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AcceptAttachmentResponse'
+            Prelude.<$> (x Data..?> "Attachment")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AcceptAttachment where
+  hashWithSalt _salt AcceptAttachment' {..} =
+    _salt `Prelude.hashWithSalt` attachmentId
+
+instance Prelude.NFData AcceptAttachment where
+  rnf AcceptAttachment' {..} = Prelude.rnf attachmentId
+
+instance Data.ToHeaders AcceptAttachment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AcceptAttachment where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath AcceptAttachment where
+  toPath AcceptAttachment' {..} =
+    Prelude.mconcat
+      ["/attachments/", Data.toBS attachmentId, "/accept"]
+
+instance Data.ToQuery AcceptAttachment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAcceptAttachmentResponse' smart constructor.
+data AcceptAttachmentResponse = AcceptAttachmentResponse'
+  { -- | The response to the attachment request.
+    attachment :: Prelude.Maybe Attachment,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AcceptAttachmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachment', 'acceptAttachmentResponse_attachment' - The response to the attachment request.
+--
+-- 'httpStatus', 'acceptAttachmentResponse_httpStatus' - The response's http status code.
+newAcceptAttachmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AcceptAttachmentResponse
+newAcceptAttachmentResponse pHttpStatus_ =
+  AcceptAttachmentResponse'
+    { attachment =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The response to the attachment request.
+acceptAttachmentResponse_attachment :: Lens.Lens' AcceptAttachmentResponse (Prelude.Maybe Attachment)
+acceptAttachmentResponse_attachment = Lens.lens (\AcceptAttachmentResponse' {attachment} -> attachment) (\s@AcceptAttachmentResponse' {} a -> s {attachment = a} :: AcceptAttachmentResponse)
+
+-- | The response's http status code.
+acceptAttachmentResponse_httpStatus :: Lens.Lens' AcceptAttachmentResponse Prelude.Int
+acceptAttachmentResponse_httpStatus = Lens.lens (\AcceptAttachmentResponse' {httpStatus} -> httpStatus) (\s@AcceptAttachmentResponse' {} a -> s {httpStatus = a} :: AcceptAttachmentResponse)
+
+instance Prelude.NFData AcceptAttachmentResponse where
+  rnf AcceptAttachmentResponse' {..} =
+    Prelude.rnf attachment
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/AssociateConnectPeer.hs b/gen/Amazonka/NetworkManager/AssociateConnectPeer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/AssociateConnectPeer.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.NetworkManager.AssociateConnectPeer
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates a core network Connect peer with a device and optionally,
+-- with a link.
+--
+-- If you specify a link, it must be associated with the specified device.
+-- You can only associate core network Connect peers that have been created
+-- on a core network Connect attachment on a core network.
+module Amazonka.NetworkManager.AssociateConnectPeer
+  ( -- * Creating a Request
+    AssociateConnectPeer (..),
+    newAssociateConnectPeer,
+
+    -- * Request Lenses
+    associateConnectPeer_linkId,
+    associateConnectPeer_globalNetworkId,
+    associateConnectPeer_connectPeerId,
+    associateConnectPeer_deviceId,
+
+    -- * Destructuring the Response
+    AssociateConnectPeerResponse (..),
+    newAssociateConnectPeerResponse,
+
+    -- * Response Lenses
+    associateConnectPeerResponse_connectPeerAssociation,
+    associateConnectPeerResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociateConnectPeer' smart constructor.
+data AssociateConnectPeer = AssociateConnectPeer'
+  { -- | The ID of the link.
+    linkId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of your global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the Connect peer.
+    connectPeerId :: Prelude.Text,
+    -- | The ID of the device.
+    deviceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateConnectPeer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'linkId', 'associateConnectPeer_linkId' - The ID of the link.
+--
+-- 'globalNetworkId', 'associateConnectPeer_globalNetworkId' - The ID of your global network.
+--
+-- 'connectPeerId', 'associateConnectPeer_connectPeerId' - The ID of the Connect peer.
+--
+-- 'deviceId', 'associateConnectPeer_deviceId' - The ID of the device.
+newAssociateConnectPeer ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'connectPeerId'
+  Prelude.Text ->
+  -- | 'deviceId'
+  Prelude.Text ->
+  AssociateConnectPeer
+newAssociateConnectPeer
+  pGlobalNetworkId_
+  pConnectPeerId_
+  pDeviceId_ =
+    AssociateConnectPeer'
+      { linkId = Prelude.Nothing,
+        globalNetworkId = pGlobalNetworkId_,
+        connectPeerId = pConnectPeerId_,
+        deviceId = pDeviceId_
+      }
+
+-- | The ID of the link.
+associateConnectPeer_linkId :: Lens.Lens' AssociateConnectPeer (Prelude.Maybe Prelude.Text)
+associateConnectPeer_linkId = Lens.lens (\AssociateConnectPeer' {linkId} -> linkId) (\s@AssociateConnectPeer' {} a -> s {linkId = a} :: AssociateConnectPeer)
+
+-- | The ID of your global network.
+associateConnectPeer_globalNetworkId :: Lens.Lens' AssociateConnectPeer Prelude.Text
+associateConnectPeer_globalNetworkId = Lens.lens (\AssociateConnectPeer' {globalNetworkId} -> globalNetworkId) (\s@AssociateConnectPeer' {} a -> s {globalNetworkId = a} :: AssociateConnectPeer)
+
+-- | The ID of the Connect peer.
+associateConnectPeer_connectPeerId :: Lens.Lens' AssociateConnectPeer Prelude.Text
+associateConnectPeer_connectPeerId = Lens.lens (\AssociateConnectPeer' {connectPeerId} -> connectPeerId) (\s@AssociateConnectPeer' {} a -> s {connectPeerId = a} :: AssociateConnectPeer)
+
+-- | The ID of the device.
+associateConnectPeer_deviceId :: Lens.Lens' AssociateConnectPeer Prelude.Text
+associateConnectPeer_deviceId = Lens.lens (\AssociateConnectPeer' {deviceId} -> deviceId) (\s@AssociateConnectPeer' {} a -> s {deviceId = a} :: AssociateConnectPeer)
+
+instance Core.AWSRequest AssociateConnectPeer where
+  type
+    AWSResponse AssociateConnectPeer =
+      AssociateConnectPeerResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AssociateConnectPeerResponse'
+            Prelude.<$> (x Data..?> "ConnectPeerAssociation")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AssociateConnectPeer where
+  hashWithSalt _salt AssociateConnectPeer' {..} =
+    _salt
+      `Prelude.hashWithSalt` linkId
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` connectPeerId
+      `Prelude.hashWithSalt` deviceId
+
+instance Prelude.NFData AssociateConnectPeer where
+  rnf AssociateConnectPeer' {..} =
+    Prelude.rnf linkId
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf connectPeerId
+      `Prelude.seq` Prelude.rnf deviceId
+
+instance Data.ToHeaders AssociateConnectPeer where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociateConnectPeer where
+  toJSON AssociateConnectPeer' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LinkId" Data..=) Prelude.<$> linkId,
+            Prelude.Just ("ConnectPeerId" Data..= connectPeerId),
+            Prelude.Just ("DeviceId" Data..= deviceId)
+          ]
+      )
+
+instance Data.ToPath AssociateConnectPeer where
+  toPath AssociateConnectPeer' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/connect-peer-associations"
+      ]
+
+instance Data.ToQuery AssociateConnectPeer where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateConnectPeerResponse' smart constructor.
+data AssociateConnectPeerResponse = AssociateConnectPeerResponse'
+  { -- | The response to the Connect peer request.
+    connectPeerAssociation :: Prelude.Maybe ConnectPeerAssociation,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateConnectPeerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectPeerAssociation', 'associateConnectPeerResponse_connectPeerAssociation' - The response to the Connect peer request.
+--
+-- 'httpStatus', 'associateConnectPeerResponse_httpStatus' - The response's http status code.
+newAssociateConnectPeerResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateConnectPeerResponse
+newAssociateConnectPeerResponse pHttpStatus_ =
+  AssociateConnectPeerResponse'
+    { connectPeerAssociation =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The response to the Connect peer request.
+associateConnectPeerResponse_connectPeerAssociation :: Lens.Lens' AssociateConnectPeerResponse (Prelude.Maybe ConnectPeerAssociation)
+associateConnectPeerResponse_connectPeerAssociation = Lens.lens (\AssociateConnectPeerResponse' {connectPeerAssociation} -> connectPeerAssociation) (\s@AssociateConnectPeerResponse' {} a -> s {connectPeerAssociation = a} :: AssociateConnectPeerResponse)
+
+-- | The response's http status code.
+associateConnectPeerResponse_httpStatus :: Lens.Lens' AssociateConnectPeerResponse Prelude.Int
+associateConnectPeerResponse_httpStatus = Lens.lens (\AssociateConnectPeerResponse' {httpStatus} -> httpStatus) (\s@AssociateConnectPeerResponse' {} a -> s {httpStatus = a} :: AssociateConnectPeerResponse)
+
+instance Prelude.NFData AssociateConnectPeerResponse where
+  rnf AssociateConnectPeerResponse' {..} =
+    Prelude.rnf connectPeerAssociation
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/AssociateCustomerGateway.hs b/gen/Amazonka/NetworkManager/AssociateCustomerGateway.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/AssociateCustomerGateway.hs
@@ -0,0 +1,236 @@
+{-# 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.NetworkManager.AssociateCustomerGateway
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates a customer gateway with a device and optionally, with a link.
+-- If you specify a link, it must be associated with the specified device.
+--
+-- You can only associate customer gateways that are connected to a VPN
+-- attachment on a transit gateway or core network registered in your
+-- global network. When you register a transit gateway or core network,
+-- customer gateways that are connected to the transit gateway are
+-- automatically included in the global network. To list customer gateways
+-- that are connected to a transit gateway, use the
+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVpnConnections.html DescribeVpnConnections>
+-- EC2 API and filter by @transit-gateway-id@.
+--
+-- You cannot associate a customer gateway with more than one device and
+-- link.
+module Amazonka.NetworkManager.AssociateCustomerGateway
+  ( -- * Creating a Request
+    AssociateCustomerGateway (..),
+    newAssociateCustomerGateway,
+
+    -- * Request Lenses
+    associateCustomerGateway_linkId,
+    associateCustomerGateway_customerGatewayArn,
+    associateCustomerGateway_globalNetworkId,
+    associateCustomerGateway_deviceId,
+
+    -- * Destructuring the Response
+    AssociateCustomerGatewayResponse (..),
+    newAssociateCustomerGatewayResponse,
+
+    -- * Response Lenses
+    associateCustomerGatewayResponse_customerGatewayAssociation,
+    associateCustomerGatewayResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociateCustomerGateway' smart constructor.
+data AssociateCustomerGateway = AssociateCustomerGateway'
+  { -- | The ID of the link.
+    linkId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the customer gateway.
+    customerGatewayArn :: Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the device.
+    deviceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateCustomerGateway' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'linkId', 'associateCustomerGateway_linkId' - The ID of the link.
+--
+-- 'customerGatewayArn', 'associateCustomerGateway_customerGatewayArn' - The Amazon Resource Name (ARN) of the customer gateway.
+--
+-- 'globalNetworkId', 'associateCustomerGateway_globalNetworkId' - The ID of the global network.
+--
+-- 'deviceId', 'associateCustomerGateway_deviceId' - The ID of the device.
+newAssociateCustomerGateway ::
+  -- | 'customerGatewayArn'
+  Prelude.Text ->
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'deviceId'
+  Prelude.Text ->
+  AssociateCustomerGateway
+newAssociateCustomerGateway
+  pCustomerGatewayArn_
+  pGlobalNetworkId_
+  pDeviceId_ =
+    AssociateCustomerGateway'
+      { linkId = Prelude.Nothing,
+        customerGatewayArn = pCustomerGatewayArn_,
+        globalNetworkId = pGlobalNetworkId_,
+        deviceId = pDeviceId_
+      }
+
+-- | The ID of the link.
+associateCustomerGateway_linkId :: Lens.Lens' AssociateCustomerGateway (Prelude.Maybe Prelude.Text)
+associateCustomerGateway_linkId = Lens.lens (\AssociateCustomerGateway' {linkId} -> linkId) (\s@AssociateCustomerGateway' {} a -> s {linkId = a} :: AssociateCustomerGateway)
+
+-- | The Amazon Resource Name (ARN) of the customer gateway.
+associateCustomerGateway_customerGatewayArn :: Lens.Lens' AssociateCustomerGateway Prelude.Text
+associateCustomerGateway_customerGatewayArn = Lens.lens (\AssociateCustomerGateway' {customerGatewayArn} -> customerGatewayArn) (\s@AssociateCustomerGateway' {} a -> s {customerGatewayArn = a} :: AssociateCustomerGateway)
+
+-- | The ID of the global network.
+associateCustomerGateway_globalNetworkId :: Lens.Lens' AssociateCustomerGateway Prelude.Text
+associateCustomerGateway_globalNetworkId = Lens.lens (\AssociateCustomerGateway' {globalNetworkId} -> globalNetworkId) (\s@AssociateCustomerGateway' {} a -> s {globalNetworkId = a} :: AssociateCustomerGateway)
+
+-- | The ID of the device.
+associateCustomerGateway_deviceId :: Lens.Lens' AssociateCustomerGateway Prelude.Text
+associateCustomerGateway_deviceId = Lens.lens (\AssociateCustomerGateway' {deviceId} -> deviceId) (\s@AssociateCustomerGateway' {} a -> s {deviceId = a} :: AssociateCustomerGateway)
+
+instance Core.AWSRequest AssociateCustomerGateway where
+  type
+    AWSResponse AssociateCustomerGateway =
+      AssociateCustomerGatewayResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AssociateCustomerGatewayResponse'
+            Prelude.<$> (x Data..?> "CustomerGatewayAssociation")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AssociateCustomerGateway where
+  hashWithSalt _salt AssociateCustomerGateway' {..} =
+    _salt
+      `Prelude.hashWithSalt` linkId
+      `Prelude.hashWithSalt` customerGatewayArn
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` deviceId
+
+instance Prelude.NFData AssociateCustomerGateway where
+  rnf AssociateCustomerGateway' {..} =
+    Prelude.rnf linkId
+      `Prelude.seq` Prelude.rnf customerGatewayArn
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf deviceId
+
+instance Data.ToHeaders AssociateCustomerGateway where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociateCustomerGateway where
+  toJSON AssociateCustomerGateway' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LinkId" Data..=) Prelude.<$> linkId,
+            Prelude.Just
+              ("CustomerGatewayArn" Data..= customerGatewayArn),
+            Prelude.Just ("DeviceId" Data..= deviceId)
+          ]
+      )
+
+instance Data.ToPath AssociateCustomerGateway where
+  toPath AssociateCustomerGateway' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/customer-gateway-associations"
+      ]
+
+instance Data.ToQuery AssociateCustomerGateway where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateCustomerGatewayResponse' smart constructor.
+data AssociateCustomerGatewayResponse = AssociateCustomerGatewayResponse'
+  { -- | The customer gateway association.
+    customerGatewayAssociation :: Prelude.Maybe CustomerGatewayAssociation,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateCustomerGatewayResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customerGatewayAssociation', 'associateCustomerGatewayResponse_customerGatewayAssociation' - The customer gateway association.
+--
+-- 'httpStatus', 'associateCustomerGatewayResponse_httpStatus' - The response's http status code.
+newAssociateCustomerGatewayResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateCustomerGatewayResponse
+newAssociateCustomerGatewayResponse pHttpStatus_ =
+  AssociateCustomerGatewayResponse'
+    { customerGatewayAssociation =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The customer gateway association.
+associateCustomerGatewayResponse_customerGatewayAssociation :: Lens.Lens' AssociateCustomerGatewayResponse (Prelude.Maybe CustomerGatewayAssociation)
+associateCustomerGatewayResponse_customerGatewayAssociation = Lens.lens (\AssociateCustomerGatewayResponse' {customerGatewayAssociation} -> customerGatewayAssociation) (\s@AssociateCustomerGatewayResponse' {} a -> s {customerGatewayAssociation = a} :: AssociateCustomerGatewayResponse)
+
+-- | The response's http status code.
+associateCustomerGatewayResponse_httpStatus :: Lens.Lens' AssociateCustomerGatewayResponse Prelude.Int
+associateCustomerGatewayResponse_httpStatus = Lens.lens (\AssociateCustomerGatewayResponse' {httpStatus} -> httpStatus) (\s@AssociateCustomerGatewayResponse' {} a -> s {httpStatus = a} :: AssociateCustomerGatewayResponse)
+
+instance
+  Prelude.NFData
+    AssociateCustomerGatewayResponse
+  where
+  rnf AssociateCustomerGatewayResponse' {..} =
+    Prelude.rnf customerGatewayAssociation
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/AssociateLink.hs b/gen/Amazonka/NetworkManager/AssociateLink.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/AssociateLink.hs
@@ -0,0 +1,208 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.AssociateLink
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates a link to a device. A device can be associated to multiple
+-- links and a link can be associated to multiple devices. The device and
+-- link must be in the same global network and the same site.
+module Amazonka.NetworkManager.AssociateLink
+  ( -- * Creating a Request
+    AssociateLink (..),
+    newAssociateLink,
+
+    -- * Request Lenses
+    associateLink_globalNetworkId,
+    associateLink_deviceId,
+    associateLink_linkId,
+
+    -- * Destructuring the Response
+    AssociateLinkResponse (..),
+    newAssociateLinkResponse,
+
+    -- * Response Lenses
+    associateLinkResponse_linkAssociation,
+    associateLinkResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociateLink' smart constructor.
+data AssociateLink = AssociateLink'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the device.
+    deviceId :: Prelude.Text,
+    -- | The ID of the link.
+    linkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateLink' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'associateLink_globalNetworkId' - The ID of the global network.
+--
+-- 'deviceId', 'associateLink_deviceId' - The ID of the device.
+--
+-- 'linkId', 'associateLink_linkId' - The ID of the link.
+newAssociateLink ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'deviceId'
+  Prelude.Text ->
+  -- | 'linkId'
+  Prelude.Text ->
+  AssociateLink
+newAssociateLink
+  pGlobalNetworkId_
+  pDeviceId_
+  pLinkId_ =
+    AssociateLink'
+      { globalNetworkId = pGlobalNetworkId_,
+        deviceId = pDeviceId_,
+        linkId = pLinkId_
+      }
+
+-- | The ID of the global network.
+associateLink_globalNetworkId :: Lens.Lens' AssociateLink Prelude.Text
+associateLink_globalNetworkId = Lens.lens (\AssociateLink' {globalNetworkId} -> globalNetworkId) (\s@AssociateLink' {} a -> s {globalNetworkId = a} :: AssociateLink)
+
+-- | The ID of the device.
+associateLink_deviceId :: Lens.Lens' AssociateLink Prelude.Text
+associateLink_deviceId = Lens.lens (\AssociateLink' {deviceId} -> deviceId) (\s@AssociateLink' {} a -> s {deviceId = a} :: AssociateLink)
+
+-- | The ID of the link.
+associateLink_linkId :: Lens.Lens' AssociateLink Prelude.Text
+associateLink_linkId = Lens.lens (\AssociateLink' {linkId} -> linkId) (\s@AssociateLink' {} a -> s {linkId = a} :: AssociateLink)
+
+instance Core.AWSRequest AssociateLink where
+  type
+    AWSResponse AssociateLink =
+      AssociateLinkResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AssociateLinkResponse'
+            Prelude.<$> (x Data..?> "LinkAssociation")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AssociateLink where
+  hashWithSalt _salt AssociateLink' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` deviceId
+      `Prelude.hashWithSalt` linkId
+
+instance Prelude.NFData AssociateLink where
+  rnf AssociateLink' {..} =
+    Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf deviceId
+      `Prelude.seq` Prelude.rnf linkId
+
+instance Data.ToHeaders AssociateLink where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociateLink where
+  toJSON AssociateLink' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("DeviceId" Data..= deviceId),
+            Prelude.Just ("LinkId" Data..= linkId)
+          ]
+      )
+
+instance Data.ToPath AssociateLink where
+  toPath AssociateLink' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/link-associations"
+      ]
+
+instance Data.ToQuery AssociateLink where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateLinkResponse' smart constructor.
+data AssociateLinkResponse = AssociateLinkResponse'
+  { -- | The link association.
+    linkAssociation :: Prelude.Maybe LinkAssociation,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateLinkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'linkAssociation', 'associateLinkResponse_linkAssociation' - The link association.
+--
+-- 'httpStatus', 'associateLinkResponse_httpStatus' - The response's http status code.
+newAssociateLinkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateLinkResponse
+newAssociateLinkResponse pHttpStatus_ =
+  AssociateLinkResponse'
+    { linkAssociation =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The link association.
+associateLinkResponse_linkAssociation :: Lens.Lens' AssociateLinkResponse (Prelude.Maybe LinkAssociation)
+associateLinkResponse_linkAssociation = Lens.lens (\AssociateLinkResponse' {linkAssociation} -> linkAssociation) (\s@AssociateLinkResponse' {} a -> s {linkAssociation = a} :: AssociateLinkResponse)
+
+-- | The response's http status code.
+associateLinkResponse_httpStatus :: Lens.Lens' AssociateLinkResponse Prelude.Int
+associateLinkResponse_httpStatus = Lens.lens (\AssociateLinkResponse' {httpStatus} -> httpStatus) (\s@AssociateLinkResponse' {} a -> s {httpStatus = a} :: AssociateLinkResponse)
+
+instance Prelude.NFData AssociateLinkResponse where
+  rnf AssociateLinkResponse' {..} =
+    Prelude.rnf linkAssociation
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/AssociateTransitGatewayConnectPeer.hs b/gen/Amazonka/NetworkManager/AssociateTransitGatewayConnectPeer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/AssociateTransitGatewayConnectPeer.hs
@@ -0,0 +1,259 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.AssociateTransitGatewayConnectPeer
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates a transit gateway Connect peer with a device, and optionally,
+-- with a link. If you specify a link, it must be associated with the
+-- specified device.
+--
+-- You can only associate transit gateway Connect peers that have been
+-- created on a transit gateway that\'s registered in your global network.
+--
+-- You cannot associate a transit gateway Connect peer with more than one
+-- device and link.
+module Amazonka.NetworkManager.AssociateTransitGatewayConnectPeer
+  ( -- * Creating a Request
+    AssociateTransitGatewayConnectPeer (..),
+    newAssociateTransitGatewayConnectPeer,
+
+    -- * Request Lenses
+    associateTransitGatewayConnectPeer_linkId,
+    associateTransitGatewayConnectPeer_globalNetworkId,
+    associateTransitGatewayConnectPeer_transitGatewayConnectPeerArn,
+    associateTransitGatewayConnectPeer_deviceId,
+
+    -- * Destructuring the Response
+    AssociateTransitGatewayConnectPeerResponse (..),
+    newAssociateTransitGatewayConnectPeerResponse,
+
+    -- * Response Lenses
+    associateTransitGatewayConnectPeerResponse_transitGatewayConnectPeerAssociation,
+    associateTransitGatewayConnectPeerResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociateTransitGatewayConnectPeer' smart constructor.
+data AssociateTransitGatewayConnectPeer = AssociateTransitGatewayConnectPeer'
+  { -- | The ID of the link.
+    linkId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the Connect peer.
+    transitGatewayConnectPeerArn :: Prelude.Text,
+    -- | The ID of the device.
+    deviceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateTransitGatewayConnectPeer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'linkId', 'associateTransitGatewayConnectPeer_linkId' - The ID of the link.
+--
+-- 'globalNetworkId', 'associateTransitGatewayConnectPeer_globalNetworkId' - The ID of the global network.
+--
+-- 'transitGatewayConnectPeerArn', 'associateTransitGatewayConnectPeer_transitGatewayConnectPeerArn' - The Amazon Resource Name (ARN) of the Connect peer.
+--
+-- 'deviceId', 'associateTransitGatewayConnectPeer_deviceId' - The ID of the device.
+newAssociateTransitGatewayConnectPeer ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'transitGatewayConnectPeerArn'
+  Prelude.Text ->
+  -- | 'deviceId'
+  Prelude.Text ->
+  AssociateTransitGatewayConnectPeer
+newAssociateTransitGatewayConnectPeer
+  pGlobalNetworkId_
+  pTransitGatewayConnectPeerArn_
+  pDeviceId_ =
+    AssociateTransitGatewayConnectPeer'
+      { linkId =
+          Prelude.Nothing,
+        globalNetworkId = pGlobalNetworkId_,
+        transitGatewayConnectPeerArn =
+          pTransitGatewayConnectPeerArn_,
+        deviceId = pDeviceId_
+      }
+
+-- | The ID of the link.
+associateTransitGatewayConnectPeer_linkId :: Lens.Lens' AssociateTransitGatewayConnectPeer (Prelude.Maybe Prelude.Text)
+associateTransitGatewayConnectPeer_linkId = Lens.lens (\AssociateTransitGatewayConnectPeer' {linkId} -> linkId) (\s@AssociateTransitGatewayConnectPeer' {} a -> s {linkId = a} :: AssociateTransitGatewayConnectPeer)
+
+-- | The ID of the global network.
+associateTransitGatewayConnectPeer_globalNetworkId :: Lens.Lens' AssociateTransitGatewayConnectPeer Prelude.Text
+associateTransitGatewayConnectPeer_globalNetworkId = Lens.lens (\AssociateTransitGatewayConnectPeer' {globalNetworkId} -> globalNetworkId) (\s@AssociateTransitGatewayConnectPeer' {} a -> s {globalNetworkId = a} :: AssociateTransitGatewayConnectPeer)
+
+-- | The Amazon Resource Name (ARN) of the Connect peer.
+associateTransitGatewayConnectPeer_transitGatewayConnectPeerArn :: Lens.Lens' AssociateTransitGatewayConnectPeer Prelude.Text
+associateTransitGatewayConnectPeer_transitGatewayConnectPeerArn = Lens.lens (\AssociateTransitGatewayConnectPeer' {transitGatewayConnectPeerArn} -> transitGatewayConnectPeerArn) (\s@AssociateTransitGatewayConnectPeer' {} a -> s {transitGatewayConnectPeerArn = a} :: AssociateTransitGatewayConnectPeer)
+
+-- | The ID of the device.
+associateTransitGatewayConnectPeer_deviceId :: Lens.Lens' AssociateTransitGatewayConnectPeer Prelude.Text
+associateTransitGatewayConnectPeer_deviceId = Lens.lens (\AssociateTransitGatewayConnectPeer' {deviceId} -> deviceId) (\s@AssociateTransitGatewayConnectPeer' {} a -> s {deviceId = a} :: AssociateTransitGatewayConnectPeer)
+
+instance
+  Core.AWSRequest
+    AssociateTransitGatewayConnectPeer
+  where
+  type
+    AWSResponse AssociateTransitGatewayConnectPeer =
+      AssociateTransitGatewayConnectPeerResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AssociateTransitGatewayConnectPeerResponse'
+            Prelude.<$> (x Data..?> "TransitGatewayConnectPeerAssociation")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    AssociateTransitGatewayConnectPeer
+  where
+  hashWithSalt
+    _salt
+    AssociateTransitGatewayConnectPeer' {..} =
+      _salt
+        `Prelude.hashWithSalt` linkId
+        `Prelude.hashWithSalt` globalNetworkId
+        `Prelude.hashWithSalt` transitGatewayConnectPeerArn
+        `Prelude.hashWithSalt` deviceId
+
+instance
+  Prelude.NFData
+    AssociateTransitGatewayConnectPeer
+  where
+  rnf AssociateTransitGatewayConnectPeer' {..} =
+    Prelude.rnf linkId
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf transitGatewayConnectPeerArn
+      `Prelude.seq` Prelude.rnf deviceId
+
+instance
+  Data.ToHeaders
+    AssociateTransitGatewayConnectPeer
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    AssociateTransitGatewayConnectPeer
+  where
+  toJSON AssociateTransitGatewayConnectPeer' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LinkId" Data..=) Prelude.<$> linkId,
+            Prelude.Just
+              ( "TransitGatewayConnectPeerArn"
+                  Data..= transitGatewayConnectPeerArn
+              ),
+            Prelude.Just ("DeviceId" Data..= deviceId)
+          ]
+      )
+
+instance
+  Data.ToPath
+    AssociateTransitGatewayConnectPeer
+  where
+  toPath AssociateTransitGatewayConnectPeer' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/transit-gateway-connect-peer-associations"
+      ]
+
+instance
+  Data.ToQuery
+    AssociateTransitGatewayConnectPeer
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateTransitGatewayConnectPeerResponse' smart constructor.
+data AssociateTransitGatewayConnectPeerResponse = AssociateTransitGatewayConnectPeerResponse'
+  { -- | The transit gateway Connect peer association.
+    transitGatewayConnectPeerAssociation :: Prelude.Maybe TransitGatewayConnectPeerAssociation,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateTransitGatewayConnectPeerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'transitGatewayConnectPeerAssociation', 'associateTransitGatewayConnectPeerResponse_transitGatewayConnectPeerAssociation' - The transit gateway Connect peer association.
+--
+-- 'httpStatus', 'associateTransitGatewayConnectPeerResponse_httpStatus' - The response's http status code.
+newAssociateTransitGatewayConnectPeerResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateTransitGatewayConnectPeerResponse
+newAssociateTransitGatewayConnectPeerResponse
+  pHttpStatus_ =
+    AssociateTransitGatewayConnectPeerResponse'
+      { transitGatewayConnectPeerAssociation =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The transit gateway Connect peer association.
+associateTransitGatewayConnectPeerResponse_transitGatewayConnectPeerAssociation :: Lens.Lens' AssociateTransitGatewayConnectPeerResponse (Prelude.Maybe TransitGatewayConnectPeerAssociation)
+associateTransitGatewayConnectPeerResponse_transitGatewayConnectPeerAssociation = Lens.lens (\AssociateTransitGatewayConnectPeerResponse' {transitGatewayConnectPeerAssociation} -> transitGatewayConnectPeerAssociation) (\s@AssociateTransitGatewayConnectPeerResponse' {} a -> s {transitGatewayConnectPeerAssociation = a} :: AssociateTransitGatewayConnectPeerResponse)
+
+-- | The response's http status code.
+associateTransitGatewayConnectPeerResponse_httpStatus :: Lens.Lens' AssociateTransitGatewayConnectPeerResponse Prelude.Int
+associateTransitGatewayConnectPeerResponse_httpStatus = Lens.lens (\AssociateTransitGatewayConnectPeerResponse' {httpStatus} -> httpStatus) (\s@AssociateTransitGatewayConnectPeerResponse' {} a -> s {httpStatus = a} :: AssociateTransitGatewayConnectPeerResponse)
+
+instance
+  Prelude.NFData
+    AssociateTransitGatewayConnectPeerResponse
+  where
+  rnf AssociateTransitGatewayConnectPeerResponse' {..} =
+    Prelude.rnf transitGatewayConnectPeerAssociation
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/CreateConnectAttachment.hs b/gen/Amazonka/NetworkManager/CreateConnectAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/CreateConnectAttachment.hs
@@ -0,0 +1,257 @@
+{-# 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.NetworkManager.CreateConnectAttachment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a core network Connect attachment from a specified core network
+-- attachment.
+--
+-- A core network Connect attachment is a GRE-based tunnel attachment that
+-- you can use to establish a connection between a core network and an
+-- appliance. A core network Connect attachment uses an existing VPC
+-- attachment as the underlying transport mechanism.
+module Amazonka.NetworkManager.CreateConnectAttachment
+  ( -- * Creating a Request
+    CreateConnectAttachment (..),
+    newCreateConnectAttachment,
+
+    -- * Request Lenses
+    createConnectAttachment_clientToken,
+    createConnectAttachment_tags,
+    createConnectAttachment_coreNetworkId,
+    createConnectAttachment_edgeLocation,
+    createConnectAttachment_transportAttachmentId,
+    createConnectAttachment_options,
+
+    -- * Destructuring the Response
+    CreateConnectAttachmentResponse (..),
+    newCreateConnectAttachmentResponse,
+
+    -- * Response Lenses
+    createConnectAttachmentResponse_connectAttachment,
+    createConnectAttachmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateConnectAttachment' smart constructor.
+data CreateConnectAttachment = CreateConnectAttachment'
+  { -- | The client token associated with the request.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The list of key-value tags associated with the request.
+    tags :: Prelude.Maybe [Tag],
+    -- | The ID of a core network where you want to create the attachment.
+    coreNetworkId :: Prelude.Text,
+    -- | The Region where the edge is located.
+    edgeLocation :: Prelude.Text,
+    -- | The ID of the attachment between the two connections.
+    transportAttachmentId :: Prelude.Text,
+    -- | Options for creating an attachment.
+    options :: ConnectAttachmentOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateConnectAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createConnectAttachment_clientToken' - The client token associated with the request.
+--
+-- 'tags', 'createConnectAttachment_tags' - The list of key-value tags associated with the request.
+--
+-- 'coreNetworkId', 'createConnectAttachment_coreNetworkId' - The ID of a core network where you want to create the attachment.
+--
+-- 'edgeLocation', 'createConnectAttachment_edgeLocation' - The Region where the edge is located.
+--
+-- 'transportAttachmentId', 'createConnectAttachment_transportAttachmentId' - The ID of the attachment between the two connections.
+--
+-- 'options', 'createConnectAttachment_options' - Options for creating an attachment.
+newCreateConnectAttachment ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  -- | 'edgeLocation'
+  Prelude.Text ->
+  -- | 'transportAttachmentId'
+  Prelude.Text ->
+  -- | 'options'
+  ConnectAttachmentOptions ->
+  CreateConnectAttachment
+newCreateConnectAttachment
+  pCoreNetworkId_
+  pEdgeLocation_
+  pTransportAttachmentId_
+  pOptions_ =
+    CreateConnectAttachment'
+      { clientToken =
+          Prelude.Nothing,
+        tags = Prelude.Nothing,
+        coreNetworkId = pCoreNetworkId_,
+        edgeLocation = pEdgeLocation_,
+        transportAttachmentId = pTransportAttachmentId_,
+        options = pOptions_
+      }
+
+-- | The client token associated with the request.
+createConnectAttachment_clientToken :: Lens.Lens' CreateConnectAttachment (Prelude.Maybe Prelude.Text)
+createConnectAttachment_clientToken = Lens.lens (\CreateConnectAttachment' {clientToken} -> clientToken) (\s@CreateConnectAttachment' {} a -> s {clientToken = a} :: CreateConnectAttachment)
+
+-- | The list of key-value tags associated with the request.
+createConnectAttachment_tags :: Lens.Lens' CreateConnectAttachment (Prelude.Maybe [Tag])
+createConnectAttachment_tags = Lens.lens (\CreateConnectAttachment' {tags} -> tags) (\s@CreateConnectAttachment' {} a -> s {tags = a} :: CreateConnectAttachment) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of a core network where you want to create the attachment.
+createConnectAttachment_coreNetworkId :: Lens.Lens' CreateConnectAttachment Prelude.Text
+createConnectAttachment_coreNetworkId = Lens.lens (\CreateConnectAttachment' {coreNetworkId} -> coreNetworkId) (\s@CreateConnectAttachment' {} a -> s {coreNetworkId = a} :: CreateConnectAttachment)
+
+-- | The Region where the edge is located.
+createConnectAttachment_edgeLocation :: Lens.Lens' CreateConnectAttachment Prelude.Text
+createConnectAttachment_edgeLocation = Lens.lens (\CreateConnectAttachment' {edgeLocation} -> edgeLocation) (\s@CreateConnectAttachment' {} a -> s {edgeLocation = a} :: CreateConnectAttachment)
+
+-- | The ID of the attachment between the two connections.
+createConnectAttachment_transportAttachmentId :: Lens.Lens' CreateConnectAttachment Prelude.Text
+createConnectAttachment_transportAttachmentId = Lens.lens (\CreateConnectAttachment' {transportAttachmentId} -> transportAttachmentId) (\s@CreateConnectAttachment' {} a -> s {transportAttachmentId = a} :: CreateConnectAttachment)
+
+-- | Options for creating an attachment.
+createConnectAttachment_options :: Lens.Lens' CreateConnectAttachment ConnectAttachmentOptions
+createConnectAttachment_options = Lens.lens (\CreateConnectAttachment' {options} -> options) (\s@CreateConnectAttachment' {} a -> s {options = a} :: CreateConnectAttachment)
+
+instance Core.AWSRequest CreateConnectAttachment where
+  type
+    AWSResponse CreateConnectAttachment =
+      CreateConnectAttachmentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateConnectAttachmentResponse'
+            Prelude.<$> (x Data..?> "ConnectAttachment")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateConnectAttachment where
+  hashWithSalt _salt CreateConnectAttachment' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` edgeLocation
+      `Prelude.hashWithSalt` transportAttachmentId
+      `Prelude.hashWithSalt` options
+
+instance Prelude.NFData CreateConnectAttachment where
+  rnf CreateConnectAttachment' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf edgeLocation
+      `Prelude.seq` Prelude.rnf transportAttachmentId
+      `Prelude.seq` Prelude.rnf options
+
+instance Data.ToHeaders CreateConnectAttachment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateConnectAttachment where
+  toJSON CreateConnectAttachment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("CoreNetworkId" Data..= coreNetworkId),
+            Prelude.Just ("EdgeLocation" Data..= edgeLocation),
+            Prelude.Just
+              ( "TransportAttachmentId"
+                  Data..= transportAttachmentId
+              ),
+            Prelude.Just ("Options" Data..= options)
+          ]
+      )
+
+instance Data.ToPath CreateConnectAttachment where
+  toPath = Prelude.const "/connect-attachments"
+
+instance Data.ToQuery CreateConnectAttachment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateConnectAttachmentResponse' smart constructor.
+data CreateConnectAttachmentResponse = CreateConnectAttachmentResponse'
+  { -- | The response to a Connect attachment request.
+    connectAttachment :: Prelude.Maybe ConnectAttachment,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateConnectAttachmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectAttachment', 'createConnectAttachmentResponse_connectAttachment' - The response to a Connect attachment request.
+--
+-- 'httpStatus', 'createConnectAttachmentResponse_httpStatus' - The response's http status code.
+newCreateConnectAttachmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateConnectAttachmentResponse
+newCreateConnectAttachmentResponse pHttpStatus_ =
+  CreateConnectAttachmentResponse'
+    { connectAttachment =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The response to a Connect attachment request.
+createConnectAttachmentResponse_connectAttachment :: Lens.Lens' CreateConnectAttachmentResponse (Prelude.Maybe ConnectAttachment)
+createConnectAttachmentResponse_connectAttachment = Lens.lens (\CreateConnectAttachmentResponse' {connectAttachment} -> connectAttachment) (\s@CreateConnectAttachmentResponse' {} a -> s {connectAttachment = a} :: CreateConnectAttachmentResponse)
+
+-- | The response's http status code.
+createConnectAttachmentResponse_httpStatus :: Lens.Lens' CreateConnectAttachmentResponse Prelude.Int
+createConnectAttachmentResponse_httpStatus = Lens.lens (\CreateConnectAttachmentResponse' {httpStatus} -> httpStatus) (\s@CreateConnectAttachmentResponse' {} a -> s {httpStatus = a} :: CreateConnectAttachmentResponse)
+
+instance
+  Prelude.NFData
+    CreateConnectAttachmentResponse
+  where
+  rnf CreateConnectAttachmentResponse' {..} =
+    Prelude.rnf connectAttachment
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/CreateConnectPeer.hs b/gen/Amazonka/NetworkManager/CreateConnectPeer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/CreateConnectPeer.hs
@@ -0,0 +1,257 @@
+{-# 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.NetworkManager.CreateConnectPeer
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a core network Connect peer for a specified core network connect
+-- attachment between a core network and an appliance. The peer address and
+-- transit gateway address must be the same IP address family (IPv4 or
+-- IPv6).
+module Amazonka.NetworkManager.CreateConnectPeer
+  ( -- * Creating a Request
+    CreateConnectPeer (..),
+    newCreateConnectPeer,
+
+    -- * Request Lenses
+    createConnectPeer_bgpOptions,
+    createConnectPeer_clientToken,
+    createConnectPeer_coreNetworkAddress,
+    createConnectPeer_tags,
+    createConnectPeer_connectAttachmentId,
+    createConnectPeer_peerAddress,
+    createConnectPeer_insideCidrBlocks,
+
+    -- * Destructuring the Response
+    CreateConnectPeerResponse (..),
+    newCreateConnectPeerResponse,
+
+    -- * Response Lenses
+    createConnectPeerResponse_connectPeer,
+    createConnectPeerResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateConnectPeer' smart constructor.
+data CreateConnectPeer = CreateConnectPeer'
+  { -- | The Connect peer BGP options.
+    bgpOptions :: Prelude.Maybe BgpOptions,
+    -- | The client token associated with the request.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | A Connect peer core network address.
+    coreNetworkAddress :: Prelude.Maybe Prelude.Text,
+    -- | The tags associated with the peer request.
+    tags :: Prelude.Maybe [Tag],
+    -- | The ID of the connection attachment.
+    connectAttachmentId :: Prelude.Text,
+    -- | The Connect peer address.
+    peerAddress :: Prelude.Text,
+    -- | The inside IP addresses used for BGP peering.
+    insideCidrBlocks :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateConnectPeer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bgpOptions', 'createConnectPeer_bgpOptions' - The Connect peer BGP options.
+--
+-- 'clientToken', 'createConnectPeer_clientToken' - The client token associated with the request.
+--
+-- 'coreNetworkAddress', 'createConnectPeer_coreNetworkAddress' - A Connect peer core network address.
+--
+-- 'tags', 'createConnectPeer_tags' - The tags associated with the peer request.
+--
+-- 'connectAttachmentId', 'createConnectPeer_connectAttachmentId' - The ID of the connection attachment.
+--
+-- 'peerAddress', 'createConnectPeer_peerAddress' - The Connect peer address.
+--
+-- 'insideCidrBlocks', 'createConnectPeer_insideCidrBlocks' - The inside IP addresses used for BGP peering.
+newCreateConnectPeer ::
+  -- | 'connectAttachmentId'
+  Prelude.Text ->
+  -- | 'peerAddress'
+  Prelude.Text ->
+  CreateConnectPeer
+newCreateConnectPeer
+  pConnectAttachmentId_
+  pPeerAddress_ =
+    CreateConnectPeer'
+      { bgpOptions = Prelude.Nothing,
+        clientToken = Prelude.Nothing,
+        coreNetworkAddress = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        connectAttachmentId = pConnectAttachmentId_,
+        peerAddress = pPeerAddress_,
+        insideCidrBlocks = Prelude.mempty
+      }
+
+-- | The Connect peer BGP options.
+createConnectPeer_bgpOptions :: Lens.Lens' CreateConnectPeer (Prelude.Maybe BgpOptions)
+createConnectPeer_bgpOptions = Lens.lens (\CreateConnectPeer' {bgpOptions} -> bgpOptions) (\s@CreateConnectPeer' {} a -> s {bgpOptions = a} :: CreateConnectPeer)
+
+-- | The client token associated with the request.
+createConnectPeer_clientToken :: Lens.Lens' CreateConnectPeer (Prelude.Maybe Prelude.Text)
+createConnectPeer_clientToken = Lens.lens (\CreateConnectPeer' {clientToken} -> clientToken) (\s@CreateConnectPeer' {} a -> s {clientToken = a} :: CreateConnectPeer)
+
+-- | A Connect peer core network address.
+createConnectPeer_coreNetworkAddress :: Lens.Lens' CreateConnectPeer (Prelude.Maybe Prelude.Text)
+createConnectPeer_coreNetworkAddress = Lens.lens (\CreateConnectPeer' {coreNetworkAddress} -> coreNetworkAddress) (\s@CreateConnectPeer' {} a -> s {coreNetworkAddress = a} :: CreateConnectPeer)
+
+-- | The tags associated with the peer request.
+createConnectPeer_tags :: Lens.Lens' CreateConnectPeer (Prelude.Maybe [Tag])
+createConnectPeer_tags = Lens.lens (\CreateConnectPeer' {tags} -> tags) (\s@CreateConnectPeer' {} a -> s {tags = a} :: CreateConnectPeer) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the connection attachment.
+createConnectPeer_connectAttachmentId :: Lens.Lens' CreateConnectPeer Prelude.Text
+createConnectPeer_connectAttachmentId = Lens.lens (\CreateConnectPeer' {connectAttachmentId} -> connectAttachmentId) (\s@CreateConnectPeer' {} a -> s {connectAttachmentId = a} :: CreateConnectPeer)
+
+-- | The Connect peer address.
+createConnectPeer_peerAddress :: Lens.Lens' CreateConnectPeer Prelude.Text
+createConnectPeer_peerAddress = Lens.lens (\CreateConnectPeer' {peerAddress} -> peerAddress) (\s@CreateConnectPeer' {} a -> s {peerAddress = a} :: CreateConnectPeer)
+
+-- | The inside IP addresses used for BGP peering.
+createConnectPeer_insideCidrBlocks :: Lens.Lens' CreateConnectPeer [Prelude.Text]
+createConnectPeer_insideCidrBlocks = Lens.lens (\CreateConnectPeer' {insideCidrBlocks} -> insideCidrBlocks) (\s@CreateConnectPeer' {} a -> s {insideCidrBlocks = a} :: CreateConnectPeer) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateConnectPeer where
+  type
+    AWSResponse CreateConnectPeer =
+      CreateConnectPeerResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateConnectPeerResponse'
+            Prelude.<$> (x Data..?> "ConnectPeer")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateConnectPeer where
+  hashWithSalt _salt CreateConnectPeer' {..} =
+    _salt
+      `Prelude.hashWithSalt` bgpOptions
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` coreNetworkAddress
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` connectAttachmentId
+      `Prelude.hashWithSalt` peerAddress
+      `Prelude.hashWithSalt` insideCidrBlocks
+
+instance Prelude.NFData CreateConnectPeer where
+  rnf CreateConnectPeer' {..} =
+    Prelude.rnf bgpOptions
+      `Prelude.seq` Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf coreNetworkAddress
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf connectAttachmentId
+      `Prelude.seq` Prelude.rnf peerAddress
+      `Prelude.seq` Prelude.rnf insideCidrBlocks
+
+instance Data.ToHeaders CreateConnectPeer where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateConnectPeer where
+  toJSON CreateConnectPeer' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BgpOptions" Data..=) Prelude.<$> bgpOptions,
+            ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("CoreNetworkAddress" Data..=)
+              Prelude.<$> coreNetworkAddress,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("ConnectAttachmentId" Data..= connectAttachmentId),
+            Prelude.Just ("PeerAddress" Data..= peerAddress),
+            Prelude.Just
+              ("InsideCidrBlocks" Data..= insideCidrBlocks)
+          ]
+      )
+
+instance Data.ToPath CreateConnectPeer where
+  toPath = Prelude.const "/connect-peers"
+
+instance Data.ToQuery CreateConnectPeer where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateConnectPeerResponse' smart constructor.
+data CreateConnectPeerResponse = CreateConnectPeerResponse'
+  { -- | The response to the request.
+    connectPeer :: Prelude.Maybe ConnectPeer,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateConnectPeerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectPeer', 'createConnectPeerResponse_connectPeer' - The response to the request.
+--
+-- 'httpStatus', 'createConnectPeerResponse_httpStatus' - The response's http status code.
+newCreateConnectPeerResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateConnectPeerResponse
+newCreateConnectPeerResponse pHttpStatus_ =
+  CreateConnectPeerResponse'
+    { connectPeer =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The response to the request.
+createConnectPeerResponse_connectPeer :: Lens.Lens' CreateConnectPeerResponse (Prelude.Maybe ConnectPeer)
+createConnectPeerResponse_connectPeer = Lens.lens (\CreateConnectPeerResponse' {connectPeer} -> connectPeer) (\s@CreateConnectPeerResponse' {} a -> s {connectPeer = a} :: CreateConnectPeerResponse)
+
+-- | The response's http status code.
+createConnectPeerResponse_httpStatus :: Lens.Lens' CreateConnectPeerResponse Prelude.Int
+createConnectPeerResponse_httpStatus = Lens.lens (\CreateConnectPeerResponse' {httpStatus} -> httpStatus) (\s@CreateConnectPeerResponse' {} a -> s {httpStatus = a} :: CreateConnectPeerResponse)
+
+instance Prelude.NFData CreateConnectPeerResponse where
+  rnf CreateConnectPeerResponse' {..} =
+    Prelude.rnf connectPeer
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/CreateConnection.hs b/gen/Amazonka/NetworkManager/CreateConnection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/CreateConnection.hs
@@ -0,0 +1,270 @@
+{-# 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.NetworkManager.CreateConnection
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a connection between two devices. The devices can be a physical
+-- or virtual appliance that connects to a third-party appliance in a VPC,
+-- or a physical appliance that connects to another physical appliance in
+-- an on-premises network.
+module Amazonka.NetworkManager.CreateConnection
+  ( -- * Creating a Request
+    CreateConnection (..),
+    newCreateConnection,
+
+    -- * Request Lenses
+    createConnection_connectedLinkId,
+    createConnection_description,
+    createConnection_linkId,
+    createConnection_tags,
+    createConnection_globalNetworkId,
+    createConnection_deviceId,
+    createConnection_connectedDeviceId,
+
+    -- * Destructuring the Response
+    CreateConnectionResponse (..),
+    newCreateConnectionResponse,
+
+    -- * Response Lenses
+    createConnectionResponse_connection,
+    createConnectionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateConnection' smart constructor.
+data CreateConnection = CreateConnection'
+  { -- | The ID of the link for the second device.
+    connectedLinkId :: Prelude.Maybe Prelude.Text,
+    -- | A description of the connection.
+    --
+    -- Length Constraints: Maximum length of 256 characters.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the link for the first device.
+    linkId :: Prelude.Maybe Prelude.Text,
+    -- | The tags to apply to the resource during creation.
+    tags :: Prelude.Maybe [Tag],
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the first device in the connection.
+    deviceId :: Prelude.Text,
+    -- | The ID of the second device in the connection.
+    connectedDeviceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateConnection' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectedLinkId', 'createConnection_connectedLinkId' - The ID of the link for the second device.
+--
+-- 'description', 'createConnection_description' - A description of the connection.
+--
+-- Length Constraints: Maximum length of 256 characters.
+--
+-- 'linkId', 'createConnection_linkId' - The ID of the link for the first device.
+--
+-- 'tags', 'createConnection_tags' - The tags to apply to the resource during creation.
+--
+-- 'globalNetworkId', 'createConnection_globalNetworkId' - The ID of the global network.
+--
+-- 'deviceId', 'createConnection_deviceId' - The ID of the first device in the connection.
+--
+-- 'connectedDeviceId', 'createConnection_connectedDeviceId' - The ID of the second device in the connection.
+newCreateConnection ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'deviceId'
+  Prelude.Text ->
+  -- | 'connectedDeviceId'
+  Prelude.Text ->
+  CreateConnection
+newCreateConnection
+  pGlobalNetworkId_
+  pDeviceId_
+  pConnectedDeviceId_ =
+    CreateConnection'
+      { connectedLinkId =
+          Prelude.Nothing,
+        description = Prelude.Nothing,
+        linkId = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        globalNetworkId = pGlobalNetworkId_,
+        deviceId = pDeviceId_,
+        connectedDeviceId = pConnectedDeviceId_
+      }
+
+-- | The ID of the link for the second device.
+createConnection_connectedLinkId :: Lens.Lens' CreateConnection (Prelude.Maybe Prelude.Text)
+createConnection_connectedLinkId = Lens.lens (\CreateConnection' {connectedLinkId} -> connectedLinkId) (\s@CreateConnection' {} a -> s {connectedLinkId = a} :: CreateConnection)
+
+-- | A description of the connection.
+--
+-- Length Constraints: Maximum length of 256 characters.
+createConnection_description :: Lens.Lens' CreateConnection (Prelude.Maybe Prelude.Text)
+createConnection_description = Lens.lens (\CreateConnection' {description} -> description) (\s@CreateConnection' {} a -> s {description = a} :: CreateConnection)
+
+-- | The ID of the link for the first device.
+createConnection_linkId :: Lens.Lens' CreateConnection (Prelude.Maybe Prelude.Text)
+createConnection_linkId = Lens.lens (\CreateConnection' {linkId} -> linkId) (\s@CreateConnection' {} a -> s {linkId = a} :: CreateConnection)
+
+-- | The tags to apply to the resource during creation.
+createConnection_tags :: Lens.Lens' CreateConnection (Prelude.Maybe [Tag])
+createConnection_tags = Lens.lens (\CreateConnection' {tags} -> tags) (\s@CreateConnection' {} a -> s {tags = a} :: CreateConnection) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the global network.
+createConnection_globalNetworkId :: Lens.Lens' CreateConnection Prelude.Text
+createConnection_globalNetworkId = Lens.lens (\CreateConnection' {globalNetworkId} -> globalNetworkId) (\s@CreateConnection' {} a -> s {globalNetworkId = a} :: CreateConnection)
+
+-- | The ID of the first device in the connection.
+createConnection_deviceId :: Lens.Lens' CreateConnection Prelude.Text
+createConnection_deviceId = Lens.lens (\CreateConnection' {deviceId} -> deviceId) (\s@CreateConnection' {} a -> s {deviceId = a} :: CreateConnection)
+
+-- | The ID of the second device in the connection.
+createConnection_connectedDeviceId :: Lens.Lens' CreateConnection Prelude.Text
+createConnection_connectedDeviceId = Lens.lens (\CreateConnection' {connectedDeviceId} -> connectedDeviceId) (\s@CreateConnection' {} a -> s {connectedDeviceId = a} :: CreateConnection)
+
+instance Core.AWSRequest CreateConnection where
+  type
+    AWSResponse CreateConnection =
+      CreateConnectionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateConnectionResponse'
+            Prelude.<$> (x Data..?> "Connection")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateConnection where
+  hashWithSalt _salt CreateConnection' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectedLinkId
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` linkId
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` deviceId
+      `Prelude.hashWithSalt` connectedDeviceId
+
+instance Prelude.NFData CreateConnection where
+  rnf CreateConnection' {..} =
+    Prelude.rnf connectedLinkId
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf linkId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf deviceId
+      `Prelude.seq` Prelude.rnf connectedDeviceId
+
+instance Data.ToHeaders CreateConnection where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateConnection where
+  toJSON CreateConnection' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ConnectedLinkId" Data..=)
+              Prelude.<$> connectedLinkId,
+            ("Description" Data..=) Prelude.<$> description,
+            ("LinkId" Data..=) Prelude.<$> linkId,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("DeviceId" Data..= deviceId),
+            Prelude.Just
+              ("ConnectedDeviceId" Data..= connectedDeviceId)
+          ]
+      )
+
+instance Data.ToPath CreateConnection where
+  toPath CreateConnection' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/connections"
+      ]
+
+instance Data.ToQuery CreateConnection where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateConnectionResponse' smart constructor.
+data CreateConnectionResponse = CreateConnectionResponse'
+  { -- | Information about the connection.
+    connection :: Prelude.Maybe Connection,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateConnectionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connection', 'createConnectionResponse_connection' - Information about the connection.
+--
+-- 'httpStatus', 'createConnectionResponse_httpStatus' - The response's http status code.
+newCreateConnectionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateConnectionResponse
+newCreateConnectionResponse pHttpStatus_ =
+  CreateConnectionResponse'
+    { connection =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the connection.
+createConnectionResponse_connection :: Lens.Lens' CreateConnectionResponse (Prelude.Maybe Connection)
+createConnectionResponse_connection = Lens.lens (\CreateConnectionResponse' {connection} -> connection) (\s@CreateConnectionResponse' {} a -> s {connection = a} :: CreateConnectionResponse)
+
+-- | The response's http status code.
+createConnectionResponse_httpStatus :: Lens.Lens' CreateConnectionResponse Prelude.Int
+createConnectionResponse_httpStatus = Lens.lens (\CreateConnectionResponse' {httpStatus} -> httpStatus) (\s@CreateConnectionResponse' {} a -> s {httpStatus = a} :: CreateConnectionResponse)
+
+instance Prelude.NFData CreateConnectionResponse where
+  rnf CreateConnectionResponse' {..} =
+    Prelude.rnf connection
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/CreateCoreNetwork.hs b/gen/Amazonka/NetworkManager/CreateCoreNetwork.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/CreateCoreNetwork.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.NetworkManager.CreateCoreNetwork
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a core network as part of your global network, and optionally,
+-- with a core network policy.
+module Amazonka.NetworkManager.CreateCoreNetwork
+  ( -- * Creating a Request
+    CreateCoreNetwork (..),
+    newCreateCoreNetwork,
+
+    -- * Request Lenses
+    createCoreNetwork_clientToken,
+    createCoreNetwork_description,
+    createCoreNetwork_policyDocument,
+    createCoreNetwork_tags,
+    createCoreNetwork_globalNetworkId,
+
+    -- * Destructuring the Response
+    CreateCoreNetworkResponse (..),
+    newCreateCoreNetworkResponse,
+
+    -- * Response Lenses
+    createCoreNetworkResponse_coreNetwork,
+    createCoreNetworkResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateCoreNetwork' smart constructor.
+data CreateCoreNetwork = CreateCoreNetwork'
+  { -- | The client token associated with a core network request.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The description of a core network.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The policy document for creating a core network.
+    policyDocument :: Prelude.Maybe Prelude.Text,
+    -- | Key-value tags associated with a core network request.
+    tags :: Prelude.Maybe [Tag],
+    -- | The ID of the global network that a core network will be a part of.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateCoreNetwork' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createCoreNetwork_clientToken' - The client token associated with a core network request.
+--
+-- 'description', 'createCoreNetwork_description' - The description of a core network.
+--
+-- 'policyDocument', 'createCoreNetwork_policyDocument' - The policy document for creating a core network.
+--
+-- 'tags', 'createCoreNetwork_tags' - Key-value tags associated with a core network request.
+--
+-- 'globalNetworkId', 'createCoreNetwork_globalNetworkId' - The ID of the global network that a core network will be a part of.
+newCreateCoreNetwork ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  CreateCoreNetwork
+newCreateCoreNetwork pGlobalNetworkId_ =
+  CreateCoreNetwork'
+    { clientToken = Prelude.Nothing,
+      description = Prelude.Nothing,
+      policyDocument = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | The client token associated with a core network request.
+createCoreNetwork_clientToken :: Lens.Lens' CreateCoreNetwork (Prelude.Maybe Prelude.Text)
+createCoreNetwork_clientToken = Lens.lens (\CreateCoreNetwork' {clientToken} -> clientToken) (\s@CreateCoreNetwork' {} a -> s {clientToken = a} :: CreateCoreNetwork)
+
+-- | The description of a core network.
+createCoreNetwork_description :: Lens.Lens' CreateCoreNetwork (Prelude.Maybe Prelude.Text)
+createCoreNetwork_description = Lens.lens (\CreateCoreNetwork' {description} -> description) (\s@CreateCoreNetwork' {} a -> s {description = a} :: CreateCoreNetwork)
+
+-- | The policy document for creating a core network.
+createCoreNetwork_policyDocument :: Lens.Lens' CreateCoreNetwork (Prelude.Maybe Prelude.Text)
+createCoreNetwork_policyDocument = Lens.lens (\CreateCoreNetwork' {policyDocument} -> policyDocument) (\s@CreateCoreNetwork' {} a -> s {policyDocument = a} :: CreateCoreNetwork)
+
+-- | Key-value tags associated with a core network request.
+createCoreNetwork_tags :: Lens.Lens' CreateCoreNetwork (Prelude.Maybe [Tag])
+createCoreNetwork_tags = Lens.lens (\CreateCoreNetwork' {tags} -> tags) (\s@CreateCoreNetwork' {} a -> s {tags = a} :: CreateCoreNetwork) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the global network that a core network will be a part of.
+createCoreNetwork_globalNetworkId :: Lens.Lens' CreateCoreNetwork Prelude.Text
+createCoreNetwork_globalNetworkId = Lens.lens (\CreateCoreNetwork' {globalNetworkId} -> globalNetworkId) (\s@CreateCoreNetwork' {} a -> s {globalNetworkId = a} :: CreateCoreNetwork)
+
+instance Core.AWSRequest CreateCoreNetwork where
+  type
+    AWSResponse CreateCoreNetwork =
+      CreateCoreNetworkResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateCoreNetworkResponse'
+            Prelude.<$> (x Data..?> "CoreNetwork")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateCoreNetwork where
+  hashWithSalt _salt CreateCoreNetwork' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` policyDocument
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` globalNetworkId
+
+instance Prelude.NFData CreateCoreNetwork where
+  rnf CreateCoreNetwork' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf policyDocument
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance Data.ToHeaders CreateCoreNetwork where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateCoreNetwork where
+  toJSON CreateCoreNetwork' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("Description" Data..=) Prelude.<$> description,
+            ("PolicyDocument" Data..=)
+              Prelude.<$> policyDocument,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("GlobalNetworkId" Data..= globalNetworkId)
+          ]
+      )
+
+instance Data.ToPath CreateCoreNetwork where
+  toPath = Prelude.const "/core-networks"
+
+instance Data.ToQuery CreateCoreNetwork where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateCoreNetworkResponse' smart constructor.
+data CreateCoreNetworkResponse = CreateCoreNetworkResponse'
+  { -- | Returns details about a core network.
+    coreNetwork :: Prelude.Maybe CoreNetwork,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateCoreNetworkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetwork', 'createCoreNetworkResponse_coreNetwork' - Returns details about a core network.
+--
+-- 'httpStatus', 'createCoreNetworkResponse_httpStatus' - The response's http status code.
+newCreateCoreNetworkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateCoreNetworkResponse
+newCreateCoreNetworkResponse pHttpStatus_ =
+  CreateCoreNetworkResponse'
+    { coreNetwork =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returns details about a core network.
+createCoreNetworkResponse_coreNetwork :: Lens.Lens' CreateCoreNetworkResponse (Prelude.Maybe CoreNetwork)
+createCoreNetworkResponse_coreNetwork = Lens.lens (\CreateCoreNetworkResponse' {coreNetwork} -> coreNetwork) (\s@CreateCoreNetworkResponse' {} a -> s {coreNetwork = a} :: CreateCoreNetworkResponse)
+
+-- | The response's http status code.
+createCoreNetworkResponse_httpStatus :: Lens.Lens' CreateCoreNetworkResponse Prelude.Int
+createCoreNetworkResponse_httpStatus = Lens.lens (\CreateCoreNetworkResponse' {httpStatus} -> httpStatus) (\s@CreateCoreNetworkResponse' {} a -> s {httpStatus = a} :: CreateCoreNetworkResponse)
+
+instance Prelude.NFData CreateCoreNetworkResponse where
+  rnf CreateCoreNetworkResponse' {..} =
+    Prelude.rnf coreNetwork
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/CreateDevice.hs b/gen/Amazonka/NetworkManager/CreateDevice.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/CreateDevice.hs
@@ -0,0 +1,316 @@
+{-# 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.NetworkManager.CreateDevice
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new device in a global network. If you specify both a site ID
+-- and a location, the location of the site is used for visualization in
+-- the Network Manager console.
+module Amazonka.NetworkManager.CreateDevice
+  ( -- * Creating a Request
+    CreateDevice (..),
+    newCreateDevice,
+
+    -- * Request Lenses
+    createDevice_aWSLocation,
+    createDevice_description,
+    createDevice_location,
+    createDevice_model,
+    createDevice_serialNumber,
+    createDevice_siteId,
+    createDevice_tags,
+    createDevice_type,
+    createDevice_vendor,
+    createDevice_globalNetworkId,
+
+    -- * Destructuring the Response
+    CreateDeviceResponse (..),
+    newCreateDeviceResponse,
+
+    -- * Response Lenses
+    createDeviceResponse_device,
+    createDeviceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateDevice' smart constructor.
+data CreateDevice = CreateDevice'
+  { -- | The Amazon Web Services location of the device, if applicable. For an
+    -- on-premises device, you can omit this parameter.
+    aWSLocation :: Prelude.Maybe AWSLocation,
+    -- | A description of the device.
+    --
+    -- Constraints: Maximum length of 256 characters.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The location of the device.
+    location :: Prelude.Maybe (Data.Sensitive Location),
+    -- | The model of the device.
+    --
+    -- Constraints: Maximum length of 128 characters.
+    model :: Prelude.Maybe Prelude.Text,
+    -- | The serial number of the device.
+    --
+    -- Constraints: Maximum length of 128 characters.
+    serialNumber :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the site.
+    siteId :: Prelude.Maybe Prelude.Text,
+    -- | The tags to apply to the resource during creation.
+    tags :: Prelude.Maybe [Tag],
+    -- | The type of the device.
+    type' :: Prelude.Maybe Prelude.Text,
+    -- | The vendor of the device.
+    --
+    -- Constraints: Maximum length of 128 characters.
+    vendor :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDevice' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aWSLocation', 'createDevice_aWSLocation' - The Amazon Web Services location of the device, if applicable. For an
+-- on-premises device, you can omit this parameter.
+--
+-- 'description', 'createDevice_description' - A description of the device.
+--
+-- Constraints: Maximum length of 256 characters.
+--
+-- 'location', 'createDevice_location' - The location of the device.
+--
+-- 'model', 'createDevice_model' - The model of the device.
+--
+-- Constraints: Maximum length of 128 characters.
+--
+-- 'serialNumber', 'createDevice_serialNumber' - The serial number of the device.
+--
+-- Constraints: Maximum length of 128 characters.
+--
+-- 'siteId', 'createDevice_siteId' - The ID of the site.
+--
+-- 'tags', 'createDevice_tags' - The tags to apply to the resource during creation.
+--
+-- 'type'', 'createDevice_type' - The type of the device.
+--
+-- 'vendor', 'createDevice_vendor' - The vendor of the device.
+--
+-- Constraints: Maximum length of 128 characters.
+--
+-- 'globalNetworkId', 'createDevice_globalNetworkId' - The ID of the global network.
+newCreateDevice ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  CreateDevice
+newCreateDevice pGlobalNetworkId_ =
+  CreateDevice'
+    { aWSLocation = Prelude.Nothing,
+      description = Prelude.Nothing,
+      location = Prelude.Nothing,
+      model = Prelude.Nothing,
+      serialNumber = Prelude.Nothing,
+      siteId = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      vendor = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | The Amazon Web Services location of the device, if applicable. For an
+-- on-premises device, you can omit this parameter.
+createDevice_aWSLocation :: Lens.Lens' CreateDevice (Prelude.Maybe AWSLocation)
+createDevice_aWSLocation = Lens.lens (\CreateDevice' {aWSLocation} -> aWSLocation) (\s@CreateDevice' {} a -> s {aWSLocation = a} :: CreateDevice)
+
+-- | A description of the device.
+--
+-- Constraints: Maximum length of 256 characters.
+createDevice_description :: Lens.Lens' CreateDevice (Prelude.Maybe Prelude.Text)
+createDevice_description = Lens.lens (\CreateDevice' {description} -> description) (\s@CreateDevice' {} a -> s {description = a} :: CreateDevice)
+
+-- | The location of the device.
+createDevice_location :: Lens.Lens' CreateDevice (Prelude.Maybe Location)
+createDevice_location = Lens.lens (\CreateDevice' {location} -> location) (\s@CreateDevice' {} a -> s {location = a} :: CreateDevice) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The model of the device.
+--
+-- Constraints: Maximum length of 128 characters.
+createDevice_model :: Lens.Lens' CreateDevice (Prelude.Maybe Prelude.Text)
+createDevice_model = Lens.lens (\CreateDevice' {model} -> model) (\s@CreateDevice' {} a -> s {model = a} :: CreateDevice)
+
+-- | The serial number of the device.
+--
+-- Constraints: Maximum length of 128 characters.
+createDevice_serialNumber :: Lens.Lens' CreateDevice (Prelude.Maybe Prelude.Text)
+createDevice_serialNumber = Lens.lens (\CreateDevice' {serialNumber} -> serialNumber) (\s@CreateDevice' {} a -> s {serialNumber = a} :: CreateDevice)
+
+-- | The ID of the site.
+createDevice_siteId :: Lens.Lens' CreateDevice (Prelude.Maybe Prelude.Text)
+createDevice_siteId = Lens.lens (\CreateDevice' {siteId} -> siteId) (\s@CreateDevice' {} a -> s {siteId = a} :: CreateDevice)
+
+-- | The tags to apply to the resource during creation.
+createDevice_tags :: Lens.Lens' CreateDevice (Prelude.Maybe [Tag])
+createDevice_tags = Lens.lens (\CreateDevice' {tags} -> tags) (\s@CreateDevice' {} a -> s {tags = a} :: CreateDevice) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of the device.
+createDevice_type :: Lens.Lens' CreateDevice (Prelude.Maybe Prelude.Text)
+createDevice_type = Lens.lens (\CreateDevice' {type'} -> type') (\s@CreateDevice' {} a -> s {type' = a} :: CreateDevice)
+
+-- | The vendor of the device.
+--
+-- Constraints: Maximum length of 128 characters.
+createDevice_vendor :: Lens.Lens' CreateDevice (Prelude.Maybe Prelude.Text)
+createDevice_vendor = Lens.lens (\CreateDevice' {vendor} -> vendor) (\s@CreateDevice' {} a -> s {vendor = a} :: CreateDevice)
+
+-- | The ID of the global network.
+createDevice_globalNetworkId :: Lens.Lens' CreateDevice Prelude.Text
+createDevice_globalNetworkId = Lens.lens (\CreateDevice' {globalNetworkId} -> globalNetworkId) (\s@CreateDevice' {} a -> s {globalNetworkId = a} :: CreateDevice)
+
+instance Core.AWSRequest CreateDevice where
+  type AWSResponse CreateDevice = CreateDeviceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateDeviceResponse'
+            Prelude.<$> (x Data..?> "Device")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateDevice where
+  hashWithSalt _salt CreateDevice' {..} =
+    _salt
+      `Prelude.hashWithSalt` aWSLocation
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` location
+      `Prelude.hashWithSalt` model
+      `Prelude.hashWithSalt` serialNumber
+      `Prelude.hashWithSalt` siteId
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` vendor
+      `Prelude.hashWithSalt` globalNetworkId
+
+instance Prelude.NFData CreateDevice where
+  rnf CreateDevice' {..} =
+    Prelude.rnf aWSLocation
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf location
+      `Prelude.seq` Prelude.rnf model
+      `Prelude.seq` Prelude.rnf serialNumber
+      `Prelude.seq` Prelude.rnf siteId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf vendor
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance Data.ToHeaders CreateDevice where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateDevice where
+  toJSON CreateDevice' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AWSLocation" Data..=) Prelude.<$> aWSLocation,
+            ("Description" Data..=) Prelude.<$> description,
+            ("Location" Data..=) Prelude.<$> location,
+            ("Model" Data..=) Prelude.<$> model,
+            ("SerialNumber" Data..=) Prelude.<$> serialNumber,
+            ("SiteId" Data..=) Prelude.<$> siteId,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("Type" Data..=) Prelude.<$> type',
+            ("Vendor" Data..=) Prelude.<$> vendor
+          ]
+      )
+
+instance Data.ToPath CreateDevice where
+  toPath CreateDevice' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/devices"
+      ]
+
+instance Data.ToQuery CreateDevice where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateDeviceResponse' smart constructor.
+data CreateDeviceResponse = CreateDeviceResponse'
+  { -- | Information about the device.
+    device :: Prelude.Maybe Device,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDeviceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'device', 'createDeviceResponse_device' - Information about the device.
+--
+-- 'httpStatus', 'createDeviceResponse_httpStatus' - The response's http status code.
+newCreateDeviceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateDeviceResponse
+newCreateDeviceResponse pHttpStatus_ =
+  CreateDeviceResponse'
+    { device = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the device.
+createDeviceResponse_device :: Lens.Lens' CreateDeviceResponse (Prelude.Maybe Device)
+createDeviceResponse_device = Lens.lens (\CreateDeviceResponse' {device} -> device) (\s@CreateDeviceResponse' {} a -> s {device = a} :: CreateDeviceResponse)
+
+-- | The response's http status code.
+createDeviceResponse_httpStatus :: Lens.Lens' CreateDeviceResponse Prelude.Int
+createDeviceResponse_httpStatus = Lens.lens (\CreateDeviceResponse' {httpStatus} -> httpStatus) (\s@CreateDeviceResponse' {} a -> s {httpStatus = a} :: CreateDeviceResponse)
+
+instance Prelude.NFData CreateDeviceResponse where
+  rnf CreateDeviceResponse' {..} =
+    Prelude.rnf device
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/CreateGlobalNetwork.hs b/gen/Amazonka/NetworkManager/CreateGlobalNetwork.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/CreateGlobalNetwork.hs
@@ -0,0 +1,186 @@
+{-# 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.NetworkManager.CreateGlobalNetwork
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new, empty global network.
+module Amazonka.NetworkManager.CreateGlobalNetwork
+  ( -- * Creating a Request
+    CreateGlobalNetwork (..),
+    newCreateGlobalNetwork,
+
+    -- * Request Lenses
+    createGlobalNetwork_description,
+    createGlobalNetwork_tags,
+
+    -- * Destructuring the Response
+    CreateGlobalNetworkResponse (..),
+    newCreateGlobalNetworkResponse,
+
+    -- * Response Lenses
+    createGlobalNetworkResponse_globalNetwork,
+    createGlobalNetworkResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateGlobalNetwork' smart constructor.
+data CreateGlobalNetwork = CreateGlobalNetwork'
+  { -- | A description of the global network.
+    --
+    -- Constraints: Maximum length of 256 characters.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The tags to apply to the resource during creation.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateGlobalNetwork' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createGlobalNetwork_description' - A description of the global network.
+--
+-- Constraints: Maximum length of 256 characters.
+--
+-- 'tags', 'createGlobalNetwork_tags' - The tags to apply to the resource during creation.
+newCreateGlobalNetwork ::
+  CreateGlobalNetwork
+newCreateGlobalNetwork =
+  CreateGlobalNetwork'
+    { description = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | A description of the global network.
+--
+-- Constraints: Maximum length of 256 characters.
+createGlobalNetwork_description :: Lens.Lens' CreateGlobalNetwork (Prelude.Maybe Prelude.Text)
+createGlobalNetwork_description = Lens.lens (\CreateGlobalNetwork' {description} -> description) (\s@CreateGlobalNetwork' {} a -> s {description = a} :: CreateGlobalNetwork)
+
+-- | The tags to apply to the resource during creation.
+createGlobalNetwork_tags :: Lens.Lens' CreateGlobalNetwork (Prelude.Maybe [Tag])
+createGlobalNetwork_tags = Lens.lens (\CreateGlobalNetwork' {tags} -> tags) (\s@CreateGlobalNetwork' {} a -> s {tags = a} :: CreateGlobalNetwork) Prelude.. Lens.mapping Lens.coerced
+
+instance Core.AWSRequest CreateGlobalNetwork where
+  type
+    AWSResponse CreateGlobalNetwork =
+      CreateGlobalNetworkResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateGlobalNetworkResponse'
+            Prelude.<$> (x Data..?> "GlobalNetwork")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateGlobalNetwork where
+  hashWithSalt _salt CreateGlobalNetwork' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData CreateGlobalNetwork where
+  rnf CreateGlobalNetwork' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders CreateGlobalNetwork where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateGlobalNetwork where
+  toJSON CreateGlobalNetwork' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("Tags" Data..=) Prelude.<$> tags
+          ]
+      )
+
+instance Data.ToPath CreateGlobalNetwork where
+  toPath = Prelude.const "/global-networks"
+
+instance Data.ToQuery CreateGlobalNetwork where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateGlobalNetworkResponse' smart constructor.
+data CreateGlobalNetworkResponse = CreateGlobalNetworkResponse'
+  { -- | Information about the global network object.
+    globalNetwork :: Prelude.Maybe GlobalNetwork,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateGlobalNetworkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetwork', 'createGlobalNetworkResponse_globalNetwork' - Information about the global network object.
+--
+-- 'httpStatus', 'createGlobalNetworkResponse_httpStatus' - The response's http status code.
+newCreateGlobalNetworkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateGlobalNetworkResponse
+newCreateGlobalNetworkResponse pHttpStatus_ =
+  CreateGlobalNetworkResponse'
+    { globalNetwork =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the global network object.
+createGlobalNetworkResponse_globalNetwork :: Lens.Lens' CreateGlobalNetworkResponse (Prelude.Maybe GlobalNetwork)
+createGlobalNetworkResponse_globalNetwork = Lens.lens (\CreateGlobalNetworkResponse' {globalNetwork} -> globalNetwork) (\s@CreateGlobalNetworkResponse' {} a -> s {globalNetwork = a} :: CreateGlobalNetworkResponse)
+
+-- | The response's http status code.
+createGlobalNetworkResponse_httpStatus :: Lens.Lens' CreateGlobalNetworkResponse Prelude.Int
+createGlobalNetworkResponse_httpStatus = Lens.lens (\CreateGlobalNetworkResponse' {httpStatus} -> httpStatus) (\s@CreateGlobalNetworkResponse' {} a -> s {httpStatus = a} :: CreateGlobalNetworkResponse)
+
+instance Prelude.NFData CreateGlobalNetworkResponse where
+  rnf CreateGlobalNetworkResponse' {..} =
+    Prelude.rnf globalNetwork
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/CreateLink.hs b/gen/Amazonka/NetworkManager/CreateLink.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/CreateLink.hs
@@ -0,0 +1,276 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.CreateLink
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new link for a specified site.
+module Amazonka.NetworkManager.CreateLink
+  ( -- * Creating a Request
+    CreateLink (..),
+    newCreateLink,
+
+    -- * Request Lenses
+    createLink_description,
+    createLink_provider,
+    createLink_tags,
+    createLink_type,
+    createLink_globalNetworkId,
+    createLink_bandwidth,
+    createLink_siteId,
+
+    -- * Destructuring the Response
+    CreateLinkResponse (..),
+    newCreateLinkResponse,
+
+    -- * Response Lenses
+    createLinkResponse_link,
+    createLinkResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateLink' smart constructor.
+data CreateLink = CreateLink'
+  { -- | A description of the link.
+    --
+    -- Constraints: Maximum length of 256 characters.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The provider of the link.
+    --
+    -- Constraints: Maximum length of 128 characters. Cannot include the
+    -- following characters: | \\ ^
+    provider :: Prelude.Maybe Prelude.Text,
+    -- | The tags to apply to the resource during creation.
+    tags :: Prelude.Maybe [Tag],
+    -- | The type of the link.
+    --
+    -- Constraints: Maximum length of 128 characters. Cannot include the
+    -- following characters: | \\ ^
+    type' :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The upload speed and download speed in Mbps.
+    bandwidth :: Bandwidth,
+    -- | The ID of the site.
+    siteId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateLink' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createLink_description' - A description of the link.
+--
+-- Constraints: Maximum length of 256 characters.
+--
+-- 'provider', 'createLink_provider' - The provider of the link.
+--
+-- Constraints: Maximum length of 128 characters. Cannot include the
+-- following characters: | \\ ^
+--
+-- 'tags', 'createLink_tags' - The tags to apply to the resource during creation.
+--
+-- 'type'', 'createLink_type' - The type of the link.
+--
+-- Constraints: Maximum length of 128 characters. Cannot include the
+-- following characters: | \\ ^
+--
+-- 'globalNetworkId', 'createLink_globalNetworkId' - The ID of the global network.
+--
+-- 'bandwidth', 'createLink_bandwidth' - The upload speed and download speed in Mbps.
+--
+-- 'siteId', 'createLink_siteId' - The ID of the site.
+newCreateLink ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'bandwidth'
+  Bandwidth ->
+  -- | 'siteId'
+  Prelude.Text ->
+  CreateLink
+newCreateLink pGlobalNetworkId_ pBandwidth_ pSiteId_ =
+  CreateLink'
+    { description = Prelude.Nothing,
+      provider = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_,
+      bandwidth = pBandwidth_,
+      siteId = pSiteId_
+    }
+
+-- | A description of the link.
+--
+-- Constraints: Maximum length of 256 characters.
+createLink_description :: Lens.Lens' CreateLink (Prelude.Maybe Prelude.Text)
+createLink_description = Lens.lens (\CreateLink' {description} -> description) (\s@CreateLink' {} a -> s {description = a} :: CreateLink)
+
+-- | The provider of the link.
+--
+-- Constraints: Maximum length of 128 characters. Cannot include the
+-- following characters: | \\ ^
+createLink_provider :: Lens.Lens' CreateLink (Prelude.Maybe Prelude.Text)
+createLink_provider = Lens.lens (\CreateLink' {provider} -> provider) (\s@CreateLink' {} a -> s {provider = a} :: CreateLink)
+
+-- | The tags to apply to the resource during creation.
+createLink_tags :: Lens.Lens' CreateLink (Prelude.Maybe [Tag])
+createLink_tags = Lens.lens (\CreateLink' {tags} -> tags) (\s@CreateLink' {} a -> s {tags = a} :: CreateLink) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of the link.
+--
+-- Constraints: Maximum length of 128 characters. Cannot include the
+-- following characters: | \\ ^
+createLink_type :: Lens.Lens' CreateLink (Prelude.Maybe Prelude.Text)
+createLink_type = Lens.lens (\CreateLink' {type'} -> type') (\s@CreateLink' {} a -> s {type' = a} :: CreateLink)
+
+-- | The ID of the global network.
+createLink_globalNetworkId :: Lens.Lens' CreateLink Prelude.Text
+createLink_globalNetworkId = Lens.lens (\CreateLink' {globalNetworkId} -> globalNetworkId) (\s@CreateLink' {} a -> s {globalNetworkId = a} :: CreateLink)
+
+-- | The upload speed and download speed in Mbps.
+createLink_bandwidth :: Lens.Lens' CreateLink Bandwidth
+createLink_bandwidth = Lens.lens (\CreateLink' {bandwidth} -> bandwidth) (\s@CreateLink' {} a -> s {bandwidth = a} :: CreateLink)
+
+-- | The ID of the site.
+createLink_siteId :: Lens.Lens' CreateLink Prelude.Text
+createLink_siteId = Lens.lens (\CreateLink' {siteId} -> siteId) (\s@CreateLink' {} a -> s {siteId = a} :: CreateLink)
+
+instance Core.AWSRequest CreateLink where
+  type AWSResponse CreateLink = CreateLinkResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateLinkResponse'
+            Prelude.<$> (x Data..?> "Link")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateLink where
+  hashWithSalt _salt CreateLink' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` provider
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` bandwidth
+      `Prelude.hashWithSalt` siteId
+
+instance Prelude.NFData CreateLink where
+  rnf CreateLink' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf provider
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf bandwidth
+      `Prelude.seq` Prelude.rnf siteId
+
+instance Data.ToHeaders CreateLink where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateLink where
+  toJSON CreateLink' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("Provider" Data..=) Prelude.<$> provider,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("Type" Data..=) Prelude.<$> type',
+            Prelude.Just ("Bandwidth" Data..= bandwidth),
+            Prelude.Just ("SiteId" Data..= siteId)
+          ]
+      )
+
+instance Data.ToPath CreateLink where
+  toPath CreateLink' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/links"
+      ]
+
+instance Data.ToQuery CreateLink where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateLinkResponse' smart constructor.
+data CreateLinkResponse = CreateLinkResponse'
+  { -- | Information about the link.
+    link :: Prelude.Maybe Link,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateLinkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'link', 'createLinkResponse_link' - Information about the link.
+--
+-- 'httpStatus', 'createLinkResponse_httpStatus' - The response's http status code.
+newCreateLinkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateLinkResponse
+newCreateLinkResponse pHttpStatus_ =
+  CreateLinkResponse'
+    { link = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the link.
+createLinkResponse_link :: Lens.Lens' CreateLinkResponse (Prelude.Maybe Link)
+createLinkResponse_link = Lens.lens (\CreateLinkResponse' {link} -> link) (\s@CreateLinkResponse' {} a -> s {link = a} :: CreateLinkResponse)
+
+-- | The response's http status code.
+createLinkResponse_httpStatus :: Lens.Lens' CreateLinkResponse Prelude.Int
+createLinkResponse_httpStatus = Lens.lens (\CreateLinkResponse' {httpStatus} -> httpStatus) (\s@CreateLinkResponse' {} a -> s {httpStatus = a} :: CreateLinkResponse)
+
+instance Prelude.NFData CreateLinkResponse where
+  rnf CreateLinkResponse' {..} =
+    Prelude.rnf link
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/CreateSite.hs b/gen/Amazonka/NetworkManager/CreateSite.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/CreateSite.hs
@@ -0,0 +1,239 @@
+{-# 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.NetworkManager.CreateSite
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new site in a global network.
+module Amazonka.NetworkManager.CreateSite
+  ( -- * Creating a Request
+    CreateSite (..),
+    newCreateSite,
+
+    -- * Request Lenses
+    createSite_description,
+    createSite_location,
+    createSite_tags,
+    createSite_globalNetworkId,
+
+    -- * Destructuring the Response
+    CreateSiteResponse (..),
+    newCreateSiteResponse,
+
+    -- * Response Lenses
+    createSiteResponse_site,
+    createSiteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateSite' smart constructor.
+data CreateSite = CreateSite'
+  { -- | A description of your site.
+    --
+    -- Constraints: Maximum length of 256 characters.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The site location. This information is used for visualization in the
+    -- Network Manager console. If you specify the address, the latitude and
+    -- longitude are automatically calculated.
+    --
+    -- -   @Address@: The physical address of the site.
+    --
+    -- -   @Latitude@: The latitude of the site.
+    --
+    -- -   @Longitude@: The longitude of the site.
+    location :: Prelude.Maybe (Data.Sensitive Location),
+    -- | The tags to apply to the resource during creation.
+    tags :: Prelude.Maybe [Tag],
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSite' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createSite_description' - A description of your site.
+--
+-- Constraints: Maximum length of 256 characters.
+--
+-- 'location', 'createSite_location' - The site location. This information is used for visualization in the
+-- Network Manager console. If you specify the address, the latitude and
+-- longitude are automatically calculated.
+--
+-- -   @Address@: The physical address of the site.
+--
+-- -   @Latitude@: The latitude of the site.
+--
+-- -   @Longitude@: The longitude of the site.
+--
+-- 'tags', 'createSite_tags' - The tags to apply to the resource during creation.
+--
+-- 'globalNetworkId', 'createSite_globalNetworkId' - The ID of the global network.
+newCreateSite ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  CreateSite
+newCreateSite pGlobalNetworkId_ =
+  CreateSite'
+    { description = Prelude.Nothing,
+      location = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | A description of your site.
+--
+-- Constraints: Maximum length of 256 characters.
+createSite_description :: Lens.Lens' CreateSite (Prelude.Maybe Prelude.Text)
+createSite_description = Lens.lens (\CreateSite' {description} -> description) (\s@CreateSite' {} a -> s {description = a} :: CreateSite)
+
+-- | The site location. This information is used for visualization in the
+-- Network Manager console. If you specify the address, the latitude and
+-- longitude are automatically calculated.
+--
+-- -   @Address@: The physical address of the site.
+--
+-- -   @Latitude@: The latitude of the site.
+--
+-- -   @Longitude@: The longitude of the site.
+createSite_location :: Lens.Lens' CreateSite (Prelude.Maybe Location)
+createSite_location = Lens.lens (\CreateSite' {location} -> location) (\s@CreateSite' {} a -> s {location = a} :: CreateSite) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The tags to apply to the resource during creation.
+createSite_tags :: Lens.Lens' CreateSite (Prelude.Maybe [Tag])
+createSite_tags = Lens.lens (\CreateSite' {tags} -> tags) (\s@CreateSite' {} a -> s {tags = a} :: CreateSite) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the global network.
+createSite_globalNetworkId :: Lens.Lens' CreateSite Prelude.Text
+createSite_globalNetworkId = Lens.lens (\CreateSite' {globalNetworkId} -> globalNetworkId) (\s@CreateSite' {} a -> s {globalNetworkId = a} :: CreateSite)
+
+instance Core.AWSRequest CreateSite where
+  type AWSResponse CreateSite = CreateSiteResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateSiteResponse'
+            Prelude.<$> (x Data..?> "Site")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateSite where
+  hashWithSalt _salt CreateSite' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` location
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` globalNetworkId
+
+instance Prelude.NFData CreateSite where
+  rnf CreateSite' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf location
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance Data.ToHeaders CreateSite where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateSite where
+  toJSON CreateSite' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("Location" Data..=) Prelude.<$> location,
+            ("Tags" Data..=) Prelude.<$> tags
+          ]
+      )
+
+instance Data.ToPath CreateSite where
+  toPath CreateSite' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/sites"
+      ]
+
+instance Data.ToQuery CreateSite where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateSiteResponse' smart constructor.
+data CreateSiteResponse = CreateSiteResponse'
+  { -- | Information about the site.
+    site :: Prelude.Maybe Site,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSiteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'site', 'createSiteResponse_site' - Information about the site.
+--
+-- 'httpStatus', 'createSiteResponse_httpStatus' - The response's http status code.
+newCreateSiteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateSiteResponse
+newCreateSiteResponse pHttpStatus_ =
+  CreateSiteResponse'
+    { site = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the site.
+createSiteResponse_site :: Lens.Lens' CreateSiteResponse (Prelude.Maybe Site)
+createSiteResponse_site = Lens.lens (\CreateSiteResponse' {site} -> site) (\s@CreateSiteResponse' {} a -> s {site = a} :: CreateSiteResponse)
+
+-- | The response's http status code.
+createSiteResponse_httpStatus :: Lens.Lens' CreateSiteResponse Prelude.Int
+createSiteResponse_httpStatus = Lens.lens (\CreateSiteResponse' {httpStatus} -> httpStatus) (\s@CreateSiteResponse' {} a -> s {httpStatus = a} :: CreateSiteResponse)
+
+instance Prelude.NFData CreateSiteResponse where
+  rnf CreateSiteResponse' {..} =
+    Prelude.rnf site
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/CreateSiteToSiteVpnAttachment.hs b/gen/Amazonka/NetworkManager/CreateSiteToSiteVpnAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/CreateSiteToSiteVpnAttachment.hs
@@ -0,0 +1,228 @@
+{-# 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.NetworkManager.CreateSiteToSiteVpnAttachment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Amazon Web Services site-to-site VPN attachment on an edge
+-- location of a core network.
+module Amazonka.NetworkManager.CreateSiteToSiteVpnAttachment
+  ( -- * Creating a Request
+    CreateSiteToSiteVpnAttachment (..),
+    newCreateSiteToSiteVpnAttachment,
+
+    -- * Request Lenses
+    createSiteToSiteVpnAttachment_clientToken,
+    createSiteToSiteVpnAttachment_tags,
+    createSiteToSiteVpnAttachment_coreNetworkId,
+    createSiteToSiteVpnAttachment_vpnConnectionArn,
+
+    -- * Destructuring the Response
+    CreateSiteToSiteVpnAttachmentResponse (..),
+    newCreateSiteToSiteVpnAttachmentResponse,
+
+    -- * Response Lenses
+    createSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment,
+    createSiteToSiteVpnAttachmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateSiteToSiteVpnAttachment' smart constructor.
+data CreateSiteToSiteVpnAttachment = CreateSiteToSiteVpnAttachment'
+  { -- | The client token associated with the request.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The tags associated with the request.
+    tags :: Prelude.Maybe [Tag],
+    -- | The ID of a core network where you\'re creating a site-to-site VPN
+    -- attachment.
+    coreNetworkId :: Prelude.Text,
+    -- | The ARN identifying the VPN attachment.
+    vpnConnectionArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSiteToSiteVpnAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createSiteToSiteVpnAttachment_clientToken' - The client token associated with the request.
+--
+-- 'tags', 'createSiteToSiteVpnAttachment_tags' - The tags associated with the request.
+--
+-- 'coreNetworkId', 'createSiteToSiteVpnAttachment_coreNetworkId' - The ID of a core network where you\'re creating a site-to-site VPN
+-- attachment.
+--
+-- 'vpnConnectionArn', 'createSiteToSiteVpnAttachment_vpnConnectionArn' - The ARN identifying the VPN attachment.
+newCreateSiteToSiteVpnAttachment ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  -- | 'vpnConnectionArn'
+  Prelude.Text ->
+  CreateSiteToSiteVpnAttachment
+newCreateSiteToSiteVpnAttachment
+  pCoreNetworkId_
+  pVpnConnectionArn_ =
+    CreateSiteToSiteVpnAttachment'
+      { clientToken =
+          Prelude.Nothing,
+        tags = Prelude.Nothing,
+        coreNetworkId = pCoreNetworkId_,
+        vpnConnectionArn = pVpnConnectionArn_
+      }
+
+-- | The client token associated with the request.
+createSiteToSiteVpnAttachment_clientToken :: Lens.Lens' CreateSiteToSiteVpnAttachment (Prelude.Maybe Prelude.Text)
+createSiteToSiteVpnAttachment_clientToken = Lens.lens (\CreateSiteToSiteVpnAttachment' {clientToken} -> clientToken) (\s@CreateSiteToSiteVpnAttachment' {} a -> s {clientToken = a} :: CreateSiteToSiteVpnAttachment)
+
+-- | The tags associated with the request.
+createSiteToSiteVpnAttachment_tags :: Lens.Lens' CreateSiteToSiteVpnAttachment (Prelude.Maybe [Tag])
+createSiteToSiteVpnAttachment_tags = Lens.lens (\CreateSiteToSiteVpnAttachment' {tags} -> tags) (\s@CreateSiteToSiteVpnAttachment' {} a -> s {tags = a} :: CreateSiteToSiteVpnAttachment) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of a core network where you\'re creating a site-to-site VPN
+-- attachment.
+createSiteToSiteVpnAttachment_coreNetworkId :: Lens.Lens' CreateSiteToSiteVpnAttachment Prelude.Text
+createSiteToSiteVpnAttachment_coreNetworkId = Lens.lens (\CreateSiteToSiteVpnAttachment' {coreNetworkId} -> coreNetworkId) (\s@CreateSiteToSiteVpnAttachment' {} a -> s {coreNetworkId = a} :: CreateSiteToSiteVpnAttachment)
+
+-- | The ARN identifying the VPN attachment.
+createSiteToSiteVpnAttachment_vpnConnectionArn :: Lens.Lens' CreateSiteToSiteVpnAttachment Prelude.Text
+createSiteToSiteVpnAttachment_vpnConnectionArn = Lens.lens (\CreateSiteToSiteVpnAttachment' {vpnConnectionArn} -> vpnConnectionArn) (\s@CreateSiteToSiteVpnAttachment' {} a -> s {vpnConnectionArn = a} :: CreateSiteToSiteVpnAttachment)
+
+instance
+  Core.AWSRequest
+    CreateSiteToSiteVpnAttachment
+  where
+  type
+    AWSResponse CreateSiteToSiteVpnAttachment =
+      CreateSiteToSiteVpnAttachmentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateSiteToSiteVpnAttachmentResponse'
+            Prelude.<$> (x Data..?> "SiteToSiteVpnAttachment")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    CreateSiteToSiteVpnAttachment
+  where
+  hashWithSalt _salt CreateSiteToSiteVpnAttachment' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` vpnConnectionArn
+
+instance Prelude.NFData CreateSiteToSiteVpnAttachment where
+  rnf CreateSiteToSiteVpnAttachment' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf vpnConnectionArn
+
+instance Data.ToHeaders CreateSiteToSiteVpnAttachment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateSiteToSiteVpnAttachment where
+  toJSON CreateSiteToSiteVpnAttachment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("CoreNetworkId" Data..= coreNetworkId),
+            Prelude.Just
+              ("VpnConnectionArn" Data..= vpnConnectionArn)
+          ]
+      )
+
+instance Data.ToPath CreateSiteToSiteVpnAttachment where
+  toPath =
+    Prelude.const "/site-to-site-vpn-attachments"
+
+instance Data.ToQuery CreateSiteToSiteVpnAttachment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateSiteToSiteVpnAttachmentResponse' smart constructor.
+data CreateSiteToSiteVpnAttachmentResponse = CreateSiteToSiteVpnAttachmentResponse'
+  { -- | Details about a site-to-site VPN attachment.
+    siteToSiteVpnAttachment :: Prelude.Maybe SiteToSiteVpnAttachment,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSiteToSiteVpnAttachmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'siteToSiteVpnAttachment', 'createSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment' - Details about a site-to-site VPN attachment.
+--
+-- 'httpStatus', 'createSiteToSiteVpnAttachmentResponse_httpStatus' - The response's http status code.
+newCreateSiteToSiteVpnAttachmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateSiteToSiteVpnAttachmentResponse
+newCreateSiteToSiteVpnAttachmentResponse pHttpStatus_ =
+  CreateSiteToSiteVpnAttachmentResponse'
+    { siteToSiteVpnAttachment =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Details about a site-to-site VPN attachment.
+createSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment :: Lens.Lens' CreateSiteToSiteVpnAttachmentResponse (Prelude.Maybe SiteToSiteVpnAttachment)
+createSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment = Lens.lens (\CreateSiteToSiteVpnAttachmentResponse' {siteToSiteVpnAttachment} -> siteToSiteVpnAttachment) (\s@CreateSiteToSiteVpnAttachmentResponse' {} a -> s {siteToSiteVpnAttachment = a} :: CreateSiteToSiteVpnAttachmentResponse)
+
+-- | The response's http status code.
+createSiteToSiteVpnAttachmentResponse_httpStatus :: Lens.Lens' CreateSiteToSiteVpnAttachmentResponse Prelude.Int
+createSiteToSiteVpnAttachmentResponse_httpStatus = Lens.lens (\CreateSiteToSiteVpnAttachmentResponse' {httpStatus} -> httpStatus) (\s@CreateSiteToSiteVpnAttachmentResponse' {} a -> s {httpStatus = a} :: CreateSiteToSiteVpnAttachmentResponse)
+
+instance
+  Prelude.NFData
+    CreateSiteToSiteVpnAttachmentResponse
+  where
+  rnf CreateSiteToSiteVpnAttachmentResponse' {..} =
+    Prelude.rnf siteToSiteVpnAttachment
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/CreateTransitGatewayPeering.hs b/gen/Amazonka/NetworkManager/CreateTransitGatewayPeering.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/CreateTransitGatewayPeering.hs
@@ -0,0 +1,220 @@
+{-# 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.NetworkManager.CreateTransitGatewayPeering
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a transit gateway peering connection.
+module Amazonka.NetworkManager.CreateTransitGatewayPeering
+  ( -- * Creating a Request
+    CreateTransitGatewayPeering (..),
+    newCreateTransitGatewayPeering,
+
+    -- * Request Lenses
+    createTransitGatewayPeering_clientToken,
+    createTransitGatewayPeering_tags,
+    createTransitGatewayPeering_coreNetworkId,
+    createTransitGatewayPeering_transitGatewayArn,
+
+    -- * Destructuring the Response
+    CreateTransitGatewayPeeringResponse (..),
+    newCreateTransitGatewayPeeringResponse,
+
+    -- * Response Lenses
+    createTransitGatewayPeeringResponse_transitGatewayPeering,
+    createTransitGatewayPeeringResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateTransitGatewayPeering' smart constructor.
+data CreateTransitGatewayPeering = CreateTransitGatewayPeering'
+  { -- | The client token associated with the request.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The list of key-value tags associated with the request.
+    tags :: Prelude.Maybe [Tag],
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Text,
+    -- | The ARN of the transit gateway for the peering request.
+    transitGatewayArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTransitGatewayPeering' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createTransitGatewayPeering_clientToken' - The client token associated with the request.
+--
+-- 'tags', 'createTransitGatewayPeering_tags' - The list of key-value tags associated with the request.
+--
+-- 'coreNetworkId', 'createTransitGatewayPeering_coreNetworkId' - The ID of a core network.
+--
+-- 'transitGatewayArn', 'createTransitGatewayPeering_transitGatewayArn' - The ARN of the transit gateway for the peering request.
+newCreateTransitGatewayPeering ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  -- | 'transitGatewayArn'
+  Prelude.Text ->
+  CreateTransitGatewayPeering
+newCreateTransitGatewayPeering
+  pCoreNetworkId_
+  pTransitGatewayArn_ =
+    CreateTransitGatewayPeering'
+      { clientToken =
+          Prelude.Nothing,
+        tags = Prelude.Nothing,
+        coreNetworkId = pCoreNetworkId_,
+        transitGatewayArn = pTransitGatewayArn_
+      }
+
+-- | The client token associated with the request.
+createTransitGatewayPeering_clientToken :: Lens.Lens' CreateTransitGatewayPeering (Prelude.Maybe Prelude.Text)
+createTransitGatewayPeering_clientToken = Lens.lens (\CreateTransitGatewayPeering' {clientToken} -> clientToken) (\s@CreateTransitGatewayPeering' {} a -> s {clientToken = a} :: CreateTransitGatewayPeering)
+
+-- | The list of key-value tags associated with the request.
+createTransitGatewayPeering_tags :: Lens.Lens' CreateTransitGatewayPeering (Prelude.Maybe [Tag])
+createTransitGatewayPeering_tags = Lens.lens (\CreateTransitGatewayPeering' {tags} -> tags) (\s@CreateTransitGatewayPeering' {} a -> s {tags = a} :: CreateTransitGatewayPeering) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of a core network.
+createTransitGatewayPeering_coreNetworkId :: Lens.Lens' CreateTransitGatewayPeering Prelude.Text
+createTransitGatewayPeering_coreNetworkId = Lens.lens (\CreateTransitGatewayPeering' {coreNetworkId} -> coreNetworkId) (\s@CreateTransitGatewayPeering' {} a -> s {coreNetworkId = a} :: CreateTransitGatewayPeering)
+
+-- | The ARN of the transit gateway for the peering request.
+createTransitGatewayPeering_transitGatewayArn :: Lens.Lens' CreateTransitGatewayPeering Prelude.Text
+createTransitGatewayPeering_transitGatewayArn = Lens.lens (\CreateTransitGatewayPeering' {transitGatewayArn} -> transitGatewayArn) (\s@CreateTransitGatewayPeering' {} a -> s {transitGatewayArn = a} :: CreateTransitGatewayPeering)
+
+instance Core.AWSRequest CreateTransitGatewayPeering where
+  type
+    AWSResponse CreateTransitGatewayPeering =
+      CreateTransitGatewayPeeringResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateTransitGatewayPeeringResponse'
+            Prelude.<$> (x Data..?> "TransitGatewayPeering")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateTransitGatewayPeering where
+  hashWithSalt _salt CreateTransitGatewayPeering' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` transitGatewayArn
+
+instance Prelude.NFData CreateTransitGatewayPeering where
+  rnf CreateTransitGatewayPeering' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf transitGatewayArn
+
+instance Data.ToHeaders CreateTransitGatewayPeering where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateTransitGatewayPeering where
+  toJSON CreateTransitGatewayPeering' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("CoreNetworkId" Data..= coreNetworkId),
+            Prelude.Just
+              ("TransitGatewayArn" Data..= transitGatewayArn)
+          ]
+      )
+
+instance Data.ToPath CreateTransitGatewayPeering where
+  toPath = Prelude.const "/transit-gateway-peerings"
+
+instance Data.ToQuery CreateTransitGatewayPeering where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateTransitGatewayPeeringResponse' smart constructor.
+data CreateTransitGatewayPeeringResponse = CreateTransitGatewayPeeringResponse'
+  { -- | Returns information about the transit gateway peering connection
+    -- request.
+    transitGatewayPeering :: Prelude.Maybe TransitGatewayPeering,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTransitGatewayPeeringResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'transitGatewayPeering', 'createTransitGatewayPeeringResponse_transitGatewayPeering' - Returns information about the transit gateway peering connection
+-- request.
+--
+-- 'httpStatus', 'createTransitGatewayPeeringResponse_httpStatus' - The response's http status code.
+newCreateTransitGatewayPeeringResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateTransitGatewayPeeringResponse
+newCreateTransitGatewayPeeringResponse pHttpStatus_ =
+  CreateTransitGatewayPeeringResponse'
+    { transitGatewayPeering =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returns information about the transit gateway peering connection
+-- request.
+createTransitGatewayPeeringResponse_transitGatewayPeering :: Lens.Lens' CreateTransitGatewayPeeringResponse (Prelude.Maybe TransitGatewayPeering)
+createTransitGatewayPeeringResponse_transitGatewayPeering = Lens.lens (\CreateTransitGatewayPeeringResponse' {transitGatewayPeering} -> transitGatewayPeering) (\s@CreateTransitGatewayPeeringResponse' {} a -> s {transitGatewayPeering = a} :: CreateTransitGatewayPeeringResponse)
+
+-- | The response's http status code.
+createTransitGatewayPeeringResponse_httpStatus :: Lens.Lens' CreateTransitGatewayPeeringResponse Prelude.Int
+createTransitGatewayPeeringResponse_httpStatus = Lens.lens (\CreateTransitGatewayPeeringResponse' {httpStatus} -> httpStatus) (\s@CreateTransitGatewayPeeringResponse' {} a -> s {httpStatus = a} :: CreateTransitGatewayPeeringResponse)
+
+instance
+  Prelude.NFData
+    CreateTransitGatewayPeeringResponse
+  where
+  rnf CreateTransitGatewayPeeringResponse' {..} =
+    Prelude.rnf transitGatewayPeering
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/CreateTransitGatewayRouteTableAttachment.hs b/gen/Amazonka/NetworkManager/CreateTransitGatewayRouteTableAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/CreateTransitGatewayRouteTableAttachment.hs
@@ -0,0 +1,251 @@
+{-# 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.NetworkManager.CreateTransitGatewayRouteTableAttachment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a transit gateway route table attachment.
+module Amazonka.NetworkManager.CreateTransitGatewayRouteTableAttachment
+  ( -- * Creating a Request
+    CreateTransitGatewayRouteTableAttachment (..),
+    newCreateTransitGatewayRouteTableAttachment,
+
+    -- * Request Lenses
+    createTransitGatewayRouteTableAttachment_clientToken,
+    createTransitGatewayRouteTableAttachment_tags,
+    createTransitGatewayRouteTableAttachment_peeringId,
+    createTransitGatewayRouteTableAttachment_transitGatewayRouteTableArn,
+
+    -- * Destructuring the Response
+    CreateTransitGatewayRouteTableAttachmentResponse (..),
+    newCreateTransitGatewayRouteTableAttachmentResponse,
+
+    -- * Response Lenses
+    createTransitGatewayRouteTableAttachmentResponse_transitGatewayRouteTableAttachment,
+    createTransitGatewayRouteTableAttachmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateTransitGatewayRouteTableAttachment' smart constructor.
+data CreateTransitGatewayRouteTableAttachment = CreateTransitGatewayRouteTableAttachment'
+  { -- | The client token associated with the request.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The list of key-value tags associated with the request.
+    tags :: Prelude.Maybe [Tag],
+    -- | The ID of the peer for the
+    peeringId :: Prelude.Text,
+    -- | The ARN of the transit gateway route table for the attachment request.
+    transitGatewayRouteTableArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTransitGatewayRouteTableAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createTransitGatewayRouteTableAttachment_clientToken' - The client token associated with the request.
+--
+-- 'tags', 'createTransitGatewayRouteTableAttachment_tags' - The list of key-value tags associated with the request.
+--
+-- 'peeringId', 'createTransitGatewayRouteTableAttachment_peeringId' - The ID of the peer for the
+--
+-- 'transitGatewayRouteTableArn', 'createTransitGatewayRouteTableAttachment_transitGatewayRouteTableArn' - The ARN of the transit gateway route table for the attachment request.
+newCreateTransitGatewayRouteTableAttachment ::
+  -- | 'peeringId'
+  Prelude.Text ->
+  -- | 'transitGatewayRouteTableArn'
+  Prelude.Text ->
+  CreateTransitGatewayRouteTableAttachment
+newCreateTransitGatewayRouteTableAttachment
+  pPeeringId_
+  pTransitGatewayRouteTableArn_ =
+    CreateTransitGatewayRouteTableAttachment'
+      { clientToken =
+          Prelude.Nothing,
+        tags = Prelude.Nothing,
+        peeringId = pPeeringId_,
+        transitGatewayRouteTableArn =
+          pTransitGatewayRouteTableArn_
+      }
+
+-- | The client token associated with the request.
+createTransitGatewayRouteTableAttachment_clientToken :: Lens.Lens' CreateTransitGatewayRouteTableAttachment (Prelude.Maybe Prelude.Text)
+createTransitGatewayRouteTableAttachment_clientToken = Lens.lens (\CreateTransitGatewayRouteTableAttachment' {clientToken} -> clientToken) (\s@CreateTransitGatewayRouteTableAttachment' {} a -> s {clientToken = a} :: CreateTransitGatewayRouteTableAttachment)
+
+-- | The list of key-value tags associated with the request.
+createTransitGatewayRouteTableAttachment_tags :: Lens.Lens' CreateTransitGatewayRouteTableAttachment (Prelude.Maybe [Tag])
+createTransitGatewayRouteTableAttachment_tags = Lens.lens (\CreateTransitGatewayRouteTableAttachment' {tags} -> tags) (\s@CreateTransitGatewayRouteTableAttachment' {} a -> s {tags = a} :: CreateTransitGatewayRouteTableAttachment) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the peer for the
+createTransitGatewayRouteTableAttachment_peeringId :: Lens.Lens' CreateTransitGatewayRouteTableAttachment Prelude.Text
+createTransitGatewayRouteTableAttachment_peeringId = Lens.lens (\CreateTransitGatewayRouteTableAttachment' {peeringId} -> peeringId) (\s@CreateTransitGatewayRouteTableAttachment' {} a -> s {peeringId = a} :: CreateTransitGatewayRouteTableAttachment)
+
+-- | The ARN of the transit gateway route table for the attachment request.
+createTransitGatewayRouteTableAttachment_transitGatewayRouteTableArn :: Lens.Lens' CreateTransitGatewayRouteTableAttachment Prelude.Text
+createTransitGatewayRouteTableAttachment_transitGatewayRouteTableArn = Lens.lens (\CreateTransitGatewayRouteTableAttachment' {transitGatewayRouteTableArn} -> transitGatewayRouteTableArn) (\s@CreateTransitGatewayRouteTableAttachment' {} a -> s {transitGatewayRouteTableArn = a} :: CreateTransitGatewayRouteTableAttachment)
+
+instance
+  Core.AWSRequest
+    CreateTransitGatewayRouteTableAttachment
+  where
+  type
+    AWSResponse
+      CreateTransitGatewayRouteTableAttachment =
+      CreateTransitGatewayRouteTableAttachmentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateTransitGatewayRouteTableAttachmentResponse'
+            Prelude.<$> (x Data..?> "TransitGatewayRouteTableAttachment")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    CreateTransitGatewayRouteTableAttachment
+  where
+  hashWithSalt
+    _salt
+    CreateTransitGatewayRouteTableAttachment' {..} =
+      _salt
+        `Prelude.hashWithSalt` clientToken
+        `Prelude.hashWithSalt` tags
+        `Prelude.hashWithSalt` peeringId
+        `Prelude.hashWithSalt` transitGatewayRouteTableArn
+
+instance
+  Prelude.NFData
+    CreateTransitGatewayRouteTableAttachment
+  where
+  rnf CreateTransitGatewayRouteTableAttachment' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf peeringId
+      `Prelude.seq` Prelude.rnf transitGatewayRouteTableArn
+
+instance
+  Data.ToHeaders
+    CreateTransitGatewayRouteTableAttachment
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    CreateTransitGatewayRouteTableAttachment
+  where
+  toJSON CreateTransitGatewayRouteTableAttachment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("PeeringId" Data..= peeringId),
+            Prelude.Just
+              ( "TransitGatewayRouteTableArn"
+                  Data..= transitGatewayRouteTableArn
+              )
+          ]
+      )
+
+instance
+  Data.ToPath
+    CreateTransitGatewayRouteTableAttachment
+  where
+  toPath =
+    Prelude.const
+      "/transit-gateway-route-table-attachments"
+
+instance
+  Data.ToQuery
+    CreateTransitGatewayRouteTableAttachment
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateTransitGatewayRouteTableAttachmentResponse' smart constructor.
+data CreateTransitGatewayRouteTableAttachmentResponse = CreateTransitGatewayRouteTableAttachmentResponse'
+  { -- | The route table associated with the create transit gateway route table
+    -- attachment request.
+    transitGatewayRouteTableAttachment :: Prelude.Maybe TransitGatewayRouteTableAttachment,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTransitGatewayRouteTableAttachmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'transitGatewayRouteTableAttachment', 'createTransitGatewayRouteTableAttachmentResponse_transitGatewayRouteTableAttachment' - The route table associated with the create transit gateway route table
+-- attachment request.
+--
+-- 'httpStatus', 'createTransitGatewayRouteTableAttachmentResponse_httpStatus' - The response's http status code.
+newCreateTransitGatewayRouteTableAttachmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateTransitGatewayRouteTableAttachmentResponse
+newCreateTransitGatewayRouteTableAttachmentResponse
+  pHttpStatus_ =
+    CreateTransitGatewayRouteTableAttachmentResponse'
+      { transitGatewayRouteTableAttachment =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The route table associated with the create transit gateway route table
+-- attachment request.
+createTransitGatewayRouteTableAttachmentResponse_transitGatewayRouteTableAttachment :: Lens.Lens' CreateTransitGatewayRouteTableAttachmentResponse (Prelude.Maybe TransitGatewayRouteTableAttachment)
+createTransitGatewayRouteTableAttachmentResponse_transitGatewayRouteTableAttachment = Lens.lens (\CreateTransitGatewayRouteTableAttachmentResponse' {transitGatewayRouteTableAttachment} -> transitGatewayRouteTableAttachment) (\s@CreateTransitGatewayRouteTableAttachmentResponse' {} a -> s {transitGatewayRouteTableAttachment = a} :: CreateTransitGatewayRouteTableAttachmentResponse)
+
+-- | The response's http status code.
+createTransitGatewayRouteTableAttachmentResponse_httpStatus :: Lens.Lens' CreateTransitGatewayRouteTableAttachmentResponse Prelude.Int
+createTransitGatewayRouteTableAttachmentResponse_httpStatus = Lens.lens (\CreateTransitGatewayRouteTableAttachmentResponse' {httpStatus} -> httpStatus) (\s@CreateTransitGatewayRouteTableAttachmentResponse' {} a -> s {httpStatus = a} :: CreateTransitGatewayRouteTableAttachmentResponse)
+
+instance
+  Prelude.NFData
+    CreateTransitGatewayRouteTableAttachmentResponse
+  where
+  rnf
+    CreateTransitGatewayRouteTableAttachmentResponse' {..} =
+      Prelude.rnf transitGatewayRouteTableAttachment
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/CreateVpcAttachment.hs b/gen/Amazonka/NetworkManager/CreateVpcAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/CreateVpcAttachment.hs
@@ -0,0 +1,236 @@
+{-# 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.NetworkManager.CreateVpcAttachment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a VPC attachment on an edge location of a core network.
+module Amazonka.NetworkManager.CreateVpcAttachment
+  ( -- * Creating a Request
+    CreateVpcAttachment (..),
+    newCreateVpcAttachment,
+
+    -- * Request Lenses
+    createVpcAttachment_clientToken,
+    createVpcAttachment_options,
+    createVpcAttachment_tags,
+    createVpcAttachment_coreNetworkId,
+    createVpcAttachment_vpcArn,
+    createVpcAttachment_subnetArns,
+
+    -- * Destructuring the Response
+    CreateVpcAttachmentResponse (..),
+    newCreateVpcAttachmentResponse,
+
+    -- * Response Lenses
+    createVpcAttachmentResponse_vpcAttachment,
+    createVpcAttachmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateVpcAttachment' smart constructor.
+data CreateVpcAttachment = CreateVpcAttachment'
+  { -- | The client token associated with the request.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | Options for the VPC attachment.
+    options :: Prelude.Maybe VpcOptions,
+    -- | The key-value tags associated with the request.
+    tags :: Prelude.Maybe [Tag],
+    -- | The ID of a core network for the VPC attachment.
+    coreNetworkId :: Prelude.Text,
+    -- | The ARN of the VPC.
+    vpcArn :: Prelude.Text,
+    -- | The subnet ARN of the VPC attachment.
+    subnetArns :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateVpcAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createVpcAttachment_clientToken' - The client token associated with the request.
+--
+-- 'options', 'createVpcAttachment_options' - Options for the VPC attachment.
+--
+-- 'tags', 'createVpcAttachment_tags' - The key-value tags associated with the request.
+--
+-- 'coreNetworkId', 'createVpcAttachment_coreNetworkId' - The ID of a core network for the VPC attachment.
+--
+-- 'vpcArn', 'createVpcAttachment_vpcArn' - The ARN of the VPC.
+--
+-- 'subnetArns', 'createVpcAttachment_subnetArns' - The subnet ARN of the VPC attachment.
+newCreateVpcAttachment ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  -- | 'vpcArn'
+  Prelude.Text ->
+  CreateVpcAttachment
+newCreateVpcAttachment pCoreNetworkId_ pVpcArn_ =
+  CreateVpcAttachment'
+    { clientToken = Prelude.Nothing,
+      options = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      coreNetworkId = pCoreNetworkId_,
+      vpcArn = pVpcArn_,
+      subnetArns = Prelude.mempty
+    }
+
+-- | The client token associated with the request.
+createVpcAttachment_clientToken :: Lens.Lens' CreateVpcAttachment (Prelude.Maybe Prelude.Text)
+createVpcAttachment_clientToken = Lens.lens (\CreateVpcAttachment' {clientToken} -> clientToken) (\s@CreateVpcAttachment' {} a -> s {clientToken = a} :: CreateVpcAttachment)
+
+-- | Options for the VPC attachment.
+createVpcAttachment_options :: Lens.Lens' CreateVpcAttachment (Prelude.Maybe VpcOptions)
+createVpcAttachment_options = Lens.lens (\CreateVpcAttachment' {options} -> options) (\s@CreateVpcAttachment' {} a -> s {options = a} :: CreateVpcAttachment)
+
+-- | The key-value tags associated with the request.
+createVpcAttachment_tags :: Lens.Lens' CreateVpcAttachment (Prelude.Maybe [Tag])
+createVpcAttachment_tags = Lens.lens (\CreateVpcAttachment' {tags} -> tags) (\s@CreateVpcAttachment' {} a -> s {tags = a} :: CreateVpcAttachment) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of a core network for the VPC attachment.
+createVpcAttachment_coreNetworkId :: Lens.Lens' CreateVpcAttachment Prelude.Text
+createVpcAttachment_coreNetworkId = Lens.lens (\CreateVpcAttachment' {coreNetworkId} -> coreNetworkId) (\s@CreateVpcAttachment' {} a -> s {coreNetworkId = a} :: CreateVpcAttachment)
+
+-- | The ARN of the VPC.
+createVpcAttachment_vpcArn :: Lens.Lens' CreateVpcAttachment Prelude.Text
+createVpcAttachment_vpcArn = Lens.lens (\CreateVpcAttachment' {vpcArn} -> vpcArn) (\s@CreateVpcAttachment' {} a -> s {vpcArn = a} :: CreateVpcAttachment)
+
+-- | The subnet ARN of the VPC attachment.
+createVpcAttachment_subnetArns :: Lens.Lens' CreateVpcAttachment [Prelude.Text]
+createVpcAttachment_subnetArns = Lens.lens (\CreateVpcAttachment' {subnetArns} -> subnetArns) (\s@CreateVpcAttachment' {} a -> s {subnetArns = a} :: CreateVpcAttachment) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateVpcAttachment where
+  type
+    AWSResponse CreateVpcAttachment =
+      CreateVpcAttachmentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateVpcAttachmentResponse'
+            Prelude.<$> (x Data..?> "VpcAttachment")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateVpcAttachment where
+  hashWithSalt _salt CreateVpcAttachment' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` options
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` vpcArn
+      `Prelude.hashWithSalt` subnetArns
+
+instance Prelude.NFData CreateVpcAttachment where
+  rnf CreateVpcAttachment' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf options
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf vpcArn
+      `Prelude.seq` Prelude.rnf subnetArns
+
+instance Data.ToHeaders CreateVpcAttachment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateVpcAttachment where
+  toJSON CreateVpcAttachment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("Options" Data..=) Prelude.<$> options,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("CoreNetworkId" Data..= coreNetworkId),
+            Prelude.Just ("VpcArn" Data..= vpcArn),
+            Prelude.Just ("SubnetArns" Data..= subnetArns)
+          ]
+      )
+
+instance Data.ToPath CreateVpcAttachment where
+  toPath = Prelude.const "/vpc-attachments"
+
+instance Data.ToQuery CreateVpcAttachment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateVpcAttachmentResponse' smart constructor.
+data CreateVpcAttachmentResponse = CreateVpcAttachmentResponse'
+  { -- | Provides details about the VPC attachment.
+    vpcAttachment :: Prelude.Maybe VpcAttachment,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateVpcAttachmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'vpcAttachment', 'createVpcAttachmentResponse_vpcAttachment' - Provides details about the VPC attachment.
+--
+-- 'httpStatus', 'createVpcAttachmentResponse_httpStatus' - The response's http status code.
+newCreateVpcAttachmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateVpcAttachmentResponse
+newCreateVpcAttachmentResponse pHttpStatus_ =
+  CreateVpcAttachmentResponse'
+    { vpcAttachment =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Provides details about the VPC attachment.
+createVpcAttachmentResponse_vpcAttachment :: Lens.Lens' CreateVpcAttachmentResponse (Prelude.Maybe VpcAttachment)
+createVpcAttachmentResponse_vpcAttachment = Lens.lens (\CreateVpcAttachmentResponse' {vpcAttachment} -> vpcAttachment) (\s@CreateVpcAttachmentResponse' {} a -> s {vpcAttachment = a} :: CreateVpcAttachmentResponse)
+
+-- | The response's http status code.
+createVpcAttachmentResponse_httpStatus :: Lens.Lens' CreateVpcAttachmentResponse Prelude.Int
+createVpcAttachmentResponse_httpStatus = Lens.lens (\CreateVpcAttachmentResponse' {httpStatus} -> httpStatus) (\s@CreateVpcAttachmentResponse' {} a -> s {httpStatus = a} :: CreateVpcAttachmentResponse)
+
+instance Prelude.NFData CreateVpcAttachmentResponse where
+  rnf CreateVpcAttachmentResponse' {..} =
+    Prelude.rnf vpcAttachment
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DeleteAttachment.hs b/gen/Amazonka/NetworkManager/DeleteAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DeleteAttachment.hs
@@ -0,0 +1,159 @@
+{-# 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.NetworkManager.DeleteAttachment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an attachment. Supports all attachment types.
+module Amazonka.NetworkManager.DeleteAttachment
+  ( -- * Creating a Request
+    DeleteAttachment (..),
+    newDeleteAttachment,
+
+    -- * Request Lenses
+    deleteAttachment_attachmentId,
+
+    -- * Destructuring the Response
+    DeleteAttachmentResponse (..),
+    newDeleteAttachmentResponse,
+
+    -- * Response Lenses
+    deleteAttachmentResponse_attachment,
+    deleteAttachmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteAttachment' smart constructor.
+data DeleteAttachment = DeleteAttachment'
+  { -- | The ID of the attachment to delete.
+    attachmentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachmentId', 'deleteAttachment_attachmentId' - The ID of the attachment to delete.
+newDeleteAttachment ::
+  -- | 'attachmentId'
+  Prelude.Text ->
+  DeleteAttachment
+newDeleteAttachment pAttachmentId_ =
+  DeleteAttachment' {attachmentId = pAttachmentId_}
+
+-- | The ID of the attachment to delete.
+deleteAttachment_attachmentId :: Lens.Lens' DeleteAttachment Prelude.Text
+deleteAttachment_attachmentId = Lens.lens (\DeleteAttachment' {attachmentId} -> attachmentId) (\s@DeleteAttachment' {} a -> s {attachmentId = a} :: DeleteAttachment)
+
+instance Core.AWSRequest DeleteAttachment where
+  type
+    AWSResponse DeleteAttachment =
+      DeleteAttachmentResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteAttachmentResponse'
+            Prelude.<$> (x Data..?> "Attachment")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteAttachment where
+  hashWithSalt _salt DeleteAttachment' {..} =
+    _salt `Prelude.hashWithSalt` attachmentId
+
+instance Prelude.NFData DeleteAttachment where
+  rnf DeleteAttachment' {..} = Prelude.rnf attachmentId
+
+instance Data.ToHeaders DeleteAttachment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteAttachment where
+  toPath DeleteAttachment' {..} =
+    Prelude.mconcat
+      ["/attachments/", Data.toBS attachmentId]
+
+instance Data.ToQuery DeleteAttachment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteAttachmentResponse' smart constructor.
+data DeleteAttachmentResponse = DeleteAttachmentResponse'
+  { -- | Information about the deleted attachment.
+    attachment :: Prelude.Maybe Attachment,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteAttachmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachment', 'deleteAttachmentResponse_attachment' - Information about the deleted attachment.
+--
+-- 'httpStatus', 'deleteAttachmentResponse_httpStatus' - The response's http status code.
+newDeleteAttachmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteAttachmentResponse
+newDeleteAttachmentResponse pHttpStatus_ =
+  DeleteAttachmentResponse'
+    { attachment =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the deleted attachment.
+deleteAttachmentResponse_attachment :: Lens.Lens' DeleteAttachmentResponse (Prelude.Maybe Attachment)
+deleteAttachmentResponse_attachment = Lens.lens (\DeleteAttachmentResponse' {attachment} -> attachment) (\s@DeleteAttachmentResponse' {} a -> s {attachment = a} :: DeleteAttachmentResponse)
+
+-- | The response's http status code.
+deleteAttachmentResponse_httpStatus :: Lens.Lens' DeleteAttachmentResponse Prelude.Int
+deleteAttachmentResponse_httpStatus = Lens.lens (\DeleteAttachmentResponse' {httpStatus} -> httpStatus) (\s@DeleteAttachmentResponse' {} a -> s {httpStatus = a} :: DeleteAttachmentResponse)
+
+instance Prelude.NFData DeleteAttachmentResponse where
+  rnf DeleteAttachmentResponse' {..} =
+    Prelude.rnf attachment
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DeleteConnectPeer.hs b/gen/Amazonka/NetworkManager/DeleteConnectPeer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DeleteConnectPeer.hs
@@ -0,0 +1,160 @@
+{-# 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.NetworkManager.DeleteConnectPeer
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a Connect peer.
+module Amazonka.NetworkManager.DeleteConnectPeer
+  ( -- * Creating a Request
+    DeleteConnectPeer (..),
+    newDeleteConnectPeer,
+
+    -- * Request Lenses
+    deleteConnectPeer_connectPeerId,
+
+    -- * Destructuring the Response
+    DeleteConnectPeerResponse (..),
+    newDeleteConnectPeerResponse,
+
+    -- * Response Lenses
+    deleteConnectPeerResponse_connectPeer,
+    deleteConnectPeerResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteConnectPeer' smart constructor.
+data DeleteConnectPeer = DeleteConnectPeer'
+  { -- | The ID of the deleted Connect peer.
+    connectPeerId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteConnectPeer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectPeerId', 'deleteConnectPeer_connectPeerId' - The ID of the deleted Connect peer.
+newDeleteConnectPeer ::
+  -- | 'connectPeerId'
+  Prelude.Text ->
+  DeleteConnectPeer
+newDeleteConnectPeer pConnectPeerId_ =
+  DeleteConnectPeer' {connectPeerId = pConnectPeerId_}
+
+-- | The ID of the deleted Connect peer.
+deleteConnectPeer_connectPeerId :: Lens.Lens' DeleteConnectPeer Prelude.Text
+deleteConnectPeer_connectPeerId = Lens.lens (\DeleteConnectPeer' {connectPeerId} -> connectPeerId) (\s@DeleteConnectPeer' {} a -> s {connectPeerId = a} :: DeleteConnectPeer)
+
+instance Core.AWSRequest DeleteConnectPeer where
+  type
+    AWSResponse DeleteConnectPeer =
+      DeleteConnectPeerResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteConnectPeerResponse'
+            Prelude.<$> (x Data..?> "ConnectPeer")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteConnectPeer where
+  hashWithSalt _salt DeleteConnectPeer' {..} =
+    _salt `Prelude.hashWithSalt` connectPeerId
+
+instance Prelude.NFData DeleteConnectPeer where
+  rnf DeleteConnectPeer' {..} =
+    Prelude.rnf connectPeerId
+
+instance Data.ToHeaders DeleteConnectPeer where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteConnectPeer where
+  toPath DeleteConnectPeer' {..} =
+    Prelude.mconcat
+      ["/connect-peers/", Data.toBS connectPeerId]
+
+instance Data.ToQuery DeleteConnectPeer where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteConnectPeerResponse' smart constructor.
+data DeleteConnectPeerResponse = DeleteConnectPeerResponse'
+  { -- | Information about the deleted Connect peer.
+    connectPeer :: Prelude.Maybe ConnectPeer,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteConnectPeerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectPeer', 'deleteConnectPeerResponse_connectPeer' - Information about the deleted Connect peer.
+--
+-- 'httpStatus', 'deleteConnectPeerResponse_httpStatus' - The response's http status code.
+newDeleteConnectPeerResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteConnectPeerResponse
+newDeleteConnectPeerResponse pHttpStatus_ =
+  DeleteConnectPeerResponse'
+    { connectPeer =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the deleted Connect peer.
+deleteConnectPeerResponse_connectPeer :: Lens.Lens' DeleteConnectPeerResponse (Prelude.Maybe ConnectPeer)
+deleteConnectPeerResponse_connectPeer = Lens.lens (\DeleteConnectPeerResponse' {connectPeer} -> connectPeer) (\s@DeleteConnectPeerResponse' {} a -> s {connectPeer = a} :: DeleteConnectPeerResponse)
+
+-- | The response's http status code.
+deleteConnectPeerResponse_httpStatus :: Lens.Lens' DeleteConnectPeerResponse Prelude.Int
+deleteConnectPeerResponse_httpStatus = Lens.lens (\DeleteConnectPeerResponse' {httpStatus} -> httpStatus) (\s@DeleteConnectPeerResponse' {} a -> s {httpStatus = a} :: DeleteConnectPeerResponse)
+
+instance Prelude.NFData DeleteConnectPeerResponse where
+  rnf DeleteConnectPeerResponse' {..} =
+    Prelude.rnf connectPeer
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DeleteConnection.hs b/gen/Amazonka/NetworkManager/DeleteConnection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DeleteConnection.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.NetworkManager.DeleteConnection
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified connection in your global network.
+module Amazonka.NetworkManager.DeleteConnection
+  ( -- * Creating a Request
+    DeleteConnection (..),
+    newDeleteConnection,
+
+    -- * Request Lenses
+    deleteConnection_globalNetworkId,
+    deleteConnection_connectionId,
+
+    -- * Destructuring the Response
+    DeleteConnectionResponse (..),
+    newDeleteConnectionResponse,
+
+    -- * Response Lenses
+    deleteConnectionResponse_connection,
+    deleteConnectionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteConnection' smart constructor.
+data DeleteConnection = DeleteConnection'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the connection.
+    connectionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteConnection' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'deleteConnection_globalNetworkId' - The ID of the global network.
+--
+-- 'connectionId', 'deleteConnection_connectionId' - The ID of the connection.
+newDeleteConnection ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'connectionId'
+  Prelude.Text ->
+  DeleteConnection
+newDeleteConnection pGlobalNetworkId_ pConnectionId_ =
+  DeleteConnection'
+    { globalNetworkId =
+        pGlobalNetworkId_,
+      connectionId = pConnectionId_
+    }
+
+-- | The ID of the global network.
+deleteConnection_globalNetworkId :: Lens.Lens' DeleteConnection Prelude.Text
+deleteConnection_globalNetworkId = Lens.lens (\DeleteConnection' {globalNetworkId} -> globalNetworkId) (\s@DeleteConnection' {} a -> s {globalNetworkId = a} :: DeleteConnection)
+
+-- | The ID of the connection.
+deleteConnection_connectionId :: Lens.Lens' DeleteConnection Prelude.Text
+deleteConnection_connectionId = Lens.lens (\DeleteConnection' {connectionId} -> connectionId) (\s@DeleteConnection' {} a -> s {connectionId = a} :: DeleteConnection)
+
+instance Core.AWSRequest DeleteConnection where
+  type
+    AWSResponse DeleteConnection =
+      DeleteConnectionResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteConnectionResponse'
+            Prelude.<$> (x Data..?> "Connection")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteConnection where
+  hashWithSalt _salt DeleteConnection' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` connectionId
+
+instance Prelude.NFData DeleteConnection where
+  rnf DeleteConnection' {..} =
+    Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf connectionId
+
+instance Data.ToHeaders DeleteConnection where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteConnection where
+  toPath DeleteConnection' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/connections/",
+        Data.toBS connectionId
+      ]
+
+instance Data.ToQuery DeleteConnection where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteConnectionResponse' smart constructor.
+data DeleteConnectionResponse = DeleteConnectionResponse'
+  { -- | Information about the connection.
+    connection :: Prelude.Maybe Connection,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteConnectionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connection', 'deleteConnectionResponse_connection' - Information about the connection.
+--
+-- 'httpStatus', 'deleteConnectionResponse_httpStatus' - The response's http status code.
+newDeleteConnectionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteConnectionResponse
+newDeleteConnectionResponse pHttpStatus_ =
+  DeleteConnectionResponse'
+    { connection =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the connection.
+deleteConnectionResponse_connection :: Lens.Lens' DeleteConnectionResponse (Prelude.Maybe Connection)
+deleteConnectionResponse_connection = Lens.lens (\DeleteConnectionResponse' {connection} -> connection) (\s@DeleteConnectionResponse' {} a -> s {connection = a} :: DeleteConnectionResponse)
+
+-- | The response's http status code.
+deleteConnectionResponse_httpStatus :: Lens.Lens' DeleteConnectionResponse Prelude.Int
+deleteConnectionResponse_httpStatus = Lens.lens (\DeleteConnectionResponse' {httpStatus} -> httpStatus) (\s@DeleteConnectionResponse' {} a -> s {httpStatus = a} :: DeleteConnectionResponse)
+
+instance Prelude.NFData DeleteConnectionResponse where
+  rnf DeleteConnectionResponse' {..} =
+    Prelude.rnf connection
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DeleteCoreNetwork.hs b/gen/Amazonka/NetworkManager/DeleteCoreNetwork.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DeleteCoreNetwork.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.DeleteCoreNetwork
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a core network along with all core network policies. This can
+-- only be done if there are no attachments on a core network.
+module Amazonka.NetworkManager.DeleteCoreNetwork
+  ( -- * Creating a Request
+    DeleteCoreNetwork (..),
+    newDeleteCoreNetwork,
+
+    -- * Request Lenses
+    deleteCoreNetwork_coreNetworkId,
+
+    -- * Destructuring the Response
+    DeleteCoreNetworkResponse (..),
+    newDeleteCoreNetworkResponse,
+
+    -- * Response Lenses
+    deleteCoreNetworkResponse_coreNetwork,
+    deleteCoreNetworkResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteCoreNetwork' smart constructor.
+data DeleteCoreNetwork = DeleteCoreNetwork'
+  { -- | The network ID of the deleted core network.
+    coreNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteCoreNetwork' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkId', 'deleteCoreNetwork_coreNetworkId' - The network ID of the deleted core network.
+newDeleteCoreNetwork ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  DeleteCoreNetwork
+newDeleteCoreNetwork pCoreNetworkId_ =
+  DeleteCoreNetwork' {coreNetworkId = pCoreNetworkId_}
+
+-- | The network ID of the deleted core network.
+deleteCoreNetwork_coreNetworkId :: Lens.Lens' DeleteCoreNetwork Prelude.Text
+deleteCoreNetwork_coreNetworkId = Lens.lens (\DeleteCoreNetwork' {coreNetworkId} -> coreNetworkId) (\s@DeleteCoreNetwork' {} a -> s {coreNetworkId = a} :: DeleteCoreNetwork)
+
+instance Core.AWSRequest DeleteCoreNetwork where
+  type
+    AWSResponse DeleteCoreNetwork =
+      DeleteCoreNetworkResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteCoreNetworkResponse'
+            Prelude.<$> (x Data..?> "CoreNetwork")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteCoreNetwork where
+  hashWithSalt _salt DeleteCoreNetwork' {..} =
+    _salt `Prelude.hashWithSalt` coreNetworkId
+
+instance Prelude.NFData DeleteCoreNetwork where
+  rnf DeleteCoreNetwork' {..} =
+    Prelude.rnf coreNetworkId
+
+instance Data.ToHeaders DeleteCoreNetwork where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteCoreNetwork where
+  toPath DeleteCoreNetwork' {..} =
+    Prelude.mconcat
+      ["/core-networks/", Data.toBS coreNetworkId]
+
+instance Data.ToQuery DeleteCoreNetwork where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteCoreNetworkResponse' smart constructor.
+data DeleteCoreNetworkResponse = DeleteCoreNetworkResponse'
+  { -- | Information about the deleted core network.
+    coreNetwork :: Prelude.Maybe CoreNetwork,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteCoreNetworkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetwork', 'deleteCoreNetworkResponse_coreNetwork' - Information about the deleted core network.
+--
+-- 'httpStatus', 'deleteCoreNetworkResponse_httpStatus' - The response's http status code.
+newDeleteCoreNetworkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteCoreNetworkResponse
+newDeleteCoreNetworkResponse pHttpStatus_ =
+  DeleteCoreNetworkResponse'
+    { coreNetwork =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the deleted core network.
+deleteCoreNetworkResponse_coreNetwork :: Lens.Lens' DeleteCoreNetworkResponse (Prelude.Maybe CoreNetwork)
+deleteCoreNetworkResponse_coreNetwork = Lens.lens (\DeleteCoreNetworkResponse' {coreNetwork} -> coreNetwork) (\s@DeleteCoreNetworkResponse' {} a -> s {coreNetwork = a} :: DeleteCoreNetworkResponse)
+
+-- | The response's http status code.
+deleteCoreNetworkResponse_httpStatus :: Lens.Lens' DeleteCoreNetworkResponse Prelude.Int
+deleteCoreNetworkResponse_httpStatus = Lens.lens (\DeleteCoreNetworkResponse' {httpStatus} -> httpStatus) (\s@DeleteCoreNetworkResponse' {} a -> s {httpStatus = a} :: DeleteCoreNetworkResponse)
+
+instance Prelude.NFData DeleteCoreNetworkResponse where
+  rnf DeleteCoreNetworkResponse' {..} =
+    Prelude.rnf coreNetwork
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DeleteCoreNetworkPolicyVersion.hs b/gen/Amazonka/NetworkManager/DeleteCoreNetworkPolicyVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DeleteCoreNetworkPolicyVersion.hs
@@ -0,0 +1,203 @@
+{-# 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.NetworkManager.DeleteCoreNetworkPolicyVersion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a policy version from a core network. You can\'t delete the
+-- current LIVE policy.
+module Amazonka.NetworkManager.DeleteCoreNetworkPolicyVersion
+  ( -- * Creating a Request
+    DeleteCoreNetworkPolicyVersion (..),
+    newDeleteCoreNetworkPolicyVersion,
+
+    -- * Request Lenses
+    deleteCoreNetworkPolicyVersion_coreNetworkId,
+    deleteCoreNetworkPolicyVersion_policyVersionId,
+
+    -- * Destructuring the Response
+    DeleteCoreNetworkPolicyVersionResponse (..),
+    newDeleteCoreNetworkPolicyVersionResponse,
+
+    -- * Response Lenses
+    deleteCoreNetworkPolicyVersionResponse_coreNetworkPolicy,
+    deleteCoreNetworkPolicyVersionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteCoreNetworkPolicyVersion' smart constructor.
+data DeleteCoreNetworkPolicyVersion = DeleteCoreNetworkPolicyVersion'
+  { -- | The ID of a core network for the deleted policy.
+    coreNetworkId :: Prelude.Text,
+    -- | The version ID of the deleted policy.
+    policyVersionId :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteCoreNetworkPolicyVersion' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkId', 'deleteCoreNetworkPolicyVersion_coreNetworkId' - The ID of a core network for the deleted policy.
+--
+-- 'policyVersionId', 'deleteCoreNetworkPolicyVersion_policyVersionId' - The version ID of the deleted policy.
+newDeleteCoreNetworkPolicyVersion ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  -- | 'policyVersionId'
+  Prelude.Int ->
+  DeleteCoreNetworkPolicyVersion
+newDeleteCoreNetworkPolicyVersion
+  pCoreNetworkId_
+  pPolicyVersionId_ =
+    DeleteCoreNetworkPolicyVersion'
+      { coreNetworkId =
+          pCoreNetworkId_,
+        policyVersionId = pPolicyVersionId_
+      }
+
+-- | The ID of a core network for the deleted policy.
+deleteCoreNetworkPolicyVersion_coreNetworkId :: Lens.Lens' DeleteCoreNetworkPolicyVersion Prelude.Text
+deleteCoreNetworkPolicyVersion_coreNetworkId = Lens.lens (\DeleteCoreNetworkPolicyVersion' {coreNetworkId} -> coreNetworkId) (\s@DeleteCoreNetworkPolicyVersion' {} a -> s {coreNetworkId = a} :: DeleteCoreNetworkPolicyVersion)
+
+-- | The version ID of the deleted policy.
+deleteCoreNetworkPolicyVersion_policyVersionId :: Lens.Lens' DeleteCoreNetworkPolicyVersion Prelude.Int
+deleteCoreNetworkPolicyVersion_policyVersionId = Lens.lens (\DeleteCoreNetworkPolicyVersion' {policyVersionId} -> policyVersionId) (\s@DeleteCoreNetworkPolicyVersion' {} a -> s {policyVersionId = a} :: DeleteCoreNetworkPolicyVersion)
+
+instance
+  Core.AWSRequest
+    DeleteCoreNetworkPolicyVersion
+  where
+  type
+    AWSResponse DeleteCoreNetworkPolicyVersion =
+      DeleteCoreNetworkPolicyVersionResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteCoreNetworkPolicyVersionResponse'
+            Prelude.<$> (x Data..?> "CoreNetworkPolicy")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DeleteCoreNetworkPolicyVersion
+  where
+  hashWithSalt
+    _salt
+    DeleteCoreNetworkPolicyVersion' {..} =
+      _salt
+        `Prelude.hashWithSalt` coreNetworkId
+        `Prelude.hashWithSalt` policyVersionId
+
+instance
+  Prelude.NFData
+    DeleteCoreNetworkPolicyVersion
+  where
+  rnf DeleteCoreNetworkPolicyVersion' {..} =
+    Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf policyVersionId
+
+instance
+  Data.ToHeaders
+    DeleteCoreNetworkPolicyVersion
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteCoreNetworkPolicyVersion where
+  toPath DeleteCoreNetworkPolicyVersion' {..} =
+    Prelude.mconcat
+      [ "/core-networks/",
+        Data.toBS coreNetworkId,
+        "/core-network-policy-versions/",
+        Data.toBS policyVersionId
+      ]
+
+instance Data.ToQuery DeleteCoreNetworkPolicyVersion where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteCoreNetworkPolicyVersionResponse' smart constructor.
+data DeleteCoreNetworkPolicyVersionResponse = DeleteCoreNetworkPolicyVersionResponse'
+  { -- | Returns information about the deleted policy version.
+    coreNetworkPolicy :: Prelude.Maybe CoreNetworkPolicy,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteCoreNetworkPolicyVersionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkPolicy', 'deleteCoreNetworkPolicyVersionResponse_coreNetworkPolicy' - Returns information about the deleted policy version.
+--
+-- 'httpStatus', 'deleteCoreNetworkPolicyVersionResponse_httpStatus' - The response's http status code.
+newDeleteCoreNetworkPolicyVersionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteCoreNetworkPolicyVersionResponse
+newDeleteCoreNetworkPolicyVersionResponse
+  pHttpStatus_ =
+    DeleteCoreNetworkPolicyVersionResponse'
+      { coreNetworkPolicy =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Returns information about the deleted policy version.
+deleteCoreNetworkPolicyVersionResponse_coreNetworkPolicy :: Lens.Lens' DeleteCoreNetworkPolicyVersionResponse (Prelude.Maybe CoreNetworkPolicy)
+deleteCoreNetworkPolicyVersionResponse_coreNetworkPolicy = Lens.lens (\DeleteCoreNetworkPolicyVersionResponse' {coreNetworkPolicy} -> coreNetworkPolicy) (\s@DeleteCoreNetworkPolicyVersionResponse' {} a -> s {coreNetworkPolicy = a} :: DeleteCoreNetworkPolicyVersionResponse)
+
+-- | The response's http status code.
+deleteCoreNetworkPolicyVersionResponse_httpStatus :: Lens.Lens' DeleteCoreNetworkPolicyVersionResponse Prelude.Int
+deleteCoreNetworkPolicyVersionResponse_httpStatus = Lens.lens (\DeleteCoreNetworkPolicyVersionResponse' {httpStatus} -> httpStatus) (\s@DeleteCoreNetworkPolicyVersionResponse' {} a -> s {httpStatus = a} :: DeleteCoreNetworkPolicyVersionResponse)
+
+instance
+  Prelude.NFData
+    DeleteCoreNetworkPolicyVersionResponse
+  where
+  rnf DeleteCoreNetworkPolicyVersionResponse' {..} =
+    Prelude.rnf coreNetworkPolicy
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DeleteDevice.hs b/gen/Amazonka/NetworkManager/DeleteDevice.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DeleteDevice.hs
@@ -0,0 +1,179 @@
+{-# 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.NetworkManager.DeleteDevice
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an existing device. You must first disassociate the device from
+-- any links and customer gateways.
+module Amazonka.NetworkManager.DeleteDevice
+  ( -- * Creating a Request
+    DeleteDevice (..),
+    newDeleteDevice,
+
+    -- * Request Lenses
+    deleteDevice_globalNetworkId,
+    deleteDevice_deviceId,
+
+    -- * Destructuring the Response
+    DeleteDeviceResponse (..),
+    newDeleteDeviceResponse,
+
+    -- * Response Lenses
+    deleteDeviceResponse_device,
+    deleteDeviceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteDevice' smart constructor.
+data DeleteDevice = DeleteDevice'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the device.
+    deviceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDevice' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'deleteDevice_globalNetworkId' - The ID of the global network.
+--
+-- 'deviceId', 'deleteDevice_deviceId' - The ID of the device.
+newDeleteDevice ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'deviceId'
+  Prelude.Text ->
+  DeleteDevice
+newDeleteDevice pGlobalNetworkId_ pDeviceId_ =
+  DeleteDevice'
+    { globalNetworkId = pGlobalNetworkId_,
+      deviceId = pDeviceId_
+    }
+
+-- | The ID of the global network.
+deleteDevice_globalNetworkId :: Lens.Lens' DeleteDevice Prelude.Text
+deleteDevice_globalNetworkId = Lens.lens (\DeleteDevice' {globalNetworkId} -> globalNetworkId) (\s@DeleteDevice' {} a -> s {globalNetworkId = a} :: DeleteDevice)
+
+-- | The ID of the device.
+deleteDevice_deviceId :: Lens.Lens' DeleteDevice Prelude.Text
+deleteDevice_deviceId = Lens.lens (\DeleteDevice' {deviceId} -> deviceId) (\s@DeleteDevice' {} a -> s {deviceId = a} :: DeleteDevice)
+
+instance Core.AWSRequest DeleteDevice where
+  type AWSResponse DeleteDevice = DeleteDeviceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteDeviceResponse'
+            Prelude.<$> (x Data..?> "Device")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteDevice where
+  hashWithSalt _salt DeleteDevice' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` deviceId
+
+instance Prelude.NFData DeleteDevice where
+  rnf DeleteDevice' {..} =
+    Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf deviceId
+
+instance Data.ToHeaders DeleteDevice where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteDevice where
+  toPath DeleteDevice' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/devices/",
+        Data.toBS deviceId
+      ]
+
+instance Data.ToQuery DeleteDevice where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteDeviceResponse' smart constructor.
+data DeleteDeviceResponse = DeleteDeviceResponse'
+  { -- | Information about the device.
+    device :: Prelude.Maybe Device,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDeviceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'device', 'deleteDeviceResponse_device' - Information about the device.
+--
+-- 'httpStatus', 'deleteDeviceResponse_httpStatus' - The response's http status code.
+newDeleteDeviceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteDeviceResponse
+newDeleteDeviceResponse pHttpStatus_ =
+  DeleteDeviceResponse'
+    { device = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the device.
+deleteDeviceResponse_device :: Lens.Lens' DeleteDeviceResponse (Prelude.Maybe Device)
+deleteDeviceResponse_device = Lens.lens (\DeleteDeviceResponse' {device} -> device) (\s@DeleteDeviceResponse' {} a -> s {device = a} :: DeleteDeviceResponse)
+
+-- | The response's http status code.
+deleteDeviceResponse_httpStatus :: Lens.Lens' DeleteDeviceResponse Prelude.Int
+deleteDeviceResponse_httpStatus = Lens.lens (\DeleteDeviceResponse' {httpStatus} -> httpStatus) (\s@DeleteDeviceResponse' {} a -> s {httpStatus = a} :: DeleteDeviceResponse)
+
+instance Prelude.NFData DeleteDeviceResponse where
+  rnf DeleteDeviceResponse' {..} =
+    Prelude.rnf device
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DeleteGlobalNetwork.hs b/gen/Amazonka/NetworkManager/DeleteGlobalNetwork.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DeleteGlobalNetwork.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.DeleteGlobalNetwork
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an existing global network. You must first delete all global
+-- network objects (devices, links, and sites), deregister all transit
+-- gateways, and delete any core networks.
+module Amazonka.NetworkManager.DeleteGlobalNetwork
+  ( -- * Creating a Request
+    DeleteGlobalNetwork (..),
+    newDeleteGlobalNetwork,
+
+    -- * Request Lenses
+    deleteGlobalNetwork_globalNetworkId,
+
+    -- * Destructuring the Response
+    DeleteGlobalNetworkResponse (..),
+    newDeleteGlobalNetworkResponse,
+
+    -- * Response Lenses
+    deleteGlobalNetworkResponse_globalNetwork,
+    deleteGlobalNetworkResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteGlobalNetwork' smart constructor.
+data DeleteGlobalNetwork = DeleteGlobalNetwork'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteGlobalNetwork' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'deleteGlobalNetwork_globalNetworkId' - The ID of the global network.
+newDeleteGlobalNetwork ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  DeleteGlobalNetwork
+newDeleteGlobalNetwork pGlobalNetworkId_ =
+  DeleteGlobalNetwork'
+    { globalNetworkId =
+        pGlobalNetworkId_
+    }
+
+-- | The ID of the global network.
+deleteGlobalNetwork_globalNetworkId :: Lens.Lens' DeleteGlobalNetwork Prelude.Text
+deleteGlobalNetwork_globalNetworkId = Lens.lens (\DeleteGlobalNetwork' {globalNetworkId} -> globalNetworkId) (\s@DeleteGlobalNetwork' {} a -> s {globalNetworkId = a} :: DeleteGlobalNetwork)
+
+instance Core.AWSRequest DeleteGlobalNetwork where
+  type
+    AWSResponse DeleteGlobalNetwork =
+      DeleteGlobalNetworkResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteGlobalNetworkResponse'
+            Prelude.<$> (x Data..?> "GlobalNetwork")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteGlobalNetwork where
+  hashWithSalt _salt DeleteGlobalNetwork' {..} =
+    _salt `Prelude.hashWithSalt` globalNetworkId
+
+instance Prelude.NFData DeleteGlobalNetwork where
+  rnf DeleteGlobalNetwork' {..} =
+    Prelude.rnf globalNetworkId
+
+instance Data.ToHeaders DeleteGlobalNetwork where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteGlobalNetwork where
+  toPath DeleteGlobalNetwork' {..} =
+    Prelude.mconcat
+      ["/global-networks/", Data.toBS globalNetworkId]
+
+instance Data.ToQuery DeleteGlobalNetwork where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteGlobalNetworkResponse' smart constructor.
+data DeleteGlobalNetworkResponse = DeleteGlobalNetworkResponse'
+  { -- | Information about the global network.
+    globalNetwork :: Prelude.Maybe GlobalNetwork,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteGlobalNetworkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetwork', 'deleteGlobalNetworkResponse_globalNetwork' - Information about the global network.
+--
+-- 'httpStatus', 'deleteGlobalNetworkResponse_httpStatus' - The response's http status code.
+newDeleteGlobalNetworkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteGlobalNetworkResponse
+newDeleteGlobalNetworkResponse pHttpStatus_ =
+  DeleteGlobalNetworkResponse'
+    { globalNetwork =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the global network.
+deleteGlobalNetworkResponse_globalNetwork :: Lens.Lens' DeleteGlobalNetworkResponse (Prelude.Maybe GlobalNetwork)
+deleteGlobalNetworkResponse_globalNetwork = Lens.lens (\DeleteGlobalNetworkResponse' {globalNetwork} -> globalNetwork) (\s@DeleteGlobalNetworkResponse' {} a -> s {globalNetwork = a} :: DeleteGlobalNetworkResponse)
+
+-- | The response's http status code.
+deleteGlobalNetworkResponse_httpStatus :: Lens.Lens' DeleteGlobalNetworkResponse Prelude.Int
+deleteGlobalNetworkResponse_httpStatus = Lens.lens (\DeleteGlobalNetworkResponse' {httpStatus} -> httpStatus) (\s@DeleteGlobalNetworkResponse' {} a -> s {httpStatus = a} :: DeleteGlobalNetworkResponse)
+
+instance Prelude.NFData DeleteGlobalNetworkResponse where
+  rnf DeleteGlobalNetworkResponse' {..} =
+    Prelude.rnf globalNetwork
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DeleteLink.hs b/gen/Amazonka/NetworkManager/DeleteLink.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DeleteLink.hs
@@ -0,0 +1,179 @@
+{-# 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.NetworkManager.DeleteLink
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an existing link. You must first disassociate the link from any
+-- devices and customer gateways.
+module Amazonka.NetworkManager.DeleteLink
+  ( -- * Creating a Request
+    DeleteLink (..),
+    newDeleteLink,
+
+    -- * Request Lenses
+    deleteLink_globalNetworkId,
+    deleteLink_linkId,
+
+    -- * Destructuring the Response
+    DeleteLinkResponse (..),
+    newDeleteLinkResponse,
+
+    -- * Response Lenses
+    deleteLinkResponse_link,
+    deleteLinkResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteLink' smart constructor.
+data DeleteLink = DeleteLink'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the link.
+    linkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteLink' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'deleteLink_globalNetworkId' - The ID of the global network.
+--
+-- 'linkId', 'deleteLink_linkId' - The ID of the link.
+newDeleteLink ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'linkId'
+  Prelude.Text ->
+  DeleteLink
+newDeleteLink pGlobalNetworkId_ pLinkId_ =
+  DeleteLink'
+    { globalNetworkId = pGlobalNetworkId_,
+      linkId = pLinkId_
+    }
+
+-- | The ID of the global network.
+deleteLink_globalNetworkId :: Lens.Lens' DeleteLink Prelude.Text
+deleteLink_globalNetworkId = Lens.lens (\DeleteLink' {globalNetworkId} -> globalNetworkId) (\s@DeleteLink' {} a -> s {globalNetworkId = a} :: DeleteLink)
+
+-- | The ID of the link.
+deleteLink_linkId :: Lens.Lens' DeleteLink Prelude.Text
+deleteLink_linkId = Lens.lens (\DeleteLink' {linkId} -> linkId) (\s@DeleteLink' {} a -> s {linkId = a} :: DeleteLink)
+
+instance Core.AWSRequest DeleteLink where
+  type AWSResponse DeleteLink = DeleteLinkResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteLinkResponse'
+            Prelude.<$> (x Data..?> "Link")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteLink where
+  hashWithSalt _salt DeleteLink' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` linkId
+
+instance Prelude.NFData DeleteLink where
+  rnf DeleteLink' {..} =
+    Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf linkId
+
+instance Data.ToHeaders DeleteLink where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteLink where
+  toPath DeleteLink' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/links/",
+        Data.toBS linkId
+      ]
+
+instance Data.ToQuery DeleteLink where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteLinkResponse' smart constructor.
+data DeleteLinkResponse = DeleteLinkResponse'
+  { -- | Information about the link.
+    link :: Prelude.Maybe Link,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteLinkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'link', 'deleteLinkResponse_link' - Information about the link.
+--
+-- 'httpStatus', 'deleteLinkResponse_httpStatus' - The response's http status code.
+newDeleteLinkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteLinkResponse
+newDeleteLinkResponse pHttpStatus_ =
+  DeleteLinkResponse'
+    { link = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the link.
+deleteLinkResponse_link :: Lens.Lens' DeleteLinkResponse (Prelude.Maybe Link)
+deleteLinkResponse_link = Lens.lens (\DeleteLinkResponse' {link} -> link) (\s@DeleteLinkResponse' {} a -> s {link = a} :: DeleteLinkResponse)
+
+-- | The response's http status code.
+deleteLinkResponse_httpStatus :: Lens.Lens' DeleteLinkResponse Prelude.Int
+deleteLinkResponse_httpStatus = Lens.lens (\DeleteLinkResponse' {httpStatus} -> httpStatus) (\s@DeleteLinkResponse' {} a -> s {httpStatus = a} :: DeleteLinkResponse)
+
+instance Prelude.NFData DeleteLinkResponse where
+  rnf DeleteLinkResponse' {..} =
+    Prelude.rnf link
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DeletePeering.hs b/gen/Amazonka/NetworkManager/DeletePeering.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DeletePeering.hs
@@ -0,0 +1,157 @@
+{-# 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.NetworkManager.DeletePeering
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an existing peering connection.
+module Amazonka.NetworkManager.DeletePeering
+  ( -- * Creating a Request
+    DeletePeering (..),
+    newDeletePeering,
+
+    -- * Request Lenses
+    deletePeering_peeringId,
+
+    -- * Destructuring the Response
+    DeletePeeringResponse (..),
+    newDeletePeeringResponse,
+
+    -- * Response Lenses
+    deletePeeringResponse_peering,
+    deletePeeringResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeletePeering' smart constructor.
+data DeletePeering = DeletePeering'
+  { -- | The ID of the peering connection to delete.
+    peeringId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeletePeering' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'peeringId', 'deletePeering_peeringId' - The ID of the peering connection to delete.
+newDeletePeering ::
+  -- | 'peeringId'
+  Prelude.Text ->
+  DeletePeering
+newDeletePeering pPeeringId_ =
+  DeletePeering' {peeringId = pPeeringId_}
+
+-- | The ID of the peering connection to delete.
+deletePeering_peeringId :: Lens.Lens' DeletePeering Prelude.Text
+deletePeering_peeringId = Lens.lens (\DeletePeering' {peeringId} -> peeringId) (\s@DeletePeering' {} a -> s {peeringId = a} :: DeletePeering)
+
+instance Core.AWSRequest DeletePeering where
+  type
+    AWSResponse DeletePeering =
+      DeletePeeringResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeletePeeringResponse'
+            Prelude.<$> (x Data..?> "Peering")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeletePeering where
+  hashWithSalt _salt DeletePeering' {..} =
+    _salt `Prelude.hashWithSalt` peeringId
+
+instance Prelude.NFData DeletePeering where
+  rnf DeletePeering' {..} = Prelude.rnf peeringId
+
+instance Data.ToHeaders DeletePeering where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeletePeering where
+  toPath DeletePeering' {..} =
+    Prelude.mconcat ["/peerings/", Data.toBS peeringId]
+
+instance Data.ToQuery DeletePeering where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeletePeeringResponse' smart constructor.
+data DeletePeeringResponse = DeletePeeringResponse'
+  { -- | Information about a deleted peering connection.
+    peering :: Prelude.Maybe Peering,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeletePeeringResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'peering', 'deletePeeringResponse_peering' - Information about a deleted peering connection.
+--
+-- 'httpStatus', 'deletePeeringResponse_httpStatus' - The response's http status code.
+newDeletePeeringResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeletePeeringResponse
+newDeletePeeringResponse pHttpStatus_ =
+  DeletePeeringResponse'
+    { peering = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about a deleted peering connection.
+deletePeeringResponse_peering :: Lens.Lens' DeletePeeringResponse (Prelude.Maybe Peering)
+deletePeeringResponse_peering = Lens.lens (\DeletePeeringResponse' {peering} -> peering) (\s@DeletePeeringResponse' {} a -> s {peering = a} :: DeletePeeringResponse)
+
+-- | The response's http status code.
+deletePeeringResponse_httpStatus :: Lens.Lens' DeletePeeringResponse Prelude.Int
+deletePeeringResponse_httpStatus = Lens.lens (\DeletePeeringResponse' {httpStatus} -> httpStatus) (\s@DeletePeeringResponse' {} a -> s {httpStatus = a} :: DeletePeeringResponse)
+
+instance Prelude.NFData DeletePeeringResponse where
+  rnf DeletePeeringResponse' {..} =
+    Prelude.rnf peering
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DeleteResourcePolicy.hs b/gen/Amazonka/NetworkManager/DeleteResourcePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DeleteResourcePolicy.hs
@@ -0,0 +1,149 @@
+{-# 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.NetworkManager.DeleteResourcePolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a resource policy for the specified resource. This revokes the
+-- access of the principals specified in the resource policy.
+module Amazonka.NetworkManager.DeleteResourcePolicy
+  ( -- * Creating a Request
+    DeleteResourcePolicy (..),
+    newDeleteResourcePolicy,
+
+    -- * Request Lenses
+    deleteResourcePolicy_resourceArn,
+
+    -- * Destructuring the Response
+    DeleteResourcePolicyResponse (..),
+    newDeleteResourcePolicyResponse,
+
+    -- * Response Lenses
+    deleteResourcePolicyResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteResourcePolicy' smart constructor.
+data DeleteResourcePolicy = DeleteResourcePolicy'
+  { -- | The ARN of the policy to delete.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteResourcePolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'deleteResourcePolicy_resourceArn' - The ARN of the policy to delete.
+newDeleteResourcePolicy ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  DeleteResourcePolicy
+newDeleteResourcePolicy pResourceArn_ =
+  DeleteResourcePolicy' {resourceArn = pResourceArn_}
+
+-- | The ARN of the policy to delete.
+deleteResourcePolicy_resourceArn :: Lens.Lens' DeleteResourcePolicy Prelude.Text
+deleteResourcePolicy_resourceArn = Lens.lens (\DeleteResourcePolicy' {resourceArn} -> resourceArn) (\s@DeleteResourcePolicy' {} a -> s {resourceArn = a} :: DeleteResourcePolicy)
+
+instance Core.AWSRequest DeleteResourcePolicy where
+  type
+    AWSResponse DeleteResourcePolicy =
+      DeleteResourcePolicyResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteResourcePolicyResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteResourcePolicy where
+  hashWithSalt _salt DeleteResourcePolicy' {..} =
+    _salt `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData DeleteResourcePolicy where
+  rnf DeleteResourcePolicy' {..} =
+    Prelude.rnf resourceArn
+
+instance Data.ToHeaders DeleteResourcePolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteResourcePolicy where
+  toPath DeleteResourcePolicy' {..} =
+    Prelude.mconcat
+      ["/resource-policy/", Data.toBS resourceArn]
+
+instance Data.ToQuery DeleteResourcePolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteResourcePolicyResponse' smart constructor.
+data DeleteResourcePolicyResponse = DeleteResourcePolicyResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteResourcePolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteResourcePolicyResponse_httpStatus' - The response's http status code.
+newDeleteResourcePolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteResourcePolicyResponse
+newDeleteResourcePolicyResponse pHttpStatus_ =
+  DeleteResourcePolicyResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteResourcePolicyResponse_httpStatus :: Lens.Lens' DeleteResourcePolicyResponse Prelude.Int
+deleteResourcePolicyResponse_httpStatus = Lens.lens (\DeleteResourcePolicyResponse' {httpStatus} -> httpStatus) (\s@DeleteResourcePolicyResponse' {} a -> s {httpStatus = a} :: DeleteResourcePolicyResponse)
+
+instance Prelude.NFData DeleteResourcePolicyResponse where
+  rnf DeleteResourcePolicyResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DeleteSite.hs b/gen/Amazonka/NetworkManager/DeleteSite.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DeleteSite.hs
@@ -0,0 +1,179 @@
+{-# 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.NetworkManager.DeleteSite
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an existing site. The site cannot be associated with any device
+-- or link.
+module Amazonka.NetworkManager.DeleteSite
+  ( -- * Creating a Request
+    DeleteSite (..),
+    newDeleteSite,
+
+    -- * Request Lenses
+    deleteSite_globalNetworkId,
+    deleteSite_siteId,
+
+    -- * Destructuring the Response
+    DeleteSiteResponse (..),
+    newDeleteSiteResponse,
+
+    -- * Response Lenses
+    deleteSiteResponse_site,
+    deleteSiteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteSite' smart constructor.
+data DeleteSite = DeleteSite'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the site.
+    siteId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSite' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'deleteSite_globalNetworkId' - The ID of the global network.
+--
+-- 'siteId', 'deleteSite_siteId' - The ID of the site.
+newDeleteSite ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'siteId'
+  Prelude.Text ->
+  DeleteSite
+newDeleteSite pGlobalNetworkId_ pSiteId_ =
+  DeleteSite'
+    { globalNetworkId = pGlobalNetworkId_,
+      siteId = pSiteId_
+    }
+
+-- | The ID of the global network.
+deleteSite_globalNetworkId :: Lens.Lens' DeleteSite Prelude.Text
+deleteSite_globalNetworkId = Lens.lens (\DeleteSite' {globalNetworkId} -> globalNetworkId) (\s@DeleteSite' {} a -> s {globalNetworkId = a} :: DeleteSite)
+
+-- | The ID of the site.
+deleteSite_siteId :: Lens.Lens' DeleteSite Prelude.Text
+deleteSite_siteId = Lens.lens (\DeleteSite' {siteId} -> siteId) (\s@DeleteSite' {} a -> s {siteId = a} :: DeleteSite)
+
+instance Core.AWSRequest DeleteSite where
+  type AWSResponse DeleteSite = DeleteSiteResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteSiteResponse'
+            Prelude.<$> (x Data..?> "Site")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteSite where
+  hashWithSalt _salt DeleteSite' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` siteId
+
+instance Prelude.NFData DeleteSite where
+  rnf DeleteSite' {..} =
+    Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf siteId
+
+instance Data.ToHeaders DeleteSite where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteSite where
+  toPath DeleteSite' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/sites/",
+        Data.toBS siteId
+      ]
+
+instance Data.ToQuery DeleteSite where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteSiteResponse' smart constructor.
+data DeleteSiteResponse = DeleteSiteResponse'
+  { -- | Information about the site.
+    site :: Prelude.Maybe Site,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSiteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'site', 'deleteSiteResponse_site' - Information about the site.
+--
+-- 'httpStatus', 'deleteSiteResponse_httpStatus' - The response's http status code.
+newDeleteSiteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteSiteResponse
+newDeleteSiteResponse pHttpStatus_ =
+  DeleteSiteResponse'
+    { site = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the site.
+deleteSiteResponse_site :: Lens.Lens' DeleteSiteResponse (Prelude.Maybe Site)
+deleteSiteResponse_site = Lens.lens (\DeleteSiteResponse' {site} -> site) (\s@DeleteSiteResponse' {} a -> s {site = a} :: DeleteSiteResponse)
+
+-- | The response's http status code.
+deleteSiteResponse_httpStatus :: Lens.Lens' DeleteSiteResponse Prelude.Int
+deleteSiteResponse_httpStatus = Lens.lens (\DeleteSiteResponse' {httpStatus} -> httpStatus) (\s@DeleteSiteResponse' {} a -> s {httpStatus = a} :: DeleteSiteResponse)
+
+instance Prelude.NFData DeleteSiteResponse where
+  rnf DeleteSiteResponse' {..} =
+    Prelude.rnf site
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DeregisterTransitGateway.hs b/gen/Amazonka/NetworkManager/DeregisterTransitGateway.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DeregisterTransitGateway.hs
@@ -0,0 +1,189 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.DeregisterTransitGateway
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deregisters a transit gateway from your global network. This action does
+-- not delete your transit gateway, or modify any of its attachments. This
+-- action removes any customer gateway associations.
+module Amazonka.NetworkManager.DeregisterTransitGateway
+  ( -- * Creating a Request
+    DeregisterTransitGateway (..),
+    newDeregisterTransitGateway,
+
+    -- * Request Lenses
+    deregisterTransitGateway_globalNetworkId,
+    deregisterTransitGateway_transitGatewayArn,
+
+    -- * Destructuring the Response
+    DeregisterTransitGatewayResponse (..),
+    newDeregisterTransitGatewayResponse,
+
+    -- * Response Lenses
+    deregisterTransitGatewayResponse_transitGatewayRegistration,
+    deregisterTransitGatewayResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeregisterTransitGateway' smart constructor.
+data DeregisterTransitGateway = DeregisterTransitGateway'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the transit gateway.
+    transitGatewayArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeregisterTransitGateway' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'deregisterTransitGateway_globalNetworkId' - The ID of the global network.
+--
+-- 'transitGatewayArn', 'deregisterTransitGateway_transitGatewayArn' - The Amazon Resource Name (ARN) of the transit gateway.
+newDeregisterTransitGateway ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'transitGatewayArn'
+  Prelude.Text ->
+  DeregisterTransitGateway
+newDeregisterTransitGateway
+  pGlobalNetworkId_
+  pTransitGatewayArn_ =
+    DeregisterTransitGateway'
+      { globalNetworkId =
+          pGlobalNetworkId_,
+        transitGatewayArn = pTransitGatewayArn_
+      }
+
+-- | The ID of the global network.
+deregisterTransitGateway_globalNetworkId :: Lens.Lens' DeregisterTransitGateway Prelude.Text
+deregisterTransitGateway_globalNetworkId = Lens.lens (\DeregisterTransitGateway' {globalNetworkId} -> globalNetworkId) (\s@DeregisterTransitGateway' {} a -> s {globalNetworkId = a} :: DeregisterTransitGateway)
+
+-- | The Amazon Resource Name (ARN) of the transit gateway.
+deregisterTransitGateway_transitGatewayArn :: Lens.Lens' DeregisterTransitGateway Prelude.Text
+deregisterTransitGateway_transitGatewayArn = Lens.lens (\DeregisterTransitGateway' {transitGatewayArn} -> transitGatewayArn) (\s@DeregisterTransitGateway' {} a -> s {transitGatewayArn = a} :: DeregisterTransitGateway)
+
+instance Core.AWSRequest DeregisterTransitGateway where
+  type
+    AWSResponse DeregisterTransitGateway =
+      DeregisterTransitGatewayResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeregisterTransitGatewayResponse'
+            Prelude.<$> (x Data..?> "TransitGatewayRegistration")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeregisterTransitGateway where
+  hashWithSalt _salt DeregisterTransitGateway' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` transitGatewayArn
+
+instance Prelude.NFData DeregisterTransitGateway where
+  rnf DeregisterTransitGateway' {..} =
+    Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf transitGatewayArn
+
+instance Data.ToHeaders DeregisterTransitGateway where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeregisterTransitGateway where
+  toPath DeregisterTransitGateway' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/transit-gateway-registrations/",
+        Data.toBS transitGatewayArn
+      ]
+
+instance Data.ToQuery DeregisterTransitGateway where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeregisterTransitGatewayResponse' smart constructor.
+data DeregisterTransitGatewayResponse = DeregisterTransitGatewayResponse'
+  { -- | The transit gateway registration information.
+    transitGatewayRegistration :: Prelude.Maybe TransitGatewayRegistration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeregisterTransitGatewayResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'transitGatewayRegistration', 'deregisterTransitGatewayResponse_transitGatewayRegistration' - The transit gateway registration information.
+--
+-- 'httpStatus', 'deregisterTransitGatewayResponse_httpStatus' - The response's http status code.
+newDeregisterTransitGatewayResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeregisterTransitGatewayResponse
+newDeregisterTransitGatewayResponse pHttpStatus_ =
+  DeregisterTransitGatewayResponse'
+    { transitGatewayRegistration =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The transit gateway registration information.
+deregisterTransitGatewayResponse_transitGatewayRegistration :: Lens.Lens' DeregisterTransitGatewayResponse (Prelude.Maybe TransitGatewayRegistration)
+deregisterTransitGatewayResponse_transitGatewayRegistration = Lens.lens (\DeregisterTransitGatewayResponse' {transitGatewayRegistration} -> transitGatewayRegistration) (\s@DeregisterTransitGatewayResponse' {} a -> s {transitGatewayRegistration = a} :: DeregisterTransitGatewayResponse)
+
+-- | The response's http status code.
+deregisterTransitGatewayResponse_httpStatus :: Lens.Lens' DeregisterTransitGatewayResponse Prelude.Int
+deregisterTransitGatewayResponse_httpStatus = Lens.lens (\DeregisterTransitGatewayResponse' {httpStatus} -> httpStatus) (\s@DeregisterTransitGatewayResponse' {} a -> s {httpStatus = a} :: DeregisterTransitGatewayResponse)
+
+instance
+  Prelude.NFData
+    DeregisterTransitGatewayResponse
+  where
+  rnf DeregisterTransitGatewayResponse' {..} =
+    Prelude.rnf transitGatewayRegistration
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DescribeGlobalNetworks.hs b/gen/Amazonka/NetworkManager/DescribeGlobalNetworks.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DescribeGlobalNetworks.hs
@@ -0,0 +1,235 @@
+{-# 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.NetworkManager.DescribeGlobalNetworks
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes one or more global networks. By default, all global networks
+-- are described. To describe the objects in your global network, you must
+-- use the appropriate @Get*@ action. For example, to list the transit
+-- gateways in your global network, use GetTransitGatewayRegistrations.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.DescribeGlobalNetworks
+  ( -- * Creating a Request
+    DescribeGlobalNetworks (..),
+    newDescribeGlobalNetworks,
+
+    -- * Request Lenses
+    describeGlobalNetworks_globalNetworkIds,
+    describeGlobalNetworks_maxResults,
+    describeGlobalNetworks_nextToken,
+
+    -- * Destructuring the Response
+    DescribeGlobalNetworksResponse (..),
+    newDescribeGlobalNetworksResponse,
+
+    -- * Response Lenses
+    describeGlobalNetworksResponse_globalNetworks,
+    describeGlobalNetworksResponse_nextToken,
+    describeGlobalNetworksResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeGlobalNetworks' smart constructor.
+data DescribeGlobalNetworks = DescribeGlobalNetworks'
+  { -- | The IDs of one or more global networks. The maximum is 10.
+    globalNetworkIds :: Prelude.Maybe [Prelude.Text],
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeGlobalNetworks' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkIds', 'describeGlobalNetworks_globalNetworkIds' - The IDs of one or more global networks. The maximum is 10.
+--
+-- 'maxResults', 'describeGlobalNetworks_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'describeGlobalNetworks_nextToken' - The token for the next page of results.
+newDescribeGlobalNetworks ::
+  DescribeGlobalNetworks
+newDescribeGlobalNetworks =
+  DescribeGlobalNetworks'
+    { globalNetworkIds =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The IDs of one or more global networks. The maximum is 10.
+describeGlobalNetworks_globalNetworkIds :: Lens.Lens' DescribeGlobalNetworks (Prelude.Maybe [Prelude.Text])
+describeGlobalNetworks_globalNetworkIds = Lens.lens (\DescribeGlobalNetworks' {globalNetworkIds} -> globalNetworkIds) (\s@DescribeGlobalNetworks' {} a -> s {globalNetworkIds = a} :: DescribeGlobalNetworks) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of results to return.
+describeGlobalNetworks_maxResults :: Lens.Lens' DescribeGlobalNetworks (Prelude.Maybe Prelude.Natural)
+describeGlobalNetworks_maxResults = Lens.lens (\DescribeGlobalNetworks' {maxResults} -> maxResults) (\s@DescribeGlobalNetworks' {} a -> s {maxResults = a} :: DescribeGlobalNetworks)
+
+-- | The token for the next page of results.
+describeGlobalNetworks_nextToken :: Lens.Lens' DescribeGlobalNetworks (Prelude.Maybe Prelude.Text)
+describeGlobalNetworks_nextToken = Lens.lens (\DescribeGlobalNetworks' {nextToken} -> nextToken) (\s@DescribeGlobalNetworks' {} a -> s {nextToken = a} :: DescribeGlobalNetworks)
+
+instance Core.AWSPager DescribeGlobalNetworks where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeGlobalNetworksResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeGlobalNetworksResponse_globalNetworks
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeGlobalNetworks_nextToken
+          Lens..~ rs
+          Lens.^? describeGlobalNetworksResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeGlobalNetworks where
+  type
+    AWSResponse DescribeGlobalNetworks =
+      DescribeGlobalNetworksResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeGlobalNetworksResponse'
+            Prelude.<$> (x Data..?> "GlobalNetworks" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeGlobalNetworks where
+  hashWithSalt _salt DescribeGlobalNetworks' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalNetworkIds
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData DescribeGlobalNetworks where
+  rnf DescribeGlobalNetworks' {..} =
+    Prelude.rnf globalNetworkIds
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders DescribeGlobalNetworks where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeGlobalNetworks where
+  toPath = Prelude.const "/global-networks"
+
+instance Data.ToQuery DescribeGlobalNetworks where
+  toQuery DescribeGlobalNetworks' {..} =
+    Prelude.mconcat
+      [ "globalNetworkIds"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> globalNetworkIds
+            ),
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newDescribeGlobalNetworksResponse' smart constructor.
+data DescribeGlobalNetworksResponse = DescribeGlobalNetworksResponse'
+  { -- | Information about the global networks.
+    globalNetworks :: Prelude.Maybe [GlobalNetwork],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeGlobalNetworksResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworks', 'describeGlobalNetworksResponse_globalNetworks' - Information about the global networks.
+--
+-- 'nextToken', 'describeGlobalNetworksResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'describeGlobalNetworksResponse_httpStatus' - The response's http status code.
+newDescribeGlobalNetworksResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeGlobalNetworksResponse
+newDescribeGlobalNetworksResponse pHttpStatus_ =
+  DescribeGlobalNetworksResponse'
+    { globalNetworks =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the global networks.
+describeGlobalNetworksResponse_globalNetworks :: Lens.Lens' DescribeGlobalNetworksResponse (Prelude.Maybe [GlobalNetwork])
+describeGlobalNetworksResponse_globalNetworks = Lens.lens (\DescribeGlobalNetworksResponse' {globalNetworks} -> globalNetworks) (\s@DescribeGlobalNetworksResponse' {} a -> s {globalNetworks = a} :: DescribeGlobalNetworksResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+describeGlobalNetworksResponse_nextToken :: Lens.Lens' DescribeGlobalNetworksResponse (Prelude.Maybe Prelude.Text)
+describeGlobalNetworksResponse_nextToken = Lens.lens (\DescribeGlobalNetworksResponse' {nextToken} -> nextToken) (\s@DescribeGlobalNetworksResponse' {} a -> s {nextToken = a} :: DescribeGlobalNetworksResponse)
+
+-- | The response's http status code.
+describeGlobalNetworksResponse_httpStatus :: Lens.Lens' DescribeGlobalNetworksResponse Prelude.Int
+describeGlobalNetworksResponse_httpStatus = Lens.lens (\DescribeGlobalNetworksResponse' {httpStatus} -> httpStatus) (\s@DescribeGlobalNetworksResponse' {} a -> s {httpStatus = a} :: DescribeGlobalNetworksResponse)
+
+instance
+  Prelude.NFData
+    DescribeGlobalNetworksResponse
+  where
+  rnf DescribeGlobalNetworksResponse' {..} =
+    Prelude.rnf globalNetworks
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DisassociateConnectPeer.hs b/gen/Amazonka/NetworkManager/DisassociateConnectPeer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DisassociateConnectPeer.hs
@@ -0,0 +1,187 @@
+{-# 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.NetworkManager.DisassociateConnectPeer
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociates a core network Connect peer from a device and a link.
+module Amazonka.NetworkManager.DisassociateConnectPeer
+  ( -- * Creating a Request
+    DisassociateConnectPeer (..),
+    newDisassociateConnectPeer,
+
+    -- * Request Lenses
+    disassociateConnectPeer_globalNetworkId,
+    disassociateConnectPeer_connectPeerId,
+
+    -- * Destructuring the Response
+    DisassociateConnectPeerResponse (..),
+    newDisassociateConnectPeerResponse,
+
+    -- * Response Lenses
+    disassociateConnectPeerResponse_connectPeerAssociation,
+    disassociateConnectPeerResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociateConnectPeer' smart constructor.
+data DisassociateConnectPeer = DisassociateConnectPeer'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the Connect peer to disassociate from a device.
+    connectPeerId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateConnectPeer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'disassociateConnectPeer_globalNetworkId' - The ID of the global network.
+--
+-- 'connectPeerId', 'disassociateConnectPeer_connectPeerId' - The ID of the Connect peer to disassociate from a device.
+newDisassociateConnectPeer ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'connectPeerId'
+  Prelude.Text ->
+  DisassociateConnectPeer
+newDisassociateConnectPeer
+  pGlobalNetworkId_
+  pConnectPeerId_ =
+    DisassociateConnectPeer'
+      { globalNetworkId =
+          pGlobalNetworkId_,
+        connectPeerId = pConnectPeerId_
+      }
+
+-- | The ID of the global network.
+disassociateConnectPeer_globalNetworkId :: Lens.Lens' DisassociateConnectPeer Prelude.Text
+disassociateConnectPeer_globalNetworkId = Lens.lens (\DisassociateConnectPeer' {globalNetworkId} -> globalNetworkId) (\s@DisassociateConnectPeer' {} a -> s {globalNetworkId = a} :: DisassociateConnectPeer)
+
+-- | The ID of the Connect peer to disassociate from a device.
+disassociateConnectPeer_connectPeerId :: Lens.Lens' DisassociateConnectPeer Prelude.Text
+disassociateConnectPeer_connectPeerId = Lens.lens (\DisassociateConnectPeer' {connectPeerId} -> connectPeerId) (\s@DisassociateConnectPeer' {} a -> s {connectPeerId = a} :: DisassociateConnectPeer)
+
+instance Core.AWSRequest DisassociateConnectPeer where
+  type
+    AWSResponse DisassociateConnectPeer =
+      DisassociateConnectPeerResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DisassociateConnectPeerResponse'
+            Prelude.<$> (x Data..?> "ConnectPeerAssociation")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DisassociateConnectPeer where
+  hashWithSalt _salt DisassociateConnectPeer' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` connectPeerId
+
+instance Prelude.NFData DisassociateConnectPeer where
+  rnf DisassociateConnectPeer' {..} =
+    Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf connectPeerId
+
+instance Data.ToHeaders DisassociateConnectPeer where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DisassociateConnectPeer where
+  toPath DisassociateConnectPeer' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/connect-peer-associations/",
+        Data.toBS connectPeerId
+      ]
+
+instance Data.ToQuery DisassociateConnectPeer where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociateConnectPeerResponse' smart constructor.
+data DisassociateConnectPeerResponse = DisassociateConnectPeerResponse'
+  { -- | Describes the Connect peer association.
+    connectPeerAssociation :: Prelude.Maybe ConnectPeerAssociation,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateConnectPeerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectPeerAssociation', 'disassociateConnectPeerResponse_connectPeerAssociation' - Describes the Connect peer association.
+--
+-- 'httpStatus', 'disassociateConnectPeerResponse_httpStatus' - The response's http status code.
+newDisassociateConnectPeerResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociateConnectPeerResponse
+newDisassociateConnectPeerResponse pHttpStatus_ =
+  DisassociateConnectPeerResponse'
+    { connectPeerAssociation =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Describes the Connect peer association.
+disassociateConnectPeerResponse_connectPeerAssociation :: Lens.Lens' DisassociateConnectPeerResponse (Prelude.Maybe ConnectPeerAssociation)
+disassociateConnectPeerResponse_connectPeerAssociation = Lens.lens (\DisassociateConnectPeerResponse' {connectPeerAssociation} -> connectPeerAssociation) (\s@DisassociateConnectPeerResponse' {} a -> s {connectPeerAssociation = a} :: DisassociateConnectPeerResponse)
+
+-- | The response's http status code.
+disassociateConnectPeerResponse_httpStatus :: Lens.Lens' DisassociateConnectPeerResponse Prelude.Int
+disassociateConnectPeerResponse_httpStatus = Lens.lens (\DisassociateConnectPeerResponse' {httpStatus} -> httpStatus) (\s@DisassociateConnectPeerResponse' {} a -> s {httpStatus = a} :: DisassociateConnectPeerResponse)
+
+instance
+  Prelude.NFData
+    DisassociateConnectPeerResponse
+  where
+  rnf DisassociateConnectPeerResponse' {..} =
+    Prelude.rnf connectPeerAssociation
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DisassociateCustomerGateway.hs b/gen/Amazonka/NetworkManager/DisassociateCustomerGateway.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DisassociateCustomerGateway.hs
@@ -0,0 +1,187 @@
+{-# 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.NetworkManager.DisassociateCustomerGateway
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociates a customer gateway from a device and a link.
+module Amazonka.NetworkManager.DisassociateCustomerGateway
+  ( -- * Creating a Request
+    DisassociateCustomerGateway (..),
+    newDisassociateCustomerGateway,
+
+    -- * Request Lenses
+    disassociateCustomerGateway_globalNetworkId,
+    disassociateCustomerGateway_customerGatewayArn,
+
+    -- * Destructuring the Response
+    DisassociateCustomerGatewayResponse (..),
+    newDisassociateCustomerGatewayResponse,
+
+    -- * Response Lenses
+    disassociateCustomerGatewayResponse_customerGatewayAssociation,
+    disassociateCustomerGatewayResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociateCustomerGateway' smart constructor.
+data DisassociateCustomerGateway = DisassociateCustomerGateway'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the customer gateway.
+    customerGatewayArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateCustomerGateway' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'disassociateCustomerGateway_globalNetworkId' - The ID of the global network.
+--
+-- 'customerGatewayArn', 'disassociateCustomerGateway_customerGatewayArn' - The Amazon Resource Name (ARN) of the customer gateway.
+newDisassociateCustomerGateway ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'customerGatewayArn'
+  Prelude.Text ->
+  DisassociateCustomerGateway
+newDisassociateCustomerGateway
+  pGlobalNetworkId_
+  pCustomerGatewayArn_ =
+    DisassociateCustomerGateway'
+      { globalNetworkId =
+          pGlobalNetworkId_,
+        customerGatewayArn = pCustomerGatewayArn_
+      }
+
+-- | The ID of the global network.
+disassociateCustomerGateway_globalNetworkId :: Lens.Lens' DisassociateCustomerGateway Prelude.Text
+disassociateCustomerGateway_globalNetworkId = Lens.lens (\DisassociateCustomerGateway' {globalNetworkId} -> globalNetworkId) (\s@DisassociateCustomerGateway' {} a -> s {globalNetworkId = a} :: DisassociateCustomerGateway)
+
+-- | The Amazon Resource Name (ARN) of the customer gateway.
+disassociateCustomerGateway_customerGatewayArn :: Lens.Lens' DisassociateCustomerGateway Prelude.Text
+disassociateCustomerGateway_customerGatewayArn = Lens.lens (\DisassociateCustomerGateway' {customerGatewayArn} -> customerGatewayArn) (\s@DisassociateCustomerGateway' {} a -> s {customerGatewayArn = a} :: DisassociateCustomerGateway)
+
+instance Core.AWSRequest DisassociateCustomerGateway where
+  type
+    AWSResponse DisassociateCustomerGateway =
+      DisassociateCustomerGatewayResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DisassociateCustomerGatewayResponse'
+            Prelude.<$> (x Data..?> "CustomerGatewayAssociation")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DisassociateCustomerGateway where
+  hashWithSalt _salt DisassociateCustomerGateway' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` customerGatewayArn
+
+instance Prelude.NFData DisassociateCustomerGateway where
+  rnf DisassociateCustomerGateway' {..} =
+    Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf customerGatewayArn
+
+instance Data.ToHeaders DisassociateCustomerGateway where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DisassociateCustomerGateway where
+  toPath DisassociateCustomerGateway' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/customer-gateway-associations/",
+        Data.toBS customerGatewayArn
+      ]
+
+instance Data.ToQuery DisassociateCustomerGateway where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociateCustomerGatewayResponse' smart constructor.
+data DisassociateCustomerGatewayResponse = DisassociateCustomerGatewayResponse'
+  { -- | Information about the customer gateway association.
+    customerGatewayAssociation :: Prelude.Maybe CustomerGatewayAssociation,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateCustomerGatewayResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customerGatewayAssociation', 'disassociateCustomerGatewayResponse_customerGatewayAssociation' - Information about the customer gateway association.
+--
+-- 'httpStatus', 'disassociateCustomerGatewayResponse_httpStatus' - The response's http status code.
+newDisassociateCustomerGatewayResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociateCustomerGatewayResponse
+newDisassociateCustomerGatewayResponse pHttpStatus_ =
+  DisassociateCustomerGatewayResponse'
+    { customerGatewayAssociation =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the customer gateway association.
+disassociateCustomerGatewayResponse_customerGatewayAssociation :: Lens.Lens' DisassociateCustomerGatewayResponse (Prelude.Maybe CustomerGatewayAssociation)
+disassociateCustomerGatewayResponse_customerGatewayAssociation = Lens.lens (\DisassociateCustomerGatewayResponse' {customerGatewayAssociation} -> customerGatewayAssociation) (\s@DisassociateCustomerGatewayResponse' {} a -> s {customerGatewayAssociation = a} :: DisassociateCustomerGatewayResponse)
+
+-- | The response's http status code.
+disassociateCustomerGatewayResponse_httpStatus :: Lens.Lens' DisassociateCustomerGatewayResponse Prelude.Int
+disassociateCustomerGatewayResponse_httpStatus = Lens.lens (\DisassociateCustomerGatewayResponse' {httpStatus} -> httpStatus) (\s@DisassociateCustomerGatewayResponse' {} a -> s {httpStatus = a} :: DisassociateCustomerGatewayResponse)
+
+instance
+  Prelude.NFData
+    DisassociateCustomerGatewayResponse
+  where
+  rnf DisassociateCustomerGatewayResponse' {..} =
+    Prelude.rnf customerGatewayAssociation
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DisassociateLink.hs b/gen/Amazonka/NetworkManager/DisassociateLink.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DisassociateLink.hs
@@ -0,0 +1,203 @@
+{-# 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.NetworkManager.DisassociateLink
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociates an existing device from a link. You must first
+-- disassociate any customer gateways that are associated with the link.
+module Amazonka.NetworkManager.DisassociateLink
+  ( -- * Creating a Request
+    DisassociateLink (..),
+    newDisassociateLink,
+
+    -- * Request Lenses
+    disassociateLink_globalNetworkId,
+    disassociateLink_deviceId,
+    disassociateLink_linkId,
+
+    -- * Destructuring the Response
+    DisassociateLinkResponse (..),
+    newDisassociateLinkResponse,
+
+    -- * Response Lenses
+    disassociateLinkResponse_linkAssociation,
+    disassociateLinkResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociateLink' smart constructor.
+data DisassociateLink = DisassociateLink'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the device.
+    deviceId :: Prelude.Text,
+    -- | The ID of the link.
+    linkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateLink' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'disassociateLink_globalNetworkId' - The ID of the global network.
+--
+-- 'deviceId', 'disassociateLink_deviceId' - The ID of the device.
+--
+-- 'linkId', 'disassociateLink_linkId' - The ID of the link.
+newDisassociateLink ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'deviceId'
+  Prelude.Text ->
+  -- | 'linkId'
+  Prelude.Text ->
+  DisassociateLink
+newDisassociateLink
+  pGlobalNetworkId_
+  pDeviceId_
+  pLinkId_ =
+    DisassociateLink'
+      { globalNetworkId =
+          pGlobalNetworkId_,
+        deviceId = pDeviceId_,
+        linkId = pLinkId_
+      }
+
+-- | The ID of the global network.
+disassociateLink_globalNetworkId :: Lens.Lens' DisassociateLink Prelude.Text
+disassociateLink_globalNetworkId = Lens.lens (\DisassociateLink' {globalNetworkId} -> globalNetworkId) (\s@DisassociateLink' {} a -> s {globalNetworkId = a} :: DisassociateLink)
+
+-- | The ID of the device.
+disassociateLink_deviceId :: Lens.Lens' DisassociateLink Prelude.Text
+disassociateLink_deviceId = Lens.lens (\DisassociateLink' {deviceId} -> deviceId) (\s@DisassociateLink' {} a -> s {deviceId = a} :: DisassociateLink)
+
+-- | The ID of the link.
+disassociateLink_linkId :: Lens.Lens' DisassociateLink Prelude.Text
+disassociateLink_linkId = Lens.lens (\DisassociateLink' {linkId} -> linkId) (\s@DisassociateLink' {} a -> s {linkId = a} :: DisassociateLink)
+
+instance Core.AWSRequest DisassociateLink where
+  type
+    AWSResponse DisassociateLink =
+      DisassociateLinkResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DisassociateLinkResponse'
+            Prelude.<$> (x Data..?> "LinkAssociation")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DisassociateLink where
+  hashWithSalt _salt DisassociateLink' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` deviceId
+      `Prelude.hashWithSalt` linkId
+
+instance Prelude.NFData DisassociateLink where
+  rnf DisassociateLink' {..} =
+    Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf deviceId
+      `Prelude.seq` Prelude.rnf linkId
+
+instance Data.ToHeaders DisassociateLink where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DisassociateLink where
+  toPath DisassociateLink' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/link-associations"
+      ]
+
+instance Data.ToQuery DisassociateLink where
+  toQuery DisassociateLink' {..} =
+    Prelude.mconcat
+      [ "deviceId" Data.=: deviceId,
+        "linkId" Data.=: linkId
+      ]
+
+-- | /See:/ 'newDisassociateLinkResponse' smart constructor.
+data DisassociateLinkResponse = DisassociateLinkResponse'
+  { -- | Information about the link association.
+    linkAssociation :: Prelude.Maybe LinkAssociation,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateLinkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'linkAssociation', 'disassociateLinkResponse_linkAssociation' - Information about the link association.
+--
+-- 'httpStatus', 'disassociateLinkResponse_httpStatus' - The response's http status code.
+newDisassociateLinkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociateLinkResponse
+newDisassociateLinkResponse pHttpStatus_ =
+  DisassociateLinkResponse'
+    { linkAssociation =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the link association.
+disassociateLinkResponse_linkAssociation :: Lens.Lens' DisassociateLinkResponse (Prelude.Maybe LinkAssociation)
+disassociateLinkResponse_linkAssociation = Lens.lens (\DisassociateLinkResponse' {linkAssociation} -> linkAssociation) (\s@DisassociateLinkResponse' {} a -> s {linkAssociation = a} :: DisassociateLinkResponse)
+
+-- | The response's http status code.
+disassociateLinkResponse_httpStatus :: Lens.Lens' DisassociateLinkResponse Prelude.Int
+disassociateLinkResponse_httpStatus = Lens.lens (\DisassociateLinkResponse' {httpStatus} -> httpStatus) (\s@DisassociateLinkResponse' {} a -> s {httpStatus = a} :: DisassociateLinkResponse)
+
+instance Prelude.NFData DisassociateLinkResponse where
+  rnf DisassociateLinkResponse' {..} =
+    Prelude.rnf linkAssociation
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/DisassociateTransitGatewayConnectPeer.hs b/gen/Amazonka/NetworkManager/DisassociateTransitGatewayConnectPeer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/DisassociateTransitGatewayConnectPeer.hs
@@ -0,0 +1,211 @@
+{-# 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.NetworkManager.DisassociateTransitGatewayConnectPeer
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociates a transit gateway Connect peer from a device and link.
+module Amazonka.NetworkManager.DisassociateTransitGatewayConnectPeer
+  ( -- * Creating a Request
+    DisassociateTransitGatewayConnectPeer (..),
+    newDisassociateTransitGatewayConnectPeer,
+
+    -- * Request Lenses
+    disassociateTransitGatewayConnectPeer_globalNetworkId,
+    disassociateTransitGatewayConnectPeer_transitGatewayConnectPeerArn,
+
+    -- * Destructuring the Response
+    DisassociateTransitGatewayConnectPeerResponse (..),
+    newDisassociateTransitGatewayConnectPeerResponse,
+
+    -- * Response Lenses
+    disassociateTransitGatewayConnectPeerResponse_transitGatewayConnectPeerAssociation,
+    disassociateTransitGatewayConnectPeerResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociateTransitGatewayConnectPeer' smart constructor.
+data DisassociateTransitGatewayConnectPeer = DisassociateTransitGatewayConnectPeer'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the transit gateway Connect peer.
+    transitGatewayConnectPeerArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateTransitGatewayConnectPeer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'disassociateTransitGatewayConnectPeer_globalNetworkId' - The ID of the global network.
+--
+-- 'transitGatewayConnectPeerArn', 'disassociateTransitGatewayConnectPeer_transitGatewayConnectPeerArn' - The Amazon Resource Name (ARN) of the transit gateway Connect peer.
+newDisassociateTransitGatewayConnectPeer ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'transitGatewayConnectPeerArn'
+  Prelude.Text ->
+  DisassociateTransitGatewayConnectPeer
+newDisassociateTransitGatewayConnectPeer
+  pGlobalNetworkId_
+  pTransitGatewayConnectPeerArn_ =
+    DisassociateTransitGatewayConnectPeer'
+      { globalNetworkId =
+          pGlobalNetworkId_,
+        transitGatewayConnectPeerArn =
+          pTransitGatewayConnectPeerArn_
+      }
+
+-- | The ID of the global network.
+disassociateTransitGatewayConnectPeer_globalNetworkId :: Lens.Lens' DisassociateTransitGatewayConnectPeer Prelude.Text
+disassociateTransitGatewayConnectPeer_globalNetworkId = Lens.lens (\DisassociateTransitGatewayConnectPeer' {globalNetworkId} -> globalNetworkId) (\s@DisassociateTransitGatewayConnectPeer' {} a -> s {globalNetworkId = a} :: DisassociateTransitGatewayConnectPeer)
+
+-- | The Amazon Resource Name (ARN) of the transit gateway Connect peer.
+disassociateTransitGatewayConnectPeer_transitGatewayConnectPeerArn :: Lens.Lens' DisassociateTransitGatewayConnectPeer Prelude.Text
+disassociateTransitGatewayConnectPeer_transitGatewayConnectPeerArn = Lens.lens (\DisassociateTransitGatewayConnectPeer' {transitGatewayConnectPeerArn} -> transitGatewayConnectPeerArn) (\s@DisassociateTransitGatewayConnectPeer' {} a -> s {transitGatewayConnectPeerArn = a} :: DisassociateTransitGatewayConnectPeer)
+
+instance
+  Core.AWSRequest
+    DisassociateTransitGatewayConnectPeer
+  where
+  type
+    AWSResponse
+      DisassociateTransitGatewayConnectPeer =
+      DisassociateTransitGatewayConnectPeerResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DisassociateTransitGatewayConnectPeerResponse'
+            Prelude.<$> (x Data..?> "TransitGatewayConnectPeerAssociation")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DisassociateTransitGatewayConnectPeer
+  where
+  hashWithSalt
+    _salt
+    DisassociateTransitGatewayConnectPeer' {..} =
+      _salt
+        `Prelude.hashWithSalt` globalNetworkId
+        `Prelude.hashWithSalt` transitGatewayConnectPeerArn
+
+instance
+  Prelude.NFData
+    DisassociateTransitGatewayConnectPeer
+  where
+  rnf DisassociateTransitGatewayConnectPeer' {..} =
+    Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf transitGatewayConnectPeerArn
+
+instance
+  Data.ToHeaders
+    DisassociateTransitGatewayConnectPeer
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToPath
+    DisassociateTransitGatewayConnectPeer
+  where
+  toPath DisassociateTransitGatewayConnectPeer' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/transit-gateway-connect-peer-associations/",
+        Data.toBS transitGatewayConnectPeerArn
+      ]
+
+instance
+  Data.ToQuery
+    DisassociateTransitGatewayConnectPeer
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociateTransitGatewayConnectPeerResponse' smart constructor.
+data DisassociateTransitGatewayConnectPeerResponse = DisassociateTransitGatewayConnectPeerResponse'
+  { -- | The transit gateway Connect peer association.
+    transitGatewayConnectPeerAssociation :: Prelude.Maybe TransitGatewayConnectPeerAssociation,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateTransitGatewayConnectPeerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'transitGatewayConnectPeerAssociation', 'disassociateTransitGatewayConnectPeerResponse_transitGatewayConnectPeerAssociation' - The transit gateway Connect peer association.
+--
+-- 'httpStatus', 'disassociateTransitGatewayConnectPeerResponse_httpStatus' - The response's http status code.
+newDisassociateTransitGatewayConnectPeerResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociateTransitGatewayConnectPeerResponse
+newDisassociateTransitGatewayConnectPeerResponse
+  pHttpStatus_ =
+    DisassociateTransitGatewayConnectPeerResponse'
+      { transitGatewayConnectPeerAssociation =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The transit gateway Connect peer association.
+disassociateTransitGatewayConnectPeerResponse_transitGatewayConnectPeerAssociation :: Lens.Lens' DisassociateTransitGatewayConnectPeerResponse (Prelude.Maybe TransitGatewayConnectPeerAssociation)
+disassociateTransitGatewayConnectPeerResponse_transitGatewayConnectPeerAssociation = Lens.lens (\DisassociateTransitGatewayConnectPeerResponse' {transitGatewayConnectPeerAssociation} -> transitGatewayConnectPeerAssociation) (\s@DisassociateTransitGatewayConnectPeerResponse' {} a -> s {transitGatewayConnectPeerAssociation = a} :: DisassociateTransitGatewayConnectPeerResponse)
+
+-- | The response's http status code.
+disassociateTransitGatewayConnectPeerResponse_httpStatus :: Lens.Lens' DisassociateTransitGatewayConnectPeerResponse Prelude.Int
+disassociateTransitGatewayConnectPeerResponse_httpStatus = Lens.lens (\DisassociateTransitGatewayConnectPeerResponse' {httpStatus} -> httpStatus) (\s@DisassociateTransitGatewayConnectPeerResponse' {} a -> s {httpStatus = a} :: DisassociateTransitGatewayConnectPeerResponse)
+
+instance
+  Prelude.NFData
+    DisassociateTransitGatewayConnectPeerResponse
+  where
+  rnf
+    DisassociateTransitGatewayConnectPeerResponse' {..} =
+      Prelude.rnf transitGatewayConnectPeerAssociation
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/ExecuteCoreNetworkChangeSet.hs b/gen/Amazonka/NetworkManager/ExecuteCoreNetworkChangeSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/ExecuteCoreNetworkChangeSet.hs
@@ -0,0 +1,180 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.ExecuteCoreNetworkChangeSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Executes a change set on your core network. Deploys changes globally
+-- based on the policy submitted..
+module Amazonka.NetworkManager.ExecuteCoreNetworkChangeSet
+  ( -- * Creating a Request
+    ExecuteCoreNetworkChangeSet (..),
+    newExecuteCoreNetworkChangeSet,
+
+    -- * Request Lenses
+    executeCoreNetworkChangeSet_coreNetworkId,
+    executeCoreNetworkChangeSet_policyVersionId,
+
+    -- * Destructuring the Response
+    ExecuteCoreNetworkChangeSetResponse (..),
+    newExecuteCoreNetworkChangeSetResponse,
+
+    -- * Response Lenses
+    executeCoreNetworkChangeSetResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newExecuteCoreNetworkChangeSet' smart constructor.
+data ExecuteCoreNetworkChangeSet = ExecuteCoreNetworkChangeSet'
+  { -- | The ID of a core network.
+    coreNetworkId :: Prelude.Text,
+    -- | The ID of the policy version.
+    policyVersionId :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExecuteCoreNetworkChangeSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkId', 'executeCoreNetworkChangeSet_coreNetworkId' - The ID of a core network.
+--
+-- 'policyVersionId', 'executeCoreNetworkChangeSet_policyVersionId' - The ID of the policy version.
+newExecuteCoreNetworkChangeSet ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  -- | 'policyVersionId'
+  Prelude.Int ->
+  ExecuteCoreNetworkChangeSet
+newExecuteCoreNetworkChangeSet
+  pCoreNetworkId_
+  pPolicyVersionId_ =
+    ExecuteCoreNetworkChangeSet'
+      { coreNetworkId =
+          pCoreNetworkId_,
+        policyVersionId = pPolicyVersionId_
+      }
+
+-- | The ID of a core network.
+executeCoreNetworkChangeSet_coreNetworkId :: Lens.Lens' ExecuteCoreNetworkChangeSet Prelude.Text
+executeCoreNetworkChangeSet_coreNetworkId = Lens.lens (\ExecuteCoreNetworkChangeSet' {coreNetworkId} -> coreNetworkId) (\s@ExecuteCoreNetworkChangeSet' {} a -> s {coreNetworkId = a} :: ExecuteCoreNetworkChangeSet)
+
+-- | The ID of the policy version.
+executeCoreNetworkChangeSet_policyVersionId :: Lens.Lens' ExecuteCoreNetworkChangeSet Prelude.Int
+executeCoreNetworkChangeSet_policyVersionId = Lens.lens (\ExecuteCoreNetworkChangeSet' {policyVersionId} -> policyVersionId) (\s@ExecuteCoreNetworkChangeSet' {} a -> s {policyVersionId = a} :: ExecuteCoreNetworkChangeSet)
+
+instance Core.AWSRequest ExecuteCoreNetworkChangeSet where
+  type
+    AWSResponse ExecuteCoreNetworkChangeSet =
+      ExecuteCoreNetworkChangeSetResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          ExecuteCoreNetworkChangeSetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ExecuteCoreNetworkChangeSet where
+  hashWithSalt _salt ExecuteCoreNetworkChangeSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` policyVersionId
+
+instance Prelude.NFData ExecuteCoreNetworkChangeSet where
+  rnf ExecuteCoreNetworkChangeSet' {..} =
+    Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf policyVersionId
+
+instance Data.ToHeaders ExecuteCoreNetworkChangeSet where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ExecuteCoreNetworkChangeSet where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath ExecuteCoreNetworkChangeSet where
+  toPath ExecuteCoreNetworkChangeSet' {..} =
+    Prelude.mconcat
+      [ "/core-networks/",
+        Data.toBS coreNetworkId,
+        "/core-network-change-sets/",
+        Data.toBS policyVersionId,
+        "/execute"
+      ]
+
+instance Data.ToQuery ExecuteCoreNetworkChangeSet where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newExecuteCoreNetworkChangeSetResponse' smart constructor.
+data ExecuteCoreNetworkChangeSetResponse = ExecuteCoreNetworkChangeSetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExecuteCoreNetworkChangeSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'executeCoreNetworkChangeSetResponse_httpStatus' - The response's http status code.
+newExecuteCoreNetworkChangeSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ExecuteCoreNetworkChangeSetResponse
+newExecuteCoreNetworkChangeSetResponse pHttpStatus_ =
+  ExecuteCoreNetworkChangeSetResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+executeCoreNetworkChangeSetResponse_httpStatus :: Lens.Lens' ExecuteCoreNetworkChangeSetResponse Prelude.Int
+executeCoreNetworkChangeSetResponse_httpStatus = Lens.lens (\ExecuteCoreNetworkChangeSetResponse' {httpStatus} -> httpStatus) (\s@ExecuteCoreNetworkChangeSetResponse' {} a -> s {httpStatus = a} :: ExecuteCoreNetworkChangeSetResponse)
+
+instance
+  Prelude.NFData
+    ExecuteCoreNetworkChangeSetResponse
+  where
+  rnf ExecuteCoreNetworkChangeSetResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetConnectAttachment.hs b/gen/Amazonka/NetworkManager/GetConnectAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetConnectAttachment.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.GetConnectAttachment
+-- 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 information about a core network Connect attachment.
+module Amazonka.NetworkManager.GetConnectAttachment
+  ( -- * Creating a Request
+    GetConnectAttachment (..),
+    newGetConnectAttachment,
+
+    -- * Request Lenses
+    getConnectAttachment_attachmentId,
+
+    -- * Destructuring the Response
+    GetConnectAttachmentResponse (..),
+    newGetConnectAttachmentResponse,
+
+    -- * Response Lenses
+    getConnectAttachmentResponse_connectAttachment,
+    getConnectAttachmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetConnectAttachment' smart constructor.
+data GetConnectAttachment = GetConnectAttachment'
+  { -- | The ID of the attachment.
+    attachmentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetConnectAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachmentId', 'getConnectAttachment_attachmentId' - The ID of the attachment.
+newGetConnectAttachment ::
+  -- | 'attachmentId'
+  Prelude.Text ->
+  GetConnectAttachment
+newGetConnectAttachment pAttachmentId_ =
+  GetConnectAttachment'
+    { attachmentId =
+        pAttachmentId_
+    }
+
+-- | The ID of the attachment.
+getConnectAttachment_attachmentId :: Lens.Lens' GetConnectAttachment Prelude.Text
+getConnectAttachment_attachmentId = Lens.lens (\GetConnectAttachment' {attachmentId} -> attachmentId) (\s@GetConnectAttachment' {} a -> s {attachmentId = a} :: GetConnectAttachment)
+
+instance Core.AWSRequest GetConnectAttachment where
+  type
+    AWSResponse GetConnectAttachment =
+      GetConnectAttachmentResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetConnectAttachmentResponse'
+            Prelude.<$> (x Data..?> "ConnectAttachment")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetConnectAttachment where
+  hashWithSalt _salt GetConnectAttachment' {..} =
+    _salt `Prelude.hashWithSalt` attachmentId
+
+instance Prelude.NFData GetConnectAttachment where
+  rnf GetConnectAttachment' {..} =
+    Prelude.rnf attachmentId
+
+instance Data.ToHeaders GetConnectAttachment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetConnectAttachment where
+  toPath GetConnectAttachment' {..} =
+    Prelude.mconcat
+      ["/connect-attachments/", Data.toBS attachmentId]
+
+instance Data.ToQuery GetConnectAttachment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetConnectAttachmentResponse' smart constructor.
+data GetConnectAttachmentResponse = GetConnectAttachmentResponse'
+  { -- | Details about the Connect attachment.
+    connectAttachment :: Prelude.Maybe ConnectAttachment,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetConnectAttachmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectAttachment', 'getConnectAttachmentResponse_connectAttachment' - Details about the Connect attachment.
+--
+-- 'httpStatus', 'getConnectAttachmentResponse_httpStatus' - The response's http status code.
+newGetConnectAttachmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetConnectAttachmentResponse
+newGetConnectAttachmentResponse pHttpStatus_ =
+  GetConnectAttachmentResponse'
+    { connectAttachment =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Details about the Connect attachment.
+getConnectAttachmentResponse_connectAttachment :: Lens.Lens' GetConnectAttachmentResponse (Prelude.Maybe ConnectAttachment)
+getConnectAttachmentResponse_connectAttachment = Lens.lens (\GetConnectAttachmentResponse' {connectAttachment} -> connectAttachment) (\s@GetConnectAttachmentResponse' {} a -> s {connectAttachment = a} :: GetConnectAttachmentResponse)
+
+-- | The response's http status code.
+getConnectAttachmentResponse_httpStatus :: Lens.Lens' GetConnectAttachmentResponse Prelude.Int
+getConnectAttachmentResponse_httpStatus = Lens.lens (\GetConnectAttachmentResponse' {httpStatus} -> httpStatus) (\s@GetConnectAttachmentResponse' {} a -> s {httpStatus = a} :: GetConnectAttachmentResponse)
+
+instance Prelude.NFData GetConnectAttachmentResponse where
+  rnf GetConnectAttachmentResponse' {..} =
+    Prelude.rnf connectAttachment
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetConnectPeer.hs b/gen/Amazonka/NetworkManager/GetConnectPeer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetConnectPeer.hs
@@ -0,0 +1,159 @@
+{-# 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.NetworkManager.GetConnectPeer
+-- 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 information about a core network Connect peer.
+module Amazonka.NetworkManager.GetConnectPeer
+  ( -- * Creating a Request
+    GetConnectPeer (..),
+    newGetConnectPeer,
+
+    -- * Request Lenses
+    getConnectPeer_connectPeerId,
+
+    -- * Destructuring the Response
+    GetConnectPeerResponse (..),
+    newGetConnectPeerResponse,
+
+    -- * Response Lenses
+    getConnectPeerResponse_connectPeer,
+    getConnectPeerResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetConnectPeer' smart constructor.
+data GetConnectPeer = GetConnectPeer'
+  { -- | The ID of the Connect peer.
+    connectPeerId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetConnectPeer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectPeerId', 'getConnectPeer_connectPeerId' - The ID of the Connect peer.
+newGetConnectPeer ::
+  -- | 'connectPeerId'
+  Prelude.Text ->
+  GetConnectPeer
+newGetConnectPeer pConnectPeerId_ =
+  GetConnectPeer' {connectPeerId = pConnectPeerId_}
+
+-- | The ID of the Connect peer.
+getConnectPeer_connectPeerId :: Lens.Lens' GetConnectPeer Prelude.Text
+getConnectPeer_connectPeerId = Lens.lens (\GetConnectPeer' {connectPeerId} -> connectPeerId) (\s@GetConnectPeer' {} a -> s {connectPeerId = a} :: GetConnectPeer)
+
+instance Core.AWSRequest GetConnectPeer where
+  type
+    AWSResponse GetConnectPeer =
+      GetConnectPeerResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetConnectPeerResponse'
+            Prelude.<$> (x Data..?> "ConnectPeer")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetConnectPeer where
+  hashWithSalt _salt GetConnectPeer' {..} =
+    _salt `Prelude.hashWithSalt` connectPeerId
+
+instance Prelude.NFData GetConnectPeer where
+  rnf GetConnectPeer' {..} = Prelude.rnf connectPeerId
+
+instance Data.ToHeaders GetConnectPeer where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetConnectPeer where
+  toPath GetConnectPeer' {..} =
+    Prelude.mconcat
+      ["/connect-peers/", Data.toBS connectPeerId]
+
+instance Data.ToQuery GetConnectPeer where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetConnectPeerResponse' smart constructor.
+data GetConnectPeerResponse = GetConnectPeerResponse'
+  { -- | Returns information about a core network Connect peer.
+    connectPeer :: Prelude.Maybe ConnectPeer,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetConnectPeerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectPeer', 'getConnectPeerResponse_connectPeer' - Returns information about a core network Connect peer.
+--
+-- 'httpStatus', 'getConnectPeerResponse_httpStatus' - The response's http status code.
+newGetConnectPeerResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetConnectPeerResponse
+newGetConnectPeerResponse pHttpStatus_ =
+  GetConnectPeerResponse'
+    { connectPeer =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returns information about a core network Connect peer.
+getConnectPeerResponse_connectPeer :: Lens.Lens' GetConnectPeerResponse (Prelude.Maybe ConnectPeer)
+getConnectPeerResponse_connectPeer = Lens.lens (\GetConnectPeerResponse' {connectPeer} -> connectPeer) (\s@GetConnectPeerResponse' {} a -> s {connectPeer = a} :: GetConnectPeerResponse)
+
+-- | The response's http status code.
+getConnectPeerResponse_httpStatus :: Lens.Lens' GetConnectPeerResponse Prelude.Int
+getConnectPeerResponse_httpStatus = Lens.lens (\GetConnectPeerResponse' {httpStatus} -> httpStatus) (\s@GetConnectPeerResponse' {} a -> s {httpStatus = a} :: GetConnectPeerResponse)
+
+instance Prelude.NFData GetConnectPeerResponse where
+  rnf GetConnectPeerResponse' {..} =
+    Prelude.rnf connectPeer
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetConnectPeerAssociations.hs b/gen/Amazonka/NetworkManager/GetConnectPeerAssociations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetConnectPeerAssociations.hs
@@ -0,0 +1,254 @@
+{-# 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.NetworkManager.GetConnectPeerAssociations
+-- 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 information about a core network Connect peer associations.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetConnectPeerAssociations
+  ( -- * Creating a Request
+    GetConnectPeerAssociations (..),
+    newGetConnectPeerAssociations,
+
+    -- * Request Lenses
+    getConnectPeerAssociations_connectPeerIds,
+    getConnectPeerAssociations_maxResults,
+    getConnectPeerAssociations_nextToken,
+    getConnectPeerAssociations_globalNetworkId,
+
+    -- * Destructuring the Response
+    GetConnectPeerAssociationsResponse (..),
+    newGetConnectPeerAssociationsResponse,
+
+    -- * Response Lenses
+    getConnectPeerAssociationsResponse_connectPeerAssociations,
+    getConnectPeerAssociationsResponse_nextToken,
+    getConnectPeerAssociationsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetConnectPeerAssociations' smart constructor.
+data GetConnectPeerAssociations = GetConnectPeerAssociations'
+  { -- | The IDs of the Connect peers.
+    connectPeerIds :: Prelude.Maybe [Prelude.Text],
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetConnectPeerAssociations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectPeerIds', 'getConnectPeerAssociations_connectPeerIds' - The IDs of the Connect peers.
+--
+-- 'maxResults', 'getConnectPeerAssociations_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getConnectPeerAssociations_nextToken' - The token for the next page of results.
+--
+-- 'globalNetworkId', 'getConnectPeerAssociations_globalNetworkId' - The ID of the global network.
+newGetConnectPeerAssociations ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  GetConnectPeerAssociations
+newGetConnectPeerAssociations pGlobalNetworkId_ =
+  GetConnectPeerAssociations'
+    { connectPeerIds =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | The IDs of the Connect peers.
+getConnectPeerAssociations_connectPeerIds :: Lens.Lens' GetConnectPeerAssociations (Prelude.Maybe [Prelude.Text])
+getConnectPeerAssociations_connectPeerIds = Lens.lens (\GetConnectPeerAssociations' {connectPeerIds} -> connectPeerIds) (\s@GetConnectPeerAssociations' {} a -> s {connectPeerIds = a} :: GetConnectPeerAssociations) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of results to return.
+getConnectPeerAssociations_maxResults :: Lens.Lens' GetConnectPeerAssociations (Prelude.Maybe Prelude.Natural)
+getConnectPeerAssociations_maxResults = Lens.lens (\GetConnectPeerAssociations' {maxResults} -> maxResults) (\s@GetConnectPeerAssociations' {} a -> s {maxResults = a} :: GetConnectPeerAssociations)
+
+-- | The token for the next page of results.
+getConnectPeerAssociations_nextToken :: Lens.Lens' GetConnectPeerAssociations (Prelude.Maybe Prelude.Text)
+getConnectPeerAssociations_nextToken = Lens.lens (\GetConnectPeerAssociations' {nextToken} -> nextToken) (\s@GetConnectPeerAssociations' {} a -> s {nextToken = a} :: GetConnectPeerAssociations)
+
+-- | The ID of the global network.
+getConnectPeerAssociations_globalNetworkId :: Lens.Lens' GetConnectPeerAssociations Prelude.Text
+getConnectPeerAssociations_globalNetworkId = Lens.lens (\GetConnectPeerAssociations' {globalNetworkId} -> globalNetworkId) (\s@GetConnectPeerAssociations' {} a -> s {globalNetworkId = a} :: GetConnectPeerAssociations)
+
+instance Core.AWSPager GetConnectPeerAssociations where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getConnectPeerAssociationsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getConnectPeerAssociationsResponse_connectPeerAssociations
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getConnectPeerAssociations_nextToken
+          Lens..~ rs
+          Lens.^? getConnectPeerAssociationsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest GetConnectPeerAssociations where
+  type
+    AWSResponse GetConnectPeerAssociations =
+      GetConnectPeerAssociationsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetConnectPeerAssociationsResponse'
+            Prelude.<$> ( x
+                            Data..?> "ConnectPeerAssociations"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetConnectPeerAssociations where
+  hashWithSalt _salt GetConnectPeerAssociations' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectPeerIds
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` globalNetworkId
+
+instance Prelude.NFData GetConnectPeerAssociations where
+  rnf GetConnectPeerAssociations' {..} =
+    Prelude.rnf connectPeerIds
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance Data.ToHeaders GetConnectPeerAssociations where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetConnectPeerAssociations where
+  toPath GetConnectPeerAssociations' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/connect-peer-associations"
+      ]
+
+instance Data.ToQuery GetConnectPeerAssociations where
+  toQuery GetConnectPeerAssociations' {..} =
+    Prelude.mconcat
+      [ "connectPeerIds"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> connectPeerIds
+            ),
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newGetConnectPeerAssociationsResponse' smart constructor.
+data GetConnectPeerAssociationsResponse = GetConnectPeerAssociationsResponse'
+  { -- | Displays a list of Connect peer associations.
+    connectPeerAssociations :: Prelude.Maybe [ConnectPeerAssociation],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetConnectPeerAssociationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectPeerAssociations', 'getConnectPeerAssociationsResponse_connectPeerAssociations' - Displays a list of Connect peer associations.
+--
+-- 'nextToken', 'getConnectPeerAssociationsResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'getConnectPeerAssociationsResponse_httpStatus' - The response's http status code.
+newGetConnectPeerAssociationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetConnectPeerAssociationsResponse
+newGetConnectPeerAssociationsResponse pHttpStatus_ =
+  GetConnectPeerAssociationsResponse'
+    { connectPeerAssociations =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Displays a list of Connect peer associations.
+getConnectPeerAssociationsResponse_connectPeerAssociations :: Lens.Lens' GetConnectPeerAssociationsResponse (Prelude.Maybe [ConnectPeerAssociation])
+getConnectPeerAssociationsResponse_connectPeerAssociations = Lens.lens (\GetConnectPeerAssociationsResponse' {connectPeerAssociations} -> connectPeerAssociations) (\s@GetConnectPeerAssociationsResponse' {} a -> s {connectPeerAssociations = a} :: GetConnectPeerAssociationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+getConnectPeerAssociationsResponse_nextToken :: Lens.Lens' GetConnectPeerAssociationsResponse (Prelude.Maybe Prelude.Text)
+getConnectPeerAssociationsResponse_nextToken = Lens.lens (\GetConnectPeerAssociationsResponse' {nextToken} -> nextToken) (\s@GetConnectPeerAssociationsResponse' {} a -> s {nextToken = a} :: GetConnectPeerAssociationsResponse)
+
+-- | The response's http status code.
+getConnectPeerAssociationsResponse_httpStatus :: Lens.Lens' GetConnectPeerAssociationsResponse Prelude.Int
+getConnectPeerAssociationsResponse_httpStatus = Lens.lens (\GetConnectPeerAssociationsResponse' {httpStatus} -> httpStatus) (\s@GetConnectPeerAssociationsResponse' {} a -> s {httpStatus = a} :: GetConnectPeerAssociationsResponse)
+
+instance
+  Prelude.NFData
+    GetConnectPeerAssociationsResponse
+  where
+  rnf GetConnectPeerAssociationsResponse' {..} =
+    Prelude.rnf connectPeerAssociations
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetConnections.hs b/gen/Amazonka/NetworkManager/GetConnections.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetConnections.hs
@@ -0,0 +1,261 @@
+{-# 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.NetworkManager.GetConnections
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about one or more of your connections in a global
+-- network.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetConnections
+  ( -- * Creating a Request
+    GetConnections (..),
+    newGetConnections,
+
+    -- * Request Lenses
+    getConnections_connectionIds,
+    getConnections_deviceId,
+    getConnections_maxResults,
+    getConnections_nextToken,
+    getConnections_globalNetworkId,
+
+    -- * Destructuring the Response
+    GetConnectionsResponse (..),
+    newGetConnectionsResponse,
+
+    -- * Response Lenses
+    getConnectionsResponse_connections,
+    getConnectionsResponse_nextToken,
+    getConnectionsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetConnections' smart constructor.
+data GetConnections = GetConnections'
+  { -- | One or more connection IDs.
+    connectionIds :: Prelude.Maybe [Prelude.Text],
+    -- | The ID of the device.
+    deviceId :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetConnections' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectionIds', 'getConnections_connectionIds' - One or more connection IDs.
+--
+-- 'deviceId', 'getConnections_deviceId' - The ID of the device.
+--
+-- 'maxResults', 'getConnections_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getConnections_nextToken' - The token for the next page of results.
+--
+-- 'globalNetworkId', 'getConnections_globalNetworkId' - The ID of the global network.
+newGetConnections ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  GetConnections
+newGetConnections pGlobalNetworkId_ =
+  GetConnections'
+    { connectionIds = Prelude.Nothing,
+      deviceId = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | One or more connection IDs.
+getConnections_connectionIds :: Lens.Lens' GetConnections (Prelude.Maybe [Prelude.Text])
+getConnections_connectionIds = Lens.lens (\GetConnections' {connectionIds} -> connectionIds) (\s@GetConnections' {} a -> s {connectionIds = a} :: GetConnections) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the device.
+getConnections_deviceId :: Lens.Lens' GetConnections (Prelude.Maybe Prelude.Text)
+getConnections_deviceId = Lens.lens (\GetConnections' {deviceId} -> deviceId) (\s@GetConnections' {} a -> s {deviceId = a} :: GetConnections)
+
+-- | The maximum number of results to return.
+getConnections_maxResults :: Lens.Lens' GetConnections (Prelude.Maybe Prelude.Natural)
+getConnections_maxResults = Lens.lens (\GetConnections' {maxResults} -> maxResults) (\s@GetConnections' {} a -> s {maxResults = a} :: GetConnections)
+
+-- | The token for the next page of results.
+getConnections_nextToken :: Lens.Lens' GetConnections (Prelude.Maybe Prelude.Text)
+getConnections_nextToken = Lens.lens (\GetConnections' {nextToken} -> nextToken) (\s@GetConnections' {} a -> s {nextToken = a} :: GetConnections)
+
+-- | The ID of the global network.
+getConnections_globalNetworkId :: Lens.Lens' GetConnections Prelude.Text
+getConnections_globalNetworkId = Lens.lens (\GetConnections' {globalNetworkId} -> globalNetworkId) (\s@GetConnections' {} a -> s {globalNetworkId = a} :: GetConnections)
+
+instance Core.AWSPager GetConnections where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getConnectionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getConnectionsResponse_connections
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getConnections_nextToken
+          Lens..~ rs
+          Lens.^? getConnectionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest GetConnections where
+  type
+    AWSResponse GetConnections =
+      GetConnectionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetConnectionsResponse'
+            Prelude.<$> (x Data..?> "Connections" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetConnections where
+  hashWithSalt _salt GetConnections' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectionIds
+      `Prelude.hashWithSalt` deviceId
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` globalNetworkId
+
+instance Prelude.NFData GetConnections where
+  rnf GetConnections' {..} =
+    Prelude.rnf connectionIds
+      `Prelude.seq` Prelude.rnf deviceId
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance Data.ToHeaders GetConnections where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetConnections where
+  toPath GetConnections' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/connections"
+      ]
+
+instance Data.ToQuery GetConnections where
+  toQuery GetConnections' {..} =
+    Prelude.mconcat
+      [ "connectionIds"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> connectionIds
+            ),
+        "deviceId" Data.=: deviceId,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newGetConnectionsResponse' smart constructor.
+data GetConnectionsResponse = GetConnectionsResponse'
+  { -- | Information about the connections.
+    connections :: Prelude.Maybe [Connection],
+    -- | The token to use for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetConnectionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connections', 'getConnectionsResponse_connections' - Information about the connections.
+--
+-- 'nextToken', 'getConnectionsResponse_nextToken' - The token to use for the next page of results.
+--
+-- 'httpStatus', 'getConnectionsResponse_httpStatus' - The response's http status code.
+newGetConnectionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetConnectionsResponse
+newGetConnectionsResponse pHttpStatus_ =
+  GetConnectionsResponse'
+    { connections =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the connections.
+getConnectionsResponse_connections :: Lens.Lens' GetConnectionsResponse (Prelude.Maybe [Connection])
+getConnectionsResponse_connections = Lens.lens (\GetConnectionsResponse' {connections} -> connections) (\s@GetConnectionsResponse' {} a -> s {connections = a} :: GetConnectionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token to use for the next page of results.
+getConnectionsResponse_nextToken :: Lens.Lens' GetConnectionsResponse (Prelude.Maybe Prelude.Text)
+getConnectionsResponse_nextToken = Lens.lens (\GetConnectionsResponse' {nextToken} -> nextToken) (\s@GetConnectionsResponse' {} a -> s {nextToken = a} :: GetConnectionsResponse)
+
+-- | The response's http status code.
+getConnectionsResponse_httpStatus :: Lens.Lens' GetConnectionsResponse Prelude.Int
+getConnectionsResponse_httpStatus = Lens.lens (\GetConnectionsResponse' {httpStatus} -> httpStatus) (\s@GetConnectionsResponse' {} a -> s {httpStatus = a} :: GetConnectionsResponse)
+
+instance Prelude.NFData GetConnectionsResponse where
+  rnf GetConnectionsResponse' {..} =
+    Prelude.rnf connections
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetCoreNetwork.hs b/gen/Amazonka/NetworkManager/GetCoreNetwork.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetCoreNetwork.hs
@@ -0,0 +1,159 @@
+{-# 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.NetworkManager.GetCoreNetwork
+-- 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 information about the LIVE policy for a core network.
+module Amazonka.NetworkManager.GetCoreNetwork
+  ( -- * Creating a Request
+    GetCoreNetwork (..),
+    newGetCoreNetwork,
+
+    -- * Request Lenses
+    getCoreNetwork_coreNetworkId,
+
+    -- * Destructuring the Response
+    GetCoreNetworkResponse (..),
+    newGetCoreNetworkResponse,
+
+    -- * Response Lenses
+    getCoreNetworkResponse_coreNetwork,
+    getCoreNetworkResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetCoreNetwork' smart constructor.
+data GetCoreNetwork = GetCoreNetwork'
+  { -- | The ID of a core network.
+    coreNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCoreNetwork' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkId', 'getCoreNetwork_coreNetworkId' - The ID of a core network.
+newGetCoreNetwork ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  GetCoreNetwork
+newGetCoreNetwork pCoreNetworkId_ =
+  GetCoreNetwork' {coreNetworkId = pCoreNetworkId_}
+
+-- | The ID of a core network.
+getCoreNetwork_coreNetworkId :: Lens.Lens' GetCoreNetwork Prelude.Text
+getCoreNetwork_coreNetworkId = Lens.lens (\GetCoreNetwork' {coreNetworkId} -> coreNetworkId) (\s@GetCoreNetwork' {} a -> s {coreNetworkId = a} :: GetCoreNetwork)
+
+instance Core.AWSRequest GetCoreNetwork where
+  type
+    AWSResponse GetCoreNetwork =
+      GetCoreNetworkResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetCoreNetworkResponse'
+            Prelude.<$> (x Data..?> "CoreNetwork")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetCoreNetwork where
+  hashWithSalt _salt GetCoreNetwork' {..} =
+    _salt `Prelude.hashWithSalt` coreNetworkId
+
+instance Prelude.NFData GetCoreNetwork where
+  rnf GetCoreNetwork' {..} = Prelude.rnf coreNetworkId
+
+instance Data.ToHeaders GetCoreNetwork where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetCoreNetwork where
+  toPath GetCoreNetwork' {..} =
+    Prelude.mconcat
+      ["/core-networks/", Data.toBS coreNetworkId]
+
+instance Data.ToQuery GetCoreNetwork where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetCoreNetworkResponse' smart constructor.
+data GetCoreNetworkResponse = GetCoreNetworkResponse'
+  { -- | Details about a core network.
+    coreNetwork :: Prelude.Maybe CoreNetwork,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCoreNetworkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetwork', 'getCoreNetworkResponse_coreNetwork' - Details about a core network.
+--
+-- 'httpStatus', 'getCoreNetworkResponse_httpStatus' - The response's http status code.
+newGetCoreNetworkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetCoreNetworkResponse
+newGetCoreNetworkResponse pHttpStatus_ =
+  GetCoreNetworkResponse'
+    { coreNetwork =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Details about a core network.
+getCoreNetworkResponse_coreNetwork :: Lens.Lens' GetCoreNetworkResponse (Prelude.Maybe CoreNetwork)
+getCoreNetworkResponse_coreNetwork = Lens.lens (\GetCoreNetworkResponse' {coreNetwork} -> coreNetwork) (\s@GetCoreNetworkResponse' {} a -> s {coreNetwork = a} :: GetCoreNetworkResponse)
+
+-- | The response's http status code.
+getCoreNetworkResponse_httpStatus :: Lens.Lens' GetCoreNetworkResponse Prelude.Int
+getCoreNetworkResponse_httpStatus = Lens.lens (\GetCoreNetworkResponse' {httpStatus} -> httpStatus) (\s@GetCoreNetworkResponse' {} a -> s {httpStatus = a} :: GetCoreNetworkResponse)
+
+instance Prelude.NFData GetCoreNetworkResponse where
+  rnf GetCoreNetworkResponse' {..} =
+    Prelude.rnf coreNetwork
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetCoreNetworkChangeEvents.hs b/gen/Amazonka/NetworkManager/GetCoreNetworkChangeEvents.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetCoreNetworkChangeEvents.hs
@@ -0,0 +1,254 @@
+{-# 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.NetworkManager.GetCoreNetworkChangeEvents
+-- 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 information about a core network change event.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetCoreNetworkChangeEvents
+  ( -- * Creating a Request
+    GetCoreNetworkChangeEvents (..),
+    newGetCoreNetworkChangeEvents,
+
+    -- * Request Lenses
+    getCoreNetworkChangeEvents_maxResults,
+    getCoreNetworkChangeEvents_nextToken,
+    getCoreNetworkChangeEvents_coreNetworkId,
+    getCoreNetworkChangeEvents_policyVersionId,
+
+    -- * Destructuring the Response
+    GetCoreNetworkChangeEventsResponse (..),
+    newGetCoreNetworkChangeEventsResponse,
+
+    -- * Response Lenses
+    getCoreNetworkChangeEventsResponse_coreNetworkChangeEvents,
+    getCoreNetworkChangeEventsResponse_nextToken,
+    getCoreNetworkChangeEventsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetCoreNetworkChangeEvents' smart constructor.
+data GetCoreNetworkChangeEvents = GetCoreNetworkChangeEvents'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Text,
+    -- | The ID of the policy version.
+    policyVersionId :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCoreNetworkChangeEvents' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getCoreNetworkChangeEvents_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getCoreNetworkChangeEvents_nextToken' - The token for the next page of results.
+--
+-- 'coreNetworkId', 'getCoreNetworkChangeEvents_coreNetworkId' - The ID of a core network.
+--
+-- 'policyVersionId', 'getCoreNetworkChangeEvents_policyVersionId' - The ID of the policy version.
+newGetCoreNetworkChangeEvents ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  -- | 'policyVersionId'
+  Prelude.Int ->
+  GetCoreNetworkChangeEvents
+newGetCoreNetworkChangeEvents
+  pCoreNetworkId_
+  pPolicyVersionId_ =
+    GetCoreNetworkChangeEvents'
+      { maxResults =
+          Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        coreNetworkId = pCoreNetworkId_,
+        policyVersionId = pPolicyVersionId_
+      }
+
+-- | The maximum number of results to return.
+getCoreNetworkChangeEvents_maxResults :: Lens.Lens' GetCoreNetworkChangeEvents (Prelude.Maybe Prelude.Natural)
+getCoreNetworkChangeEvents_maxResults = Lens.lens (\GetCoreNetworkChangeEvents' {maxResults} -> maxResults) (\s@GetCoreNetworkChangeEvents' {} a -> s {maxResults = a} :: GetCoreNetworkChangeEvents)
+
+-- | The token for the next page of results.
+getCoreNetworkChangeEvents_nextToken :: Lens.Lens' GetCoreNetworkChangeEvents (Prelude.Maybe Prelude.Text)
+getCoreNetworkChangeEvents_nextToken = Lens.lens (\GetCoreNetworkChangeEvents' {nextToken} -> nextToken) (\s@GetCoreNetworkChangeEvents' {} a -> s {nextToken = a} :: GetCoreNetworkChangeEvents)
+
+-- | The ID of a core network.
+getCoreNetworkChangeEvents_coreNetworkId :: Lens.Lens' GetCoreNetworkChangeEvents Prelude.Text
+getCoreNetworkChangeEvents_coreNetworkId = Lens.lens (\GetCoreNetworkChangeEvents' {coreNetworkId} -> coreNetworkId) (\s@GetCoreNetworkChangeEvents' {} a -> s {coreNetworkId = a} :: GetCoreNetworkChangeEvents)
+
+-- | The ID of the policy version.
+getCoreNetworkChangeEvents_policyVersionId :: Lens.Lens' GetCoreNetworkChangeEvents Prelude.Int
+getCoreNetworkChangeEvents_policyVersionId = Lens.lens (\GetCoreNetworkChangeEvents' {policyVersionId} -> policyVersionId) (\s@GetCoreNetworkChangeEvents' {} a -> s {policyVersionId = a} :: GetCoreNetworkChangeEvents)
+
+instance Core.AWSPager GetCoreNetworkChangeEvents where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getCoreNetworkChangeEventsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getCoreNetworkChangeEventsResponse_coreNetworkChangeEvents
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getCoreNetworkChangeEvents_nextToken
+          Lens..~ rs
+          Lens.^? getCoreNetworkChangeEventsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest GetCoreNetworkChangeEvents where
+  type
+    AWSResponse GetCoreNetworkChangeEvents =
+      GetCoreNetworkChangeEventsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetCoreNetworkChangeEventsResponse'
+            Prelude.<$> ( x
+                            Data..?> "CoreNetworkChangeEvents"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetCoreNetworkChangeEvents where
+  hashWithSalt _salt GetCoreNetworkChangeEvents' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` policyVersionId
+
+instance Prelude.NFData GetCoreNetworkChangeEvents where
+  rnf GetCoreNetworkChangeEvents' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf policyVersionId
+
+instance Data.ToHeaders GetCoreNetworkChangeEvents where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetCoreNetworkChangeEvents where
+  toPath GetCoreNetworkChangeEvents' {..} =
+    Prelude.mconcat
+      [ "/core-networks/",
+        Data.toBS coreNetworkId,
+        "/core-network-change-events/",
+        Data.toBS policyVersionId
+      ]
+
+instance Data.ToQuery GetCoreNetworkChangeEvents where
+  toQuery GetCoreNetworkChangeEvents' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newGetCoreNetworkChangeEventsResponse' smart constructor.
+data GetCoreNetworkChangeEventsResponse = GetCoreNetworkChangeEventsResponse'
+  { -- | The response to @GetCoreNetworkChangeEventsRequest@.
+    coreNetworkChangeEvents :: Prelude.Maybe [CoreNetworkChangeEvent],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCoreNetworkChangeEventsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkChangeEvents', 'getCoreNetworkChangeEventsResponse_coreNetworkChangeEvents' - The response to @GetCoreNetworkChangeEventsRequest@.
+--
+-- 'nextToken', 'getCoreNetworkChangeEventsResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'getCoreNetworkChangeEventsResponse_httpStatus' - The response's http status code.
+newGetCoreNetworkChangeEventsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetCoreNetworkChangeEventsResponse
+newGetCoreNetworkChangeEventsResponse pHttpStatus_ =
+  GetCoreNetworkChangeEventsResponse'
+    { coreNetworkChangeEvents =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The response to @GetCoreNetworkChangeEventsRequest@.
+getCoreNetworkChangeEventsResponse_coreNetworkChangeEvents :: Lens.Lens' GetCoreNetworkChangeEventsResponse (Prelude.Maybe [CoreNetworkChangeEvent])
+getCoreNetworkChangeEventsResponse_coreNetworkChangeEvents = Lens.lens (\GetCoreNetworkChangeEventsResponse' {coreNetworkChangeEvents} -> coreNetworkChangeEvents) (\s@GetCoreNetworkChangeEventsResponse' {} a -> s {coreNetworkChangeEvents = a} :: GetCoreNetworkChangeEventsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+getCoreNetworkChangeEventsResponse_nextToken :: Lens.Lens' GetCoreNetworkChangeEventsResponse (Prelude.Maybe Prelude.Text)
+getCoreNetworkChangeEventsResponse_nextToken = Lens.lens (\GetCoreNetworkChangeEventsResponse' {nextToken} -> nextToken) (\s@GetCoreNetworkChangeEventsResponse' {} a -> s {nextToken = a} :: GetCoreNetworkChangeEventsResponse)
+
+-- | The response's http status code.
+getCoreNetworkChangeEventsResponse_httpStatus :: Lens.Lens' GetCoreNetworkChangeEventsResponse Prelude.Int
+getCoreNetworkChangeEventsResponse_httpStatus = Lens.lens (\GetCoreNetworkChangeEventsResponse' {httpStatus} -> httpStatus) (\s@GetCoreNetworkChangeEventsResponse' {} a -> s {httpStatus = a} :: GetCoreNetworkChangeEventsResponse)
+
+instance
+  Prelude.NFData
+    GetCoreNetworkChangeEventsResponse
+  where
+  rnf GetCoreNetworkChangeEventsResponse' {..} =
+    Prelude.rnf coreNetworkChangeEvents
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetCoreNetworkChangeSet.hs b/gen/Amazonka/NetworkManager/GetCoreNetworkChangeSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetCoreNetworkChangeSet.hs
@@ -0,0 +1,255 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.GetCoreNetworkChangeSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a change set between the LIVE core network policy and a
+-- submitted policy.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetCoreNetworkChangeSet
+  ( -- * Creating a Request
+    GetCoreNetworkChangeSet (..),
+    newGetCoreNetworkChangeSet,
+
+    -- * Request Lenses
+    getCoreNetworkChangeSet_maxResults,
+    getCoreNetworkChangeSet_nextToken,
+    getCoreNetworkChangeSet_coreNetworkId,
+    getCoreNetworkChangeSet_policyVersionId,
+
+    -- * Destructuring the Response
+    GetCoreNetworkChangeSetResponse (..),
+    newGetCoreNetworkChangeSetResponse,
+
+    -- * Response Lenses
+    getCoreNetworkChangeSetResponse_coreNetworkChanges,
+    getCoreNetworkChangeSetResponse_nextToken,
+    getCoreNetworkChangeSetResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetCoreNetworkChangeSet' smart constructor.
+data GetCoreNetworkChangeSet = GetCoreNetworkChangeSet'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Text,
+    -- | The ID of the policy version.
+    policyVersionId :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCoreNetworkChangeSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getCoreNetworkChangeSet_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getCoreNetworkChangeSet_nextToken' - The token for the next page of results.
+--
+-- 'coreNetworkId', 'getCoreNetworkChangeSet_coreNetworkId' - The ID of a core network.
+--
+-- 'policyVersionId', 'getCoreNetworkChangeSet_policyVersionId' - The ID of the policy version.
+newGetCoreNetworkChangeSet ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  -- | 'policyVersionId'
+  Prelude.Int ->
+  GetCoreNetworkChangeSet
+newGetCoreNetworkChangeSet
+  pCoreNetworkId_
+  pPolicyVersionId_ =
+    GetCoreNetworkChangeSet'
+      { maxResults =
+          Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        coreNetworkId = pCoreNetworkId_,
+        policyVersionId = pPolicyVersionId_
+      }
+
+-- | The maximum number of results to return.
+getCoreNetworkChangeSet_maxResults :: Lens.Lens' GetCoreNetworkChangeSet (Prelude.Maybe Prelude.Natural)
+getCoreNetworkChangeSet_maxResults = Lens.lens (\GetCoreNetworkChangeSet' {maxResults} -> maxResults) (\s@GetCoreNetworkChangeSet' {} a -> s {maxResults = a} :: GetCoreNetworkChangeSet)
+
+-- | The token for the next page of results.
+getCoreNetworkChangeSet_nextToken :: Lens.Lens' GetCoreNetworkChangeSet (Prelude.Maybe Prelude.Text)
+getCoreNetworkChangeSet_nextToken = Lens.lens (\GetCoreNetworkChangeSet' {nextToken} -> nextToken) (\s@GetCoreNetworkChangeSet' {} a -> s {nextToken = a} :: GetCoreNetworkChangeSet)
+
+-- | The ID of a core network.
+getCoreNetworkChangeSet_coreNetworkId :: Lens.Lens' GetCoreNetworkChangeSet Prelude.Text
+getCoreNetworkChangeSet_coreNetworkId = Lens.lens (\GetCoreNetworkChangeSet' {coreNetworkId} -> coreNetworkId) (\s@GetCoreNetworkChangeSet' {} a -> s {coreNetworkId = a} :: GetCoreNetworkChangeSet)
+
+-- | The ID of the policy version.
+getCoreNetworkChangeSet_policyVersionId :: Lens.Lens' GetCoreNetworkChangeSet Prelude.Int
+getCoreNetworkChangeSet_policyVersionId = Lens.lens (\GetCoreNetworkChangeSet' {policyVersionId} -> policyVersionId) (\s@GetCoreNetworkChangeSet' {} a -> s {policyVersionId = a} :: GetCoreNetworkChangeSet)
+
+instance Core.AWSPager GetCoreNetworkChangeSet where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getCoreNetworkChangeSetResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getCoreNetworkChangeSetResponse_coreNetworkChanges
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getCoreNetworkChangeSet_nextToken
+          Lens..~ rs
+          Lens.^? getCoreNetworkChangeSetResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest GetCoreNetworkChangeSet where
+  type
+    AWSResponse GetCoreNetworkChangeSet =
+      GetCoreNetworkChangeSetResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetCoreNetworkChangeSetResponse'
+            Prelude.<$> ( x
+                            Data..?> "CoreNetworkChanges"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetCoreNetworkChangeSet where
+  hashWithSalt _salt GetCoreNetworkChangeSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` policyVersionId
+
+instance Prelude.NFData GetCoreNetworkChangeSet where
+  rnf GetCoreNetworkChangeSet' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf policyVersionId
+
+instance Data.ToHeaders GetCoreNetworkChangeSet where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetCoreNetworkChangeSet where
+  toPath GetCoreNetworkChangeSet' {..} =
+    Prelude.mconcat
+      [ "/core-networks/",
+        Data.toBS coreNetworkId,
+        "/core-network-change-sets/",
+        Data.toBS policyVersionId
+      ]
+
+instance Data.ToQuery GetCoreNetworkChangeSet where
+  toQuery GetCoreNetworkChangeSet' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newGetCoreNetworkChangeSetResponse' smart constructor.
+data GetCoreNetworkChangeSetResponse = GetCoreNetworkChangeSetResponse'
+  { -- | Describes a core network changes.
+    coreNetworkChanges :: Prelude.Maybe [CoreNetworkChange],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCoreNetworkChangeSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkChanges', 'getCoreNetworkChangeSetResponse_coreNetworkChanges' - Describes a core network changes.
+--
+-- 'nextToken', 'getCoreNetworkChangeSetResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'getCoreNetworkChangeSetResponse_httpStatus' - The response's http status code.
+newGetCoreNetworkChangeSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetCoreNetworkChangeSetResponse
+newGetCoreNetworkChangeSetResponse pHttpStatus_ =
+  GetCoreNetworkChangeSetResponse'
+    { coreNetworkChanges =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Describes a core network changes.
+getCoreNetworkChangeSetResponse_coreNetworkChanges :: Lens.Lens' GetCoreNetworkChangeSetResponse (Prelude.Maybe [CoreNetworkChange])
+getCoreNetworkChangeSetResponse_coreNetworkChanges = Lens.lens (\GetCoreNetworkChangeSetResponse' {coreNetworkChanges} -> coreNetworkChanges) (\s@GetCoreNetworkChangeSetResponse' {} a -> s {coreNetworkChanges = a} :: GetCoreNetworkChangeSetResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+getCoreNetworkChangeSetResponse_nextToken :: Lens.Lens' GetCoreNetworkChangeSetResponse (Prelude.Maybe Prelude.Text)
+getCoreNetworkChangeSetResponse_nextToken = Lens.lens (\GetCoreNetworkChangeSetResponse' {nextToken} -> nextToken) (\s@GetCoreNetworkChangeSetResponse' {} a -> s {nextToken = a} :: GetCoreNetworkChangeSetResponse)
+
+-- | The response's http status code.
+getCoreNetworkChangeSetResponse_httpStatus :: Lens.Lens' GetCoreNetworkChangeSetResponse Prelude.Int
+getCoreNetworkChangeSetResponse_httpStatus = Lens.lens (\GetCoreNetworkChangeSetResponse' {httpStatus} -> httpStatus) (\s@GetCoreNetworkChangeSetResponse' {} a -> s {httpStatus = a} :: GetCoreNetworkChangeSetResponse)
+
+instance
+  Prelude.NFData
+    GetCoreNetworkChangeSetResponse
+  where
+  rnf GetCoreNetworkChangeSetResponse' {..} =
+    Prelude.rnf coreNetworkChanges
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetCoreNetworkPolicy.hs b/gen/Amazonka/NetworkManager/GetCoreNetworkPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetCoreNetworkPolicy.hs
@@ -0,0 +1,195 @@
+{-# 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.NetworkManager.GetCoreNetworkPolicy
+-- 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 details about a core network policy. You can get details about
+-- your current live policy or any previous policy version.
+module Amazonka.NetworkManager.GetCoreNetworkPolicy
+  ( -- * Creating a Request
+    GetCoreNetworkPolicy (..),
+    newGetCoreNetworkPolicy,
+
+    -- * Request Lenses
+    getCoreNetworkPolicy_alias,
+    getCoreNetworkPolicy_policyVersionId,
+    getCoreNetworkPolicy_coreNetworkId,
+
+    -- * Destructuring the Response
+    GetCoreNetworkPolicyResponse (..),
+    newGetCoreNetworkPolicyResponse,
+
+    -- * Response Lenses
+    getCoreNetworkPolicyResponse_coreNetworkPolicy,
+    getCoreNetworkPolicyResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetCoreNetworkPolicy' smart constructor.
+data GetCoreNetworkPolicy = GetCoreNetworkPolicy'
+  { -- | The alias of a core network policy
+    alias :: Prelude.Maybe CoreNetworkPolicyAlias,
+    -- | The ID of a core network policy version.
+    policyVersionId :: Prelude.Maybe Prelude.Int,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCoreNetworkPolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'alias', 'getCoreNetworkPolicy_alias' - The alias of a core network policy
+--
+-- 'policyVersionId', 'getCoreNetworkPolicy_policyVersionId' - The ID of a core network policy version.
+--
+-- 'coreNetworkId', 'getCoreNetworkPolicy_coreNetworkId' - The ID of a core network.
+newGetCoreNetworkPolicy ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  GetCoreNetworkPolicy
+newGetCoreNetworkPolicy pCoreNetworkId_ =
+  GetCoreNetworkPolicy'
+    { alias = Prelude.Nothing,
+      policyVersionId = Prelude.Nothing,
+      coreNetworkId = pCoreNetworkId_
+    }
+
+-- | The alias of a core network policy
+getCoreNetworkPolicy_alias :: Lens.Lens' GetCoreNetworkPolicy (Prelude.Maybe CoreNetworkPolicyAlias)
+getCoreNetworkPolicy_alias = Lens.lens (\GetCoreNetworkPolicy' {alias} -> alias) (\s@GetCoreNetworkPolicy' {} a -> s {alias = a} :: GetCoreNetworkPolicy)
+
+-- | The ID of a core network policy version.
+getCoreNetworkPolicy_policyVersionId :: Lens.Lens' GetCoreNetworkPolicy (Prelude.Maybe Prelude.Int)
+getCoreNetworkPolicy_policyVersionId = Lens.lens (\GetCoreNetworkPolicy' {policyVersionId} -> policyVersionId) (\s@GetCoreNetworkPolicy' {} a -> s {policyVersionId = a} :: GetCoreNetworkPolicy)
+
+-- | The ID of a core network.
+getCoreNetworkPolicy_coreNetworkId :: Lens.Lens' GetCoreNetworkPolicy Prelude.Text
+getCoreNetworkPolicy_coreNetworkId = Lens.lens (\GetCoreNetworkPolicy' {coreNetworkId} -> coreNetworkId) (\s@GetCoreNetworkPolicy' {} a -> s {coreNetworkId = a} :: GetCoreNetworkPolicy)
+
+instance Core.AWSRequest GetCoreNetworkPolicy where
+  type
+    AWSResponse GetCoreNetworkPolicy =
+      GetCoreNetworkPolicyResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetCoreNetworkPolicyResponse'
+            Prelude.<$> (x Data..?> "CoreNetworkPolicy")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetCoreNetworkPolicy where
+  hashWithSalt _salt GetCoreNetworkPolicy' {..} =
+    _salt
+      `Prelude.hashWithSalt` alias
+      `Prelude.hashWithSalt` policyVersionId
+      `Prelude.hashWithSalt` coreNetworkId
+
+instance Prelude.NFData GetCoreNetworkPolicy where
+  rnf GetCoreNetworkPolicy' {..} =
+    Prelude.rnf alias
+      `Prelude.seq` Prelude.rnf policyVersionId
+      `Prelude.seq` Prelude.rnf coreNetworkId
+
+instance Data.ToHeaders GetCoreNetworkPolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetCoreNetworkPolicy where
+  toPath GetCoreNetworkPolicy' {..} =
+    Prelude.mconcat
+      [ "/core-networks/",
+        Data.toBS coreNetworkId,
+        "/core-network-policy"
+      ]
+
+instance Data.ToQuery GetCoreNetworkPolicy where
+  toQuery GetCoreNetworkPolicy' {..} =
+    Prelude.mconcat
+      [ "alias" Data.=: alias,
+        "policyVersionId" Data.=: policyVersionId
+      ]
+
+-- | /See:/ 'newGetCoreNetworkPolicyResponse' smart constructor.
+data GetCoreNetworkPolicyResponse = GetCoreNetworkPolicyResponse'
+  { -- | The details about a core network policy.
+    coreNetworkPolicy :: Prelude.Maybe CoreNetworkPolicy,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCoreNetworkPolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkPolicy', 'getCoreNetworkPolicyResponse_coreNetworkPolicy' - The details about a core network policy.
+--
+-- 'httpStatus', 'getCoreNetworkPolicyResponse_httpStatus' - The response's http status code.
+newGetCoreNetworkPolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetCoreNetworkPolicyResponse
+newGetCoreNetworkPolicyResponse pHttpStatus_ =
+  GetCoreNetworkPolicyResponse'
+    { coreNetworkPolicy =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The details about a core network policy.
+getCoreNetworkPolicyResponse_coreNetworkPolicy :: Lens.Lens' GetCoreNetworkPolicyResponse (Prelude.Maybe CoreNetworkPolicy)
+getCoreNetworkPolicyResponse_coreNetworkPolicy = Lens.lens (\GetCoreNetworkPolicyResponse' {coreNetworkPolicy} -> coreNetworkPolicy) (\s@GetCoreNetworkPolicyResponse' {} a -> s {coreNetworkPolicy = a} :: GetCoreNetworkPolicyResponse)
+
+-- | The response's http status code.
+getCoreNetworkPolicyResponse_httpStatus :: Lens.Lens' GetCoreNetworkPolicyResponse Prelude.Int
+getCoreNetworkPolicyResponse_httpStatus = Lens.lens (\GetCoreNetworkPolicyResponse' {httpStatus} -> httpStatus) (\s@GetCoreNetworkPolicyResponse' {} a -> s {httpStatus = a} :: GetCoreNetworkPolicyResponse)
+
+instance Prelude.NFData GetCoreNetworkPolicyResponse where
+  rnf GetCoreNetworkPolicyResponse' {..} =
+    Prelude.rnf coreNetworkPolicy
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetCustomerGatewayAssociations.hs b/gen/Amazonka/NetworkManager/GetCustomerGatewayAssociations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetCustomerGatewayAssociations.hs
@@ -0,0 +1,273 @@
+{-# 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.NetworkManager.GetCustomerGatewayAssociations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the association information for customer gateways that are
+-- associated with devices and links in your global network.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetCustomerGatewayAssociations
+  ( -- * Creating a Request
+    GetCustomerGatewayAssociations (..),
+    newGetCustomerGatewayAssociations,
+
+    -- * Request Lenses
+    getCustomerGatewayAssociations_customerGatewayArns,
+    getCustomerGatewayAssociations_maxResults,
+    getCustomerGatewayAssociations_nextToken,
+    getCustomerGatewayAssociations_globalNetworkId,
+
+    -- * Destructuring the Response
+    GetCustomerGatewayAssociationsResponse (..),
+    newGetCustomerGatewayAssociationsResponse,
+
+    -- * Response Lenses
+    getCustomerGatewayAssociationsResponse_customerGatewayAssociations,
+    getCustomerGatewayAssociationsResponse_nextToken,
+    getCustomerGatewayAssociationsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetCustomerGatewayAssociations' smart constructor.
+data GetCustomerGatewayAssociations = GetCustomerGatewayAssociations'
+  { -- | One or more customer gateway Amazon Resource Names (ARNs). The maximum
+    -- is 10.
+    customerGatewayArns :: Prelude.Maybe [Prelude.Text],
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCustomerGatewayAssociations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customerGatewayArns', 'getCustomerGatewayAssociations_customerGatewayArns' - One or more customer gateway Amazon Resource Names (ARNs). The maximum
+-- is 10.
+--
+-- 'maxResults', 'getCustomerGatewayAssociations_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getCustomerGatewayAssociations_nextToken' - The token for the next page of results.
+--
+-- 'globalNetworkId', 'getCustomerGatewayAssociations_globalNetworkId' - The ID of the global network.
+newGetCustomerGatewayAssociations ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  GetCustomerGatewayAssociations
+newGetCustomerGatewayAssociations pGlobalNetworkId_ =
+  GetCustomerGatewayAssociations'
+    { customerGatewayArns =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | One or more customer gateway Amazon Resource Names (ARNs). The maximum
+-- is 10.
+getCustomerGatewayAssociations_customerGatewayArns :: Lens.Lens' GetCustomerGatewayAssociations (Prelude.Maybe [Prelude.Text])
+getCustomerGatewayAssociations_customerGatewayArns = Lens.lens (\GetCustomerGatewayAssociations' {customerGatewayArns} -> customerGatewayArns) (\s@GetCustomerGatewayAssociations' {} a -> s {customerGatewayArns = a} :: GetCustomerGatewayAssociations) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of results to return.
+getCustomerGatewayAssociations_maxResults :: Lens.Lens' GetCustomerGatewayAssociations (Prelude.Maybe Prelude.Natural)
+getCustomerGatewayAssociations_maxResults = Lens.lens (\GetCustomerGatewayAssociations' {maxResults} -> maxResults) (\s@GetCustomerGatewayAssociations' {} a -> s {maxResults = a} :: GetCustomerGatewayAssociations)
+
+-- | The token for the next page of results.
+getCustomerGatewayAssociations_nextToken :: Lens.Lens' GetCustomerGatewayAssociations (Prelude.Maybe Prelude.Text)
+getCustomerGatewayAssociations_nextToken = Lens.lens (\GetCustomerGatewayAssociations' {nextToken} -> nextToken) (\s@GetCustomerGatewayAssociations' {} a -> s {nextToken = a} :: GetCustomerGatewayAssociations)
+
+-- | The ID of the global network.
+getCustomerGatewayAssociations_globalNetworkId :: Lens.Lens' GetCustomerGatewayAssociations Prelude.Text
+getCustomerGatewayAssociations_globalNetworkId = Lens.lens (\GetCustomerGatewayAssociations' {globalNetworkId} -> globalNetworkId) (\s@GetCustomerGatewayAssociations' {} a -> s {globalNetworkId = a} :: GetCustomerGatewayAssociations)
+
+instance Core.AWSPager GetCustomerGatewayAssociations where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getCustomerGatewayAssociationsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getCustomerGatewayAssociationsResponse_customerGatewayAssociations
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getCustomerGatewayAssociations_nextToken
+          Lens..~ rs
+          Lens.^? getCustomerGatewayAssociationsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    GetCustomerGatewayAssociations
+  where
+  type
+    AWSResponse GetCustomerGatewayAssociations =
+      GetCustomerGatewayAssociationsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetCustomerGatewayAssociationsResponse'
+            Prelude.<$> ( x
+                            Data..?> "CustomerGatewayAssociations"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetCustomerGatewayAssociations
+  where
+  hashWithSalt
+    _salt
+    GetCustomerGatewayAssociations' {..} =
+      _salt
+        `Prelude.hashWithSalt` customerGatewayArns
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` globalNetworkId
+
+instance
+  Prelude.NFData
+    GetCustomerGatewayAssociations
+  where
+  rnf GetCustomerGatewayAssociations' {..} =
+    Prelude.rnf customerGatewayArns
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance
+  Data.ToHeaders
+    GetCustomerGatewayAssociations
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetCustomerGatewayAssociations where
+  toPath GetCustomerGatewayAssociations' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/customer-gateway-associations"
+      ]
+
+instance Data.ToQuery GetCustomerGatewayAssociations where
+  toQuery GetCustomerGatewayAssociations' {..} =
+    Prelude.mconcat
+      [ "customerGatewayArns"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> customerGatewayArns
+            ),
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newGetCustomerGatewayAssociationsResponse' smart constructor.
+data GetCustomerGatewayAssociationsResponse = GetCustomerGatewayAssociationsResponse'
+  { -- | The customer gateway associations.
+    customerGatewayAssociations :: Prelude.Maybe [CustomerGatewayAssociation],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCustomerGatewayAssociationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customerGatewayAssociations', 'getCustomerGatewayAssociationsResponse_customerGatewayAssociations' - The customer gateway associations.
+--
+-- 'nextToken', 'getCustomerGatewayAssociationsResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'getCustomerGatewayAssociationsResponse_httpStatus' - The response's http status code.
+newGetCustomerGatewayAssociationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetCustomerGatewayAssociationsResponse
+newGetCustomerGatewayAssociationsResponse
+  pHttpStatus_ =
+    GetCustomerGatewayAssociationsResponse'
+      { customerGatewayAssociations =
+          Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The customer gateway associations.
+getCustomerGatewayAssociationsResponse_customerGatewayAssociations :: Lens.Lens' GetCustomerGatewayAssociationsResponse (Prelude.Maybe [CustomerGatewayAssociation])
+getCustomerGatewayAssociationsResponse_customerGatewayAssociations = Lens.lens (\GetCustomerGatewayAssociationsResponse' {customerGatewayAssociations} -> customerGatewayAssociations) (\s@GetCustomerGatewayAssociationsResponse' {} a -> s {customerGatewayAssociations = a} :: GetCustomerGatewayAssociationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+getCustomerGatewayAssociationsResponse_nextToken :: Lens.Lens' GetCustomerGatewayAssociationsResponse (Prelude.Maybe Prelude.Text)
+getCustomerGatewayAssociationsResponse_nextToken = Lens.lens (\GetCustomerGatewayAssociationsResponse' {nextToken} -> nextToken) (\s@GetCustomerGatewayAssociationsResponse' {} a -> s {nextToken = a} :: GetCustomerGatewayAssociationsResponse)
+
+-- | The response's http status code.
+getCustomerGatewayAssociationsResponse_httpStatus :: Lens.Lens' GetCustomerGatewayAssociationsResponse Prelude.Int
+getCustomerGatewayAssociationsResponse_httpStatus = Lens.lens (\GetCustomerGatewayAssociationsResponse' {httpStatus} -> httpStatus) (\s@GetCustomerGatewayAssociationsResponse' {} a -> s {httpStatus = a} :: GetCustomerGatewayAssociationsResponse)
+
+instance
+  Prelude.NFData
+    GetCustomerGatewayAssociationsResponse
+  where
+  rnf GetCustomerGatewayAssociationsResponse' {..} =
+    Prelude.rnf customerGatewayAssociations
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetDevices.hs b/gen/Amazonka/NetworkManager/GetDevices.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetDevices.hs
@@ -0,0 +1,255 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.GetDevices
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about one or more of your devices in a global network.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetDevices
+  ( -- * Creating a Request
+    GetDevices (..),
+    newGetDevices,
+
+    -- * Request Lenses
+    getDevices_deviceIds,
+    getDevices_maxResults,
+    getDevices_nextToken,
+    getDevices_siteId,
+    getDevices_globalNetworkId,
+
+    -- * Destructuring the Response
+    GetDevicesResponse (..),
+    newGetDevicesResponse,
+
+    -- * Response Lenses
+    getDevicesResponse_devices,
+    getDevicesResponse_nextToken,
+    getDevicesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetDevices' smart constructor.
+data GetDevices = GetDevices'
+  { -- | One or more device IDs. The maximum is 10.
+    deviceIds :: Prelude.Maybe [Prelude.Text],
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the site.
+    siteId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDevices' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceIds', 'getDevices_deviceIds' - One or more device IDs. The maximum is 10.
+--
+-- 'maxResults', 'getDevices_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getDevices_nextToken' - The token for the next page of results.
+--
+-- 'siteId', 'getDevices_siteId' - The ID of the site.
+--
+-- 'globalNetworkId', 'getDevices_globalNetworkId' - The ID of the global network.
+newGetDevices ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  GetDevices
+newGetDevices pGlobalNetworkId_ =
+  GetDevices'
+    { deviceIds = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      siteId = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | One or more device IDs. The maximum is 10.
+getDevices_deviceIds :: Lens.Lens' GetDevices (Prelude.Maybe [Prelude.Text])
+getDevices_deviceIds = Lens.lens (\GetDevices' {deviceIds} -> deviceIds) (\s@GetDevices' {} a -> s {deviceIds = a} :: GetDevices) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of results to return.
+getDevices_maxResults :: Lens.Lens' GetDevices (Prelude.Maybe Prelude.Natural)
+getDevices_maxResults = Lens.lens (\GetDevices' {maxResults} -> maxResults) (\s@GetDevices' {} a -> s {maxResults = a} :: GetDevices)
+
+-- | The token for the next page of results.
+getDevices_nextToken :: Lens.Lens' GetDevices (Prelude.Maybe Prelude.Text)
+getDevices_nextToken = Lens.lens (\GetDevices' {nextToken} -> nextToken) (\s@GetDevices' {} a -> s {nextToken = a} :: GetDevices)
+
+-- | The ID of the site.
+getDevices_siteId :: Lens.Lens' GetDevices (Prelude.Maybe Prelude.Text)
+getDevices_siteId = Lens.lens (\GetDevices' {siteId} -> siteId) (\s@GetDevices' {} a -> s {siteId = a} :: GetDevices)
+
+-- | The ID of the global network.
+getDevices_globalNetworkId :: Lens.Lens' GetDevices Prelude.Text
+getDevices_globalNetworkId = Lens.lens (\GetDevices' {globalNetworkId} -> globalNetworkId) (\s@GetDevices' {} a -> s {globalNetworkId = a} :: GetDevices)
+
+instance Core.AWSPager GetDevices where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getDevicesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getDevicesResponse_devices
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getDevices_nextToken
+          Lens..~ rs
+          Lens.^? getDevicesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest GetDevices where
+  type AWSResponse GetDevices = GetDevicesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetDevicesResponse'
+            Prelude.<$> (x Data..?> "Devices" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetDevices where
+  hashWithSalt _salt GetDevices' {..} =
+    _salt
+      `Prelude.hashWithSalt` deviceIds
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` siteId
+      `Prelude.hashWithSalt` globalNetworkId
+
+instance Prelude.NFData GetDevices where
+  rnf GetDevices' {..} =
+    Prelude.rnf deviceIds
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf siteId
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance Data.ToHeaders GetDevices where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetDevices where
+  toPath GetDevices' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/devices"
+      ]
+
+instance Data.ToQuery GetDevices where
+  toQuery GetDevices' {..} =
+    Prelude.mconcat
+      [ "deviceIds"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> deviceIds),
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "siteId" Data.=: siteId
+      ]
+
+-- | /See:/ 'newGetDevicesResponse' smart constructor.
+data GetDevicesResponse = GetDevicesResponse'
+  { -- | The devices.
+    devices :: Prelude.Maybe [Device],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDevicesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'devices', 'getDevicesResponse_devices' - The devices.
+--
+-- 'nextToken', 'getDevicesResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'getDevicesResponse_httpStatus' - The response's http status code.
+newGetDevicesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetDevicesResponse
+newGetDevicesResponse pHttpStatus_ =
+  GetDevicesResponse'
+    { devices = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The devices.
+getDevicesResponse_devices :: Lens.Lens' GetDevicesResponse (Prelude.Maybe [Device])
+getDevicesResponse_devices = Lens.lens (\GetDevicesResponse' {devices} -> devices) (\s@GetDevicesResponse' {} a -> s {devices = a} :: GetDevicesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+getDevicesResponse_nextToken :: Lens.Lens' GetDevicesResponse (Prelude.Maybe Prelude.Text)
+getDevicesResponse_nextToken = Lens.lens (\GetDevicesResponse' {nextToken} -> nextToken) (\s@GetDevicesResponse' {} a -> s {nextToken = a} :: GetDevicesResponse)
+
+-- | The response's http status code.
+getDevicesResponse_httpStatus :: Lens.Lens' GetDevicesResponse Prelude.Int
+getDevicesResponse_httpStatus = Lens.lens (\GetDevicesResponse' {httpStatus} -> httpStatus) (\s@GetDevicesResponse' {} a -> s {httpStatus = a} :: GetDevicesResponse)
+
+instance Prelude.NFData GetDevicesResponse where
+  rnf GetDevicesResponse' {..} =
+    Prelude.rnf devices
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetLinkAssociations.hs b/gen/Amazonka/NetworkManager/GetLinkAssociations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetLinkAssociations.hs
@@ -0,0 +1,260 @@
+{-# 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.NetworkManager.GetLinkAssociations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the link associations for a device or a link. Either the device ID
+-- or the link ID must be specified.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetLinkAssociations
+  ( -- * Creating a Request
+    GetLinkAssociations (..),
+    newGetLinkAssociations,
+
+    -- * Request Lenses
+    getLinkAssociations_deviceId,
+    getLinkAssociations_linkId,
+    getLinkAssociations_maxResults,
+    getLinkAssociations_nextToken,
+    getLinkAssociations_globalNetworkId,
+
+    -- * Destructuring the Response
+    GetLinkAssociationsResponse (..),
+    newGetLinkAssociationsResponse,
+
+    -- * Response Lenses
+    getLinkAssociationsResponse_linkAssociations,
+    getLinkAssociationsResponse_nextToken,
+    getLinkAssociationsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetLinkAssociations' smart constructor.
+data GetLinkAssociations = GetLinkAssociations'
+  { -- | The ID of the device.
+    deviceId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the link.
+    linkId :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetLinkAssociations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceId', 'getLinkAssociations_deviceId' - The ID of the device.
+--
+-- 'linkId', 'getLinkAssociations_linkId' - The ID of the link.
+--
+-- 'maxResults', 'getLinkAssociations_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getLinkAssociations_nextToken' - The token for the next page of results.
+--
+-- 'globalNetworkId', 'getLinkAssociations_globalNetworkId' - The ID of the global network.
+newGetLinkAssociations ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  GetLinkAssociations
+newGetLinkAssociations pGlobalNetworkId_ =
+  GetLinkAssociations'
+    { deviceId = Prelude.Nothing,
+      linkId = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | The ID of the device.
+getLinkAssociations_deviceId :: Lens.Lens' GetLinkAssociations (Prelude.Maybe Prelude.Text)
+getLinkAssociations_deviceId = Lens.lens (\GetLinkAssociations' {deviceId} -> deviceId) (\s@GetLinkAssociations' {} a -> s {deviceId = a} :: GetLinkAssociations)
+
+-- | The ID of the link.
+getLinkAssociations_linkId :: Lens.Lens' GetLinkAssociations (Prelude.Maybe Prelude.Text)
+getLinkAssociations_linkId = Lens.lens (\GetLinkAssociations' {linkId} -> linkId) (\s@GetLinkAssociations' {} a -> s {linkId = a} :: GetLinkAssociations)
+
+-- | The maximum number of results to return.
+getLinkAssociations_maxResults :: Lens.Lens' GetLinkAssociations (Prelude.Maybe Prelude.Natural)
+getLinkAssociations_maxResults = Lens.lens (\GetLinkAssociations' {maxResults} -> maxResults) (\s@GetLinkAssociations' {} a -> s {maxResults = a} :: GetLinkAssociations)
+
+-- | The token for the next page of results.
+getLinkAssociations_nextToken :: Lens.Lens' GetLinkAssociations (Prelude.Maybe Prelude.Text)
+getLinkAssociations_nextToken = Lens.lens (\GetLinkAssociations' {nextToken} -> nextToken) (\s@GetLinkAssociations' {} a -> s {nextToken = a} :: GetLinkAssociations)
+
+-- | The ID of the global network.
+getLinkAssociations_globalNetworkId :: Lens.Lens' GetLinkAssociations Prelude.Text
+getLinkAssociations_globalNetworkId = Lens.lens (\GetLinkAssociations' {globalNetworkId} -> globalNetworkId) (\s@GetLinkAssociations' {} a -> s {globalNetworkId = a} :: GetLinkAssociations)
+
+instance Core.AWSPager GetLinkAssociations where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getLinkAssociationsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getLinkAssociationsResponse_linkAssociations
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getLinkAssociations_nextToken
+          Lens..~ rs
+          Lens.^? getLinkAssociationsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest GetLinkAssociations where
+  type
+    AWSResponse GetLinkAssociations =
+      GetLinkAssociationsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetLinkAssociationsResponse'
+            Prelude.<$> ( x
+                            Data..?> "LinkAssociations"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetLinkAssociations where
+  hashWithSalt _salt GetLinkAssociations' {..} =
+    _salt
+      `Prelude.hashWithSalt` deviceId
+      `Prelude.hashWithSalt` linkId
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` globalNetworkId
+
+instance Prelude.NFData GetLinkAssociations where
+  rnf GetLinkAssociations' {..} =
+    Prelude.rnf deviceId
+      `Prelude.seq` Prelude.rnf linkId
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance Data.ToHeaders GetLinkAssociations where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetLinkAssociations where
+  toPath GetLinkAssociations' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/link-associations"
+      ]
+
+instance Data.ToQuery GetLinkAssociations where
+  toQuery GetLinkAssociations' {..} =
+    Prelude.mconcat
+      [ "deviceId" Data.=: deviceId,
+        "linkId" Data.=: linkId,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newGetLinkAssociationsResponse' smart constructor.
+data GetLinkAssociationsResponse = GetLinkAssociationsResponse'
+  { -- | The link associations.
+    linkAssociations :: Prelude.Maybe [LinkAssociation],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetLinkAssociationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'linkAssociations', 'getLinkAssociationsResponse_linkAssociations' - The link associations.
+--
+-- 'nextToken', 'getLinkAssociationsResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'getLinkAssociationsResponse_httpStatus' - The response's http status code.
+newGetLinkAssociationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetLinkAssociationsResponse
+newGetLinkAssociationsResponse pHttpStatus_ =
+  GetLinkAssociationsResponse'
+    { linkAssociations =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The link associations.
+getLinkAssociationsResponse_linkAssociations :: Lens.Lens' GetLinkAssociationsResponse (Prelude.Maybe [LinkAssociation])
+getLinkAssociationsResponse_linkAssociations = Lens.lens (\GetLinkAssociationsResponse' {linkAssociations} -> linkAssociations) (\s@GetLinkAssociationsResponse' {} a -> s {linkAssociations = a} :: GetLinkAssociationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+getLinkAssociationsResponse_nextToken :: Lens.Lens' GetLinkAssociationsResponse (Prelude.Maybe Prelude.Text)
+getLinkAssociationsResponse_nextToken = Lens.lens (\GetLinkAssociationsResponse' {nextToken} -> nextToken) (\s@GetLinkAssociationsResponse' {} a -> s {nextToken = a} :: GetLinkAssociationsResponse)
+
+-- | The response's http status code.
+getLinkAssociationsResponse_httpStatus :: Lens.Lens' GetLinkAssociationsResponse Prelude.Int
+getLinkAssociationsResponse_httpStatus = Lens.lens (\GetLinkAssociationsResponse' {httpStatus} -> httpStatus) (\s@GetLinkAssociationsResponse' {} a -> s {httpStatus = a} :: GetLinkAssociationsResponse)
+
+instance Prelude.NFData GetLinkAssociationsResponse where
+  rnf GetLinkAssociationsResponse' {..} =
+    Prelude.rnf linkAssociations
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetLinks.hs b/gen/Amazonka/NetworkManager/GetLinks.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetLinks.hs
@@ -0,0 +1,285 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.GetLinks
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about one or more links in a specified global network.
+--
+-- If you specify the site ID, you cannot specify the type or provider in
+-- the same request. You can specify the type and provider in the same
+-- request.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetLinks
+  ( -- * Creating a Request
+    GetLinks (..),
+    newGetLinks,
+
+    -- * Request Lenses
+    getLinks_linkIds,
+    getLinks_maxResults,
+    getLinks_nextToken,
+    getLinks_provider,
+    getLinks_siteId,
+    getLinks_type,
+    getLinks_globalNetworkId,
+
+    -- * Destructuring the Response
+    GetLinksResponse (..),
+    newGetLinksResponse,
+
+    -- * Response Lenses
+    getLinksResponse_links,
+    getLinksResponse_nextToken,
+    getLinksResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetLinks' smart constructor.
+data GetLinks = GetLinks'
+  { -- | One or more link IDs. The maximum is 10.
+    linkIds :: Prelude.Maybe [Prelude.Text],
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The link provider.
+    provider :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the site.
+    siteId :: Prelude.Maybe Prelude.Text,
+    -- | The link type.
+    type' :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetLinks' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'linkIds', 'getLinks_linkIds' - One or more link IDs. The maximum is 10.
+--
+-- 'maxResults', 'getLinks_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getLinks_nextToken' - The token for the next page of results.
+--
+-- 'provider', 'getLinks_provider' - The link provider.
+--
+-- 'siteId', 'getLinks_siteId' - The ID of the site.
+--
+-- 'type'', 'getLinks_type' - The link type.
+--
+-- 'globalNetworkId', 'getLinks_globalNetworkId' - The ID of the global network.
+newGetLinks ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  GetLinks
+newGetLinks pGlobalNetworkId_ =
+  GetLinks'
+    { linkIds = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      provider = Prelude.Nothing,
+      siteId = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | One or more link IDs. The maximum is 10.
+getLinks_linkIds :: Lens.Lens' GetLinks (Prelude.Maybe [Prelude.Text])
+getLinks_linkIds = Lens.lens (\GetLinks' {linkIds} -> linkIds) (\s@GetLinks' {} a -> s {linkIds = a} :: GetLinks) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of results to return.
+getLinks_maxResults :: Lens.Lens' GetLinks (Prelude.Maybe Prelude.Natural)
+getLinks_maxResults = Lens.lens (\GetLinks' {maxResults} -> maxResults) (\s@GetLinks' {} a -> s {maxResults = a} :: GetLinks)
+
+-- | The token for the next page of results.
+getLinks_nextToken :: Lens.Lens' GetLinks (Prelude.Maybe Prelude.Text)
+getLinks_nextToken = Lens.lens (\GetLinks' {nextToken} -> nextToken) (\s@GetLinks' {} a -> s {nextToken = a} :: GetLinks)
+
+-- | The link provider.
+getLinks_provider :: Lens.Lens' GetLinks (Prelude.Maybe Prelude.Text)
+getLinks_provider = Lens.lens (\GetLinks' {provider} -> provider) (\s@GetLinks' {} a -> s {provider = a} :: GetLinks)
+
+-- | The ID of the site.
+getLinks_siteId :: Lens.Lens' GetLinks (Prelude.Maybe Prelude.Text)
+getLinks_siteId = Lens.lens (\GetLinks' {siteId} -> siteId) (\s@GetLinks' {} a -> s {siteId = a} :: GetLinks)
+
+-- | The link type.
+getLinks_type :: Lens.Lens' GetLinks (Prelude.Maybe Prelude.Text)
+getLinks_type = Lens.lens (\GetLinks' {type'} -> type') (\s@GetLinks' {} a -> s {type' = a} :: GetLinks)
+
+-- | The ID of the global network.
+getLinks_globalNetworkId :: Lens.Lens' GetLinks Prelude.Text
+getLinks_globalNetworkId = Lens.lens (\GetLinks' {globalNetworkId} -> globalNetworkId) (\s@GetLinks' {} a -> s {globalNetworkId = a} :: GetLinks)
+
+instance Core.AWSPager GetLinks where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getLinksResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getLinksResponse_links
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getLinks_nextToken
+          Lens..~ rs
+          Lens.^? getLinksResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest GetLinks where
+  type AWSResponse GetLinks = GetLinksResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetLinksResponse'
+            Prelude.<$> (x Data..?> "Links" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetLinks where
+  hashWithSalt _salt GetLinks' {..} =
+    _salt
+      `Prelude.hashWithSalt` linkIds
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` provider
+      `Prelude.hashWithSalt` siteId
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` globalNetworkId
+
+instance Prelude.NFData GetLinks where
+  rnf GetLinks' {..} =
+    Prelude.rnf linkIds
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf provider
+      `Prelude.seq` Prelude.rnf siteId
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance Data.ToHeaders GetLinks where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetLinks where
+  toPath GetLinks' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/links"
+      ]
+
+instance Data.ToQuery GetLinks where
+  toQuery GetLinks' {..} =
+    Prelude.mconcat
+      [ "linkIds"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> linkIds),
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "provider" Data.=: provider,
+        "siteId" Data.=: siteId,
+        "type" Data.=: type'
+      ]
+
+-- | /See:/ 'newGetLinksResponse' smart constructor.
+data GetLinksResponse = GetLinksResponse'
+  { -- | The links.
+    links :: Prelude.Maybe [Link],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetLinksResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'links', 'getLinksResponse_links' - The links.
+--
+-- 'nextToken', 'getLinksResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'getLinksResponse_httpStatus' - The response's http status code.
+newGetLinksResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetLinksResponse
+newGetLinksResponse pHttpStatus_ =
+  GetLinksResponse'
+    { links = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The links.
+getLinksResponse_links :: Lens.Lens' GetLinksResponse (Prelude.Maybe [Link])
+getLinksResponse_links = Lens.lens (\GetLinksResponse' {links} -> links) (\s@GetLinksResponse' {} a -> s {links = a} :: GetLinksResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+getLinksResponse_nextToken :: Lens.Lens' GetLinksResponse (Prelude.Maybe Prelude.Text)
+getLinksResponse_nextToken = Lens.lens (\GetLinksResponse' {nextToken} -> nextToken) (\s@GetLinksResponse' {} a -> s {nextToken = a} :: GetLinksResponse)
+
+-- | The response's http status code.
+getLinksResponse_httpStatus :: Lens.Lens' GetLinksResponse Prelude.Int
+getLinksResponse_httpStatus = Lens.lens (\GetLinksResponse' {httpStatus} -> httpStatus) (\s@GetLinksResponse' {} a -> s {httpStatus = a} :: GetLinksResponse)
+
+instance Prelude.NFData GetLinksResponse where
+  rnf GetLinksResponse' {..} =
+    Prelude.rnf links
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetNetworkResourceCounts.hs b/gen/Amazonka/NetworkManager/GetNetworkResourceCounts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetNetworkResourceCounts.hs
@@ -0,0 +1,347 @@
+{-# 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.NetworkManager.GetNetworkResourceCounts
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the count of network resources, by resource type, for the specified
+-- global network.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetNetworkResourceCounts
+  ( -- * Creating a Request
+    GetNetworkResourceCounts (..),
+    newGetNetworkResourceCounts,
+
+    -- * Request Lenses
+    getNetworkResourceCounts_maxResults,
+    getNetworkResourceCounts_nextToken,
+    getNetworkResourceCounts_resourceType,
+    getNetworkResourceCounts_globalNetworkId,
+
+    -- * Destructuring the Response
+    GetNetworkResourceCountsResponse (..),
+    newGetNetworkResourceCountsResponse,
+
+    -- * Response Lenses
+    getNetworkResourceCountsResponse_networkResourceCounts,
+    getNetworkResourceCountsResponse_nextToken,
+    getNetworkResourceCountsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetNetworkResourceCounts' smart constructor.
+data GetNetworkResourceCounts = GetNetworkResourceCounts'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The resource type.
+    --
+    -- The following are the supported resource types for Direct Connect:
+    --
+    -- -   @dxcon@
+    --
+    -- -   @dx-gateway@
+    --
+    -- -   @dx-vif@
+    --
+    -- The following are the supported resource types for Network Manager:
+    --
+    -- -   @connection@
+    --
+    -- -   @device@
+    --
+    -- -   @link@
+    --
+    -- -   @site@
+    --
+    -- The following are the supported resource types for Amazon VPC:
+    --
+    -- -   @customer-gateway@
+    --
+    -- -   @transit-gateway@
+    --
+    -- -   @transit-gateway-attachment@
+    --
+    -- -   @transit-gateway-connect-peer@
+    --
+    -- -   @transit-gateway-route-table@
+    --
+    -- -   @vpn-connection@
+    resourceType :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkResourceCounts' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getNetworkResourceCounts_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getNetworkResourceCounts_nextToken' - The token for the next page of results.
+--
+-- 'resourceType', 'getNetworkResourceCounts_resourceType' - The resource type.
+--
+-- The following are the supported resource types for Direct Connect:
+--
+-- -   @dxcon@
+--
+-- -   @dx-gateway@
+--
+-- -   @dx-vif@
+--
+-- The following are the supported resource types for Network Manager:
+--
+-- -   @connection@
+--
+-- -   @device@
+--
+-- -   @link@
+--
+-- -   @site@
+--
+-- The following are the supported resource types for Amazon VPC:
+--
+-- -   @customer-gateway@
+--
+-- -   @transit-gateway@
+--
+-- -   @transit-gateway-attachment@
+--
+-- -   @transit-gateway-connect-peer@
+--
+-- -   @transit-gateway-route-table@
+--
+-- -   @vpn-connection@
+--
+-- 'globalNetworkId', 'getNetworkResourceCounts_globalNetworkId' - The ID of the global network.
+newGetNetworkResourceCounts ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  GetNetworkResourceCounts
+newGetNetworkResourceCounts pGlobalNetworkId_ =
+  GetNetworkResourceCounts'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      resourceType = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | The maximum number of results to return.
+getNetworkResourceCounts_maxResults :: Lens.Lens' GetNetworkResourceCounts (Prelude.Maybe Prelude.Natural)
+getNetworkResourceCounts_maxResults = Lens.lens (\GetNetworkResourceCounts' {maxResults} -> maxResults) (\s@GetNetworkResourceCounts' {} a -> s {maxResults = a} :: GetNetworkResourceCounts)
+
+-- | The token for the next page of results.
+getNetworkResourceCounts_nextToken :: Lens.Lens' GetNetworkResourceCounts (Prelude.Maybe Prelude.Text)
+getNetworkResourceCounts_nextToken = Lens.lens (\GetNetworkResourceCounts' {nextToken} -> nextToken) (\s@GetNetworkResourceCounts' {} a -> s {nextToken = a} :: GetNetworkResourceCounts)
+
+-- | The resource type.
+--
+-- The following are the supported resource types for Direct Connect:
+--
+-- -   @dxcon@
+--
+-- -   @dx-gateway@
+--
+-- -   @dx-vif@
+--
+-- The following are the supported resource types for Network Manager:
+--
+-- -   @connection@
+--
+-- -   @device@
+--
+-- -   @link@
+--
+-- -   @site@
+--
+-- The following are the supported resource types for Amazon VPC:
+--
+-- -   @customer-gateway@
+--
+-- -   @transit-gateway@
+--
+-- -   @transit-gateway-attachment@
+--
+-- -   @transit-gateway-connect-peer@
+--
+-- -   @transit-gateway-route-table@
+--
+-- -   @vpn-connection@
+getNetworkResourceCounts_resourceType :: Lens.Lens' GetNetworkResourceCounts (Prelude.Maybe Prelude.Text)
+getNetworkResourceCounts_resourceType = Lens.lens (\GetNetworkResourceCounts' {resourceType} -> resourceType) (\s@GetNetworkResourceCounts' {} a -> s {resourceType = a} :: GetNetworkResourceCounts)
+
+-- | The ID of the global network.
+getNetworkResourceCounts_globalNetworkId :: Lens.Lens' GetNetworkResourceCounts Prelude.Text
+getNetworkResourceCounts_globalNetworkId = Lens.lens (\GetNetworkResourceCounts' {globalNetworkId} -> globalNetworkId) (\s@GetNetworkResourceCounts' {} a -> s {globalNetworkId = a} :: GetNetworkResourceCounts)
+
+instance Core.AWSPager GetNetworkResourceCounts where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getNetworkResourceCountsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getNetworkResourceCountsResponse_networkResourceCounts
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getNetworkResourceCounts_nextToken
+          Lens..~ rs
+          Lens.^? getNetworkResourceCountsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest GetNetworkResourceCounts where
+  type
+    AWSResponse GetNetworkResourceCounts =
+      GetNetworkResourceCountsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetNetworkResourceCountsResponse'
+            Prelude.<$> ( x
+                            Data..?> "NetworkResourceCounts"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetNetworkResourceCounts where
+  hashWithSalt _salt GetNetworkResourceCounts' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` resourceType
+      `Prelude.hashWithSalt` globalNetworkId
+
+instance Prelude.NFData GetNetworkResourceCounts where
+  rnf GetNetworkResourceCounts' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf resourceType
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance Data.ToHeaders GetNetworkResourceCounts where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetNetworkResourceCounts where
+  toPath GetNetworkResourceCounts' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/network-resource-count"
+      ]
+
+instance Data.ToQuery GetNetworkResourceCounts where
+  toQuery GetNetworkResourceCounts' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "resourceType" Data.=: resourceType
+      ]
+
+-- | /See:/ 'newGetNetworkResourceCountsResponse' smart constructor.
+data GetNetworkResourceCountsResponse = GetNetworkResourceCountsResponse'
+  { -- | The count of resources.
+    networkResourceCounts :: Prelude.Maybe [NetworkResourceCount],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkResourceCountsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'networkResourceCounts', 'getNetworkResourceCountsResponse_networkResourceCounts' - The count of resources.
+--
+-- 'nextToken', 'getNetworkResourceCountsResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'getNetworkResourceCountsResponse_httpStatus' - The response's http status code.
+newGetNetworkResourceCountsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetNetworkResourceCountsResponse
+newGetNetworkResourceCountsResponse pHttpStatus_ =
+  GetNetworkResourceCountsResponse'
+    { networkResourceCounts =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The count of resources.
+getNetworkResourceCountsResponse_networkResourceCounts :: Lens.Lens' GetNetworkResourceCountsResponse (Prelude.Maybe [NetworkResourceCount])
+getNetworkResourceCountsResponse_networkResourceCounts = Lens.lens (\GetNetworkResourceCountsResponse' {networkResourceCounts} -> networkResourceCounts) (\s@GetNetworkResourceCountsResponse' {} a -> s {networkResourceCounts = a} :: GetNetworkResourceCountsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+getNetworkResourceCountsResponse_nextToken :: Lens.Lens' GetNetworkResourceCountsResponse (Prelude.Maybe Prelude.Text)
+getNetworkResourceCountsResponse_nextToken = Lens.lens (\GetNetworkResourceCountsResponse' {nextToken} -> nextToken) (\s@GetNetworkResourceCountsResponse' {} a -> s {nextToken = a} :: GetNetworkResourceCountsResponse)
+
+-- | The response's http status code.
+getNetworkResourceCountsResponse_httpStatus :: Lens.Lens' GetNetworkResourceCountsResponse Prelude.Int
+getNetworkResourceCountsResponse_httpStatus = Lens.lens (\GetNetworkResourceCountsResponse' {httpStatus} -> httpStatus) (\s@GetNetworkResourceCountsResponse' {} a -> s {httpStatus = a} :: GetNetworkResourceCountsResponse)
+
+instance
+  Prelude.NFData
+    GetNetworkResourceCountsResponse
+  where
+  rnf GetNetworkResourceCountsResponse' {..} =
+    Prelude.rnf networkResourceCounts
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetNetworkResourceRelationships.hs b/gen/Amazonka/NetworkManager/GetNetworkResourceRelationships.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetNetworkResourceRelationships.hs
@@ -0,0 +1,427 @@
+{-# 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.NetworkManager.GetNetworkResourceRelationships
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the network resource relationships for the specified global
+-- network.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetNetworkResourceRelationships
+  ( -- * Creating a Request
+    GetNetworkResourceRelationships (..),
+    newGetNetworkResourceRelationships,
+
+    -- * Request Lenses
+    getNetworkResourceRelationships_accountId,
+    getNetworkResourceRelationships_awsRegion,
+    getNetworkResourceRelationships_coreNetworkId,
+    getNetworkResourceRelationships_maxResults,
+    getNetworkResourceRelationships_nextToken,
+    getNetworkResourceRelationships_registeredGatewayArn,
+    getNetworkResourceRelationships_resourceArn,
+    getNetworkResourceRelationships_resourceType,
+    getNetworkResourceRelationships_globalNetworkId,
+
+    -- * Destructuring the Response
+    GetNetworkResourceRelationshipsResponse (..),
+    newGetNetworkResourceRelationshipsResponse,
+
+    -- * Response Lenses
+    getNetworkResourceRelationshipsResponse_nextToken,
+    getNetworkResourceRelationshipsResponse_relationships,
+    getNetworkResourceRelationshipsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetNetworkResourceRelationships' smart constructor.
+data GetNetworkResourceRelationships = GetNetworkResourceRelationships'
+  { -- | The Amazon Web Services account ID.
+    accountId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Region.
+    awsRegion :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the registered gateway.
+    registeredGatewayArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the gateway.
+    resourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The resource type.
+    --
+    -- The following are the supported resource types for Direct Connect:
+    --
+    -- -   @dxcon@
+    --
+    -- -   @dx-gateway@
+    --
+    -- -   @dx-vif@
+    --
+    -- The following are the supported resource types for Network Manager:
+    --
+    -- -   @connection@
+    --
+    -- -   @device@
+    --
+    -- -   @link@
+    --
+    -- -   @site@
+    --
+    -- The following are the supported resource types for Amazon VPC:
+    --
+    -- -   @customer-gateway@
+    --
+    -- -   @transit-gateway@
+    --
+    -- -   @transit-gateway-attachment@
+    --
+    -- -   @transit-gateway-connect-peer@
+    --
+    -- -   @transit-gateway-route-table@
+    --
+    -- -   @vpn-connection@
+    resourceType :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkResourceRelationships' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'getNetworkResourceRelationships_accountId' - The Amazon Web Services account ID.
+--
+-- 'awsRegion', 'getNetworkResourceRelationships_awsRegion' - The Amazon Web Services Region.
+--
+-- 'coreNetworkId', 'getNetworkResourceRelationships_coreNetworkId' - The ID of a core network.
+--
+-- 'maxResults', 'getNetworkResourceRelationships_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getNetworkResourceRelationships_nextToken' - The token for the next page of results.
+--
+-- 'registeredGatewayArn', 'getNetworkResourceRelationships_registeredGatewayArn' - The ARN of the registered gateway.
+--
+-- 'resourceArn', 'getNetworkResourceRelationships_resourceArn' - The ARN of the gateway.
+--
+-- 'resourceType', 'getNetworkResourceRelationships_resourceType' - The resource type.
+--
+-- The following are the supported resource types for Direct Connect:
+--
+-- -   @dxcon@
+--
+-- -   @dx-gateway@
+--
+-- -   @dx-vif@
+--
+-- The following are the supported resource types for Network Manager:
+--
+-- -   @connection@
+--
+-- -   @device@
+--
+-- -   @link@
+--
+-- -   @site@
+--
+-- The following are the supported resource types for Amazon VPC:
+--
+-- -   @customer-gateway@
+--
+-- -   @transit-gateway@
+--
+-- -   @transit-gateway-attachment@
+--
+-- -   @transit-gateway-connect-peer@
+--
+-- -   @transit-gateway-route-table@
+--
+-- -   @vpn-connection@
+--
+-- 'globalNetworkId', 'getNetworkResourceRelationships_globalNetworkId' - The ID of the global network.
+newGetNetworkResourceRelationships ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  GetNetworkResourceRelationships
+newGetNetworkResourceRelationships pGlobalNetworkId_ =
+  GetNetworkResourceRelationships'
+    { accountId =
+        Prelude.Nothing,
+      awsRegion = Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      registeredGatewayArn = Prelude.Nothing,
+      resourceArn = Prelude.Nothing,
+      resourceType = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | The Amazon Web Services account ID.
+getNetworkResourceRelationships_accountId :: Lens.Lens' GetNetworkResourceRelationships (Prelude.Maybe Prelude.Text)
+getNetworkResourceRelationships_accountId = Lens.lens (\GetNetworkResourceRelationships' {accountId} -> accountId) (\s@GetNetworkResourceRelationships' {} a -> s {accountId = a} :: GetNetworkResourceRelationships)
+
+-- | The Amazon Web Services Region.
+getNetworkResourceRelationships_awsRegion :: Lens.Lens' GetNetworkResourceRelationships (Prelude.Maybe Prelude.Text)
+getNetworkResourceRelationships_awsRegion = Lens.lens (\GetNetworkResourceRelationships' {awsRegion} -> awsRegion) (\s@GetNetworkResourceRelationships' {} a -> s {awsRegion = a} :: GetNetworkResourceRelationships)
+
+-- | The ID of a core network.
+getNetworkResourceRelationships_coreNetworkId :: Lens.Lens' GetNetworkResourceRelationships (Prelude.Maybe Prelude.Text)
+getNetworkResourceRelationships_coreNetworkId = Lens.lens (\GetNetworkResourceRelationships' {coreNetworkId} -> coreNetworkId) (\s@GetNetworkResourceRelationships' {} a -> s {coreNetworkId = a} :: GetNetworkResourceRelationships)
+
+-- | The maximum number of results to return.
+getNetworkResourceRelationships_maxResults :: Lens.Lens' GetNetworkResourceRelationships (Prelude.Maybe Prelude.Natural)
+getNetworkResourceRelationships_maxResults = Lens.lens (\GetNetworkResourceRelationships' {maxResults} -> maxResults) (\s@GetNetworkResourceRelationships' {} a -> s {maxResults = a} :: GetNetworkResourceRelationships)
+
+-- | The token for the next page of results.
+getNetworkResourceRelationships_nextToken :: Lens.Lens' GetNetworkResourceRelationships (Prelude.Maybe Prelude.Text)
+getNetworkResourceRelationships_nextToken = Lens.lens (\GetNetworkResourceRelationships' {nextToken} -> nextToken) (\s@GetNetworkResourceRelationships' {} a -> s {nextToken = a} :: GetNetworkResourceRelationships)
+
+-- | The ARN of the registered gateway.
+getNetworkResourceRelationships_registeredGatewayArn :: Lens.Lens' GetNetworkResourceRelationships (Prelude.Maybe Prelude.Text)
+getNetworkResourceRelationships_registeredGatewayArn = Lens.lens (\GetNetworkResourceRelationships' {registeredGatewayArn} -> registeredGatewayArn) (\s@GetNetworkResourceRelationships' {} a -> s {registeredGatewayArn = a} :: GetNetworkResourceRelationships)
+
+-- | The ARN of the gateway.
+getNetworkResourceRelationships_resourceArn :: Lens.Lens' GetNetworkResourceRelationships (Prelude.Maybe Prelude.Text)
+getNetworkResourceRelationships_resourceArn = Lens.lens (\GetNetworkResourceRelationships' {resourceArn} -> resourceArn) (\s@GetNetworkResourceRelationships' {} a -> s {resourceArn = a} :: GetNetworkResourceRelationships)
+
+-- | The resource type.
+--
+-- The following are the supported resource types for Direct Connect:
+--
+-- -   @dxcon@
+--
+-- -   @dx-gateway@
+--
+-- -   @dx-vif@
+--
+-- The following are the supported resource types for Network Manager:
+--
+-- -   @connection@
+--
+-- -   @device@
+--
+-- -   @link@
+--
+-- -   @site@
+--
+-- The following are the supported resource types for Amazon VPC:
+--
+-- -   @customer-gateway@
+--
+-- -   @transit-gateway@
+--
+-- -   @transit-gateway-attachment@
+--
+-- -   @transit-gateway-connect-peer@
+--
+-- -   @transit-gateway-route-table@
+--
+-- -   @vpn-connection@
+getNetworkResourceRelationships_resourceType :: Lens.Lens' GetNetworkResourceRelationships (Prelude.Maybe Prelude.Text)
+getNetworkResourceRelationships_resourceType = Lens.lens (\GetNetworkResourceRelationships' {resourceType} -> resourceType) (\s@GetNetworkResourceRelationships' {} a -> s {resourceType = a} :: GetNetworkResourceRelationships)
+
+-- | The ID of the global network.
+getNetworkResourceRelationships_globalNetworkId :: Lens.Lens' GetNetworkResourceRelationships Prelude.Text
+getNetworkResourceRelationships_globalNetworkId = Lens.lens (\GetNetworkResourceRelationships' {globalNetworkId} -> globalNetworkId) (\s@GetNetworkResourceRelationships' {} a -> s {globalNetworkId = a} :: GetNetworkResourceRelationships)
+
+instance
+  Core.AWSPager
+    GetNetworkResourceRelationships
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getNetworkResourceRelationshipsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getNetworkResourceRelationshipsResponse_relationships
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getNetworkResourceRelationships_nextToken
+          Lens..~ rs
+          Lens.^? getNetworkResourceRelationshipsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    GetNetworkResourceRelationships
+  where
+  type
+    AWSResponse GetNetworkResourceRelationships =
+      GetNetworkResourceRelationshipsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetNetworkResourceRelationshipsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Relationships" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetNetworkResourceRelationships
+  where
+  hashWithSalt
+    _salt
+    GetNetworkResourceRelationships' {..} =
+      _salt
+        `Prelude.hashWithSalt` accountId
+        `Prelude.hashWithSalt` awsRegion
+        `Prelude.hashWithSalt` coreNetworkId
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` registeredGatewayArn
+        `Prelude.hashWithSalt` resourceArn
+        `Prelude.hashWithSalt` resourceType
+        `Prelude.hashWithSalt` globalNetworkId
+
+instance
+  Prelude.NFData
+    GetNetworkResourceRelationships
+  where
+  rnf GetNetworkResourceRelationships' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf awsRegion
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf registeredGatewayArn
+      `Prelude.seq` Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf resourceType
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance
+  Data.ToHeaders
+    GetNetworkResourceRelationships
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetNetworkResourceRelationships where
+  toPath GetNetworkResourceRelationships' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/network-resource-relationships"
+      ]
+
+instance Data.ToQuery GetNetworkResourceRelationships where
+  toQuery GetNetworkResourceRelationships' {..} =
+    Prelude.mconcat
+      [ "accountId" Data.=: accountId,
+        "awsRegion" Data.=: awsRegion,
+        "coreNetworkId" Data.=: coreNetworkId,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "registeredGatewayArn" Data.=: registeredGatewayArn,
+        "resourceArn" Data.=: resourceArn,
+        "resourceType" Data.=: resourceType
+      ]
+
+-- | /See:/ 'newGetNetworkResourceRelationshipsResponse' smart constructor.
+data GetNetworkResourceRelationshipsResponse = GetNetworkResourceRelationshipsResponse'
+  { -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The resource relationships.
+    relationships :: Prelude.Maybe [Relationship],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkResourceRelationshipsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getNetworkResourceRelationshipsResponse_nextToken' - The token for the next page of results.
+--
+-- 'relationships', 'getNetworkResourceRelationshipsResponse_relationships' - The resource relationships.
+--
+-- 'httpStatus', 'getNetworkResourceRelationshipsResponse_httpStatus' - The response's http status code.
+newGetNetworkResourceRelationshipsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetNetworkResourceRelationshipsResponse
+newGetNetworkResourceRelationshipsResponse
+  pHttpStatus_ =
+    GetNetworkResourceRelationshipsResponse'
+      { nextToken =
+          Prelude.Nothing,
+        relationships = Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The token for the next page of results.
+getNetworkResourceRelationshipsResponse_nextToken :: Lens.Lens' GetNetworkResourceRelationshipsResponse (Prelude.Maybe Prelude.Text)
+getNetworkResourceRelationshipsResponse_nextToken = Lens.lens (\GetNetworkResourceRelationshipsResponse' {nextToken} -> nextToken) (\s@GetNetworkResourceRelationshipsResponse' {} a -> s {nextToken = a} :: GetNetworkResourceRelationshipsResponse)
+
+-- | The resource relationships.
+getNetworkResourceRelationshipsResponse_relationships :: Lens.Lens' GetNetworkResourceRelationshipsResponse (Prelude.Maybe [Relationship])
+getNetworkResourceRelationshipsResponse_relationships = Lens.lens (\GetNetworkResourceRelationshipsResponse' {relationships} -> relationships) (\s@GetNetworkResourceRelationshipsResponse' {} a -> s {relationships = a} :: GetNetworkResourceRelationshipsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+getNetworkResourceRelationshipsResponse_httpStatus :: Lens.Lens' GetNetworkResourceRelationshipsResponse Prelude.Int
+getNetworkResourceRelationshipsResponse_httpStatus = Lens.lens (\GetNetworkResourceRelationshipsResponse' {httpStatus} -> httpStatus) (\s@GetNetworkResourceRelationshipsResponse' {} a -> s {httpStatus = a} :: GetNetworkResourceRelationshipsResponse)
+
+instance
+  Prelude.NFData
+    GetNetworkResourceRelationshipsResponse
+  where
+  rnf GetNetworkResourceRelationshipsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf relationships
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetNetworkResources.hs b/gen/Amazonka/NetworkManager/GetNetworkResources.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetNetworkResources.hs
@@ -0,0 +1,449 @@
+{-# 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.NetworkManager.GetNetworkResources
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the network resources for the specified global network.
+--
+-- The results include information from the corresponding Describe call for
+-- the resource, minus any sensitive information such as pre-shared keys.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetNetworkResources
+  ( -- * Creating a Request
+    GetNetworkResources (..),
+    newGetNetworkResources,
+
+    -- * Request Lenses
+    getNetworkResources_accountId,
+    getNetworkResources_awsRegion,
+    getNetworkResources_coreNetworkId,
+    getNetworkResources_maxResults,
+    getNetworkResources_nextToken,
+    getNetworkResources_registeredGatewayArn,
+    getNetworkResources_resourceArn,
+    getNetworkResources_resourceType,
+    getNetworkResources_globalNetworkId,
+
+    -- * Destructuring the Response
+    GetNetworkResourcesResponse (..),
+    newGetNetworkResourcesResponse,
+
+    -- * Response Lenses
+    getNetworkResourcesResponse_networkResources,
+    getNetworkResourcesResponse_nextToken,
+    getNetworkResourcesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetNetworkResources' smart constructor.
+data GetNetworkResources = GetNetworkResources'
+  { -- | The Amazon Web Services account ID.
+    accountId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Region.
+    awsRegion :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the gateway.
+    registeredGatewayArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the resource.
+    resourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The resource type.
+    --
+    -- The following are the supported resource types for Direct Connect:
+    --
+    -- -   @dxcon@ - The definition model is
+    --     <https://docs.aws.amazon.com/directconnect/latest/APIReference/API_Connection.html Connection>.
+    --
+    -- -   @dx-gateway@ - The definition model is
+    --     <https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DirectConnectGateway.html DirectConnectGateway>.
+    --
+    -- -   @dx-vif@ - The definition model is
+    --     <https://docs.aws.amazon.com/directconnect/latest/APIReference/API_VirtualInterface.html VirtualInterface>.
+    --
+    -- The following are the supported resource types for Network Manager:
+    --
+    -- -   @connection@ - The definition model is
+    --     <https://docs.aws.amazon.com/networkmanager/latest/APIReference/API_Connection.html Connection>.
+    --
+    -- -   @device@ - The definition model is
+    --     <https://docs.aws.amazon.com/networkmanager/latest/APIReference/API_Device.html Device>.
+    --
+    -- -   @link@ - The definition model is
+    --     <https://docs.aws.amazon.com/networkmanager/latest/APIReference/API_Link.html Link>.
+    --
+    -- -   @site@ - The definition model is
+    --     <https://docs.aws.amazon.com/networkmanager/latest/APIReference/API_Site.html Site>.
+    --
+    -- The following are the supported resource types for Amazon VPC:
+    --
+    -- -   @customer-gateway@ - The definition model is
+    --     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CustomerGateway.html CustomerGateway>.
+    --
+    -- -   @transit-gateway@ - The definition model is
+    --     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TransitGateway.html TransitGateway>.
+    --
+    -- -   @transit-gateway-attachment@ - The definition model is
+    --     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TransitGatewayAttachment.html TransitGatewayAttachment>.
+    --
+    -- -   @transit-gateway-connect-peer@ - The definition model is
+    --     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TransitGatewayConnectPeer.html TransitGatewayConnectPeer>.
+    --
+    -- -   @transit-gateway-route-table@ - The definition model is
+    --     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TransitGatewayRouteTable.html TransitGatewayRouteTable>.
+    --
+    -- -   @vpn-connection@ - The definition model is
+    --     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_VpnConnection.html VpnConnection>.
+    resourceType :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkResources' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'getNetworkResources_accountId' - The Amazon Web Services account ID.
+--
+-- 'awsRegion', 'getNetworkResources_awsRegion' - The Amazon Web Services Region.
+--
+-- 'coreNetworkId', 'getNetworkResources_coreNetworkId' - The ID of a core network.
+--
+-- 'maxResults', 'getNetworkResources_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getNetworkResources_nextToken' - The token for the next page of results.
+--
+-- 'registeredGatewayArn', 'getNetworkResources_registeredGatewayArn' - The ARN of the gateway.
+--
+-- 'resourceArn', 'getNetworkResources_resourceArn' - The ARN of the resource.
+--
+-- 'resourceType', 'getNetworkResources_resourceType' - The resource type.
+--
+-- The following are the supported resource types for Direct Connect:
+--
+-- -   @dxcon@ - The definition model is
+--     <https://docs.aws.amazon.com/directconnect/latest/APIReference/API_Connection.html Connection>.
+--
+-- -   @dx-gateway@ - The definition model is
+--     <https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DirectConnectGateway.html DirectConnectGateway>.
+--
+-- -   @dx-vif@ - The definition model is
+--     <https://docs.aws.amazon.com/directconnect/latest/APIReference/API_VirtualInterface.html VirtualInterface>.
+--
+-- The following are the supported resource types for Network Manager:
+--
+-- -   @connection@ - The definition model is
+--     <https://docs.aws.amazon.com/networkmanager/latest/APIReference/API_Connection.html Connection>.
+--
+-- -   @device@ - The definition model is
+--     <https://docs.aws.amazon.com/networkmanager/latest/APIReference/API_Device.html Device>.
+--
+-- -   @link@ - The definition model is
+--     <https://docs.aws.amazon.com/networkmanager/latest/APIReference/API_Link.html Link>.
+--
+-- -   @site@ - The definition model is
+--     <https://docs.aws.amazon.com/networkmanager/latest/APIReference/API_Site.html Site>.
+--
+-- The following are the supported resource types for Amazon VPC:
+--
+-- -   @customer-gateway@ - The definition model is
+--     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CustomerGateway.html CustomerGateway>.
+--
+-- -   @transit-gateway@ - The definition model is
+--     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TransitGateway.html TransitGateway>.
+--
+-- -   @transit-gateway-attachment@ - The definition model is
+--     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TransitGatewayAttachment.html TransitGatewayAttachment>.
+--
+-- -   @transit-gateway-connect-peer@ - The definition model is
+--     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TransitGatewayConnectPeer.html TransitGatewayConnectPeer>.
+--
+-- -   @transit-gateway-route-table@ - The definition model is
+--     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TransitGatewayRouteTable.html TransitGatewayRouteTable>.
+--
+-- -   @vpn-connection@ - The definition model is
+--     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_VpnConnection.html VpnConnection>.
+--
+-- 'globalNetworkId', 'getNetworkResources_globalNetworkId' - The ID of the global network.
+newGetNetworkResources ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  GetNetworkResources
+newGetNetworkResources pGlobalNetworkId_ =
+  GetNetworkResources'
+    { accountId = Prelude.Nothing,
+      awsRegion = Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      registeredGatewayArn = Prelude.Nothing,
+      resourceArn = Prelude.Nothing,
+      resourceType = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | The Amazon Web Services account ID.
+getNetworkResources_accountId :: Lens.Lens' GetNetworkResources (Prelude.Maybe Prelude.Text)
+getNetworkResources_accountId = Lens.lens (\GetNetworkResources' {accountId} -> accountId) (\s@GetNetworkResources' {} a -> s {accountId = a} :: GetNetworkResources)
+
+-- | The Amazon Web Services Region.
+getNetworkResources_awsRegion :: Lens.Lens' GetNetworkResources (Prelude.Maybe Prelude.Text)
+getNetworkResources_awsRegion = Lens.lens (\GetNetworkResources' {awsRegion} -> awsRegion) (\s@GetNetworkResources' {} a -> s {awsRegion = a} :: GetNetworkResources)
+
+-- | The ID of a core network.
+getNetworkResources_coreNetworkId :: Lens.Lens' GetNetworkResources (Prelude.Maybe Prelude.Text)
+getNetworkResources_coreNetworkId = Lens.lens (\GetNetworkResources' {coreNetworkId} -> coreNetworkId) (\s@GetNetworkResources' {} a -> s {coreNetworkId = a} :: GetNetworkResources)
+
+-- | The maximum number of results to return.
+getNetworkResources_maxResults :: Lens.Lens' GetNetworkResources (Prelude.Maybe Prelude.Natural)
+getNetworkResources_maxResults = Lens.lens (\GetNetworkResources' {maxResults} -> maxResults) (\s@GetNetworkResources' {} a -> s {maxResults = a} :: GetNetworkResources)
+
+-- | The token for the next page of results.
+getNetworkResources_nextToken :: Lens.Lens' GetNetworkResources (Prelude.Maybe Prelude.Text)
+getNetworkResources_nextToken = Lens.lens (\GetNetworkResources' {nextToken} -> nextToken) (\s@GetNetworkResources' {} a -> s {nextToken = a} :: GetNetworkResources)
+
+-- | The ARN of the gateway.
+getNetworkResources_registeredGatewayArn :: Lens.Lens' GetNetworkResources (Prelude.Maybe Prelude.Text)
+getNetworkResources_registeredGatewayArn = Lens.lens (\GetNetworkResources' {registeredGatewayArn} -> registeredGatewayArn) (\s@GetNetworkResources' {} a -> s {registeredGatewayArn = a} :: GetNetworkResources)
+
+-- | The ARN of the resource.
+getNetworkResources_resourceArn :: Lens.Lens' GetNetworkResources (Prelude.Maybe Prelude.Text)
+getNetworkResources_resourceArn = Lens.lens (\GetNetworkResources' {resourceArn} -> resourceArn) (\s@GetNetworkResources' {} a -> s {resourceArn = a} :: GetNetworkResources)
+
+-- | The resource type.
+--
+-- The following are the supported resource types for Direct Connect:
+--
+-- -   @dxcon@ - The definition model is
+--     <https://docs.aws.amazon.com/directconnect/latest/APIReference/API_Connection.html Connection>.
+--
+-- -   @dx-gateway@ - The definition model is
+--     <https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DirectConnectGateway.html DirectConnectGateway>.
+--
+-- -   @dx-vif@ - The definition model is
+--     <https://docs.aws.amazon.com/directconnect/latest/APIReference/API_VirtualInterface.html VirtualInterface>.
+--
+-- The following are the supported resource types for Network Manager:
+--
+-- -   @connection@ - The definition model is
+--     <https://docs.aws.amazon.com/networkmanager/latest/APIReference/API_Connection.html Connection>.
+--
+-- -   @device@ - The definition model is
+--     <https://docs.aws.amazon.com/networkmanager/latest/APIReference/API_Device.html Device>.
+--
+-- -   @link@ - The definition model is
+--     <https://docs.aws.amazon.com/networkmanager/latest/APIReference/API_Link.html Link>.
+--
+-- -   @site@ - The definition model is
+--     <https://docs.aws.amazon.com/networkmanager/latest/APIReference/API_Site.html Site>.
+--
+-- The following are the supported resource types for Amazon VPC:
+--
+-- -   @customer-gateway@ - The definition model is
+--     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CustomerGateway.html CustomerGateway>.
+--
+-- -   @transit-gateway@ - The definition model is
+--     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TransitGateway.html TransitGateway>.
+--
+-- -   @transit-gateway-attachment@ - The definition model is
+--     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TransitGatewayAttachment.html TransitGatewayAttachment>.
+--
+-- -   @transit-gateway-connect-peer@ - The definition model is
+--     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TransitGatewayConnectPeer.html TransitGatewayConnectPeer>.
+--
+-- -   @transit-gateway-route-table@ - The definition model is
+--     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TransitGatewayRouteTable.html TransitGatewayRouteTable>.
+--
+-- -   @vpn-connection@ - The definition model is
+--     <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_VpnConnection.html VpnConnection>.
+getNetworkResources_resourceType :: Lens.Lens' GetNetworkResources (Prelude.Maybe Prelude.Text)
+getNetworkResources_resourceType = Lens.lens (\GetNetworkResources' {resourceType} -> resourceType) (\s@GetNetworkResources' {} a -> s {resourceType = a} :: GetNetworkResources)
+
+-- | The ID of the global network.
+getNetworkResources_globalNetworkId :: Lens.Lens' GetNetworkResources Prelude.Text
+getNetworkResources_globalNetworkId = Lens.lens (\GetNetworkResources' {globalNetworkId} -> globalNetworkId) (\s@GetNetworkResources' {} a -> s {globalNetworkId = a} :: GetNetworkResources)
+
+instance Core.AWSPager GetNetworkResources where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getNetworkResourcesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getNetworkResourcesResponse_networkResources
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getNetworkResources_nextToken
+          Lens..~ rs
+          Lens.^? getNetworkResourcesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest GetNetworkResources where
+  type
+    AWSResponse GetNetworkResources =
+      GetNetworkResourcesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetNetworkResourcesResponse'
+            Prelude.<$> ( x
+                            Data..?> "NetworkResources"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetNetworkResources where
+  hashWithSalt _salt GetNetworkResources' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` awsRegion
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` registeredGatewayArn
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` resourceType
+      `Prelude.hashWithSalt` globalNetworkId
+
+instance Prelude.NFData GetNetworkResources where
+  rnf GetNetworkResources' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf awsRegion
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf registeredGatewayArn
+      `Prelude.seq` Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf resourceType
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance Data.ToHeaders GetNetworkResources where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetNetworkResources where
+  toPath GetNetworkResources' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/network-resources"
+      ]
+
+instance Data.ToQuery GetNetworkResources where
+  toQuery GetNetworkResources' {..} =
+    Prelude.mconcat
+      [ "accountId" Data.=: accountId,
+        "awsRegion" Data.=: awsRegion,
+        "coreNetworkId" Data.=: coreNetworkId,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "registeredGatewayArn" Data.=: registeredGatewayArn,
+        "resourceArn" Data.=: resourceArn,
+        "resourceType" Data.=: resourceType
+      ]
+
+-- | /See:/ 'newGetNetworkResourcesResponse' smart constructor.
+data GetNetworkResourcesResponse = GetNetworkResourcesResponse'
+  { -- | The network resources.
+    networkResources :: Prelude.Maybe [NetworkResource],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkResourcesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'networkResources', 'getNetworkResourcesResponse_networkResources' - The network resources.
+--
+-- 'nextToken', 'getNetworkResourcesResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'getNetworkResourcesResponse_httpStatus' - The response's http status code.
+newGetNetworkResourcesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetNetworkResourcesResponse
+newGetNetworkResourcesResponse pHttpStatus_ =
+  GetNetworkResourcesResponse'
+    { networkResources =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The network resources.
+getNetworkResourcesResponse_networkResources :: Lens.Lens' GetNetworkResourcesResponse (Prelude.Maybe [NetworkResource])
+getNetworkResourcesResponse_networkResources = Lens.lens (\GetNetworkResourcesResponse' {networkResources} -> networkResources) (\s@GetNetworkResourcesResponse' {} a -> s {networkResources = a} :: GetNetworkResourcesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+getNetworkResourcesResponse_nextToken :: Lens.Lens' GetNetworkResourcesResponse (Prelude.Maybe Prelude.Text)
+getNetworkResourcesResponse_nextToken = Lens.lens (\GetNetworkResourcesResponse' {nextToken} -> nextToken) (\s@GetNetworkResourcesResponse' {} a -> s {nextToken = a} :: GetNetworkResourcesResponse)
+
+-- | The response's http status code.
+getNetworkResourcesResponse_httpStatus :: Lens.Lens' GetNetworkResourcesResponse Prelude.Int
+getNetworkResourcesResponse_httpStatus = Lens.lens (\GetNetworkResourcesResponse' {httpStatus} -> httpStatus) (\s@GetNetworkResourcesResponse' {} a -> s {httpStatus = a} :: GetNetworkResourcesResponse)
+
+instance Prelude.NFData GetNetworkResourcesResponse where
+  rnf GetNetworkResourcesResponse' {..} =
+    Prelude.rnf networkResources
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetNetworkRoutes.hs b/gen/Amazonka/NetworkManager/GetNetworkRoutes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetNetworkRoutes.hs
@@ -0,0 +1,357 @@
+{-# 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.NetworkManager.GetNetworkRoutes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the network routes of the specified global network.
+module Amazonka.NetworkManager.GetNetworkRoutes
+  ( -- * Creating a Request
+    GetNetworkRoutes (..),
+    newGetNetworkRoutes,
+
+    -- * Request Lenses
+    getNetworkRoutes_destinationFilters,
+    getNetworkRoutes_exactCidrMatches,
+    getNetworkRoutes_longestPrefixMatches,
+    getNetworkRoutes_prefixListIds,
+    getNetworkRoutes_states,
+    getNetworkRoutes_subnetOfMatches,
+    getNetworkRoutes_supernetOfMatches,
+    getNetworkRoutes_types,
+    getNetworkRoutes_globalNetworkId,
+    getNetworkRoutes_routeTableIdentifier,
+
+    -- * Destructuring the Response
+    GetNetworkRoutesResponse (..),
+    newGetNetworkRoutesResponse,
+
+    -- * Response Lenses
+    getNetworkRoutesResponse_coreNetworkSegmentEdge,
+    getNetworkRoutesResponse_networkRoutes,
+    getNetworkRoutesResponse_routeTableArn,
+    getNetworkRoutesResponse_routeTableTimestamp,
+    getNetworkRoutesResponse_routeTableType,
+    getNetworkRoutesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetNetworkRoutes' smart constructor.
+data GetNetworkRoutes = GetNetworkRoutes'
+  { -- | Filter by route table destination. Possible Values:
+    -- TRANSIT_GATEWAY_ATTACHMENT_ID, RESOURCE_ID, or RESOURCE_TYPE.
+    destinationFilters :: Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]),
+    -- | An exact CIDR block.
+    exactCidrMatches :: Prelude.Maybe [Prelude.Text],
+    -- | The most specific route that matches the traffic (longest prefix match).
+    longestPrefixMatches :: Prelude.Maybe [Prelude.Text],
+    -- | The IDs of the prefix lists.
+    prefixListIds :: Prelude.Maybe [Prelude.Text],
+    -- | The route states.
+    states :: Prelude.Maybe [RouteState],
+    -- | The routes with a subnet that match the specified CIDR filter.
+    subnetOfMatches :: Prelude.Maybe [Prelude.Text],
+    -- | The routes with a CIDR that encompasses the CIDR filter. Example: If you
+    -- specify 10.0.1.0\/30, then the result returns 10.0.1.0\/29.
+    supernetOfMatches :: Prelude.Maybe [Prelude.Text],
+    -- | The route types.
+    types :: Prelude.Maybe [RouteType],
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the route table.
+    routeTableIdentifier :: RouteTableIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkRoutes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'destinationFilters', 'getNetworkRoutes_destinationFilters' - Filter by route table destination. Possible Values:
+-- TRANSIT_GATEWAY_ATTACHMENT_ID, RESOURCE_ID, or RESOURCE_TYPE.
+--
+-- 'exactCidrMatches', 'getNetworkRoutes_exactCidrMatches' - An exact CIDR block.
+--
+-- 'longestPrefixMatches', 'getNetworkRoutes_longestPrefixMatches' - The most specific route that matches the traffic (longest prefix match).
+--
+-- 'prefixListIds', 'getNetworkRoutes_prefixListIds' - The IDs of the prefix lists.
+--
+-- 'states', 'getNetworkRoutes_states' - The route states.
+--
+-- 'subnetOfMatches', 'getNetworkRoutes_subnetOfMatches' - The routes with a subnet that match the specified CIDR filter.
+--
+-- 'supernetOfMatches', 'getNetworkRoutes_supernetOfMatches' - The routes with a CIDR that encompasses the CIDR filter. Example: If you
+-- specify 10.0.1.0\/30, then the result returns 10.0.1.0\/29.
+--
+-- 'types', 'getNetworkRoutes_types' - The route types.
+--
+-- 'globalNetworkId', 'getNetworkRoutes_globalNetworkId' - The ID of the global network.
+--
+-- 'routeTableIdentifier', 'getNetworkRoutes_routeTableIdentifier' - The ID of the route table.
+newGetNetworkRoutes ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'routeTableIdentifier'
+  RouteTableIdentifier ->
+  GetNetworkRoutes
+newGetNetworkRoutes
+  pGlobalNetworkId_
+  pRouteTableIdentifier_ =
+    GetNetworkRoutes'
+      { destinationFilters =
+          Prelude.Nothing,
+        exactCidrMatches = Prelude.Nothing,
+        longestPrefixMatches = Prelude.Nothing,
+        prefixListIds = Prelude.Nothing,
+        states = Prelude.Nothing,
+        subnetOfMatches = Prelude.Nothing,
+        supernetOfMatches = Prelude.Nothing,
+        types = Prelude.Nothing,
+        globalNetworkId = pGlobalNetworkId_,
+        routeTableIdentifier = pRouteTableIdentifier_
+      }
+
+-- | Filter by route table destination. Possible Values:
+-- TRANSIT_GATEWAY_ATTACHMENT_ID, RESOURCE_ID, or RESOURCE_TYPE.
+getNetworkRoutes_destinationFilters :: Lens.Lens' GetNetworkRoutes (Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]))
+getNetworkRoutes_destinationFilters = Lens.lens (\GetNetworkRoutes' {destinationFilters} -> destinationFilters) (\s@GetNetworkRoutes' {} a -> s {destinationFilters = a} :: GetNetworkRoutes) Prelude.. Lens.mapping Lens.coerced
+
+-- | An exact CIDR block.
+getNetworkRoutes_exactCidrMatches :: Lens.Lens' GetNetworkRoutes (Prelude.Maybe [Prelude.Text])
+getNetworkRoutes_exactCidrMatches = Lens.lens (\GetNetworkRoutes' {exactCidrMatches} -> exactCidrMatches) (\s@GetNetworkRoutes' {} a -> s {exactCidrMatches = a} :: GetNetworkRoutes) Prelude.. Lens.mapping Lens.coerced
+
+-- | The most specific route that matches the traffic (longest prefix match).
+getNetworkRoutes_longestPrefixMatches :: Lens.Lens' GetNetworkRoutes (Prelude.Maybe [Prelude.Text])
+getNetworkRoutes_longestPrefixMatches = Lens.lens (\GetNetworkRoutes' {longestPrefixMatches} -> longestPrefixMatches) (\s@GetNetworkRoutes' {} a -> s {longestPrefixMatches = a} :: GetNetworkRoutes) Prelude.. Lens.mapping Lens.coerced
+
+-- | The IDs of the prefix lists.
+getNetworkRoutes_prefixListIds :: Lens.Lens' GetNetworkRoutes (Prelude.Maybe [Prelude.Text])
+getNetworkRoutes_prefixListIds = Lens.lens (\GetNetworkRoutes' {prefixListIds} -> prefixListIds) (\s@GetNetworkRoutes' {} a -> s {prefixListIds = a} :: GetNetworkRoutes) Prelude.. Lens.mapping Lens.coerced
+
+-- | The route states.
+getNetworkRoutes_states :: Lens.Lens' GetNetworkRoutes (Prelude.Maybe [RouteState])
+getNetworkRoutes_states = Lens.lens (\GetNetworkRoutes' {states} -> states) (\s@GetNetworkRoutes' {} a -> s {states = a} :: GetNetworkRoutes) Prelude.. Lens.mapping Lens.coerced
+
+-- | The routes with a subnet that match the specified CIDR filter.
+getNetworkRoutes_subnetOfMatches :: Lens.Lens' GetNetworkRoutes (Prelude.Maybe [Prelude.Text])
+getNetworkRoutes_subnetOfMatches = Lens.lens (\GetNetworkRoutes' {subnetOfMatches} -> subnetOfMatches) (\s@GetNetworkRoutes' {} a -> s {subnetOfMatches = a} :: GetNetworkRoutes) Prelude.. Lens.mapping Lens.coerced
+
+-- | The routes with a CIDR that encompasses the CIDR filter. Example: If you
+-- specify 10.0.1.0\/30, then the result returns 10.0.1.0\/29.
+getNetworkRoutes_supernetOfMatches :: Lens.Lens' GetNetworkRoutes (Prelude.Maybe [Prelude.Text])
+getNetworkRoutes_supernetOfMatches = Lens.lens (\GetNetworkRoutes' {supernetOfMatches} -> supernetOfMatches) (\s@GetNetworkRoutes' {} a -> s {supernetOfMatches = a} :: GetNetworkRoutes) Prelude.. Lens.mapping Lens.coerced
+
+-- | The route types.
+getNetworkRoutes_types :: Lens.Lens' GetNetworkRoutes (Prelude.Maybe [RouteType])
+getNetworkRoutes_types = Lens.lens (\GetNetworkRoutes' {types} -> types) (\s@GetNetworkRoutes' {} a -> s {types = a} :: GetNetworkRoutes) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the global network.
+getNetworkRoutes_globalNetworkId :: Lens.Lens' GetNetworkRoutes Prelude.Text
+getNetworkRoutes_globalNetworkId = Lens.lens (\GetNetworkRoutes' {globalNetworkId} -> globalNetworkId) (\s@GetNetworkRoutes' {} a -> s {globalNetworkId = a} :: GetNetworkRoutes)
+
+-- | The ID of the route table.
+getNetworkRoutes_routeTableIdentifier :: Lens.Lens' GetNetworkRoutes RouteTableIdentifier
+getNetworkRoutes_routeTableIdentifier = Lens.lens (\GetNetworkRoutes' {routeTableIdentifier} -> routeTableIdentifier) (\s@GetNetworkRoutes' {} a -> s {routeTableIdentifier = a} :: GetNetworkRoutes)
+
+instance Core.AWSRequest GetNetworkRoutes where
+  type
+    AWSResponse GetNetworkRoutes =
+      GetNetworkRoutesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetNetworkRoutesResponse'
+            Prelude.<$> (x Data..?> "CoreNetworkSegmentEdge")
+            Prelude.<*> (x Data..?> "NetworkRoutes" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "RouteTableArn")
+            Prelude.<*> (x Data..?> "RouteTableTimestamp")
+            Prelude.<*> (x Data..?> "RouteTableType")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetNetworkRoutes where
+  hashWithSalt _salt GetNetworkRoutes' {..} =
+    _salt
+      `Prelude.hashWithSalt` destinationFilters
+      `Prelude.hashWithSalt` exactCidrMatches
+      `Prelude.hashWithSalt` longestPrefixMatches
+      `Prelude.hashWithSalt` prefixListIds
+      `Prelude.hashWithSalt` states
+      `Prelude.hashWithSalt` subnetOfMatches
+      `Prelude.hashWithSalt` supernetOfMatches
+      `Prelude.hashWithSalt` types
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` routeTableIdentifier
+
+instance Prelude.NFData GetNetworkRoutes where
+  rnf GetNetworkRoutes' {..} =
+    Prelude.rnf destinationFilters
+      `Prelude.seq` Prelude.rnf exactCidrMatches
+      `Prelude.seq` Prelude.rnf longestPrefixMatches
+      `Prelude.seq` Prelude.rnf prefixListIds
+      `Prelude.seq` Prelude.rnf states
+      `Prelude.seq` Prelude.rnf subnetOfMatches
+      `Prelude.seq` Prelude.rnf supernetOfMatches
+      `Prelude.seq` Prelude.rnf types
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf routeTableIdentifier
+
+instance Data.ToHeaders GetNetworkRoutes where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetNetworkRoutes where
+  toJSON GetNetworkRoutes' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DestinationFilters" Data..=)
+              Prelude.<$> destinationFilters,
+            ("ExactCidrMatches" Data..=)
+              Prelude.<$> exactCidrMatches,
+            ("LongestPrefixMatches" Data..=)
+              Prelude.<$> longestPrefixMatches,
+            ("PrefixListIds" Data..=) Prelude.<$> prefixListIds,
+            ("States" Data..=) Prelude.<$> states,
+            ("SubnetOfMatches" Data..=)
+              Prelude.<$> subnetOfMatches,
+            ("SupernetOfMatches" Data..=)
+              Prelude.<$> supernetOfMatches,
+            ("Types" Data..=) Prelude.<$> types,
+            Prelude.Just
+              ( "RouteTableIdentifier"
+                  Data..= routeTableIdentifier
+              )
+          ]
+      )
+
+instance Data.ToPath GetNetworkRoutes where
+  toPath GetNetworkRoutes' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/network-routes"
+      ]
+
+instance Data.ToQuery GetNetworkRoutes where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetNetworkRoutesResponse' smart constructor.
+data GetNetworkRoutesResponse = GetNetworkRoutesResponse'
+  { -- | Describes a core network segment edge.
+    coreNetworkSegmentEdge :: Prelude.Maybe CoreNetworkSegmentEdgeIdentifier,
+    -- | The network routes.
+    networkRoutes :: Prelude.Maybe [NetworkRoute],
+    -- | The ARN of the route table.
+    routeTableArn :: Prelude.Maybe Prelude.Text,
+    -- | The route table creation time.
+    routeTableTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The route table type.
+    routeTableType :: Prelude.Maybe RouteTableType,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkRoutesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkSegmentEdge', 'getNetworkRoutesResponse_coreNetworkSegmentEdge' - Describes a core network segment edge.
+--
+-- 'networkRoutes', 'getNetworkRoutesResponse_networkRoutes' - The network routes.
+--
+-- 'routeTableArn', 'getNetworkRoutesResponse_routeTableArn' - The ARN of the route table.
+--
+-- 'routeTableTimestamp', 'getNetworkRoutesResponse_routeTableTimestamp' - The route table creation time.
+--
+-- 'routeTableType', 'getNetworkRoutesResponse_routeTableType' - The route table type.
+--
+-- 'httpStatus', 'getNetworkRoutesResponse_httpStatus' - The response's http status code.
+newGetNetworkRoutesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetNetworkRoutesResponse
+newGetNetworkRoutesResponse pHttpStatus_ =
+  GetNetworkRoutesResponse'
+    { coreNetworkSegmentEdge =
+        Prelude.Nothing,
+      networkRoutes = Prelude.Nothing,
+      routeTableArn = Prelude.Nothing,
+      routeTableTimestamp = Prelude.Nothing,
+      routeTableType = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Describes a core network segment edge.
+getNetworkRoutesResponse_coreNetworkSegmentEdge :: Lens.Lens' GetNetworkRoutesResponse (Prelude.Maybe CoreNetworkSegmentEdgeIdentifier)
+getNetworkRoutesResponse_coreNetworkSegmentEdge = Lens.lens (\GetNetworkRoutesResponse' {coreNetworkSegmentEdge} -> coreNetworkSegmentEdge) (\s@GetNetworkRoutesResponse' {} a -> s {coreNetworkSegmentEdge = a} :: GetNetworkRoutesResponse)
+
+-- | The network routes.
+getNetworkRoutesResponse_networkRoutes :: Lens.Lens' GetNetworkRoutesResponse (Prelude.Maybe [NetworkRoute])
+getNetworkRoutesResponse_networkRoutes = Lens.lens (\GetNetworkRoutesResponse' {networkRoutes} -> networkRoutes) (\s@GetNetworkRoutesResponse' {} a -> s {networkRoutes = a} :: GetNetworkRoutesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN of the route table.
+getNetworkRoutesResponse_routeTableArn :: Lens.Lens' GetNetworkRoutesResponse (Prelude.Maybe Prelude.Text)
+getNetworkRoutesResponse_routeTableArn = Lens.lens (\GetNetworkRoutesResponse' {routeTableArn} -> routeTableArn) (\s@GetNetworkRoutesResponse' {} a -> s {routeTableArn = a} :: GetNetworkRoutesResponse)
+
+-- | The route table creation time.
+getNetworkRoutesResponse_routeTableTimestamp :: Lens.Lens' GetNetworkRoutesResponse (Prelude.Maybe Prelude.UTCTime)
+getNetworkRoutesResponse_routeTableTimestamp = Lens.lens (\GetNetworkRoutesResponse' {routeTableTimestamp} -> routeTableTimestamp) (\s@GetNetworkRoutesResponse' {} a -> s {routeTableTimestamp = a} :: GetNetworkRoutesResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The route table type.
+getNetworkRoutesResponse_routeTableType :: Lens.Lens' GetNetworkRoutesResponse (Prelude.Maybe RouteTableType)
+getNetworkRoutesResponse_routeTableType = Lens.lens (\GetNetworkRoutesResponse' {routeTableType} -> routeTableType) (\s@GetNetworkRoutesResponse' {} a -> s {routeTableType = a} :: GetNetworkRoutesResponse)
+
+-- | The response's http status code.
+getNetworkRoutesResponse_httpStatus :: Lens.Lens' GetNetworkRoutesResponse Prelude.Int
+getNetworkRoutesResponse_httpStatus = Lens.lens (\GetNetworkRoutesResponse' {httpStatus} -> httpStatus) (\s@GetNetworkRoutesResponse' {} a -> s {httpStatus = a} :: GetNetworkRoutesResponse)
+
+instance Prelude.NFData GetNetworkRoutesResponse where
+  rnf GetNetworkRoutesResponse' {..} =
+    Prelude.rnf coreNetworkSegmentEdge
+      `Prelude.seq` Prelude.rnf networkRoutes
+      `Prelude.seq` Prelude.rnf routeTableArn
+      `Prelude.seq` Prelude.rnf routeTableTimestamp
+      `Prelude.seq` Prelude.rnf routeTableType
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetNetworkTelemetry.hs b/gen/Amazonka/NetworkManager/GetNetworkTelemetry.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetNetworkTelemetry.hs
@@ -0,0 +1,407 @@
+{-# 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.NetworkManager.GetNetworkTelemetry
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the network telemetry of the specified global network.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetNetworkTelemetry
+  ( -- * Creating a Request
+    GetNetworkTelemetry (..),
+    newGetNetworkTelemetry,
+
+    -- * Request Lenses
+    getNetworkTelemetry_accountId,
+    getNetworkTelemetry_awsRegion,
+    getNetworkTelemetry_coreNetworkId,
+    getNetworkTelemetry_maxResults,
+    getNetworkTelemetry_nextToken,
+    getNetworkTelemetry_registeredGatewayArn,
+    getNetworkTelemetry_resourceArn,
+    getNetworkTelemetry_resourceType,
+    getNetworkTelemetry_globalNetworkId,
+
+    -- * Destructuring the Response
+    GetNetworkTelemetryResponse (..),
+    newGetNetworkTelemetryResponse,
+
+    -- * Response Lenses
+    getNetworkTelemetryResponse_networkTelemetry,
+    getNetworkTelemetryResponse_nextToken,
+    getNetworkTelemetryResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetNetworkTelemetry' smart constructor.
+data GetNetworkTelemetry = GetNetworkTelemetry'
+  { -- | The Amazon Web Services account ID.
+    accountId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Region.
+    awsRegion :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the gateway.
+    registeredGatewayArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the resource.
+    resourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The resource type.
+    --
+    -- The following are the supported resource types for Direct Connect:
+    --
+    -- -   @dxcon@
+    --
+    -- -   @dx-gateway@
+    --
+    -- -   @dx-vif@
+    --
+    -- The following are the supported resource types for Network Manager:
+    --
+    -- -   @connection@
+    --
+    -- -   @device@
+    --
+    -- -   @link@
+    --
+    -- -   @site@
+    --
+    -- The following are the supported resource types for Amazon VPC:
+    --
+    -- -   @customer-gateway@
+    --
+    -- -   @transit-gateway@
+    --
+    -- -   @transit-gateway-attachment@
+    --
+    -- -   @transit-gateway-connect-peer@
+    --
+    -- -   @transit-gateway-route-table@
+    --
+    -- -   @vpn-connection@
+    resourceType :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkTelemetry' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'getNetworkTelemetry_accountId' - The Amazon Web Services account ID.
+--
+-- 'awsRegion', 'getNetworkTelemetry_awsRegion' - The Amazon Web Services Region.
+--
+-- 'coreNetworkId', 'getNetworkTelemetry_coreNetworkId' - The ID of a core network.
+--
+-- 'maxResults', 'getNetworkTelemetry_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getNetworkTelemetry_nextToken' - The token for the next page of results.
+--
+-- 'registeredGatewayArn', 'getNetworkTelemetry_registeredGatewayArn' - The ARN of the gateway.
+--
+-- 'resourceArn', 'getNetworkTelemetry_resourceArn' - The ARN of the resource.
+--
+-- 'resourceType', 'getNetworkTelemetry_resourceType' - The resource type.
+--
+-- The following are the supported resource types for Direct Connect:
+--
+-- -   @dxcon@
+--
+-- -   @dx-gateway@
+--
+-- -   @dx-vif@
+--
+-- The following are the supported resource types for Network Manager:
+--
+-- -   @connection@
+--
+-- -   @device@
+--
+-- -   @link@
+--
+-- -   @site@
+--
+-- The following are the supported resource types for Amazon VPC:
+--
+-- -   @customer-gateway@
+--
+-- -   @transit-gateway@
+--
+-- -   @transit-gateway-attachment@
+--
+-- -   @transit-gateway-connect-peer@
+--
+-- -   @transit-gateway-route-table@
+--
+-- -   @vpn-connection@
+--
+-- 'globalNetworkId', 'getNetworkTelemetry_globalNetworkId' - The ID of the global network.
+newGetNetworkTelemetry ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  GetNetworkTelemetry
+newGetNetworkTelemetry pGlobalNetworkId_ =
+  GetNetworkTelemetry'
+    { accountId = Prelude.Nothing,
+      awsRegion = Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      registeredGatewayArn = Prelude.Nothing,
+      resourceArn = Prelude.Nothing,
+      resourceType = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | The Amazon Web Services account ID.
+getNetworkTelemetry_accountId :: Lens.Lens' GetNetworkTelemetry (Prelude.Maybe Prelude.Text)
+getNetworkTelemetry_accountId = Lens.lens (\GetNetworkTelemetry' {accountId} -> accountId) (\s@GetNetworkTelemetry' {} a -> s {accountId = a} :: GetNetworkTelemetry)
+
+-- | The Amazon Web Services Region.
+getNetworkTelemetry_awsRegion :: Lens.Lens' GetNetworkTelemetry (Prelude.Maybe Prelude.Text)
+getNetworkTelemetry_awsRegion = Lens.lens (\GetNetworkTelemetry' {awsRegion} -> awsRegion) (\s@GetNetworkTelemetry' {} a -> s {awsRegion = a} :: GetNetworkTelemetry)
+
+-- | The ID of a core network.
+getNetworkTelemetry_coreNetworkId :: Lens.Lens' GetNetworkTelemetry (Prelude.Maybe Prelude.Text)
+getNetworkTelemetry_coreNetworkId = Lens.lens (\GetNetworkTelemetry' {coreNetworkId} -> coreNetworkId) (\s@GetNetworkTelemetry' {} a -> s {coreNetworkId = a} :: GetNetworkTelemetry)
+
+-- | The maximum number of results to return.
+getNetworkTelemetry_maxResults :: Lens.Lens' GetNetworkTelemetry (Prelude.Maybe Prelude.Natural)
+getNetworkTelemetry_maxResults = Lens.lens (\GetNetworkTelemetry' {maxResults} -> maxResults) (\s@GetNetworkTelemetry' {} a -> s {maxResults = a} :: GetNetworkTelemetry)
+
+-- | The token for the next page of results.
+getNetworkTelemetry_nextToken :: Lens.Lens' GetNetworkTelemetry (Prelude.Maybe Prelude.Text)
+getNetworkTelemetry_nextToken = Lens.lens (\GetNetworkTelemetry' {nextToken} -> nextToken) (\s@GetNetworkTelemetry' {} a -> s {nextToken = a} :: GetNetworkTelemetry)
+
+-- | The ARN of the gateway.
+getNetworkTelemetry_registeredGatewayArn :: Lens.Lens' GetNetworkTelemetry (Prelude.Maybe Prelude.Text)
+getNetworkTelemetry_registeredGatewayArn = Lens.lens (\GetNetworkTelemetry' {registeredGatewayArn} -> registeredGatewayArn) (\s@GetNetworkTelemetry' {} a -> s {registeredGatewayArn = a} :: GetNetworkTelemetry)
+
+-- | The ARN of the resource.
+getNetworkTelemetry_resourceArn :: Lens.Lens' GetNetworkTelemetry (Prelude.Maybe Prelude.Text)
+getNetworkTelemetry_resourceArn = Lens.lens (\GetNetworkTelemetry' {resourceArn} -> resourceArn) (\s@GetNetworkTelemetry' {} a -> s {resourceArn = a} :: GetNetworkTelemetry)
+
+-- | The resource type.
+--
+-- The following are the supported resource types for Direct Connect:
+--
+-- -   @dxcon@
+--
+-- -   @dx-gateway@
+--
+-- -   @dx-vif@
+--
+-- The following are the supported resource types for Network Manager:
+--
+-- -   @connection@
+--
+-- -   @device@
+--
+-- -   @link@
+--
+-- -   @site@
+--
+-- The following are the supported resource types for Amazon VPC:
+--
+-- -   @customer-gateway@
+--
+-- -   @transit-gateway@
+--
+-- -   @transit-gateway-attachment@
+--
+-- -   @transit-gateway-connect-peer@
+--
+-- -   @transit-gateway-route-table@
+--
+-- -   @vpn-connection@
+getNetworkTelemetry_resourceType :: Lens.Lens' GetNetworkTelemetry (Prelude.Maybe Prelude.Text)
+getNetworkTelemetry_resourceType = Lens.lens (\GetNetworkTelemetry' {resourceType} -> resourceType) (\s@GetNetworkTelemetry' {} a -> s {resourceType = a} :: GetNetworkTelemetry)
+
+-- | The ID of the global network.
+getNetworkTelemetry_globalNetworkId :: Lens.Lens' GetNetworkTelemetry Prelude.Text
+getNetworkTelemetry_globalNetworkId = Lens.lens (\GetNetworkTelemetry' {globalNetworkId} -> globalNetworkId) (\s@GetNetworkTelemetry' {} a -> s {globalNetworkId = a} :: GetNetworkTelemetry)
+
+instance Core.AWSPager GetNetworkTelemetry where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getNetworkTelemetryResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getNetworkTelemetryResponse_networkTelemetry
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getNetworkTelemetry_nextToken
+          Lens..~ rs
+          Lens.^? getNetworkTelemetryResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest GetNetworkTelemetry where
+  type
+    AWSResponse GetNetworkTelemetry =
+      GetNetworkTelemetryResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetNetworkTelemetryResponse'
+            Prelude.<$> ( x
+                            Data..?> "NetworkTelemetry"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetNetworkTelemetry where
+  hashWithSalt _salt GetNetworkTelemetry' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` awsRegion
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` registeredGatewayArn
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` resourceType
+      `Prelude.hashWithSalt` globalNetworkId
+
+instance Prelude.NFData GetNetworkTelemetry where
+  rnf GetNetworkTelemetry' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf awsRegion
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf registeredGatewayArn
+      `Prelude.seq` Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf resourceType
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance Data.ToHeaders GetNetworkTelemetry where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetNetworkTelemetry where
+  toPath GetNetworkTelemetry' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/network-telemetry"
+      ]
+
+instance Data.ToQuery GetNetworkTelemetry where
+  toQuery GetNetworkTelemetry' {..} =
+    Prelude.mconcat
+      [ "accountId" Data.=: accountId,
+        "awsRegion" Data.=: awsRegion,
+        "coreNetworkId" Data.=: coreNetworkId,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "registeredGatewayArn" Data.=: registeredGatewayArn,
+        "resourceArn" Data.=: resourceArn,
+        "resourceType" Data.=: resourceType
+      ]
+
+-- | /See:/ 'newGetNetworkTelemetryResponse' smart constructor.
+data GetNetworkTelemetryResponse = GetNetworkTelemetryResponse'
+  { -- | The network telemetry.
+    networkTelemetry :: Prelude.Maybe [NetworkTelemetry],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkTelemetryResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'networkTelemetry', 'getNetworkTelemetryResponse_networkTelemetry' - The network telemetry.
+--
+-- 'nextToken', 'getNetworkTelemetryResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'getNetworkTelemetryResponse_httpStatus' - The response's http status code.
+newGetNetworkTelemetryResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetNetworkTelemetryResponse
+newGetNetworkTelemetryResponse pHttpStatus_ =
+  GetNetworkTelemetryResponse'
+    { networkTelemetry =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The network telemetry.
+getNetworkTelemetryResponse_networkTelemetry :: Lens.Lens' GetNetworkTelemetryResponse (Prelude.Maybe [NetworkTelemetry])
+getNetworkTelemetryResponse_networkTelemetry = Lens.lens (\GetNetworkTelemetryResponse' {networkTelemetry} -> networkTelemetry) (\s@GetNetworkTelemetryResponse' {} a -> s {networkTelemetry = a} :: GetNetworkTelemetryResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+getNetworkTelemetryResponse_nextToken :: Lens.Lens' GetNetworkTelemetryResponse (Prelude.Maybe Prelude.Text)
+getNetworkTelemetryResponse_nextToken = Lens.lens (\GetNetworkTelemetryResponse' {nextToken} -> nextToken) (\s@GetNetworkTelemetryResponse' {} a -> s {nextToken = a} :: GetNetworkTelemetryResponse)
+
+-- | The response's http status code.
+getNetworkTelemetryResponse_httpStatus :: Lens.Lens' GetNetworkTelemetryResponse Prelude.Int
+getNetworkTelemetryResponse_httpStatus = Lens.lens (\GetNetworkTelemetryResponse' {httpStatus} -> httpStatus) (\s@GetNetworkTelemetryResponse' {} a -> s {httpStatus = a} :: GetNetworkTelemetryResponse)
+
+instance Prelude.NFData GetNetworkTelemetryResponse where
+  rnf GetNetworkTelemetryResponse' {..} =
+    Prelude.rnf networkTelemetry
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetResourcePolicy.hs b/gen/Amazonka/NetworkManager/GetResourcePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetResourcePolicy.hs
@@ -0,0 +1,159 @@
+{-# 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.NetworkManager.GetResourcePolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about a resource policy.
+module Amazonka.NetworkManager.GetResourcePolicy
+  ( -- * Creating a Request
+    GetResourcePolicy (..),
+    newGetResourcePolicy,
+
+    -- * Request Lenses
+    getResourcePolicy_resourceArn,
+
+    -- * Destructuring the Response
+    GetResourcePolicyResponse (..),
+    newGetResourcePolicyResponse,
+
+    -- * Response Lenses
+    getResourcePolicyResponse_policyDocument,
+    getResourcePolicyResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetResourcePolicy' smart constructor.
+data GetResourcePolicy = GetResourcePolicy'
+  { -- | The ARN of the resource.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetResourcePolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'getResourcePolicy_resourceArn' - The ARN of the resource.
+newGetResourcePolicy ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  GetResourcePolicy
+newGetResourcePolicy pResourceArn_ =
+  GetResourcePolicy' {resourceArn = pResourceArn_}
+
+-- | The ARN of the resource.
+getResourcePolicy_resourceArn :: Lens.Lens' GetResourcePolicy Prelude.Text
+getResourcePolicy_resourceArn = Lens.lens (\GetResourcePolicy' {resourceArn} -> resourceArn) (\s@GetResourcePolicy' {} a -> s {resourceArn = a} :: GetResourcePolicy)
+
+instance Core.AWSRequest GetResourcePolicy where
+  type
+    AWSResponse GetResourcePolicy =
+      GetResourcePolicyResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetResourcePolicyResponse'
+            Prelude.<$> (x Data..?> "PolicyDocument")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetResourcePolicy where
+  hashWithSalt _salt GetResourcePolicy' {..} =
+    _salt `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData GetResourcePolicy where
+  rnf GetResourcePolicy' {..} = Prelude.rnf resourceArn
+
+instance Data.ToHeaders GetResourcePolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetResourcePolicy where
+  toPath GetResourcePolicy' {..} =
+    Prelude.mconcat
+      ["/resource-policy/", Data.toBS resourceArn]
+
+instance Data.ToQuery GetResourcePolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetResourcePolicyResponse' smart constructor.
+data GetResourcePolicyResponse = GetResourcePolicyResponse'
+  { -- | The resource policy document.
+    policyDocument :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetResourcePolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'policyDocument', 'getResourcePolicyResponse_policyDocument' - The resource policy document.
+--
+-- 'httpStatus', 'getResourcePolicyResponse_httpStatus' - The response's http status code.
+newGetResourcePolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetResourcePolicyResponse
+newGetResourcePolicyResponse pHttpStatus_ =
+  GetResourcePolicyResponse'
+    { policyDocument =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The resource policy document.
+getResourcePolicyResponse_policyDocument :: Lens.Lens' GetResourcePolicyResponse (Prelude.Maybe Prelude.Text)
+getResourcePolicyResponse_policyDocument = Lens.lens (\GetResourcePolicyResponse' {policyDocument} -> policyDocument) (\s@GetResourcePolicyResponse' {} a -> s {policyDocument = a} :: GetResourcePolicyResponse)
+
+-- | The response's http status code.
+getResourcePolicyResponse_httpStatus :: Lens.Lens' GetResourcePolicyResponse Prelude.Int
+getResourcePolicyResponse_httpStatus = Lens.lens (\GetResourcePolicyResponse' {httpStatus} -> httpStatus) (\s@GetResourcePolicyResponse' {} a -> s {httpStatus = a} :: GetResourcePolicyResponse)
+
+instance Prelude.NFData GetResourcePolicyResponse where
+  rnf GetResourcePolicyResponse' {..} =
+    Prelude.rnf policyDocument
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetRouteAnalysis.hs b/gen/Amazonka/NetworkManager/GetRouteAnalysis.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetRouteAnalysis.hs
@@ -0,0 +1,184 @@
+{-# 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.NetworkManager.GetRouteAnalysis
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about the specified route analysis.
+module Amazonka.NetworkManager.GetRouteAnalysis
+  ( -- * Creating a Request
+    GetRouteAnalysis (..),
+    newGetRouteAnalysis,
+
+    -- * Request Lenses
+    getRouteAnalysis_globalNetworkId,
+    getRouteAnalysis_routeAnalysisId,
+
+    -- * Destructuring the Response
+    GetRouteAnalysisResponse (..),
+    newGetRouteAnalysisResponse,
+
+    -- * Response Lenses
+    getRouteAnalysisResponse_routeAnalysis,
+    getRouteAnalysisResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetRouteAnalysis' smart constructor.
+data GetRouteAnalysis = GetRouteAnalysis'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the route analysis.
+    routeAnalysisId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetRouteAnalysis' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'getRouteAnalysis_globalNetworkId' - The ID of the global network.
+--
+-- 'routeAnalysisId', 'getRouteAnalysis_routeAnalysisId' - The ID of the route analysis.
+newGetRouteAnalysis ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'routeAnalysisId'
+  Prelude.Text ->
+  GetRouteAnalysis
+newGetRouteAnalysis
+  pGlobalNetworkId_
+  pRouteAnalysisId_ =
+    GetRouteAnalysis'
+      { globalNetworkId =
+          pGlobalNetworkId_,
+        routeAnalysisId = pRouteAnalysisId_
+      }
+
+-- | The ID of the global network.
+getRouteAnalysis_globalNetworkId :: Lens.Lens' GetRouteAnalysis Prelude.Text
+getRouteAnalysis_globalNetworkId = Lens.lens (\GetRouteAnalysis' {globalNetworkId} -> globalNetworkId) (\s@GetRouteAnalysis' {} a -> s {globalNetworkId = a} :: GetRouteAnalysis)
+
+-- | The ID of the route analysis.
+getRouteAnalysis_routeAnalysisId :: Lens.Lens' GetRouteAnalysis Prelude.Text
+getRouteAnalysis_routeAnalysisId = Lens.lens (\GetRouteAnalysis' {routeAnalysisId} -> routeAnalysisId) (\s@GetRouteAnalysis' {} a -> s {routeAnalysisId = a} :: GetRouteAnalysis)
+
+instance Core.AWSRequest GetRouteAnalysis where
+  type
+    AWSResponse GetRouteAnalysis =
+      GetRouteAnalysisResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetRouteAnalysisResponse'
+            Prelude.<$> (x Data..?> "RouteAnalysis")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetRouteAnalysis where
+  hashWithSalt _salt GetRouteAnalysis' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` routeAnalysisId
+
+instance Prelude.NFData GetRouteAnalysis where
+  rnf GetRouteAnalysis' {..} =
+    Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf routeAnalysisId
+
+instance Data.ToHeaders GetRouteAnalysis where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetRouteAnalysis where
+  toPath GetRouteAnalysis' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/route-analyses/",
+        Data.toBS routeAnalysisId
+      ]
+
+instance Data.ToQuery GetRouteAnalysis where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetRouteAnalysisResponse' smart constructor.
+data GetRouteAnalysisResponse = GetRouteAnalysisResponse'
+  { -- | The route analysis.
+    routeAnalysis :: Prelude.Maybe RouteAnalysis,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetRouteAnalysisResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'routeAnalysis', 'getRouteAnalysisResponse_routeAnalysis' - The route analysis.
+--
+-- 'httpStatus', 'getRouteAnalysisResponse_httpStatus' - The response's http status code.
+newGetRouteAnalysisResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetRouteAnalysisResponse
+newGetRouteAnalysisResponse pHttpStatus_ =
+  GetRouteAnalysisResponse'
+    { routeAnalysis =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The route analysis.
+getRouteAnalysisResponse_routeAnalysis :: Lens.Lens' GetRouteAnalysisResponse (Prelude.Maybe RouteAnalysis)
+getRouteAnalysisResponse_routeAnalysis = Lens.lens (\GetRouteAnalysisResponse' {routeAnalysis} -> routeAnalysis) (\s@GetRouteAnalysisResponse' {} a -> s {routeAnalysis = a} :: GetRouteAnalysisResponse)
+
+-- | The response's http status code.
+getRouteAnalysisResponse_httpStatus :: Lens.Lens' GetRouteAnalysisResponse Prelude.Int
+getRouteAnalysisResponse_httpStatus = Lens.lens (\GetRouteAnalysisResponse' {httpStatus} -> httpStatus) (\s@GetRouteAnalysisResponse' {} a -> s {httpStatus = a} :: GetRouteAnalysisResponse)
+
+instance Prelude.NFData GetRouteAnalysisResponse where
+  rnf GetRouteAnalysisResponse' {..} =
+    Prelude.rnf routeAnalysis
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetSiteToSiteVpnAttachment.hs b/gen/Amazonka/NetworkManager/GetSiteToSiteVpnAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetSiteToSiteVpnAttachment.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.NetworkManager.GetSiteToSiteVpnAttachment
+-- 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 information about a site-to-site VPN attachment.
+module Amazonka.NetworkManager.GetSiteToSiteVpnAttachment
+  ( -- * Creating a Request
+    GetSiteToSiteVpnAttachment (..),
+    newGetSiteToSiteVpnAttachment,
+
+    -- * Request Lenses
+    getSiteToSiteVpnAttachment_attachmentId,
+
+    -- * Destructuring the Response
+    GetSiteToSiteVpnAttachmentResponse (..),
+    newGetSiteToSiteVpnAttachmentResponse,
+
+    -- * Response Lenses
+    getSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment,
+    getSiteToSiteVpnAttachmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetSiteToSiteVpnAttachment' smart constructor.
+data GetSiteToSiteVpnAttachment = GetSiteToSiteVpnAttachment'
+  { -- | The ID of the attachment.
+    attachmentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSiteToSiteVpnAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachmentId', 'getSiteToSiteVpnAttachment_attachmentId' - The ID of the attachment.
+newGetSiteToSiteVpnAttachment ::
+  -- | 'attachmentId'
+  Prelude.Text ->
+  GetSiteToSiteVpnAttachment
+newGetSiteToSiteVpnAttachment pAttachmentId_ =
+  GetSiteToSiteVpnAttachment'
+    { attachmentId =
+        pAttachmentId_
+    }
+
+-- | The ID of the attachment.
+getSiteToSiteVpnAttachment_attachmentId :: Lens.Lens' GetSiteToSiteVpnAttachment Prelude.Text
+getSiteToSiteVpnAttachment_attachmentId = Lens.lens (\GetSiteToSiteVpnAttachment' {attachmentId} -> attachmentId) (\s@GetSiteToSiteVpnAttachment' {} a -> s {attachmentId = a} :: GetSiteToSiteVpnAttachment)
+
+instance Core.AWSRequest GetSiteToSiteVpnAttachment where
+  type
+    AWSResponse GetSiteToSiteVpnAttachment =
+      GetSiteToSiteVpnAttachmentResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetSiteToSiteVpnAttachmentResponse'
+            Prelude.<$> (x Data..?> "SiteToSiteVpnAttachment")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetSiteToSiteVpnAttachment where
+  hashWithSalt _salt GetSiteToSiteVpnAttachment' {..} =
+    _salt `Prelude.hashWithSalt` attachmentId
+
+instance Prelude.NFData GetSiteToSiteVpnAttachment where
+  rnf GetSiteToSiteVpnAttachment' {..} =
+    Prelude.rnf attachmentId
+
+instance Data.ToHeaders GetSiteToSiteVpnAttachment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetSiteToSiteVpnAttachment where
+  toPath GetSiteToSiteVpnAttachment' {..} =
+    Prelude.mconcat
+      [ "/site-to-site-vpn-attachments/",
+        Data.toBS attachmentId
+      ]
+
+instance Data.ToQuery GetSiteToSiteVpnAttachment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetSiteToSiteVpnAttachmentResponse' smart constructor.
+data GetSiteToSiteVpnAttachmentResponse = GetSiteToSiteVpnAttachmentResponse'
+  { -- | Describes the site-to-site attachment.
+    siteToSiteVpnAttachment :: Prelude.Maybe SiteToSiteVpnAttachment,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSiteToSiteVpnAttachmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'siteToSiteVpnAttachment', 'getSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment' - Describes the site-to-site attachment.
+--
+-- 'httpStatus', 'getSiteToSiteVpnAttachmentResponse_httpStatus' - The response's http status code.
+newGetSiteToSiteVpnAttachmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSiteToSiteVpnAttachmentResponse
+newGetSiteToSiteVpnAttachmentResponse pHttpStatus_ =
+  GetSiteToSiteVpnAttachmentResponse'
+    { siteToSiteVpnAttachment =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Describes the site-to-site attachment.
+getSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment :: Lens.Lens' GetSiteToSiteVpnAttachmentResponse (Prelude.Maybe SiteToSiteVpnAttachment)
+getSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment = Lens.lens (\GetSiteToSiteVpnAttachmentResponse' {siteToSiteVpnAttachment} -> siteToSiteVpnAttachment) (\s@GetSiteToSiteVpnAttachmentResponse' {} a -> s {siteToSiteVpnAttachment = a} :: GetSiteToSiteVpnAttachmentResponse)
+
+-- | The response's http status code.
+getSiteToSiteVpnAttachmentResponse_httpStatus :: Lens.Lens' GetSiteToSiteVpnAttachmentResponse Prelude.Int
+getSiteToSiteVpnAttachmentResponse_httpStatus = Lens.lens (\GetSiteToSiteVpnAttachmentResponse' {httpStatus} -> httpStatus) (\s@GetSiteToSiteVpnAttachmentResponse' {} a -> s {httpStatus = a} :: GetSiteToSiteVpnAttachmentResponse)
+
+instance
+  Prelude.NFData
+    GetSiteToSiteVpnAttachmentResponse
+  where
+  rnf GetSiteToSiteVpnAttachmentResponse' {..} =
+    Prelude.rnf siteToSiteVpnAttachment
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetSites.hs b/gen/Amazonka/NetworkManager/GetSites.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetSites.hs
@@ -0,0 +1,242 @@
+{-# 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.NetworkManager.GetSites
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about one or more of your sites in a global network.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetSites
+  ( -- * Creating a Request
+    GetSites (..),
+    newGetSites,
+
+    -- * Request Lenses
+    getSites_maxResults,
+    getSites_nextToken,
+    getSites_siteIds,
+    getSites_globalNetworkId,
+
+    -- * Destructuring the Response
+    GetSitesResponse (..),
+    newGetSitesResponse,
+
+    -- * Response Lenses
+    getSitesResponse_nextToken,
+    getSitesResponse_sites,
+    getSitesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetSites' smart constructor.
+data GetSites = GetSites'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | One or more site IDs. The maximum is 10.
+    siteIds :: Prelude.Maybe [Prelude.Text],
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSites' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getSites_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getSites_nextToken' - The token for the next page of results.
+--
+-- 'siteIds', 'getSites_siteIds' - One or more site IDs. The maximum is 10.
+--
+-- 'globalNetworkId', 'getSites_globalNetworkId' - The ID of the global network.
+newGetSites ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  GetSites
+newGetSites pGlobalNetworkId_ =
+  GetSites'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      siteIds = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | The maximum number of results to return.
+getSites_maxResults :: Lens.Lens' GetSites (Prelude.Maybe Prelude.Natural)
+getSites_maxResults = Lens.lens (\GetSites' {maxResults} -> maxResults) (\s@GetSites' {} a -> s {maxResults = a} :: GetSites)
+
+-- | The token for the next page of results.
+getSites_nextToken :: Lens.Lens' GetSites (Prelude.Maybe Prelude.Text)
+getSites_nextToken = Lens.lens (\GetSites' {nextToken} -> nextToken) (\s@GetSites' {} a -> s {nextToken = a} :: GetSites)
+
+-- | One or more site IDs. The maximum is 10.
+getSites_siteIds :: Lens.Lens' GetSites (Prelude.Maybe [Prelude.Text])
+getSites_siteIds = Lens.lens (\GetSites' {siteIds} -> siteIds) (\s@GetSites' {} a -> s {siteIds = a} :: GetSites) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the global network.
+getSites_globalNetworkId :: Lens.Lens' GetSites Prelude.Text
+getSites_globalNetworkId = Lens.lens (\GetSites' {globalNetworkId} -> globalNetworkId) (\s@GetSites' {} a -> s {globalNetworkId = a} :: GetSites)
+
+instance Core.AWSPager GetSites where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getSitesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getSitesResponse_sites
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getSites_nextToken
+          Lens..~ rs
+          Lens.^? getSitesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest GetSites where
+  type AWSResponse GetSites = GetSitesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetSitesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Sites" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetSites where
+  hashWithSalt _salt GetSites' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` siteIds
+      `Prelude.hashWithSalt` globalNetworkId
+
+instance Prelude.NFData GetSites where
+  rnf GetSites' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf siteIds
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance Data.ToHeaders GetSites where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetSites where
+  toPath GetSites' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/sites"
+      ]
+
+instance Data.ToQuery GetSites where
+  toQuery GetSites' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "siteIds"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> siteIds)
+      ]
+
+-- | /See:/ 'newGetSitesResponse' smart constructor.
+data GetSitesResponse = GetSitesResponse'
+  { -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The sites.
+    sites :: Prelude.Maybe [Site],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSitesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getSitesResponse_nextToken' - The token for the next page of results.
+--
+-- 'sites', 'getSitesResponse_sites' - The sites.
+--
+-- 'httpStatus', 'getSitesResponse_httpStatus' - The response's http status code.
+newGetSitesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSitesResponse
+newGetSitesResponse pHttpStatus_ =
+  GetSitesResponse'
+    { nextToken = Prelude.Nothing,
+      sites = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token for the next page of results.
+getSitesResponse_nextToken :: Lens.Lens' GetSitesResponse (Prelude.Maybe Prelude.Text)
+getSitesResponse_nextToken = Lens.lens (\GetSitesResponse' {nextToken} -> nextToken) (\s@GetSitesResponse' {} a -> s {nextToken = a} :: GetSitesResponse)
+
+-- | The sites.
+getSitesResponse_sites :: Lens.Lens' GetSitesResponse (Prelude.Maybe [Site])
+getSitesResponse_sites = Lens.lens (\GetSitesResponse' {sites} -> sites) (\s@GetSitesResponse' {} a -> s {sites = a} :: GetSitesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+getSitesResponse_httpStatus :: Lens.Lens' GetSitesResponse Prelude.Int
+getSitesResponse_httpStatus = Lens.lens (\GetSitesResponse' {httpStatus} -> httpStatus) (\s@GetSitesResponse' {} a -> s {httpStatus = a} :: GetSitesResponse)
+
+instance Prelude.NFData GetSitesResponse where
+  rnf GetSitesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sites
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetTransitGatewayConnectPeerAssociations.hs b/gen/Amazonka/NetworkManager/GetTransitGatewayConnectPeerAssociations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetTransitGatewayConnectPeerAssociations.hs
@@ -0,0 +1,285 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.GetTransitGatewayConnectPeerAssociations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about one or more of your transit gateway Connect peer
+-- associations in a global network.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetTransitGatewayConnectPeerAssociations
+  ( -- * Creating a Request
+    GetTransitGatewayConnectPeerAssociations (..),
+    newGetTransitGatewayConnectPeerAssociations,
+
+    -- * Request Lenses
+    getTransitGatewayConnectPeerAssociations_maxResults,
+    getTransitGatewayConnectPeerAssociations_nextToken,
+    getTransitGatewayConnectPeerAssociations_transitGatewayConnectPeerArns,
+    getTransitGatewayConnectPeerAssociations_globalNetworkId,
+
+    -- * Destructuring the Response
+    GetTransitGatewayConnectPeerAssociationsResponse (..),
+    newGetTransitGatewayConnectPeerAssociationsResponse,
+
+    -- * Response Lenses
+    getTransitGatewayConnectPeerAssociationsResponse_nextToken,
+    getTransitGatewayConnectPeerAssociationsResponse_transitGatewayConnectPeerAssociations,
+    getTransitGatewayConnectPeerAssociationsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetTransitGatewayConnectPeerAssociations' smart constructor.
+data GetTransitGatewayConnectPeerAssociations = GetTransitGatewayConnectPeerAssociations'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | One or more transit gateway Connect peer Amazon Resource Names (ARNs).
+    transitGatewayConnectPeerArns :: Prelude.Maybe [Prelude.Text],
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetTransitGatewayConnectPeerAssociations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getTransitGatewayConnectPeerAssociations_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getTransitGatewayConnectPeerAssociations_nextToken' - The token for the next page of results.
+--
+-- 'transitGatewayConnectPeerArns', 'getTransitGatewayConnectPeerAssociations_transitGatewayConnectPeerArns' - One or more transit gateway Connect peer Amazon Resource Names (ARNs).
+--
+-- 'globalNetworkId', 'getTransitGatewayConnectPeerAssociations_globalNetworkId' - The ID of the global network.
+newGetTransitGatewayConnectPeerAssociations ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  GetTransitGatewayConnectPeerAssociations
+newGetTransitGatewayConnectPeerAssociations
+  pGlobalNetworkId_ =
+    GetTransitGatewayConnectPeerAssociations'
+      { maxResults =
+          Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        transitGatewayConnectPeerArns =
+          Prelude.Nothing,
+        globalNetworkId =
+          pGlobalNetworkId_
+      }
+
+-- | The maximum number of results to return.
+getTransitGatewayConnectPeerAssociations_maxResults :: Lens.Lens' GetTransitGatewayConnectPeerAssociations (Prelude.Maybe Prelude.Natural)
+getTransitGatewayConnectPeerAssociations_maxResults = Lens.lens (\GetTransitGatewayConnectPeerAssociations' {maxResults} -> maxResults) (\s@GetTransitGatewayConnectPeerAssociations' {} a -> s {maxResults = a} :: GetTransitGatewayConnectPeerAssociations)
+
+-- | The token for the next page of results.
+getTransitGatewayConnectPeerAssociations_nextToken :: Lens.Lens' GetTransitGatewayConnectPeerAssociations (Prelude.Maybe Prelude.Text)
+getTransitGatewayConnectPeerAssociations_nextToken = Lens.lens (\GetTransitGatewayConnectPeerAssociations' {nextToken} -> nextToken) (\s@GetTransitGatewayConnectPeerAssociations' {} a -> s {nextToken = a} :: GetTransitGatewayConnectPeerAssociations)
+
+-- | One or more transit gateway Connect peer Amazon Resource Names (ARNs).
+getTransitGatewayConnectPeerAssociations_transitGatewayConnectPeerArns :: Lens.Lens' GetTransitGatewayConnectPeerAssociations (Prelude.Maybe [Prelude.Text])
+getTransitGatewayConnectPeerAssociations_transitGatewayConnectPeerArns = Lens.lens (\GetTransitGatewayConnectPeerAssociations' {transitGatewayConnectPeerArns} -> transitGatewayConnectPeerArns) (\s@GetTransitGatewayConnectPeerAssociations' {} a -> s {transitGatewayConnectPeerArns = a} :: GetTransitGatewayConnectPeerAssociations) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the global network.
+getTransitGatewayConnectPeerAssociations_globalNetworkId :: Lens.Lens' GetTransitGatewayConnectPeerAssociations Prelude.Text
+getTransitGatewayConnectPeerAssociations_globalNetworkId = Lens.lens (\GetTransitGatewayConnectPeerAssociations' {globalNetworkId} -> globalNetworkId) (\s@GetTransitGatewayConnectPeerAssociations' {} a -> s {globalNetworkId = a} :: GetTransitGatewayConnectPeerAssociations)
+
+instance
+  Core.AWSPager
+    GetTransitGatewayConnectPeerAssociations
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getTransitGatewayConnectPeerAssociationsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getTransitGatewayConnectPeerAssociationsResponse_transitGatewayConnectPeerAssociations
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getTransitGatewayConnectPeerAssociations_nextToken
+          Lens..~ rs
+          Lens.^? getTransitGatewayConnectPeerAssociationsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    GetTransitGatewayConnectPeerAssociations
+  where
+  type
+    AWSResponse
+      GetTransitGatewayConnectPeerAssociations =
+      GetTransitGatewayConnectPeerAssociationsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetTransitGatewayConnectPeerAssociationsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "TransitGatewayConnectPeerAssociations"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetTransitGatewayConnectPeerAssociations
+  where
+  hashWithSalt
+    _salt
+    GetTransitGatewayConnectPeerAssociations' {..} =
+      _salt
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` transitGatewayConnectPeerArns
+        `Prelude.hashWithSalt` globalNetworkId
+
+instance
+  Prelude.NFData
+    GetTransitGatewayConnectPeerAssociations
+  where
+  rnf GetTransitGatewayConnectPeerAssociations' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf transitGatewayConnectPeerArns
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance
+  Data.ToHeaders
+    GetTransitGatewayConnectPeerAssociations
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToPath
+    GetTransitGatewayConnectPeerAssociations
+  where
+  toPath GetTransitGatewayConnectPeerAssociations' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/transit-gateway-connect-peer-associations"
+      ]
+
+instance
+  Data.ToQuery
+    GetTransitGatewayConnectPeerAssociations
+  where
+  toQuery GetTransitGatewayConnectPeerAssociations' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "transitGatewayConnectPeerArns"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> transitGatewayConnectPeerArns
+            )
+      ]
+
+-- | /See:/ 'newGetTransitGatewayConnectPeerAssociationsResponse' smart constructor.
+data GetTransitGatewayConnectPeerAssociationsResponse = GetTransitGatewayConnectPeerAssociationsResponse'
+  { -- | The token to use for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Information about the transit gateway Connect peer associations.
+    transitGatewayConnectPeerAssociations :: Prelude.Maybe [TransitGatewayConnectPeerAssociation],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetTransitGatewayConnectPeerAssociationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getTransitGatewayConnectPeerAssociationsResponse_nextToken' - The token to use for the next page of results.
+--
+-- 'transitGatewayConnectPeerAssociations', 'getTransitGatewayConnectPeerAssociationsResponse_transitGatewayConnectPeerAssociations' - Information about the transit gateway Connect peer associations.
+--
+-- 'httpStatus', 'getTransitGatewayConnectPeerAssociationsResponse_httpStatus' - The response's http status code.
+newGetTransitGatewayConnectPeerAssociationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetTransitGatewayConnectPeerAssociationsResponse
+newGetTransitGatewayConnectPeerAssociationsResponse
+  pHttpStatus_ =
+    GetTransitGatewayConnectPeerAssociationsResponse'
+      { nextToken =
+          Prelude.Nothing,
+        transitGatewayConnectPeerAssociations =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The token to use for the next page of results.
+getTransitGatewayConnectPeerAssociationsResponse_nextToken :: Lens.Lens' GetTransitGatewayConnectPeerAssociationsResponse (Prelude.Maybe Prelude.Text)
+getTransitGatewayConnectPeerAssociationsResponse_nextToken = Lens.lens (\GetTransitGatewayConnectPeerAssociationsResponse' {nextToken} -> nextToken) (\s@GetTransitGatewayConnectPeerAssociationsResponse' {} a -> s {nextToken = a} :: GetTransitGatewayConnectPeerAssociationsResponse)
+
+-- | Information about the transit gateway Connect peer associations.
+getTransitGatewayConnectPeerAssociationsResponse_transitGatewayConnectPeerAssociations :: Lens.Lens' GetTransitGatewayConnectPeerAssociationsResponse (Prelude.Maybe [TransitGatewayConnectPeerAssociation])
+getTransitGatewayConnectPeerAssociationsResponse_transitGatewayConnectPeerAssociations = Lens.lens (\GetTransitGatewayConnectPeerAssociationsResponse' {transitGatewayConnectPeerAssociations} -> transitGatewayConnectPeerAssociations) (\s@GetTransitGatewayConnectPeerAssociationsResponse' {} a -> s {transitGatewayConnectPeerAssociations = a} :: GetTransitGatewayConnectPeerAssociationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+getTransitGatewayConnectPeerAssociationsResponse_httpStatus :: Lens.Lens' GetTransitGatewayConnectPeerAssociationsResponse Prelude.Int
+getTransitGatewayConnectPeerAssociationsResponse_httpStatus = Lens.lens (\GetTransitGatewayConnectPeerAssociationsResponse' {httpStatus} -> httpStatus) (\s@GetTransitGatewayConnectPeerAssociationsResponse' {} a -> s {httpStatus = a} :: GetTransitGatewayConnectPeerAssociationsResponse)
+
+instance
+  Prelude.NFData
+    GetTransitGatewayConnectPeerAssociationsResponse
+  where
+  rnf
+    GetTransitGatewayConnectPeerAssociationsResponse' {..} =
+      Prelude.rnf nextToken
+        `Prelude.seq` Prelude.rnf transitGatewayConnectPeerAssociations
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetTransitGatewayPeering.hs b/gen/Amazonka/NetworkManager/GetTransitGatewayPeering.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetTransitGatewayPeering.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.GetTransitGatewayPeering
+-- 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 information about a transit gateway peer.
+module Amazonka.NetworkManager.GetTransitGatewayPeering
+  ( -- * Creating a Request
+    GetTransitGatewayPeering (..),
+    newGetTransitGatewayPeering,
+
+    -- * Request Lenses
+    getTransitGatewayPeering_peeringId,
+
+    -- * Destructuring the Response
+    GetTransitGatewayPeeringResponse (..),
+    newGetTransitGatewayPeeringResponse,
+
+    -- * Response Lenses
+    getTransitGatewayPeeringResponse_transitGatewayPeering,
+    getTransitGatewayPeeringResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetTransitGatewayPeering' smart constructor.
+data GetTransitGatewayPeering = GetTransitGatewayPeering'
+  { -- | The ID of the peering request.
+    peeringId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetTransitGatewayPeering' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'peeringId', 'getTransitGatewayPeering_peeringId' - The ID of the peering request.
+newGetTransitGatewayPeering ::
+  -- | 'peeringId'
+  Prelude.Text ->
+  GetTransitGatewayPeering
+newGetTransitGatewayPeering pPeeringId_ =
+  GetTransitGatewayPeering' {peeringId = pPeeringId_}
+
+-- | The ID of the peering request.
+getTransitGatewayPeering_peeringId :: Lens.Lens' GetTransitGatewayPeering Prelude.Text
+getTransitGatewayPeering_peeringId = Lens.lens (\GetTransitGatewayPeering' {peeringId} -> peeringId) (\s@GetTransitGatewayPeering' {} a -> s {peeringId = a} :: GetTransitGatewayPeering)
+
+instance Core.AWSRequest GetTransitGatewayPeering where
+  type
+    AWSResponse GetTransitGatewayPeering =
+      GetTransitGatewayPeeringResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetTransitGatewayPeeringResponse'
+            Prelude.<$> (x Data..?> "TransitGatewayPeering")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetTransitGatewayPeering where
+  hashWithSalt _salt GetTransitGatewayPeering' {..} =
+    _salt `Prelude.hashWithSalt` peeringId
+
+instance Prelude.NFData GetTransitGatewayPeering where
+  rnf GetTransitGatewayPeering' {..} =
+    Prelude.rnf peeringId
+
+instance Data.ToHeaders GetTransitGatewayPeering where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetTransitGatewayPeering where
+  toPath GetTransitGatewayPeering' {..} =
+    Prelude.mconcat
+      ["/transit-gateway-peerings/", Data.toBS peeringId]
+
+instance Data.ToQuery GetTransitGatewayPeering where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetTransitGatewayPeeringResponse' smart constructor.
+data GetTransitGatewayPeeringResponse = GetTransitGatewayPeeringResponse'
+  { -- | Returns information about a transit gateway peering.
+    transitGatewayPeering :: Prelude.Maybe TransitGatewayPeering,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetTransitGatewayPeeringResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'transitGatewayPeering', 'getTransitGatewayPeeringResponse_transitGatewayPeering' - Returns information about a transit gateway peering.
+--
+-- 'httpStatus', 'getTransitGatewayPeeringResponse_httpStatus' - The response's http status code.
+newGetTransitGatewayPeeringResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetTransitGatewayPeeringResponse
+newGetTransitGatewayPeeringResponse pHttpStatus_ =
+  GetTransitGatewayPeeringResponse'
+    { transitGatewayPeering =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returns information about a transit gateway peering.
+getTransitGatewayPeeringResponse_transitGatewayPeering :: Lens.Lens' GetTransitGatewayPeeringResponse (Prelude.Maybe TransitGatewayPeering)
+getTransitGatewayPeeringResponse_transitGatewayPeering = Lens.lens (\GetTransitGatewayPeeringResponse' {transitGatewayPeering} -> transitGatewayPeering) (\s@GetTransitGatewayPeeringResponse' {} a -> s {transitGatewayPeering = a} :: GetTransitGatewayPeeringResponse)
+
+-- | The response's http status code.
+getTransitGatewayPeeringResponse_httpStatus :: Lens.Lens' GetTransitGatewayPeeringResponse Prelude.Int
+getTransitGatewayPeeringResponse_httpStatus = Lens.lens (\GetTransitGatewayPeeringResponse' {httpStatus} -> httpStatus) (\s@GetTransitGatewayPeeringResponse' {} a -> s {httpStatus = a} :: GetTransitGatewayPeeringResponse)
+
+instance
+  Prelude.NFData
+    GetTransitGatewayPeeringResponse
+  where
+  rnf GetTransitGatewayPeeringResponse' {..} =
+    Prelude.rnf transitGatewayPeering
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetTransitGatewayRegistrations.hs b/gen/Amazonka/NetworkManager/GetTransitGatewayRegistrations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetTransitGatewayRegistrations.hs
@@ -0,0 +1,274 @@
+{-# 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.NetworkManager.GetTransitGatewayRegistrations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about the transit gateway registrations in a specified
+-- global network.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.GetTransitGatewayRegistrations
+  ( -- * Creating a Request
+    GetTransitGatewayRegistrations (..),
+    newGetTransitGatewayRegistrations,
+
+    -- * Request Lenses
+    getTransitGatewayRegistrations_maxResults,
+    getTransitGatewayRegistrations_nextToken,
+    getTransitGatewayRegistrations_transitGatewayArns,
+    getTransitGatewayRegistrations_globalNetworkId,
+
+    -- * Destructuring the Response
+    GetTransitGatewayRegistrationsResponse (..),
+    newGetTransitGatewayRegistrationsResponse,
+
+    -- * Response Lenses
+    getTransitGatewayRegistrationsResponse_nextToken,
+    getTransitGatewayRegistrationsResponse_transitGatewayRegistrations,
+    getTransitGatewayRegistrationsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetTransitGatewayRegistrations' smart constructor.
+data GetTransitGatewayRegistrations = GetTransitGatewayRegistrations'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Names (ARNs) of one or more transit gateways. The
+    -- maximum is 10.
+    transitGatewayArns :: Prelude.Maybe [Prelude.Text],
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetTransitGatewayRegistrations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getTransitGatewayRegistrations_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'getTransitGatewayRegistrations_nextToken' - The token for the next page of results.
+--
+-- 'transitGatewayArns', 'getTransitGatewayRegistrations_transitGatewayArns' - The Amazon Resource Names (ARNs) of one or more transit gateways. The
+-- maximum is 10.
+--
+-- 'globalNetworkId', 'getTransitGatewayRegistrations_globalNetworkId' - The ID of the global network.
+newGetTransitGatewayRegistrations ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  GetTransitGatewayRegistrations
+newGetTransitGatewayRegistrations pGlobalNetworkId_ =
+  GetTransitGatewayRegistrations'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      transitGatewayArns = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | The maximum number of results to return.
+getTransitGatewayRegistrations_maxResults :: Lens.Lens' GetTransitGatewayRegistrations (Prelude.Maybe Prelude.Natural)
+getTransitGatewayRegistrations_maxResults = Lens.lens (\GetTransitGatewayRegistrations' {maxResults} -> maxResults) (\s@GetTransitGatewayRegistrations' {} a -> s {maxResults = a} :: GetTransitGatewayRegistrations)
+
+-- | The token for the next page of results.
+getTransitGatewayRegistrations_nextToken :: Lens.Lens' GetTransitGatewayRegistrations (Prelude.Maybe Prelude.Text)
+getTransitGatewayRegistrations_nextToken = Lens.lens (\GetTransitGatewayRegistrations' {nextToken} -> nextToken) (\s@GetTransitGatewayRegistrations' {} a -> s {nextToken = a} :: GetTransitGatewayRegistrations)
+
+-- | The Amazon Resource Names (ARNs) of one or more transit gateways. The
+-- maximum is 10.
+getTransitGatewayRegistrations_transitGatewayArns :: Lens.Lens' GetTransitGatewayRegistrations (Prelude.Maybe [Prelude.Text])
+getTransitGatewayRegistrations_transitGatewayArns = Lens.lens (\GetTransitGatewayRegistrations' {transitGatewayArns} -> transitGatewayArns) (\s@GetTransitGatewayRegistrations' {} a -> s {transitGatewayArns = a} :: GetTransitGatewayRegistrations) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the global network.
+getTransitGatewayRegistrations_globalNetworkId :: Lens.Lens' GetTransitGatewayRegistrations Prelude.Text
+getTransitGatewayRegistrations_globalNetworkId = Lens.lens (\GetTransitGatewayRegistrations' {globalNetworkId} -> globalNetworkId) (\s@GetTransitGatewayRegistrations' {} a -> s {globalNetworkId = a} :: GetTransitGatewayRegistrations)
+
+instance Core.AWSPager GetTransitGatewayRegistrations where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getTransitGatewayRegistrationsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getTransitGatewayRegistrationsResponse_transitGatewayRegistrations
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getTransitGatewayRegistrations_nextToken
+          Lens..~ rs
+          Lens.^? getTransitGatewayRegistrationsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    GetTransitGatewayRegistrations
+  where
+  type
+    AWSResponse GetTransitGatewayRegistrations =
+      GetTransitGatewayRegistrationsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetTransitGatewayRegistrationsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "TransitGatewayRegistrations"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetTransitGatewayRegistrations
+  where
+  hashWithSalt
+    _salt
+    GetTransitGatewayRegistrations' {..} =
+      _salt
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` transitGatewayArns
+        `Prelude.hashWithSalt` globalNetworkId
+
+instance
+  Prelude.NFData
+    GetTransitGatewayRegistrations
+  where
+  rnf GetTransitGatewayRegistrations' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf transitGatewayArns
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance
+  Data.ToHeaders
+    GetTransitGatewayRegistrations
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetTransitGatewayRegistrations where
+  toPath GetTransitGatewayRegistrations' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/transit-gateway-registrations"
+      ]
+
+instance Data.ToQuery GetTransitGatewayRegistrations where
+  toQuery GetTransitGatewayRegistrations' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "transitGatewayArns"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> transitGatewayArns
+            )
+      ]
+
+-- | /See:/ 'newGetTransitGatewayRegistrationsResponse' smart constructor.
+data GetTransitGatewayRegistrationsResponse = GetTransitGatewayRegistrationsResponse'
+  { -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The transit gateway registrations.
+    transitGatewayRegistrations :: Prelude.Maybe [TransitGatewayRegistration],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetTransitGatewayRegistrationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getTransitGatewayRegistrationsResponse_nextToken' - The token for the next page of results.
+--
+-- 'transitGatewayRegistrations', 'getTransitGatewayRegistrationsResponse_transitGatewayRegistrations' - The transit gateway registrations.
+--
+-- 'httpStatus', 'getTransitGatewayRegistrationsResponse_httpStatus' - The response's http status code.
+newGetTransitGatewayRegistrationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetTransitGatewayRegistrationsResponse
+newGetTransitGatewayRegistrationsResponse
+  pHttpStatus_ =
+    GetTransitGatewayRegistrationsResponse'
+      { nextToken =
+          Prelude.Nothing,
+        transitGatewayRegistrations =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The token for the next page of results.
+getTransitGatewayRegistrationsResponse_nextToken :: Lens.Lens' GetTransitGatewayRegistrationsResponse (Prelude.Maybe Prelude.Text)
+getTransitGatewayRegistrationsResponse_nextToken = Lens.lens (\GetTransitGatewayRegistrationsResponse' {nextToken} -> nextToken) (\s@GetTransitGatewayRegistrationsResponse' {} a -> s {nextToken = a} :: GetTransitGatewayRegistrationsResponse)
+
+-- | The transit gateway registrations.
+getTransitGatewayRegistrationsResponse_transitGatewayRegistrations :: Lens.Lens' GetTransitGatewayRegistrationsResponse (Prelude.Maybe [TransitGatewayRegistration])
+getTransitGatewayRegistrationsResponse_transitGatewayRegistrations = Lens.lens (\GetTransitGatewayRegistrationsResponse' {transitGatewayRegistrations} -> transitGatewayRegistrations) (\s@GetTransitGatewayRegistrationsResponse' {} a -> s {transitGatewayRegistrations = a} :: GetTransitGatewayRegistrationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+getTransitGatewayRegistrationsResponse_httpStatus :: Lens.Lens' GetTransitGatewayRegistrationsResponse Prelude.Int
+getTransitGatewayRegistrationsResponse_httpStatus = Lens.lens (\GetTransitGatewayRegistrationsResponse' {httpStatus} -> httpStatus) (\s@GetTransitGatewayRegistrationsResponse' {} a -> s {httpStatus = a} :: GetTransitGatewayRegistrationsResponse)
+
+instance
+  Prelude.NFData
+    GetTransitGatewayRegistrationsResponse
+  where
+  rnf GetTransitGatewayRegistrationsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf transitGatewayRegistrations
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetTransitGatewayRouteTableAttachment.hs b/gen/Amazonka/NetworkManager/GetTransitGatewayRouteTableAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetTransitGatewayRouteTableAttachment.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.GetTransitGatewayRouteTableAttachment
+-- 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 information about a transit gateway route table attachment.
+module Amazonka.NetworkManager.GetTransitGatewayRouteTableAttachment
+  ( -- * Creating a Request
+    GetTransitGatewayRouteTableAttachment (..),
+    newGetTransitGatewayRouteTableAttachment,
+
+    -- * Request Lenses
+    getTransitGatewayRouteTableAttachment_attachmentId,
+
+    -- * Destructuring the Response
+    GetTransitGatewayRouteTableAttachmentResponse (..),
+    newGetTransitGatewayRouteTableAttachmentResponse,
+
+    -- * Response Lenses
+    getTransitGatewayRouteTableAttachmentResponse_transitGatewayRouteTableAttachment,
+    getTransitGatewayRouteTableAttachmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetTransitGatewayRouteTableAttachment' smart constructor.
+data GetTransitGatewayRouteTableAttachment = GetTransitGatewayRouteTableAttachment'
+  { -- | The ID of the transit gateway route table attachment.
+    attachmentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetTransitGatewayRouteTableAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachmentId', 'getTransitGatewayRouteTableAttachment_attachmentId' - The ID of the transit gateway route table attachment.
+newGetTransitGatewayRouteTableAttachment ::
+  -- | 'attachmentId'
+  Prelude.Text ->
+  GetTransitGatewayRouteTableAttachment
+newGetTransitGatewayRouteTableAttachment
+  pAttachmentId_ =
+    GetTransitGatewayRouteTableAttachment'
+      { attachmentId =
+          pAttachmentId_
+      }
+
+-- | The ID of the transit gateway route table attachment.
+getTransitGatewayRouteTableAttachment_attachmentId :: Lens.Lens' GetTransitGatewayRouteTableAttachment Prelude.Text
+getTransitGatewayRouteTableAttachment_attachmentId = Lens.lens (\GetTransitGatewayRouteTableAttachment' {attachmentId} -> attachmentId) (\s@GetTransitGatewayRouteTableAttachment' {} a -> s {attachmentId = a} :: GetTransitGatewayRouteTableAttachment)
+
+instance
+  Core.AWSRequest
+    GetTransitGatewayRouteTableAttachment
+  where
+  type
+    AWSResponse
+      GetTransitGatewayRouteTableAttachment =
+      GetTransitGatewayRouteTableAttachmentResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetTransitGatewayRouteTableAttachmentResponse'
+            Prelude.<$> (x Data..?> "TransitGatewayRouteTableAttachment")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetTransitGatewayRouteTableAttachment
+  where
+  hashWithSalt
+    _salt
+    GetTransitGatewayRouteTableAttachment' {..} =
+      _salt `Prelude.hashWithSalt` attachmentId
+
+instance
+  Prelude.NFData
+    GetTransitGatewayRouteTableAttachment
+  where
+  rnf GetTransitGatewayRouteTableAttachment' {..} =
+    Prelude.rnf attachmentId
+
+instance
+  Data.ToHeaders
+    GetTransitGatewayRouteTableAttachment
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToPath
+    GetTransitGatewayRouteTableAttachment
+  where
+  toPath GetTransitGatewayRouteTableAttachment' {..} =
+    Prelude.mconcat
+      [ "/transit-gateway-route-table-attachments/",
+        Data.toBS attachmentId
+      ]
+
+instance
+  Data.ToQuery
+    GetTransitGatewayRouteTableAttachment
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetTransitGatewayRouteTableAttachmentResponse' smart constructor.
+data GetTransitGatewayRouteTableAttachmentResponse = GetTransitGatewayRouteTableAttachmentResponse'
+  { -- | Returns information about the transit gateway route table attachment.
+    transitGatewayRouteTableAttachment :: Prelude.Maybe TransitGatewayRouteTableAttachment,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetTransitGatewayRouteTableAttachmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'transitGatewayRouteTableAttachment', 'getTransitGatewayRouteTableAttachmentResponse_transitGatewayRouteTableAttachment' - Returns information about the transit gateway route table attachment.
+--
+-- 'httpStatus', 'getTransitGatewayRouteTableAttachmentResponse_httpStatus' - The response's http status code.
+newGetTransitGatewayRouteTableAttachmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetTransitGatewayRouteTableAttachmentResponse
+newGetTransitGatewayRouteTableAttachmentResponse
+  pHttpStatus_ =
+    GetTransitGatewayRouteTableAttachmentResponse'
+      { transitGatewayRouteTableAttachment =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Returns information about the transit gateway route table attachment.
+getTransitGatewayRouteTableAttachmentResponse_transitGatewayRouteTableAttachment :: Lens.Lens' GetTransitGatewayRouteTableAttachmentResponse (Prelude.Maybe TransitGatewayRouteTableAttachment)
+getTransitGatewayRouteTableAttachmentResponse_transitGatewayRouteTableAttachment = Lens.lens (\GetTransitGatewayRouteTableAttachmentResponse' {transitGatewayRouteTableAttachment} -> transitGatewayRouteTableAttachment) (\s@GetTransitGatewayRouteTableAttachmentResponse' {} a -> s {transitGatewayRouteTableAttachment = a} :: GetTransitGatewayRouteTableAttachmentResponse)
+
+-- | The response's http status code.
+getTransitGatewayRouteTableAttachmentResponse_httpStatus :: Lens.Lens' GetTransitGatewayRouteTableAttachmentResponse Prelude.Int
+getTransitGatewayRouteTableAttachmentResponse_httpStatus = Lens.lens (\GetTransitGatewayRouteTableAttachmentResponse' {httpStatus} -> httpStatus) (\s@GetTransitGatewayRouteTableAttachmentResponse' {} a -> s {httpStatus = a} :: GetTransitGatewayRouteTableAttachmentResponse)
+
+instance
+  Prelude.NFData
+    GetTransitGatewayRouteTableAttachmentResponse
+  where
+  rnf
+    GetTransitGatewayRouteTableAttachmentResponse' {..} =
+      Prelude.rnf transitGatewayRouteTableAttachment
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/GetVpcAttachment.hs b/gen/Amazonka/NetworkManager/GetVpcAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/GetVpcAttachment.hs
@@ -0,0 +1,159 @@
+{-# 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.NetworkManager.GetVpcAttachment
+-- 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 information about a VPC attachment.
+module Amazonka.NetworkManager.GetVpcAttachment
+  ( -- * Creating a Request
+    GetVpcAttachment (..),
+    newGetVpcAttachment,
+
+    -- * Request Lenses
+    getVpcAttachment_attachmentId,
+
+    -- * Destructuring the Response
+    GetVpcAttachmentResponse (..),
+    newGetVpcAttachmentResponse,
+
+    -- * Response Lenses
+    getVpcAttachmentResponse_vpcAttachment,
+    getVpcAttachmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetVpcAttachment' smart constructor.
+data GetVpcAttachment = GetVpcAttachment'
+  { -- | The ID of the attachment.
+    attachmentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVpcAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachmentId', 'getVpcAttachment_attachmentId' - The ID of the attachment.
+newGetVpcAttachment ::
+  -- | 'attachmentId'
+  Prelude.Text ->
+  GetVpcAttachment
+newGetVpcAttachment pAttachmentId_ =
+  GetVpcAttachment' {attachmentId = pAttachmentId_}
+
+-- | The ID of the attachment.
+getVpcAttachment_attachmentId :: Lens.Lens' GetVpcAttachment Prelude.Text
+getVpcAttachment_attachmentId = Lens.lens (\GetVpcAttachment' {attachmentId} -> attachmentId) (\s@GetVpcAttachment' {} a -> s {attachmentId = a} :: GetVpcAttachment)
+
+instance Core.AWSRequest GetVpcAttachment where
+  type
+    AWSResponse GetVpcAttachment =
+      GetVpcAttachmentResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetVpcAttachmentResponse'
+            Prelude.<$> (x Data..?> "VpcAttachment")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetVpcAttachment where
+  hashWithSalt _salt GetVpcAttachment' {..} =
+    _salt `Prelude.hashWithSalt` attachmentId
+
+instance Prelude.NFData GetVpcAttachment where
+  rnf GetVpcAttachment' {..} = Prelude.rnf attachmentId
+
+instance Data.ToHeaders GetVpcAttachment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetVpcAttachment where
+  toPath GetVpcAttachment' {..} =
+    Prelude.mconcat
+      ["/vpc-attachments/", Data.toBS attachmentId]
+
+instance Data.ToQuery GetVpcAttachment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetVpcAttachmentResponse' smart constructor.
+data GetVpcAttachmentResponse = GetVpcAttachmentResponse'
+  { -- | Returns details about a VPC attachment.
+    vpcAttachment :: Prelude.Maybe VpcAttachment,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVpcAttachmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'vpcAttachment', 'getVpcAttachmentResponse_vpcAttachment' - Returns details about a VPC attachment.
+--
+-- 'httpStatus', 'getVpcAttachmentResponse_httpStatus' - The response's http status code.
+newGetVpcAttachmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetVpcAttachmentResponse
+newGetVpcAttachmentResponse pHttpStatus_ =
+  GetVpcAttachmentResponse'
+    { vpcAttachment =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returns details about a VPC attachment.
+getVpcAttachmentResponse_vpcAttachment :: Lens.Lens' GetVpcAttachmentResponse (Prelude.Maybe VpcAttachment)
+getVpcAttachmentResponse_vpcAttachment = Lens.lens (\GetVpcAttachmentResponse' {vpcAttachment} -> vpcAttachment) (\s@GetVpcAttachmentResponse' {} a -> s {vpcAttachment = a} :: GetVpcAttachmentResponse)
+
+-- | The response's http status code.
+getVpcAttachmentResponse_httpStatus :: Lens.Lens' GetVpcAttachmentResponse Prelude.Int
+getVpcAttachmentResponse_httpStatus = Lens.lens (\GetVpcAttachmentResponse' {httpStatus} -> httpStatus) (\s@GetVpcAttachmentResponse' {} a -> s {httpStatus = a} :: GetVpcAttachmentResponse)
+
+instance Prelude.NFData GetVpcAttachmentResponse where
+  rnf GetVpcAttachmentResponse' {..} =
+    Prelude.rnf vpcAttachment
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/Lens.hs b/gen/Amazonka/NetworkManager/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Lens.hs
@@ -0,0 +1,1237 @@
+{-# 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.NetworkManager.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.NetworkManager.Lens
+  ( -- * Operations
+
+    -- ** AcceptAttachment
+    acceptAttachment_attachmentId,
+    acceptAttachmentResponse_attachment,
+    acceptAttachmentResponse_httpStatus,
+
+    -- ** AssociateConnectPeer
+    associateConnectPeer_linkId,
+    associateConnectPeer_globalNetworkId,
+    associateConnectPeer_connectPeerId,
+    associateConnectPeer_deviceId,
+    associateConnectPeerResponse_connectPeerAssociation,
+    associateConnectPeerResponse_httpStatus,
+
+    -- ** AssociateCustomerGateway
+    associateCustomerGateway_linkId,
+    associateCustomerGateway_customerGatewayArn,
+    associateCustomerGateway_globalNetworkId,
+    associateCustomerGateway_deviceId,
+    associateCustomerGatewayResponse_customerGatewayAssociation,
+    associateCustomerGatewayResponse_httpStatus,
+
+    -- ** AssociateLink
+    associateLink_globalNetworkId,
+    associateLink_deviceId,
+    associateLink_linkId,
+    associateLinkResponse_linkAssociation,
+    associateLinkResponse_httpStatus,
+
+    -- ** AssociateTransitGatewayConnectPeer
+    associateTransitGatewayConnectPeer_linkId,
+    associateTransitGatewayConnectPeer_globalNetworkId,
+    associateTransitGatewayConnectPeer_transitGatewayConnectPeerArn,
+    associateTransitGatewayConnectPeer_deviceId,
+    associateTransitGatewayConnectPeerResponse_transitGatewayConnectPeerAssociation,
+    associateTransitGatewayConnectPeerResponse_httpStatus,
+
+    -- ** CreateConnectAttachment
+    createConnectAttachment_clientToken,
+    createConnectAttachment_tags,
+    createConnectAttachment_coreNetworkId,
+    createConnectAttachment_edgeLocation,
+    createConnectAttachment_transportAttachmentId,
+    createConnectAttachment_options,
+    createConnectAttachmentResponse_connectAttachment,
+    createConnectAttachmentResponse_httpStatus,
+
+    -- ** CreateConnectPeer
+    createConnectPeer_bgpOptions,
+    createConnectPeer_clientToken,
+    createConnectPeer_coreNetworkAddress,
+    createConnectPeer_tags,
+    createConnectPeer_connectAttachmentId,
+    createConnectPeer_peerAddress,
+    createConnectPeer_insideCidrBlocks,
+    createConnectPeerResponse_connectPeer,
+    createConnectPeerResponse_httpStatus,
+
+    -- ** CreateConnection
+    createConnection_connectedLinkId,
+    createConnection_description,
+    createConnection_linkId,
+    createConnection_tags,
+    createConnection_globalNetworkId,
+    createConnection_deviceId,
+    createConnection_connectedDeviceId,
+    createConnectionResponse_connection,
+    createConnectionResponse_httpStatus,
+
+    -- ** CreateCoreNetwork
+    createCoreNetwork_clientToken,
+    createCoreNetwork_description,
+    createCoreNetwork_policyDocument,
+    createCoreNetwork_tags,
+    createCoreNetwork_globalNetworkId,
+    createCoreNetworkResponse_coreNetwork,
+    createCoreNetworkResponse_httpStatus,
+
+    -- ** CreateDevice
+    createDevice_aWSLocation,
+    createDevice_description,
+    createDevice_location,
+    createDevice_model,
+    createDevice_serialNumber,
+    createDevice_siteId,
+    createDevice_tags,
+    createDevice_type,
+    createDevice_vendor,
+    createDevice_globalNetworkId,
+    createDeviceResponse_device,
+    createDeviceResponse_httpStatus,
+
+    -- ** CreateGlobalNetwork
+    createGlobalNetwork_description,
+    createGlobalNetwork_tags,
+    createGlobalNetworkResponse_globalNetwork,
+    createGlobalNetworkResponse_httpStatus,
+
+    -- ** CreateLink
+    createLink_description,
+    createLink_provider,
+    createLink_tags,
+    createLink_type,
+    createLink_globalNetworkId,
+    createLink_bandwidth,
+    createLink_siteId,
+    createLinkResponse_link,
+    createLinkResponse_httpStatus,
+
+    -- ** CreateSite
+    createSite_description,
+    createSite_location,
+    createSite_tags,
+    createSite_globalNetworkId,
+    createSiteResponse_site,
+    createSiteResponse_httpStatus,
+
+    -- ** CreateSiteToSiteVpnAttachment
+    createSiteToSiteVpnAttachment_clientToken,
+    createSiteToSiteVpnAttachment_tags,
+    createSiteToSiteVpnAttachment_coreNetworkId,
+    createSiteToSiteVpnAttachment_vpnConnectionArn,
+    createSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment,
+    createSiteToSiteVpnAttachmentResponse_httpStatus,
+
+    -- ** CreateTransitGatewayPeering
+    createTransitGatewayPeering_clientToken,
+    createTransitGatewayPeering_tags,
+    createTransitGatewayPeering_coreNetworkId,
+    createTransitGatewayPeering_transitGatewayArn,
+    createTransitGatewayPeeringResponse_transitGatewayPeering,
+    createTransitGatewayPeeringResponse_httpStatus,
+
+    -- ** CreateTransitGatewayRouteTableAttachment
+    createTransitGatewayRouteTableAttachment_clientToken,
+    createTransitGatewayRouteTableAttachment_tags,
+    createTransitGatewayRouteTableAttachment_peeringId,
+    createTransitGatewayRouteTableAttachment_transitGatewayRouteTableArn,
+    createTransitGatewayRouteTableAttachmentResponse_transitGatewayRouteTableAttachment,
+    createTransitGatewayRouteTableAttachmentResponse_httpStatus,
+
+    -- ** CreateVpcAttachment
+    createVpcAttachment_clientToken,
+    createVpcAttachment_options,
+    createVpcAttachment_tags,
+    createVpcAttachment_coreNetworkId,
+    createVpcAttachment_vpcArn,
+    createVpcAttachment_subnetArns,
+    createVpcAttachmentResponse_vpcAttachment,
+    createVpcAttachmentResponse_httpStatus,
+
+    -- ** DeleteAttachment
+    deleteAttachment_attachmentId,
+    deleteAttachmentResponse_attachment,
+    deleteAttachmentResponse_httpStatus,
+
+    -- ** DeleteConnectPeer
+    deleteConnectPeer_connectPeerId,
+    deleteConnectPeerResponse_connectPeer,
+    deleteConnectPeerResponse_httpStatus,
+
+    -- ** DeleteConnection
+    deleteConnection_globalNetworkId,
+    deleteConnection_connectionId,
+    deleteConnectionResponse_connection,
+    deleteConnectionResponse_httpStatus,
+
+    -- ** DeleteCoreNetwork
+    deleteCoreNetwork_coreNetworkId,
+    deleteCoreNetworkResponse_coreNetwork,
+    deleteCoreNetworkResponse_httpStatus,
+
+    -- ** DeleteCoreNetworkPolicyVersion
+    deleteCoreNetworkPolicyVersion_coreNetworkId,
+    deleteCoreNetworkPolicyVersion_policyVersionId,
+    deleteCoreNetworkPolicyVersionResponse_coreNetworkPolicy,
+    deleteCoreNetworkPolicyVersionResponse_httpStatus,
+
+    -- ** DeleteDevice
+    deleteDevice_globalNetworkId,
+    deleteDevice_deviceId,
+    deleteDeviceResponse_device,
+    deleteDeviceResponse_httpStatus,
+
+    -- ** DeleteGlobalNetwork
+    deleteGlobalNetwork_globalNetworkId,
+    deleteGlobalNetworkResponse_globalNetwork,
+    deleteGlobalNetworkResponse_httpStatus,
+
+    -- ** DeleteLink
+    deleteLink_globalNetworkId,
+    deleteLink_linkId,
+    deleteLinkResponse_link,
+    deleteLinkResponse_httpStatus,
+
+    -- ** DeletePeering
+    deletePeering_peeringId,
+    deletePeeringResponse_peering,
+    deletePeeringResponse_httpStatus,
+
+    -- ** DeleteResourcePolicy
+    deleteResourcePolicy_resourceArn,
+    deleteResourcePolicyResponse_httpStatus,
+
+    -- ** DeleteSite
+    deleteSite_globalNetworkId,
+    deleteSite_siteId,
+    deleteSiteResponse_site,
+    deleteSiteResponse_httpStatus,
+
+    -- ** DeregisterTransitGateway
+    deregisterTransitGateway_globalNetworkId,
+    deregisterTransitGateway_transitGatewayArn,
+    deregisterTransitGatewayResponse_transitGatewayRegistration,
+    deregisterTransitGatewayResponse_httpStatus,
+
+    -- ** DescribeGlobalNetworks
+    describeGlobalNetworks_globalNetworkIds,
+    describeGlobalNetworks_maxResults,
+    describeGlobalNetworks_nextToken,
+    describeGlobalNetworksResponse_globalNetworks,
+    describeGlobalNetworksResponse_nextToken,
+    describeGlobalNetworksResponse_httpStatus,
+
+    -- ** DisassociateConnectPeer
+    disassociateConnectPeer_globalNetworkId,
+    disassociateConnectPeer_connectPeerId,
+    disassociateConnectPeerResponse_connectPeerAssociation,
+    disassociateConnectPeerResponse_httpStatus,
+
+    -- ** DisassociateCustomerGateway
+    disassociateCustomerGateway_globalNetworkId,
+    disassociateCustomerGateway_customerGatewayArn,
+    disassociateCustomerGatewayResponse_customerGatewayAssociation,
+    disassociateCustomerGatewayResponse_httpStatus,
+
+    -- ** DisassociateLink
+    disassociateLink_globalNetworkId,
+    disassociateLink_deviceId,
+    disassociateLink_linkId,
+    disassociateLinkResponse_linkAssociation,
+    disassociateLinkResponse_httpStatus,
+
+    -- ** DisassociateTransitGatewayConnectPeer
+    disassociateTransitGatewayConnectPeer_globalNetworkId,
+    disassociateTransitGatewayConnectPeer_transitGatewayConnectPeerArn,
+    disassociateTransitGatewayConnectPeerResponse_transitGatewayConnectPeerAssociation,
+    disassociateTransitGatewayConnectPeerResponse_httpStatus,
+
+    -- ** ExecuteCoreNetworkChangeSet
+    executeCoreNetworkChangeSet_coreNetworkId,
+    executeCoreNetworkChangeSet_policyVersionId,
+    executeCoreNetworkChangeSetResponse_httpStatus,
+
+    -- ** GetConnectAttachment
+    getConnectAttachment_attachmentId,
+    getConnectAttachmentResponse_connectAttachment,
+    getConnectAttachmentResponse_httpStatus,
+
+    -- ** GetConnectPeer
+    getConnectPeer_connectPeerId,
+    getConnectPeerResponse_connectPeer,
+    getConnectPeerResponse_httpStatus,
+
+    -- ** GetConnectPeerAssociations
+    getConnectPeerAssociations_connectPeerIds,
+    getConnectPeerAssociations_maxResults,
+    getConnectPeerAssociations_nextToken,
+    getConnectPeerAssociations_globalNetworkId,
+    getConnectPeerAssociationsResponse_connectPeerAssociations,
+    getConnectPeerAssociationsResponse_nextToken,
+    getConnectPeerAssociationsResponse_httpStatus,
+
+    -- ** GetConnections
+    getConnections_connectionIds,
+    getConnections_deviceId,
+    getConnections_maxResults,
+    getConnections_nextToken,
+    getConnections_globalNetworkId,
+    getConnectionsResponse_connections,
+    getConnectionsResponse_nextToken,
+    getConnectionsResponse_httpStatus,
+
+    -- ** GetCoreNetwork
+    getCoreNetwork_coreNetworkId,
+    getCoreNetworkResponse_coreNetwork,
+    getCoreNetworkResponse_httpStatus,
+
+    -- ** GetCoreNetworkChangeEvents
+    getCoreNetworkChangeEvents_maxResults,
+    getCoreNetworkChangeEvents_nextToken,
+    getCoreNetworkChangeEvents_coreNetworkId,
+    getCoreNetworkChangeEvents_policyVersionId,
+    getCoreNetworkChangeEventsResponse_coreNetworkChangeEvents,
+    getCoreNetworkChangeEventsResponse_nextToken,
+    getCoreNetworkChangeEventsResponse_httpStatus,
+
+    -- ** GetCoreNetworkChangeSet
+    getCoreNetworkChangeSet_maxResults,
+    getCoreNetworkChangeSet_nextToken,
+    getCoreNetworkChangeSet_coreNetworkId,
+    getCoreNetworkChangeSet_policyVersionId,
+    getCoreNetworkChangeSetResponse_coreNetworkChanges,
+    getCoreNetworkChangeSetResponse_nextToken,
+    getCoreNetworkChangeSetResponse_httpStatus,
+
+    -- ** GetCoreNetworkPolicy
+    getCoreNetworkPolicy_alias,
+    getCoreNetworkPolicy_policyVersionId,
+    getCoreNetworkPolicy_coreNetworkId,
+    getCoreNetworkPolicyResponse_coreNetworkPolicy,
+    getCoreNetworkPolicyResponse_httpStatus,
+
+    -- ** GetCustomerGatewayAssociations
+    getCustomerGatewayAssociations_customerGatewayArns,
+    getCustomerGatewayAssociations_maxResults,
+    getCustomerGatewayAssociations_nextToken,
+    getCustomerGatewayAssociations_globalNetworkId,
+    getCustomerGatewayAssociationsResponse_customerGatewayAssociations,
+    getCustomerGatewayAssociationsResponse_nextToken,
+    getCustomerGatewayAssociationsResponse_httpStatus,
+
+    -- ** GetDevices
+    getDevices_deviceIds,
+    getDevices_maxResults,
+    getDevices_nextToken,
+    getDevices_siteId,
+    getDevices_globalNetworkId,
+    getDevicesResponse_devices,
+    getDevicesResponse_nextToken,
+    getDevicesResponse_httpStatus,
+
+    -- ** GetLinkAssociations
+    getLinkAssociations_deviceId,
+    getLinkAssociations_linkId,
+    getLinkAssociations_maxResults,
+    getLinkAssociations_nextToken,
+    getLinkAssociations_globalNetworkId,
+    getLinkAssociationsResponse_linkAssociations,
+    getLinkAssociationsResponse_nextToken,
+    getLinkAssociationsResponse_httpStatus,
+
+    -- ** GetLinks
+    getLinks_linkIds,
+    getLinks_maxResults,
+    getLinks_nextToken,
+    getLinks_provider,
+    getLinks_siteId,
+    getLinks_type,
+    getLinks_globalNetworkId,
+    getLinksResponse_links,
+    getLinksResponse_nextToken,
+    getLinksResponse_httpStatus,
+
+    -- ** GetNetworkResourceCounts
+    getNetworkResourceCounts_maxResults,
+    getNetworkResourceCounts_nextToken,
+    getNetworkResourceCounts_resourceType,
+    getNetworkResourceCounts_globalNetworkId,
+    getNetworkResourceCountsResponse_networkResourceCounts,
+    getNetworkResourceCountsResponse_nextToken,
+    getNetworkResourceCountsResponse_httpStatus,
+
+    -- ** GetNetworkResourceRelationships
+    getNetworkResourceRelationships_accountId,
+    getNetworkResourceRelationships_awsRegion,
+    getNetworkResourceRelationships_coreNetworkId,
+    getNetworkResourceRelationships_maxResults,
+    getNetworkResourceRelationships_nextToken,
+    getNetworkResourceRelationships_registeredGatewayArn,
+    getNetworkResourceRelationships_resourceArn,
+    getNetworkResourceRelationships_resourceType,
+    getNetworkResourceRelationships_globalNetworkId,
+    getNetworkResourceRelationshipsResponse_nextToken,
+    getNetworkResourceRelationshipsResponse_relationships,
+    getNetworkResourceRelationshipsResponse_httpStatus,
+
+    -- ** GetNetworkResources
+    getNetworkResources_accountId,
+    getNetworkResources_awsRegion,
+    getNetworkResources_coreNetworkId,
+    getNetworkResources_maxResults,
+    getNetworkResources_nextToken,
+    getNetworkResources_registeredGatewayArn,
+    getNetworkResources_resourceArn,
+    getNetworkResources_resourceType,
+    getNetworkResources_globalNetworkId,
+    getNetworkResourcesResponse_networkResources,
+    getNetworkResourcesResponse_nextToken,
+    getNetworkResourcesResponse_httpStatus,
+
+    -- ** GetNetworkRoutes
+    getNetworkRoutes_destinationFilters,
+    getNetworkRoutes_exactCidrMatches,
+    getNetworkRoutes_longestPrefixMatches,
+    getNetworkRoutes_prefixListIds,
+    getNetworkRoutes_states,
+    getNetworkRoutes_subnetOfMatches,
+    getNetworkRoutes_supernetOfMatches,
+    getNetworkRoutes_types,
+    getNetworkRoutes_globalNetworkId,
+    getNetworkRoutes_routeTableIdentifier,
+    getNetworkRoutesResponse_coreNetworkSegmentEdge,
+    getNetworkRoutesResponse_networkRoutes,
+    getNetworkRoutesResponse_routeTableArn,
+    getNetworkRoutesResponse_routeTableTimestamp,
+    getNetworkRoutesResponse_routeTableType,
+    getNetworkRoutesResponse_httpStatus,
+
+    -- ** GetNetworkTelemetry
+    getNetworkTelemetry_accountId,
+    getNetworkTelemetry_awsRegion,
+    getNetworkTelemetry_coreNetworkId,
+    getNetworkTelemetry_maxResults,
+    getNetworkTelemetry_nextToken,
+    getNetworkTelemetry_registeredGatewayArn,
+    getNetworkTelemetry_resourceArn,
+    getNetworkTelemetry_resourceType,
+    getNetworkTelemetry_globalNetworkId,
+    getNetworkTelemetryResponse_networkTelemetry,
+    getNetworkTelemetryResponse_nextToken,
+    getNetworkTelemetryResponse_httpStatus,
+
+    -- ** GetResourcePolicy
+    getResourcePolicy_resourceArn,
+    getResourcePolicyResponse_policyDocument,
+    getResourcePolicyResponse_httpStatus,
+
+    -- ** GetRouteAnalysis
+    getRouteAnalysis_globalNetworkId,
+    getRouteAnalysis_routeAnalysisId,
+    getRouteAnalysisResponse_routeAnalysis,
+    getRouteAnalysisResponse_httpStatus,
+
+    -- ** GetSiteToSiteVpnAttachment
+    getSiteToSiteVpnAttachment_attachmentId,
+    getSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment,
+    getSiteToSiteVpnAttachmentResponse_httpStatus,
+
+    -- ** GetSites
+    getSites_maxResults,
+    getSites_nextToken,
+    getSites_siteIds,
+    getSites_globalNetworkId,
+    getSitesResponse_nextToken,
+    getSitesResponse_sites,
+    getSitesResponse_httpStatus,
+
+    -- ** GetTransitGatewayConnectPeerAssociations
+    getTransitGatewayConnectPeerAssociations_maxResults,
+    getTransitGatewayConnectPeerAssociations_nextToken,
+    getTransitGatewayConnectPeerAssociations_transitGatewayConnectPeerArns,
+    getTransitGatewayConnectPeerAssociations_globalNetworkId,
+    getTransitGatewayConnectPeerAssociationsResponse_nextToken,
+    getTransitGatewayConnectPeerAssociationsResponse_transitGatewayConnectPeerAssociations,
+    getTransitGatewayConnectPeerAssociationsResponse_httpStatus,
+
+    -- ** GetTransitGatewayPeering
+    getTransitGatewayPeering_peeringId,
+    getTransitGatewayPeeringResponse_transitGatewayPeering,
+    getTransitGatewayPeeringResponse_httpStatus,
+
+    -- ** GetTransitGatewayRegistrations
+    getTransitGatewayRegistrations_maxResults,
+    getTransitGatewayRegistrations_nextToken,
+    getTransitGatewayRegistrations_transitGatewayArns,
+    getTransitGatewayRegistrations_globalNetworkId,
+    getTransitGatewayRegistrationsResponse_nextToken,
+    getTransitGatewayRegistrationsResponse_transitGatewayRegistrations,
+    getTransitGatewayRegistrationsResponse_httpStatus,
+
+    -- ** GetTransitGatewayRouteTableAttachment
+    getTransitGatewayRouteTableAttachment_attachmentId,
+    getTransitGatewayRouteTableAttachmentResponse_transitGatewayRouteTableAttachment,
+    getTransitGatewayRouteTableAttachmentResponse_httpStatus,
+
+    -- ** GetVpcAttachment
+    getVpcAttachment_attachmentId,
+    getVpcAttachmentResponse_vpcAttachment,
+    getVpcAttachmentResponse_httpStatus,
+
+    -- ** ListAttachments
+    listAttachments_attachmentType,
+    listAttachments_coreNetworkId,
+    listAttachments_edgeLocation,
+    listAttachments_maxResults,
+    listAttachments_nextToken,
+    listAttachments_state,
+    listAttachmentsResponse_attachments,
+    listAttachmentsResponse_nextToken,
+    listAttachmentsResponse_httpStatus,
+
+    -- ** ListConnectPeers
+    listConnectPeers_connectAttachmentId,
+    listConnectPeers_coreNetworkId,
+    listConnectPeers_maxResults,
+    listConnectPeers_nextToken,
+    listConnectPeersResponse_connectPeers,
+    listConnectPeersResponse_nextToken,
+    listConnectPeersResponse_httpStatus,
+
+    -- ** ListCoreNetworkPolicyVersions
+    listCoreNetworkPolicyVersions_maxResults,
+    listCoreNetworkPolicyVersions_nextToken,
+    listCoreNetworkPolicyVersions_coreNetworkId,
+    listCoreNetworkPolicyVersionsResponse_coreNetworkPolicyVersions,
+    listCoreNetworkPolicyVersionsResponse_nextToken,
+    listCoreNetworkPolicyVersionsResponse_httpStatus,
+
+    -- ** ListCoreNetworks
+    listCoreNetworks_maxResults,
+    listCoreNetworks_nextToken,
+    listCoreNetworksResponse_coreNetworks,
+    listCoreNetworksResponse_nextToken,
+    listCoreNetworksResponse_httpStatus,
+
+    -- ** ListOrganizationServiceAccessStatus
+    listOrganizationServiceAccessStatus_maxResults,
+    listOrganizationServiceAccessStatus_nextToken,
+    listOrganizationServiceAccessStatusResponse_nextToken,
+    listOrganizationServiceAccessStatusResponse_organizationStatus,
+    listOrganizationServiceAccessStatusResponse_httpStatus,
+
+    -- ** ListPeerings
+    listPeerings_coreNetworkId,
+    listPeerings_edgeLocation,
+    listPeerings_maxResults,
+    listPeerings_nextToken,
+    listPeerings_peeringType,
+    listPeerings_state,
+    listPeeringsResponse_nextToken,
+    listPeeringsResponse_peerings,
+    listPeeringsResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tagList,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** PutCoreNetworkPolicy
+    putCoreNetworkPolicy_clientToken,
+    putCoreNetworkPolicy_description,
+    putCoreNetworkPolicy_latestVersionId,
+    putCoreNetworkPolicy_coreNetworkId,
+    putCoreNetworkPolicy_policyDocument,
+    putCoreNetworkPolicyResponse_coreNetworkPolicy,
+    putCoreNetworkPolicyResponse_httpStatus,
+
+    -- ** PutResourcePolicy
+    putResourcePolicy_policyDocument,
+    putResourcePolicy_resourceArn,
+    putResourcePolicyResponse_httpStatus,
+
+    -- ** RegisterTransitGateway
+    registerTransitGateway_globalNetworkId,
+    registerTransitGateway_transitGatewayArn,
+    registerTransitGatewayResponse_transitGatewayRegistration,
+    registerTransitGatewayResponse_httpStatus,
+
+    -- ** RejectAttachment
+    rejectAttachment_attachmentId,
+    rejectAttachmentResponse_attachment,
+    rejectAttachmentResponse_httpStatus,
+
+    -- ** RestoreCoreNetworkPolicyVersion
+    restoreCoreNetworkPolicyVersion_coreNetworkId,
+    restoreCoreNetworkPolicyVersion_policyVersionId,
+    restoreCoreNetworkPolicyVersionResponse_coreNetworkPolicy,
+    restoreCoreNetworkPolicyVersionResponse_httpStatus,
+
+    -- ** StartOrganizationServiceAccessUpdate
+    startOrganizationServiceAccessUpdate_action,
+    startOrganizationServiceAccessUpdateResponse_organizationStatus,
+    startOrganizationServiceAccessUpdateResponse_httpStatus,
+
+    -- ** StartRouteAnalysis
+    startRouteAnalysis_includeReturnPath,
+    startRouteAnalysis_useMiddleboxes,
+    startRouteAnalysis_globalNetworkId,
+    startRouteAnalysis_source,
+    startRouteAnalysis_destination,
+    startRouteAnalysisResponse_routeAnalysis,
+    startRouteAnalysisResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdateConnection
+    updateConnection_connectedLinkId,
+    updateConnection_description,
+    updateConnection_linkId,
+    updateConnection_globalNetworkId,
+    updateConnection_connectionId,
+    updateConnectionResponse_connection,
+    updateConnectionResponse_httpStatus,
+
+    -- ** UpdateCoreNetwork
+    updateCoreNetwork_description,
+    updateCoreNetwork_coreNetworkId,
+    updateCoreNetworkResponse_coreNetwork,
+    updateCoreNetworkResponse_httpStatus,
+
+    -- ** UpdateDevice
+    updateDevice_aWSLocation,
+    updateDevice_description,
+    updateDevice_location,
+    updateDevice_model,
+    updateDevice_serialNumber,
+    updateDevice_siteId,
+    updateDevice_type,
+    updateDevice_vendor,
+    updateDevice_globalNetworkId,
+    updateDevice_deviceId,
+    updateDeviceResponse_device,
+    updateDeviceResponse_httpStatus,
+
+    -- ** UpdateGlobalNetwork
+    updateGlobalNetwork_description,
+    updateGlobalNetwork_globalNetworkId,
+    updateGlobalNetworkResponse_globalNetwork,
+    updateGlobalNetworkResponse_httpStatus,
+
+    -- ** UpdateLink
+    updateLink_bandwidth,
+    updateLink_description,
+    updateLink_provider,
+    updateLink_type,
+    updateLink_globalNetworkId,
+    updateLink_linkId,
+    updateLinkResponse_link,
+    updateLinkResponse_httpStatus,
+
+    -- ** UpdateNetworkResourceMetadata
+    updateNetworkResourceMetadata_globalNetworkId,
+    updateNetworkResourceMetadata_resourceArn,
+    updateNetworkResourceMetadata_metadata,
+    updateNetworkResourceMetadataResponse_metadata,
+    updateNetworkResourceMetadataResponse_resourceArn,
+    updateNetworkResourceMetadataResponse_httpStatus,
+
+    -- ** UpdateSite
+    updateSite_description,
+    updateSite_location,
+    updateSite_globalNetworkId,
+    updateSite_siteId,
+    updateSiteResponse_site,
+    updateSiteResponse_httpStatus,
+
+    -- ** UpdateVpcAttachment
+    updateVpcAttachment_addSubnetArns,
+    updateVpcAttachment_options,
+    updateVpcAttachment_removeSubnetArns,
+    updateVpcAttachment_attachmentId,
+    updateVpcAttachmentResponse_vpcAttachment,
+    updateVpcAttachmentResponse_httpStatus,
+
+    -- * Types
+
+    -- ** AWSLocation
+    aWSLocation_subnetArn,
+    aWSLocation_zone,
+
+    -- ** AccountStatus
+    accountStatus_accountId,
+    accountStatus_sLRDeploymentStatus,
+
+    -- ** Attachment
+    attachment_attachmentId,
+    attachment_attachmentPolicyRuleNumber,
+    attachment_attachmentType,
+    attachment_coreNetworkArn,
+    attachment_coreNetworkId,
+    attachment_createdAt,
+    attachment_edgeLocation,
+    attachment_ownerAccountId,
+    attachment_proposedSegmentChange,
+    attachment_resourceArn,
+    attachment_segmentName,
+    attachment_state,
+    attachment_tags,
+    attachment_updatedAt,
+
+    -- ** Bandwidth
+    bandwidth_downloadSpeed,
+    bandwidth_uploadSpeed,
+
+    -- ** BgpOptions
+    bgpOptions_peerAsn,
+
+    -- ** ConnectAttachment
+    connectAttachment_attachment,
+    connectAttachment_options,
+    connectAttachment_transportAttachmentId,
+
+    -- ** ConnectAttachmentOptions
+    connectAttachmentOptions_protocol,
+
+    -- ** ConnectPeer
+    connectPeer_configuration,
+    connectPeer_connectAttachmentId,
+    connectPeer_connectPeerId,
+    connectPeer_coreNetworkId,
+    connectPeer_createdAt,
+    connectPeer_edgeLocation,
+    connectPeer_state,
+    connectPeer_tags,
+
+    -- ** ConnectPeerAssociation
+    connectPeerAssociation_connectPeerId,
+    connectPeerAssociation_deviceId,
+    connectPeerAssociation_globalNetworkId,
+    connectPeerAssociation_linkId,
+    connectPeerAssociation_state,
+
+    -- ** ConnectPeerBgpConfiguration
+    connectPeerBgpConfiguration_coreNetworkAddress,
+    connectPeerBgpConfiguration_coreNetworkAsn,
+    connectPeerBgpConfiguration_peerAddress,
+    connectPeerBgpConfiguration_peerAsn,
+
+    -- ** ConnectPeerConfiguration
+    connectPeerConfiguration_bgpConfigurations,
+    connectPeerConfiguration_coreNetworkAddress,
+    connectPeerConfiguration_insideCidrBlocks,
+    connectPeerConfiguration_peerAddress,
+    connectPeerConfiguration_protocol,
+
+    -- ** ConnectPeerSummary
+    connectPeerSummary_connectAttachmentId,
+    connectPeerSummary_connectPeerId,
+    connectPeerSummary_connectPeerState,
+    connectPeerSummary_coreNetworkId,
+    connectPeerSummary_createdAt,
+    connectPeerSummary_edgeLocation,
+    connectPeerSummary_tags,
+
+    -- ** Connection
+    connection_connectedDeviceId,
+    connection_connectedLinkId,
+    connection_connectionArn,
+    connection_connectionId,
+    connection_createdAt,
+    connection_description,
+    connection_deviceId,
+    connection_globalNetworkId,
+    connection_linkId,
+    connection_state,
+    connection_tags,
+
+    -- ** ConnectionHealth
+    connectionHealth_status,
+    connectionHealth_timestamp,
+    connectionHealth_type,
+
+    -- ** CoreNetwork
+    coreNetwork_coreNetworkArn,
+    coreNetwork_coreNetworkId,
+    coreNetwork_createdAt,
+    coreNetwork_description,
+    coreNetwork_edges,
+    coreNetwork_globalNetworkId,
+    coreNetwork_segments,
+    coreNetwork_state,
+    coreNetwork_tags,
+
+    -- ** CoreNetworkChange
+    coreNetworkChange_action,
+    coreNetworkChange_identifier,
+    coreNetworkChange_identifierPath,
+    coreNetworkChange_newValues,
+    coreNetworkChange_previousValues,
+    coreNetworkChange_type,
+
+    -- ** CoreNetworkChangeEvent
+    coreNetworkChangeEvent_action,
+    coreNetworkChangeEvent_eventTime,
+    coreNetworkChangeEvent_identifierPath,
+    coreNetworkChangeEvent_status,
+    coreNetworkChangeEvent_type,
+    coreNetworkChangeEvent_values,
+
+    -- ** CoreNetworkChangeEventValues
+    coreNetworkChangeEventValues_attachmentId,
+    coreNetworkChangeEventValues_cidr,
+    coreNetworkChangeEventValues_edgeLocation,
+    coreNetworkChangeEventValues_segmentName,
+
+    -- ** CoreNetworkChangeValues
+    coreNetworkChangeValues_asn,
+    coreNetworkChangeValues_cidr,
+    coreNetworkChangeValues_destinationIdentifier,
+    coreNetworkChangeValues_edgeLocations,
+    coreNetworkChangeValues_insideCidrBlocks,
+    coreNetworkChangeValues_segmentName,
+    coreNetworkChangeValues_sharedSegments,
+
+    -- ** CoreNetworkEdge
+    coreNetworkEdge_asn,
+    coreNetworkEdge_edgeLocation,
+    coreNetworkEdge_insideCidrBlocks,
+
+    -- ** CoreNetworkPolicy
+    coreNetworkPolicy_alias,
+    coreNetworkPolicy_changeSetState,
+    coreNetworkPolicy_coreNetworkId,
+    coreNetworkPolicy_createdAt,
+    coreNetworkPolicy_description,
+    coreNetworkPolicy_policyDocument,
+    coreNetworkPolicy_policyErrors,
+    coreNetworkPolicy_policyVersionId,
+
+    -- ** CoreNetworkPolicyError
+    coreNetworkPolicyError_path,
+    coreNetworkPolicyError_errorCode,
+    coreNetworkPolicyError_message,
+
+    -- ** CoreNetworkPolicyVersion
+    coreNetworkPolicyVersion_alias,
+    coreNetworkPolicyVersion_changeSetState,
+    coreNetworkPolicyVersion_coreNetworkId,
+    coreNetworkPolicyVersion_createdAt,
+    coreNetworkPolicyVersion_description,
+    coreNetworkPolicyVersion_policyVersionId,
+
+    -- ** CoreNetworkSegment
+    coreNetworkSegment_edgeLocations,
+    coreNetworkSegment_name,
+    coreNetworkSegment_sharedSegments,
+
+    -- ** CoreNetworkSegmentEdgeIdentifier
+    coreNetworkSegmentEdgeIdentifier_coreNetworkId,
+    coreNetworkSegmentEdgeIdentifier_edgeLocation,
+    coreNetworkSegmentEdgeIdentifier_segmentName,
+
+    -- ** CoreNetworkSummary
+    coreNetworkSummary_coreNetworkArn,
+    coreNetworkSummary_coreNetworkId,
+    coreNetworkSummary_description,
+    coreNetworkSummary_globalNetworkId,
+    coreNetworkSummary_ownerAccountId,
+    coreNetworkSummary_state,
+    coreNetworkSummary_tags,
+
+    -- ** CustomerGatewayAssociation
+    customerGatewayAssociation_customerGatewayArn,
+    customerGatewayAssociation_deviceId,
+    customerGatewayAssociation_globalNetworkId,
+    customerGatewayAssociation_linkId,
+    customerGatewayAssociation_state,
+
+    -- ** Device
+    device_aWSLocation,
+    device_createdAt,
+    device_description,
+    device_deviceArn,
+    device_deviceId,
+    device_globalNetworkId,
+    device_location,
+    device_model,
+    device_serialNumber,
+    device_siteId,
+    device_state,
+    device_tags,
+    device_type,
+    device_vendor,
+
+    -- ** GlobalNetwork
+    globalNetwork_createdAt,
+    globalNetwork_description,
+    globalNetwork_globalNetworkArn,
+    globalNetwork_globalNetworkId,
+    globalNetwork_state,
+    globalNetwork_tags,
+
+    -- ** Link
+    link_bandwidth,
+    link_createdAt,
+    link_description,
+    link_globalNetworkId,
+    link_linkArn,
+    link_linkId,
+    link_provider,
+    link_siteId,
+    link_state,
+    link_tags,
+    link_type,
+
+    -- ** LinkAssociation
+    linkAssociation_deviceId,
+    linkAssociation_globalNetworkId,
+    linkAssociation_linkAssociationState,
+    linkAssociation_linkId,
+
+    -- ** Location
+    location_address,
+    location_latitude,
+    location_longitude,
+
+    -- ** NetworkResource
+    networkResource_accountId,
+    networkResource_awsRegion,
+    networkResource_coreNetworkId,
+    networkResource_definition,
+    networkResource_definitionTimestamp,
+    networkResource_metadata,
+    networkResource_registeredGatewayArn,
+    networkResource_resourceArn,
+    networkResource_resourceId,
+    networkResource_resourceType,
+    networkResource_tags,
+
+    -- ** NetworkResourceCount
+    networkResourceCount_count,
+    networkResourceCount_resourceType,
+
+    -- ** NetworkResourceSummary
+    networkResourceSummary_definition,
+    networkResourceSummary_isMiddlebox,
+    networkResourceSummary_nameTag,
+    networkResourceSummary_registeredGatewayArn,
+    networkResourceSummary_resourceArn,
+    networkResourceSummary_resourceType,
+
+    -- ** NetworkRoute
+    networkRoute_destinationCidrBlock,
+    networkRoute_destinations,
+    networkRoute_prefixListId,
+    networkRoute_state,
+    networkRoute_type,
+
+    -- ** NetworkRouteDestination
+    networkRouteDestination_coreNetworkAttachmentId,
+    networkRouteDestination_edgeLocation,
+    networkRouteDestination_resourceId,
+    networkRouteDestination_resourceType,
+    networkRouteDestination_segmentName,
+    networkRouteDestination_transitGatewayAttachmentId,
+
+    -- ** NetworkTelemetry
+    networkTelemetry_accountId,
+    networkTelemetry_address,
+    networkTelemetry_awsRegion,
+    networkTelemetry_coreNetworkId,
+    networkTelemetry_health,
+    networkTelemetry_registeredGatewayArn,
+    networkTelemetry_resourceArn,
+    networkTelemetry_resourceId,
+    networkTelemetry_resourceType,
+
+    -- ** OrganizationStatus
+    organizationStatus_accountStatusList,
+    organizationStatus_organizationAwsServiceAccessStatus,
+    organizationStatus_organizationId,
+    organizationStatus_sLRDeploymentStatus,
+
+    -- ** PathComponent
+    pathComponent_destinationCidrBlock,
+    pathComponent_resource,
+    pathComponent_sequence,
+
+    -- ** Peering
+    peering_coreNetworkArn,
+    peering_coreNetworkId,
+    peering_createdAt,
+    peering_edgeLocation,
+    peering_ownerAccountId,
+    peering_peeringId,
+    peering_peeringType,
+    peering_resourceArn,
+    peering_state,
+    peering_tags,
+
+    -- ** ProposedSegmentChange
+    proposedSegmentChange_attachmentPolicyRuleNumber,
+    proposedSegmentChange_segmentName,
+    proposedSegmentChange_tags,
+
+    -- ** Relationship
+    relationship_from,
+    relationship_to,
+
+    -- ** RouteAnalysis
+    routeAnalysis_destination,
+    routeAnalysis_forwardPath,
+    routeAnalysis_globalNetworkId,
+    routeAnalysis_includeReturnPath,
+    routeAnalysis_ownerAccountId,
+    routeAnalysis_returnPath,
+    routeAnalysis_routeAnalysisId,
+    routeAnalysis_source,
+    routeAnalysis_startTimestamp,
+    routeAnalysis_status,
+    routeAnalysis_useMiddleboxes,
+
+    -- ** RouteAnalysisCompletion
+    routeAnalysisCompletion_reasonCode,
+    routeAnalysisCompletion_reasonContext,
+    routeAnalysisCompletion_resultCode,
+
+    -- ** RouteAnalysisEndpointOptions
+    routeAnalysisEndpointOptions_ipAddress,
+    routeAnalysisEndpointOptions_transitGatewayArn,
+    routeAnalysisEndpointOptions_transitGatewayAttachmentArn,
+
+    -- ** RouteAnalysisEndpointOptionsSpecification
+    routeAnalysisEndpointOptionsSpecification_ipAddress,
+    routeAnalysisEndpointOptionsSpecification_transitGatewayAttachmentArn,
+
+    -- ** RouteAnalysisPath
+    routeAnalysisPath_completionStatus,
+    routeAnalysisPath_path,
+
+    -- ** RouteTableIdentifier
+    routeTableIdentifier_coreNetworkSegmentEdge,
+    routeTableIdentifier_transitGatewayRouteTableArn,
+
+    -- ** Site
+    site_createdAt,
+    site_description,
+    site_globalNetworkId,
+    site_location,
+    site_siteArn,
+    site_siteId,
+    site_state,
+    site_tags,
+
+    -- ** SiteToSiteVpnAttachment
+    siteToSiteVpnAttachment_attachment,
+    siteToSiteVpnAttachment_vpnConnectionArn,
+
+    -- ** Tag
+    tag_key,
+    tag_value,
+
+    -- ** TransitGatewayConnectPeerAssociation
+    transitGatewayConnectPeerAssociation_deviceId,
+    transitGatewayConnectPeerAssociation_globalNetworkId,
+    transitGatewayConnectPeerAssociation_linkId,
+    transitGatewayConnectPeerAssociation_state,
+    transitGatewayConnectPeerAssociation_transitGatewayConnectPeerArn,
+
+    -- ** TransitGatewayPeering
+    transitGatewayPeering_peering,
+    transitGatewayPeering_transitGatewayArn,
+    transitGatewayPeering_transitGatewayPeeringAttachmentId,
+
+    -- ** TransitGatewayRegistration
+    transitGatewayRegistration_globalNetworkId,
+    transitGatewayRegistration_state,
+    transitGatewayRegistration_transitGatewayArn,
+
+    -- ** TransitGatewayRegistrationStateReason
+    transitGatewayRegistrationStateReason_code,
+    transitGatewayRegistrationStateReason_message,
+
+    -- ** TransitGatewayRouteTableAttachment
+    transitGatewayRouteTableAttachment_attachment,
+    transitGatewayRouteTableAttachment_peeringId,
+    transitGatewayRouteTableAttachment_transitGatewayRouteTableArn,
+
+    -- ** VpcAttachment
+    vpcAttachment_attachment,
+    vpcAttachment_options,
+    vpcAttachment_subnetArns,
+
+    -- ** VpcOptions
+    vpcOptions_applianceModeSupport,
+    vpcOptions_ipv6Support,
+  )
+where
+
+import Amazonka.NetworkManager.AcceptAttachment
+import Amazonka.NetworkManager.AssociateConnectPeer
+import Amazonka.NetworkManager.AssociateCustomerGateway
+import Amazonka.NetworkManager.AssociateLink
+import Amazonka.NetworkManager.AssociateTransitGatewayConnectPeer
+import Amazonka.NetworkManager.CreateConnectAttachment
+import Amazonka.NetworkManager.CreateConnectPeer
+import Amazonka.NetworkManager.CreateConnection
+import Amazonka.NetworkManager.CreateCoreNetwork
+import Amazonka.NetworkManager.CreateDevice
+import Amazonka.NetworkManager.CreateGlobalNetwork
+import Amazonka.NetworkManager.CreateLink
+import Amazonka.NetworkManager.CreateSite
+import Amazonka.NetworkManager.CreateSiteToSiteVpnAttachment
+import Amazonka.NetworkManager.CreateTransitGatewayPeering
+import Amazonka.NetworkManager.CreateTransitGatewayRouteTableAttachment
+import Amazonka.NetworkManager.CreateVpcAttachment
+import Amazonka.NetworkManager.DeleteAttachment
+import Amazonka.NetworkManager.DeleteConnectPeer
+import Amazonka.NetworkManager.DeleteConnection
+import Amazonka.NetworkManager.DeleteCoreNetwork
+import Amazonka.NetworkManager.DeleteCoreNetworkPolicyVersion
+import Amazonka.NetworkManager.DeleteDevice
+import Amazonka.NetworkManager.DeleteGlobalNetwork
+import Amazonka.NetworkManager.DeleteLink
+import Amazonka.NetworkManager.DeletePeering
+import Amazonka.NetworkManager.DeleteResourcePolicy
+import Amazonka.NetworkManager.DeleteSite
+import Amazonka.NetworkManager.DeregisterTransitGateway
+import Amazonka.NetworkManager.DescribeGlobalNetworks
+import Amazonka.NetworkManager.DisassociateConnectPeer
+import Amazonka.NetworkManager.DisassociateCustomerGateway
+import Amazonka.NetworkManager.DisassociateLink
+import Amazonka.NetworkManager.DisassociateTransitGatewayConnectPeer
+import Amazonka.NetworkManager.ExecuteCoreNetworkChangeSet
+import Amazonka.NetworkManager.GetConnectAttachment
+import Amazonka.NetworkManager.GetConnectPeer
+import Amazonka.NetworkManager.GetConnectPeerAssociations
+import Amazonka.NetworkManager.GetConnections
+import Amazonka.NetworkManager.GetCoreNetwork
+import Amazonka.NetworkManager.GetCoreNetworkChangeEvents
+import Amazonka.NetworkManager.GetCoreNetworkChangeSet
+import Amazonka.NetworkManager.GetCoreNetworkPolicy
+import Amazonka.NetworkManager.GetCustomerGatewayAssociations
+import Amazonka.NetworkManager.GetDevices
+import Amazonka.NetworkManager.GetLinkAssociations
+import Amazonka.NetworkManager.GetLinks
+import Amazonka.NetworkManager.GetNetworkResourceCounts
+import Amazonka.NetworkManager.GetNetworkResourceRelationships
+import Amazonka.NetworkManager.GetNetworkResources
+import Amazonka.NetworkManager.GetNetworkRoutes
+import Amazonka.NetworkManager.GetNetworkTelemetry
+import Amazonka.NetworkManager.GetResourcePolicy
+import Amazonka.NetworkManager.GetRouteAnalysis
+import Amazonka.NetworkManager.GetSiteToSiteVpnAttachment
+import Amazonka.NetworkManager.GetSites
+import Amazonka.NetworkManager.GetTransitGatewayConnectPeerAssociations
+import Amazonka.NetworkManager.GetTransitGatewayPeering
+import Amazonka.NetworkManager.GetTransitGatewayRegistrations
+import Amazonka.NetworkManager.GetTransitGatewayRouteTableAttachment
+import Amazonka.NetworkManager.GetVpcAttachment
+import Amazonka.NetworkManager.ListAttachments
+import Amazonka.NetworkManager.ListConnectPeers
+import Amazonka.NetworkManager.ListCoreNetworkPolicyVersions
+import Amazonka.NetworkManager.ListCoreNetworks
+import Amazonka.NetworkManager.ListOrganizationServiceAccessStatus
+import Amazonka.NetworkManager.ListPeerings
+import Amazonka.NetworkManager.ListTagsForResource
+import Amazonka.NetworkManager.PutCoreNetworkPolicy
+import Amazonka.NetworkManager.PutResourcePolicy
+import Amazonka.NetworkManager.RegisterTransitGateway
+import Amazonka.NetworkManager.RejectAttachment
+import Amazonka.NetworkManager.RestoreCoreNetworkPolicyVersion
+import Amazonka.NetworkManager.StartOrganizationServiceAccessUpdate
+import Amazonka.NetworkManager.StartRouteAnalysis
+import Amazonka.NetworkManager.TagResource
+import Amazonka.NetworkManager.Types.AWSLocation
+import Amazonka.NetworkManager.Types.AccountStatus
+import Amazonka.NetworkManager.Types.Attachment
+import Amazonka.NetworkManager.Types.Bandwidth
+import Amazonka.NetworkManager.Types.BgpOptions
+import Amazonka.NetworkManager.Types.ConnectAttachment
+import Amazonka.NetworkManager.Types.ConnectAttachmentOptions
+import Amazonka.NetworkManager.Types.ConnectPeer
+import Amazonka.NetworkManager.Types.ConnectPeerAssociation
+import Amazonka.NetworkManager.Types.ConnectPeerBgpConfiguration
+import Amazonka.NetworkManager.Types.ConnectPeerConfiguration
+import Amazonka.NetworkManager.Types.ConnectPeerSummary
+import Amazonka.NetworkManager.Types.Connection
+import Amazonka.NetworkManager.Types.ConnectionHealth
+import Amazonka.NetworkManager.Types.CoreNetwork
+import Amazonka.NetworkManager.Types.CoreNetworkChange
+import Amazonka.NetworkManager.Types.CoreNetworkChangeEvent
+import Amazonka.NetworkManager.Types.CoreNetworkChangeEventValues
+import Amazonka.NetworkManager.Types.CoreNetworkChangeValues
+import Amazonka.NetworkManager.Types.CoreNetworkEdge
+import Amazonka.NetworkManager.Types.CoreNetworkPolicy
+import Amazonka.NetworkManager.Types.CoreNetworkPolicyError
+import Amazonka.NetworkManager.Types.CoreNetworkPolicyVersion
+import Amazonka.NetworkManager.Types.CoreNetworkSegment
+import Amazonka.NetworkManager.Types.CoreNetworkSegmentEdgeIdentifier
+import Amazonka.NetworkManager.Types.CoreNetworkSummary
+import Amazonka.NetworkManager.Types.CustomerGatewayAssociation
+import Amazonka.NetworkManager.Types.Device
+import Amazonka.NetworkManager.Types.GlobalNetwork
+import Amazonka.NetworkManager.Types.Link
+import Amazonka.NetworkManager.Types.LinkAssociation
+import Amazonka.NetworkManager.Types.Location
+import Amazonka.NetworkManager.Types.NetworkResource
+import Amazonka.NetworkManager.Types.NetworkResourceCount
+import Amazonka.NetworkManager.Types.NetworkResourceSummary
+import Amazonka.NetworkManager.Types.NetworkRoute
+import Amazonka.NetworkManager.Types.NetworkRouteDestination
+import Amazonka.NetworkManager.Types.NetworkTelemetry
+import Amazonka.NetworkManager.Types.OrganizationStatus
+import Amazonka.NetworkManager.Types.PathComponent
+import Amazonka.NetworkManager.Types.Peering
+import Amazonka.NetworkManager.Types.ProposedSegmentChange
+import Amazonka.NetworkManager.Types.Relationship
+import Amazonka.NetworkManager.Types.RouteAnalysis
+import Amazonka.NetworkManager.Types.RouteAnalysisCompletion
+import Amazonka.NetworkManager.Types.RouteAnalysisEndpointOptions
+import Amazonka.NetworkManager.Types.RouteAnalysisEndpointOptionsSpecification
+import Amazonka.NetworkManager.Types.RouteAnalysisPath
+import Amazonka.NetworkManager.Types.RouteTableIdentifier
+import Amazonka.NetworkManager.Types.Site
+import Amazonka.NetworkManager.Types.SiteToSiteVpnAttachment
+import Amazonka.NetworkManager.Types.Tag
+import Amazonka.NetworkManager.Types.TransitGatewayConnectPeerAssociation
+import Amazonka.NetworkManager.Types.TransitGatewayPeering
+import Amazonka.NetworkManager.Types.TransitGatewayRegistration
+import Amazonka.NetworkManager.Types.TransitGatewayRegistrationStateReason
+import Amazonka.NetworkManager.Types.TransitGatewayRouteTableAttachment
+import Amazonka.NetworkManager.Types.VpcAttachment
+import Amazonka.NetworkManager.Types.VpcOptions
+import Amazonka.NetworkManager.UntagResource
+import Amazonka.NetworkManager.UpdateConnection
+import Amazonka.NetworkManager.UpdateCoreNetwork
+import Amazonka.NetworkManager.UpdateDevice
+import Amazonka.NetworkManager.UpdateGlobalNetwork
+import Amazonka.NetworkManager.UpdateLink
+import Amazonka.NetworkManager.UpdateNetworkResourceMetadata
+import Amazonka.NetworkManager.UpdateSite
+import Amazonka.NetworkManager.UpdateVpcAttachment
diff --git a/gen/Amazonka/NetworkManager/ListAttachments.hs b/gen/Amazonka/NetworkManager/ListAttachments.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/ListAttachments.hs
@@ -0,0 +1,263 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.ListAttachments
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of core network attachments.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.ListAttachments
+  ( -- * Creating a Request
+    ListAttachments (..),
+    newListAttachments,
+
+    -- * Request Lenses
+    listAttachments_attachmentType,
+    listAttachments_coreNetworkId,
+    listAttachments_edgeLocation,
+    listAttachments_maxResults,
+    listAttachments_nextToken,
+    listAttachments_state,
+
+    -- * Destructuring the Response
+    ListAttachmentsResponse (..),
+    newListAttachmentsResponse,
+
+    -- * Response Lenses
+    listAttachmentsResponse_attachments,
+    listAttachmentsResponse_nextToken,
+    listAttachmentsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListAttachments' smart constructor.
+data ListAttachments = ListAttachments'
+  { -- | The type of attachment.
+    attachmentType :: Prelude.Maybe AttachmentType,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The Region where the edge is located.
+    edgeLocation :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The state of the attachment.
+    state :: Prelude.Maybe AttachmentState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAttachments' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachmentType', 'listAttachments_attachmentType' - The type of attachment.
+--
+-- 'coreNetworkId', 'listAttachments_coreNetworkId' - The ID of a core network.
+--
+-- 'edgeLocation', 'listAttachments_edgeLocation' - The Region where the edge is located.
+--
+-- 'maxResults', 'listAttachments_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'listAttachments_nextToken' - The token for the next page of results.
+--
+-- 'state', 'listAttachments_state' - The state of the attachment.
+newListAttachments ::
+  ListAttachments
+newListAttachments =
+  ListAttachments'
+    { attachmentType = Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      edgeLocation = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      state = Prelude.Nothing
+    }
+
+-- | The type of attachment.
+listAttachments_attachmentType :: Lens.Lens' ListAttachments (Prelude.Maybe AttachmentType)
+listAttachments_attachmentType = Lens.lens (\ListAttachments' {attachmentType} -> attachmentType) (\s@ListAttachments' {} a -> s {attachmentType = a} :: ListAttachments)
+
+-- | The ID of a core network.
+listAttachments_coreNetworkId :: Lens.Lens' ListAttachments (Prelude.Maybe Prelude.Text)
+listAttachments_coreNetworkId = Lens.lens (\ListAttachments' {coreNetworkId} -> coreNetworkId) (\s@ListAttachments' {} a -> s {coreNetworkId = a} :: ListAttachments)
+
+-- | The Region where the edge is located.
+listAttachments_edgeLocation :: Lens.Lens' ListAttachments (Prelude.Maybe Prelude.Text)
+listAttachments_edgeLocation = Lens.lens (\ListAttachments' {edgeLocation} -> edgeLocation) (\s@ListAttachments' {} a -> s {edgeLocation = a} :: ListAttachments)
+
+-- | The maximum number of results to return.
+listAttachments_maxResults :: Lens.Lens' ListAttachments (Prelude.Maybe Prelude.Natural)
+listAttachments_maxResults = Lens.lens (\ListAttachments' {maxResults} -> maxResults) (\s@ListAttachments' {} a -> s {maxResults = a} :: ListAttachments)
+
+-- | The token for the next page of results.
+listAttachments_nextToken :: Lens.Lens' ListAttachments (Prelude.Maybe Prelude.Text)
+listAttachments_nextToken = Lens.lens (\ListAttachments' {nextToken} -> nextToken) (\s@ListAttachments' {} a -> s {nextToken = a} :: ListAttachments)
+
+-- | The state of the attachment.
+listAttachments_state :: Lens.Lens' ListAttachments (Prelude.Maybe AttachmentState)
+listAttachments_state = Lens.lens (\ListAttachments' {state} -> state) (\s@ListAttachments' {} a -> s {state = a} :: ListAttachments)
+
+instance Core.AWSPager ListAttachments where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listAttachmentsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listAttachmentsResponse_attachments
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listAttachments_nextToken
+          Lens..~ rs
+          Lens.^? listAttachmentsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListAttachments where
+  type
+    AWSResponse ListAttachments =
+      ListAttachmentsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAttachmentsResponse'
+            Prelude.<$> (x Data..?> "Attachments" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAttachments where
+  hashWithSalt _salt ListAttachments' {..} =
+    _salt
+      `Prelude.hashWithSalt` attachmentType
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` edgeLocation
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` state
+
+instance Prelude.NFData ListAttachments where
+  rnf ListAttachments' {..} =
+    Prelude.rnf attachmentType
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf edgeLocation
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf state
+
+instance Data.ToHeaders ListAttachments where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListAttachments where
+  toPath = Prelude.const "/attachments"
+
+instance Data.ToQuery ListAttachments where
+  toQuery ListAttachments' {..} =
+    Prelude.mconcat
+      [ "attachmentType" Data.=: attachmentType,
+        "coreNetworkId" Data.=: coreNetworkId,
+        "edgeLocation" Data.=: edgeLocation,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "state" Data.=: state
+      ]
+
+-- | /See:/ 'newListAttachmentsResponse' smart constructor.
+data ListAttachmentsResponse = ListAttachmentsResponse'
+  { -- | Describes the list of attachments.
+    attachments :: Prelude.Maybe [Attachment],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAttachmentsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachments', 'listAttachmentsResponse_attachments' - Describes the list of attachments.
+--
+-- 'nextToken', 'listAttachmentsResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'listAttachmentsResponse_httpStatus' - The response's http status code.
+newListAttachmentsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAttachmentsResponse
+newListAttachmentsResponse pHttpStatus_ =
+  ListAttachmentsResponse'
+    { attachments =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Describes the list of attachments.
+listAttachmentsResponse_attachments :: Lens.Lens' ListAttachmentsResponse (Prelude.Maybe [Attachment])
+listAttachmentsResponse_attachments = Lens.lens (\ListAttachmentsResponse' {attachments} -> attachments) (\s@ListAttachmentsResponse' {} a -> s {attachments = a} :: ListAttachmentsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+listAttachmentsResponse_nextToken :: Lens.Lens' ListAttachmentsResponse (Prelude.Maybe Prelude.Text)
+listAttachmentsResponse_nextToken = Lens.lens (\ListAttachmentsResponse' {nextToken} -> nextToken) (\s@ListAttachmentsResponse' {} a -> s {nextToken = a} :: ListAttachmentsResponse)
+
+-- | The response's http status code.
+listAttachmentsResponse_httpStatus :: Lens.Lens' ListAttachmentsResponse Prelude.Int
+listAttachmentsResponse_httpStatus = Lens.lens (\ListAttachmentsResponse' {httpStatus} -> httpStatus) (\s@ListAttachmentsResponse' {} a -> s {httpStatus = a} :: ListAttachmentsResponse)
+
+instance Prelude.NFData ListAttachmentsResponse where
+  rnf ListAttachmentsResponse' {..} =
+    Prelude.rnf attachments
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/ListConnectPeers.hs b/gen/Amazonka/NetworkManager/ListConnectPeers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/ListConnectPeers.hs
@@ -0,0 +1,238 @@
+{-# 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.NetworkManager.ListConnectPeers
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of core network Connect peers.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.ListConnectPeers
+  ( -- * Creating a Request
+    ListConnectPeers (..),
+    newListConnectPeers,
+
+    -- * Request Lenses
+    listConnectPeers_connectAttachmentId,
+    listConnectPeers_coreNetworkId,
+    listConnectPeers_maxResults,
+    listConnectPeers_nextToken,
+
+    -- * Destructuring the Response
+    ListConnectPeersResponse (..),
+    newListConnectPeersResponse,
+
+    -- * Response Lenses
+    listConnectPeersResponse_connectPeers,
+    listConnectPeersResponse_nextToken,
+    listConnectPeersResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListConnectPeers' smart constructor.
+data ListConnectPeers = ListConnectPeers'
+  { -- | The ID of the attachment.
+    connectAttachmentId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListConnectPeers' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectAttachmentId', 'listConnectPeers_connectAttachmentId' - The ID of the attachment.
+--
+-- 'coreNetworkId', 'listConnectPeers_coreNetworkId' - The ID of a core network.
+--
+-- 'maxResults', 'listConnectPeers_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'listConnectPeers_nextToken' - The token for the next page of results.
+newListConnectPeers ::
+  ListConnectPeers
+newListConnectPeers =
+  ListConnectPeers'
+    { connectAttachmentId =
+        Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The ID of the attachment.
+listConnectPeers_connectAttachmentId :: Lens.Lens' ListConnectPeers (Prelude.Maybe Prelude.Text)
+listConnectPeers_connectAttachmentId = Lens.lens (\ListConnectPeers' {connectAttachmentId} -> connectAttachmentId) (\s@ListConnectPeers' {} a -> s {connectAttachmentId = a} :: ListConnectPeers)
+
+-- | The ID of a core network.
+listConnectPeers_coreNetworkId :: Lens.Lens' ListConnectPeers (Prelude.Maybe Prelude.Text)
+listConnectPeers_coreNetworkId = Lens.lens (\ListConnectPeers' {coreNetworkId} -> coreNetworkId) (\s@ListConnectPeers' {} a -> s {coreNetworkId = a} :: ListConnectPeers)
+
+-- | The maximum number of results to return.
+listConnectPeers_maxResults :: Lens.Lens' ListConnectPeers (Prelude.Maybe Prelude.Natural)
+listConnectPeers_maxResults = Lens.lens (\ListConnectPeers' {maxResults} -> maxResults) (\s@ListConnectPeers' {} a -> s {maxResults = a} :: ListConnectPeers)
+
+-- | The token for the next page of results.
+listConnectPeers_nextToken :: Lens.Lens' ListConnectPeers (Prelude.Maybe Prelude.Text)
+listConnectPeers_nextToken = Lens.lens (\ListConnectPeers' {nextToken} -> nextToken) (\s@ListConnectPeers' {} a -> s {nextToken = a} :: ListConnectPeers)
+
+instance Core.AWSPager ListConnectPeers where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listConnectPeersResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listConnectPeersResponse_connectPeers
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listConnectPeers_nextToken
+          Lens..~ rs
+          Lens.^? listConnectPeersResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListConnectPeers where
+  type
+    AWSResponse ListConnectPeers =
+      ListConnectPeersResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListConnectPeersResponse'
+            Prelude.<$> (x Data..?> "ConnectPeers" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListConnectPeers where
+  hashWithSalt _salt ListConnectPeers' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectAttachmentId
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListConnectPeers where
+  rnf ListConnectPeers' {..} =
+    Prelude.rnf connectAttachmentId
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListConnectPeers where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListConnectPeers where
+  toPath = Prelude.const "/connect-peers"
+
+instance Data.ToQuery ListConnectPeers where
+  toQuery ListConnectPeers' {..} =
+    Prelude.mconcat
+      [ "connectAttachmentId" Data.=: connectAttachmentId,
+        "coreNetworkId" Data.=: coreNetworkId,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListConnectPeersResponse' smart constructor.
+data ListConnectPeersResponse = ListConnectPeersResponse'
+  { -- | Describes the Connect peers.
+    connectPeers :: Prelude.Maybe [ConnectPeerSummary],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListConnectPeersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectPeers', 'listConnectPeersResponse_connectPeers' - Describes the Connect peers.
+--
+-- 'nextToken', 'listConnectPeersResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'listConnectPeersResponse_httpStatus' - The response's http status code.
+newListConnectPeersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListConnectPeersResponse
+newListConnectPeersResponse pHttpStatus_ =
+  ListConnectPeersResponse'
+    { connectPeers =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Describes the Connect peers.
+listConnectPeersResponse_connectPeers :: Lens.Lens' ListConnectPeersResponse (Prelude.Maybe [ConnectPeerSummary])
+listConnectPeersResponse_connectPeers = Lens.lens (\ListConnectPeersResponse' {connectPeers} -> connectPeers) (\s@ListConnectPeersResponse' {} a -> s {connectPeers = a} :: ListConnectPeersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+listConnectPeersResponse_nextToken :: Lens.Lens' ListConnectPeersResponse (Prelude.Maybe Prelude.Text)
+listConnectPeersResponse_nextToken = Lens.lens (\ListConnectPeersResponse' {nextToken} -> nextToken) (\s@ListConnectPeersResponse' {} a -> s {nextToken = a} :: ListConnectPeersResponse)
+
+-- | The response's http status code.
+listConnectPeersResponse_httpStatus :: Lens.Lens' ListConnectPeersResponse Prelude.Int
+listConnectPeersResponse_httpStatus = Lens.lens (\ListConnectPeersResponse' {httpStatus} -> httpStatus) (\s@ListConnectPeersResponse' {} a -> s {httpStatus = a} :: ListConnectPeersResponse)
+
+instance Prelude.NFData ListConnectPeersResponse where
+  rnf ListConnectPeersResponse' {..} =
+    Prelude.rnf connectPeers
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/ListCoreNetworkPolicyVersions.hs b/gen/Amazonka/NetworkManager/ListCoreNetworkPolicyVersions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/ListCoreNetworkPolicyVersions.hs
@@ -0,0 +1,243 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.ListCoreNetworkPolicyVersions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of core network policy versions.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.ListCoreNetworkPolicyVersions
+  ( -- * Creating a Request
+    ListCoreNetworkPolicyVersions (..),
+    newListCoreNetworkPolicyVersions,
+
+    -- * Request Lenses
+    listCoreNetworkPolicyVersions_maxResults,
+    listCoreNetworkPolicyVersions_nextToken,
+    listCoreNetworkPolicyVersions_coreNetworkId,
+
+    -- * Destructuring the Response
+    ListCoreNetworkPolicyVersionsResponse (..),
+    newListCoreNetworkPolicyVersionsResponse,
+
+    -- * Response Lenses
+    listCoreNetworkPolicyVersionsResponse_coreNetworkPolicyVersions,
+    listCoreNetworkPolicyVersionsResponse_nextToken,
+    listCoreNetworkPolicyVersionsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListCoreNetworkPolicyVersions' smart constructor.
+data ListCoreNetworkPolicyVersions = ListCoreNetworkPolicyVersions'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCoreNetworkPolicyVersions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listCoreNetworkPolicyVersions_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'listCoreNetworkPolicyVersions_nextToken' - The token for the next page of results.
+--
+-- 'coreNetworkId', 'listCoreNetworkPolicyVersions_coreNetworkId' - The ID of a core network.
+newListCoreNetworkPolicyVersions ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  ListCoreNetworkPolicyVersions
+newListCoreNetworkPolicyVersions pCoreNetworkId_ =
+  ListCoreNetworkPolicyVersions'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      coreNetworkId = pCoreNetworkId_
+    }
+
+-- | The maximum number of results to return.
+listCoreNetworkPolicyVersions_maxResults :: Lens.Lens' ListCoreNetworkPolicyVersions (Prelude.Maybe Prelude.Natural)
+listCoreNetworkPolicyVersions_maxResults = Lens.lens (\ListCoreNetworkPolicyVersions' {maxResults} -> maxResults) (\s@ListCoreNetworkPolicyVersions' {} a -> s {maxResults = a} :: ListCoreNetworkPolicyVersions)
+
+-- | The token for the next page of results.
+listCoreNetworkPolicyVersions_nextToken :: Lens.Lens' ListCoreNetworkPolicyVersions (Prelude.Maybe Prelude.Text)
+listCoreNetworkPolicyVersions_nextToken = Lens.lens (\ListCoreNetworkPolicyVersions' {nextToken} -> nextToken) (\s@ListCoreNetworkPolicyVersions' {} a -> s {nextToken = a} :: ListCoreNetworkPolicyVersions)
+
+-- | The ID of a core network.
+listCoreNetworkPolicyVersions_coreNetworkId :: Lens.Lens' ListCoreNetworkPolicyVersions Prelude.Text
+listCoreNetworkPolicyVersions_coreNetworkId = Lens.lens (\ListCoreNetworkPolicyVersions' {coreNetworkId} -> coreNetworkId) (\s@ListCoreNetworkPolicyVersions' {} a -> s {coreNetworkId = a} :: ListCoreNetworkPolicyVersions)
+
+instance Core.AWSPager ListCoreNetworkPolicyVersions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listCoreNetworkPolicyVersionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listCoreNetworkPolicyVersionsResponse_coreNetworkPolicyVersions
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listCoreNetworkPolicyVersions_nextToken
+          Lens..~ rs
+          Lens.^? listCoreNetworkPolicyVersionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListCoreNetworkPolicyVersions
+  where
+  type
+    AWSResponse ListCoreNetworkPolicyVersions =
+      ListCoreNetworkPolicyVersionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListCoreNetworkPolicyVersionsResponse'
+            Prelude.<$> ( x
+                            Data..?> "CoreNetworkPolicyVersions"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListCoreNetworkPolicyVersions
+  where
+  hashWithSalt _salt ListCoreNetworkPolicyVersions' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` coreNetworkId
+
+instance Prelude.NFData ListCoreNetworkPolicyVersions where
+  rnf ListCoreNetworkPolicyVersions' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf coreNetworkId
+
+instance Data.ToHeaders ListCoreNetworkPolicyVersions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListCoreNetworkPolicyVersions where
+  toPath ListCoreNetworkPolicyVersions' {..} =
+    Prelude.mconcat
+      [ "/core-networks/",
+        Data.toBS coreNetworkId,
+        "/core-network-policy-versions"
+      ]
+
+instance Data.ToQuery ListCoreNetworkPolicyVersions where
+  toQuery ListCoreNetworkPolicyVersions' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListCoreNetworkPolicyVersionsResponse' smart constructor.
+data ListCoreNetworkPolicyVersionsResponse = ListCoreNetworkPolicyVersionsResponse'
+  { -- | Describes core network policy versions.
+    coreNetworkPolicyVersions :: Prelude.Maybe [CoreNetworkPolicyVersion],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCoreNetworkPolicyVersionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkPolicyVersions', 'listCoreNetworkPolicyVersionsResponse_coreNetworkPolicyVersions' - Describes core network policy versions.
+--
+-- 'nextToken', 'listCoreNetworkPolicyVersionsResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'listCoreNetworkPolicyVersionsResponse_httpStatus' - The response's http status code.
+newListCoreNetworkPolicyVersionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListCoreNetworkPolicyVersionsResponse
+newListCoreNetworkPolicyVersionsResponse pHttpStatus_ =
+  ListCoreNetworkPolicyVersionsResponse'
+    { coreNetworkPolicyVersions =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Describes core network policy versions.
+listCoreNetworkPolicyVersionsResponse_coreNetworkPolicyVersions :: Lens.Lens' ListCoreNetworkPolicyVersionsResponse (Prelude.Maybe [CoreNetworkPolicyVersion])
+listCoreNetworkPolicyVersionsResponse_coreNetworkPolicyVersions = Lens.lens (\ListCoreNetworkPolicyVersionsResponse' {coreNetworkPolicyVersions} -> coreNetworkPolicyVersions) (\s@ListCoreNetworkPolicyVersionsResponse' {} a -> s {coreNetworkPolicyVersions = a} :: ListCoreNetworkPolicyVersionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+listCoreNetworkPolicyVersionsResponse_nextToken :: Lens.Lens' ListCoreNetworkPolicyVersionsResponse (Prelude.Maybe Prelude.Text)
+listCoreNetworkPolicyVersionsResponse_nextToken = Lens.lens (\ListCoreNetworkPolicyVersionsResponse' {nextToken} -> nextToken) (\s@ListCoreNetworkPolicyVersionsResponse' {} a -> s {nextToken = a} :: ListCoreNetworkPolicyVersionsResponse)
+
+-- | The response's http status code.
+listCoreNetworkPolicyVersionsResponse_httpStatus :: Lens.Lens' ListCoreNetworkPolicyVersionsResponse Prelude.Int
+listCoreNetworkPolicyVersionsResponse_httpStatus = Lens.lens (\ListCoreNetworkPolicyVersionsResponse' {httpStatus} -> httpStatus) (\s@ListCoreNetworkPolicyVersionsResponse' {} a -> s {httpStatus = a} :: ListCoreNetworkPolicyVersionsResponse)
+
+instance
+  Prelude.NFData
+    ListCoreNetworkPolicyVersionsResponse
+  where
+  rnf ListCoreNetworkPolicyVersionsResponse' {..} =
+    Prelude.rnf coreNetworkPolicyVersions
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/ListCoreNetworks.hs b/gen/Amazonka/NetworkManager/ListCoreNetworks.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/ListCoreNetworks.hs
@@ -0,0 +1,211 @@
+{-# 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.NetworkManager.ListCoreNetworks
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of owned and shared core networks.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.ListCoreNetworks
+  ( -- * Creating a Request
+    ListCoreNetworks (..),
+    newListCoreNetworks,
+
+    -- * Request Lenses
+    listCoreNetworks_maxResults,
+    listCoreNetworks_nextToken,
+
+    -- * Destructuring the Response
+    ListCoreNetworksResponse (..),
+    newListCoreNetworksResponse,
+
+    -- * Response Lenses
+    listCoreNetworksResponse_coreNetworks,
+    listCoreNetworksResponse_nextToken,
+    listCoreNetworksResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListCoreNetworks' smart constructor.
+data ListCoreNetworks = ListCoreNetworks'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCoreNetworks' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listCoreNetworks_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'listCoreNetworks_nextToken' - The token for the next page of results.
+newListCoreNetworks ::
+  ListCoreNetworks
+newListCoreNetworks =
+  ListCoreNetworks'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return.
+listCoreNetworks_maxResults :: Lens.Lens' ListCoreNetworks (Prelude.Maybe Prelude.Natural)
+listCoreNetworks_maxResults = Lens.lens (\ListCoreNetworks' {maxResults} -> maxResults) (\s@ListCoreNetworks' {} a -> s {maxResults = a} :: ListCoreNetworks)
+
+-- | The token for the next page of results.
+listCoreNetworks_nextToken :: Lens.Lens' ListCoreNetworks (Prelude.Maybe Prelude.Text)
+listCoreNetworks_nextToken = Lens.lens (\ListCoreNetworks' {nextToken} -> nextToken) (\s@ListCoreNetworks' {} a -> s {nextToken = a} :: ListCoreNetworks)
+
+instance Core.AWSPager ListCoreNetworks where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listCoreNetworksResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listCoreNetworksResponse_coreNetworks
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listCoreNetworks_nextToken
+          Lens..~ rs
+          Lens.^? listCoreNetworksResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListCoreNetworks where
+  type
+    AWSResponse ListCoreNetworks =
+      ListCoreNetworksResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListCoreNetworksResponse'
+            Prelude.<$> (x Data..?> "CoreNetworks" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListCoreNetworks where
+  hashWithSalt _salt ListCoreNetworks' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListCoreNetworks where
+  rnf ListCoreNetworks' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListCoreNetworks where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListCoreNetworks where
+  toPath = Prelude.const "/core-networks"
+
+instance Data.ToQuery ListCoreNetworks where
+  toQuery ListCoreNetworks' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListCoreNetworksResponse' smart constructor.
+data ListCoreNetworksResponse = ListCoreNetworksResponse'
+  { -- | Describes the list of core networks.
+    coreNetworks :: Prelude.Maybe [CoreNetworkSummary],
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCoreNetworksResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworks', 'listCoreNetworksResponse_coreNetworks' - Describes the list of core networks.
+--
+-- 'nextToken', 'listCoreNetworksResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'listCoreNetworksResponse_httpStatus' - The response's http status code.
+newListCoreNetworksResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListCoreNetworksResponse
+newListCoreNetworksResponse pHttpStatus_ =
+  ListCoreNetworksResponse'
+    { coreNetworks =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Describes the list of core networks.
+listCoreNetworksResponse_coreNetworks :: Lens.Lens' ListCoreNetworksResponse (Prelude.Maybe [CoreNetworkSummary])
+listCoreNetworksResponse_coreNetworks = Lens.lens (\ListCoreNetworksResponse' {coreNetworks} -> coreNetworks) (\s@ListCoreNetworksResponse' {} a -> s {coreNetworks = a} :: ListCoreNetworksResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+listCoreNetworksResponse_nextToken :: Lens.Lens' ListCoreNetworksResponse (Prelude.Maybe Prelude.Text)
+listCoreNetworksResponse_nextToken = Lens.lens (\ListCoreNetworksResponse' {nextToken} -> nextToken) (\s@ListCoreNetworksResponse' {} a -> s {nextToken = a} :: ListCoreNetworksResponse)
+
+-- | The response's http status code.
+listCoreNetworksResponse_httpStatus :: Lens.Lens' ListCoreNetworksResponse Prelude.Int
+listCoreNetworksResponse_httpStatus = Lens.lens (\ListCoreNetworksResponse' {httpStatus} -> httpStatus) (\s@ListCoreNetworksResponse' {} a -> s {httpStatus = a} :: ListCoreNetworksResponse)
+
+instance Prelude.NFData ListCoreNetworksResponse where
+  rnf ListCoreNetworksResponse' {..} =
+    Prelude.rnf coreNetworks
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/ListOrganizationServiceAccessStatus.hs b/gen/Amazonka/NetworkManager/ListOrganizationServiceAccessStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/ListOrganizationServiceAccessStatus.hs
@@ -0,0 +1,215 @@
+{-# 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.NetworkManager.ListOrganizationServiceAccessStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the status of the Service Linked Role (SLR) deployment for the
+-- accounts in a given Amazon Web Services Organization.
+module Amazonka.NetworkManager.ListOrganizationServiceAccessStatus
+  ( -- * Creating a Request
+    ListOrganizationServiceAccessStatus (..),
+    newListOrganizationServiceAccessStatus,
+
+    -- * Request Lenses
+    listOrganizationServiceAccessStatus_maxResults,
+    listOrganizationServiceAccessStatus_nextToken,
+
+    -- * Destructuring the Response
+    ListOrganizationServiceAccessStatusResponse (..),
+    newListOrganizationServiceAccessStatusResponse,
+
+    -- * Response Lenses
+    listOrganizationServiceAccessStatusResponse_nextToken,
+    listOrganizationServiceAccessStatusResponse_organizationStatus,
+    listOrganizationServiceAccessStatusResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListOrganizationServiceAccessStatus' smart constructor.
+data ListOrganizationServiceAccessStatus = ListOrganizationServiceAccessStatus'
+  { -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListOrganizationServiceAccessStatus' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listOrganizationServiceAccessStatus_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'listOrganizationServiceAccessStatus_nextToken' - The token for the next page of results.
+newListOrganizationServiceAccessStatus ::
+  ListOrganizationServiceAccessStatus
+newListOrganizationServiceAccessStatus =
+  ListOrganizationServiceAccessStatus'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return.
+listOrganizationServiceAccessStatus_maxResults :: Lens.Lens' ListOrganizationServiceAccessStatus (Prelude.Maybe Prelude.Natural)
+listOrganizationServiceAccessStatus_maxResults = Lens.lens (\ListOrganizationServiceAccessStatus' {maxResults} -> maxResults) (\s@ListOrganizationServiceAccessStatus' {} a -> s {maxResults = a} :: ListOrganizationServiceAccessStatus)
+
+-- | The token for the next page of results.
+listOrganizationServiceAccessStatus_nextToken :: Lens.Lens' ListOrganizationServiceAccessStatus (Prelude.Maybe Prelude.Text)
+listOrganizationServiceAccessStatus_nextToken = Lens.lens (\ListOrganizationServiceAccessStatus' {nextToken} -> nextToken) (\s@ListOrganizationServiceAccessStatus' {} a -> s {nextToken = a} :: ListOrganizationServiceAccessStatus)
+
+instance
+  Core.AWSRequest
+    ListOrganizationServiceAccessStatus
+  where
+  type
+    AWSResponse ListOrganizationServiceAccessStatus =
+      ListOrganizationServiceAccessStatusResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListOrganizationServiceAccessStatusResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "OrganizationStatus")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListOrganizationServiceAccessStatus
+  where
+  hashWithSalt
+    _salt
+    ListOrganizationServiceAccessStatus' {..} =
+      _salt
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+
+instance
+  Prelude.NFData
+    ListOrganizationServiceAccessStatus
+  where
+  rnf ListOrganizationServiceAccessStatus' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance
+  Data.ToHeaders
+    ListOrganizationServiceAccessStatus
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToPath
+    ListOrganizationServiceAccessStatus
+  where
+  toPath =
+    Prelude.const "/organizations/service-access"
+
+instance
+  Data.ToQuery
+    ListOrganizationServiceAccessStatus
+  where
+  toQuery ListOrganizationServiceAccessStatus' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListOrganizationServiceAccessStatusResponse' smart constructor.
+data ListOrganizationServiceAccessStatusResponse = ListOrganizationServiceAccessStatusResponse'
+  { -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Displays the status of an Amazon Web Services Organization.
+    organizationStatus :: Prelude.Maybe OrganizationStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListOrganizationServiceAccessStatusResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listOrganizationServiceAccessStatusResponse_nextToken' - The token for the next page of results.
+--
+-- 'organizationStatus', 'listOrganizationServiceAccessStatusResponse_organizationStatus' - Displays the status of an Amazon Web Services Organization.
+--
+-- 'httpStatus', 'listOrganizationServiceAccessStatusResponse_httpStatus' - The response's http status code.
+newListOrganizationServiceAccessStatusResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListOrganizationServiceAccessStatusResponse
+newListOrganizationServiceAccessStatusResponse
+  pHttpStatus_ =
+    ListOrganizationServiceAccessStatusResponse'
+      { nextToken =
+          Prelude.Nothing,
+        organizationStatus =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The token for the next page of results.
+listOrganizationServiceAccessStatusResponse_nextToken :: Lens.Lens' ListOrganizationServiceAccessStatusResponse (Prelude.Maybe Prelude.Text)
+listOrganizationServiceAccessStatusResponse_nextToken = Lens.lens (\ListOrganizationServiceAccessStatusResponse' {nextToken} -> nextToken) (\s@ListOrganizationServiceAccessStatusResponse' {} a -> s {nextToken = a} :: ListOrganizationServiceAccessStatusResponse)
+
+-- | Displays the status of an Amazon Web Services Organization.
+listOrganizationServiceAccessStatusResponse_organizationStatus :: Lens.Lens' ListOrganizationServiceAccessStatusResponse (Prelude.Maybe OrganizationStatus)
+listOrganizationServiceAccessStatusResponse_organizationStatus = Lens.lens (\ListOrganizationServiceAccessStatusResponse' {organizationStatus} -> organizationStatus) (\s@ListOrganizationServiceAccessStatusResponse' {} a -> s {organizationStatus = a} :: ListOrganizationServiceAccessStatusResponse)
+
+-- | The response's http status code.
+listOrganizationServiceAccessStatusResponse_httpStatus :: Lens.Lens' ListOrganizationServiceAccessStatusResponse Prelude.Int
+listOrganizationServiceAccessStatusResponse_httpStatus = Lens.lens (\ListOrganizationServiceAccessStatusResponse' {httpStatus} -> httpStatus) (\s@ListOrganizationServiceAccessStatusResponse' {} a -> s {httpStatus = a} :: ListOrganizationServiceAccessStatusResponse)
+
+instance
+  Prelude.NFData
+    ListOrganizationServiceAccessStatusResponse
+  where
+  rnf ListOrganizationServiceAccessStatusResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf organizationStatus
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/ListPeerings.hs b/gen/Amazonka/NetworkManager/ListPeerings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/ListPeerings.hs
@@ -0,0 +1,260 @@
+{-# 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.NetworkManager.ListPeerings
+-- 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 peerings for a core network.
+--
+-- This operation returns paginated results.
+module Amazonka.NetworkManager.ListPeerings
+  ( -- * Creating a Request
+    ListPeerings (..),
+    newListPeerings,
+
+    -- * Request Lenses
+    listPeerings_coreNetworkId,
+    listPeerings_edgeLocation,
+    listPeerings_maxResults,
+    listPeerings_nextToken,
+    listPeerings_peeringType,
+    listPeerings_state,
+
+    -- * Destructuring the Response
+    ListPeeringsResponse (..),
+    newListPeeringsResponse,
+
+    -- * Response Lenses
+    listPeeringsResponse_nextToken,
+    listPeeringsResponse_peerings,
+    listPeeringsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListPeerings' smart constructor.
+data ListPeerings = ListPeerings'
+  { -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | Returns a list edge locations for the
+    edgeLocation :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Returns a list of a peering requests.
+    peeringType :: Prelude.Maybe PeeringType,
+    -- | Returns a list of the peering request states.
+    state :: Prelude.Maybe PeeringState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPeerings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkId', 'listPeerings_coreNetworkId' - The ID of a core network.
+--
+-- 'edgeLocation', 'listPeerings_edgeLocation' - Returns a list edge locations for the
+--
+-- 'maxResults', 'listPeerings_maxResults' - The maximum number of results to return.
+--
+-- 'nextToken', 'listPeerings_nextToken' - The token for the next page of results.
+--
+-- 'peeringType', 'listPeerings_peeringType' - Returns a list of a peering requests.
+--
+-- 'state', 'listPeerings_state' - Returns a list of the peering request states.
+newListPeerings ::
+  ListPeerings
+newListPeerings =
+  ListPeerings'
+    { coreNetworkId = Prelude.Nothing,
+      edgeLocation = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      peeringType = Prelude.Nothing,
+      state = Prelude.Nothing
+    }
+
+-- | The ID of a core network.
+listPeerings_coreNetworkId :: Lens.Lens' ListPeerings (Prelude.Maybe Prelude.Text)
+listPeerings_coreNetworkId = Lens.lens (\ListPeerings' {coreNetworkId} -> coreNetworkId) (\s@ListPeerings' {} a -> s {coreNetworkId = a} :: ListPeerings)
+
+-- | Returns a list edge locations for the
+listPeerings_edgeLocation :: Lens.Lens' ListPeerings (Prelude.Maybe Prelude.Text)
+listPeerings_edgeLocation = Lens.lens (\ListPeerings' {edgeLocation} -> edgeLocation) (\s@ListPeerings' {} a -> s {edgeLocation = a} :: ListPeerings)
+
+-- | The maximum number of results to return.
+listPeerings_maxResults :: Lens.Lens' ListPeerings (Prelude.Maybe Prelude.Natural)
+listPeerings_maxResults = Lens.lens (\ListPeerings' {maxResults} -> maxResults) (\s@ListPeerings' {} a -> s {maxResults = a} :: ListPeerings)
+
+-- | The token for the next page of results.
+listPeerings_nextToken :: Lens.Lens' ListPeerings (Prelude.Maybe Prelude.Text)
+listPeerings_nextToken = Lens.lens (\ListPeerings' {nextToken} -> nextToken) (\s@ListPeerings' {} a -> s {nextToken = a} :: ListPeerings)
+
+-- | Returns a list of a peering requests.
+listPeerings_peeringType :: Lens.Lens' ListPeerings (Prelude.Maybe PeeringType)
+listPeerings_peeringType = Lens.lens (\ListPeerings' {peeringType} -> peeringType) (\s@ListPeerings' {} a -> s {peeringType = a} :: ListPeerings)
+
+-- | Returns a list of the peering request states.
+listPeerings_state :: Lens.Lens' ListPeerings (Prelude.Maybe PeeringState)
+listPeerings_state = Lens.lens (\ListPeerings' {state} -> state) (\s@ListPeerings' {} a -> s {state = a} :: ListPeerings)
+
+instance Core.AWSPager ListPeerings where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listPeeringsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listPeeringsResponse_peerings
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listPeerings_nextToken
+          Lens..~ rs
+          Lens.^? listPeeringsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListPeerings where
+  type AWSResponse ListPeerings = ListPeeringsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListPeeringsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Peerings" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListPeerings where
+  hashWithSalt _salt ListPeerings' {..} =
+    _salt
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` edgeLocation
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` peeringType
+      `Prelude.hashWithSalt` state
+
+instance Prelude.NFData ListPeerings where
+  rnf ListPeerings' {..} =
+    Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf edgeLocation
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf peeringType
+      `Prelude.seq` Prelude.rnf state
+
+instance Data.ToHeaders ListPeerings where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListPeerings where
+  toPath = Prelude.const "/peerings"
+
+instance Data.ToQuery ListPeerings where
+  toQuery ListPeerings' {..} =
+    Prelude.mconcat
+      [ "coreNetworkId" Data.=: coreNetworkId,
+        "edgeLocation" Data.=: edgeLocation,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "peeringType" Data.=: peeringType,
+        "state" Data.=: state
+      ]
+
+-- | /See:/ 'newListPeeringsResponse' smart constructor.
+data ListPeeringsResponse = ListPeeringsResponse'
+  { -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Lists the transit gateway peerings for the @ListPeerings@ request.
+    peerings :: Prelude.Maybe [Peering],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPeeringsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listPeeringsResponse_nextToken' - The token for the next page of results.
+--
+-- 'peerings', 'listPeeringsResponse_peerings' - Lists the transit gateway peerings for the @ListPeerings@ request.
+--
+-- 'httpStatus', 'listPeeringsResponse_httpStatus' - The response's http status code.
+newListPeeringsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListPeeringsResponse
+newListPeeringsResponse pHttpStatus_ =
+  ListPeeringsResponse'
+    { nextToken = Prelude.Nothing,
+      peerings = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token for the next page of results.
+listPeeringsResponse_nextToken :: Lens.Lens' ListPeeringsResponse (Prelude.Maybe Prelude.Text)
+listPeeringsResponse_nextToken = Lens.lens (\ListPeeringsResponse' {nextToken} -> nextToken) (\s@ListPeeringsResponse' {} a -> s {nextToken = a} :: ListPeeringsResponse)
+
+-- | Lists the transit gateway peerings for the @ListPeerings@ request.
+listPeeringsResponse_peerings :: Lens.Lens' ListPeeringsResponse (Prelude.Maybe [Peering])
+listPeeringsResponse_peerings = Lens.lens (\ListPeeringsResponse' {peerings} -> peerings) (\s@ListPeeringsResponse' {} a -> s {peerings = a} :: ListPeeringsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listPeeringsResponse_httpStatus :: Lens.Lens' ListPeeringsResponse Prelude.Int
+listPeeringsResponse_httpStatus = Lens.lens (\ListPeeringsResponse' {httpStatus} -> httpStatus) (\s@ListPeeringsResponse' {} a -> s {httpStatus = a} :: ListPeeringsResponse)
+
+instance Prelude.NFData ListPeeringsResponse where
+  rnf ListPeeringsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf peerings
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/ListTagsForResource.hs b/gen/Amazonka/NetworkManager/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/ListTagsForResource.hs
@@ -0,0 +1,159 @@
+{-# 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.NetworkManager.ListTagsForResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the tags for a specified resource.
+module Amazonka.NetworkManager.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tagList,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the resource.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The Amazon Resource Name (ARN) of the resource.
+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "TagList" 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.
+    tagList :: Prelude.Maybe [Tag],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tagList', 'listTagsForResourceResponse_tagList' - The list of tags.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tagList =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of tags.
+listTagsForResourceResponse_tagList :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe [Tag])
+listTagsForResourceResponse_tagList = Lens.lens (\ListTagsForResourceResponse' {tagList} -> tagList) (\s@ListTagsForResourceResponse' {} a -> s {tagList = 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 tagList
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/PutCoreNetworkPolicy.hs b/gen/Amazonka/NetworkManager/PutCoreNetworkPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/PutCoreNetworkPolicy.hs
@@ -0,0 +1,234 @@
+{-# 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.NetworkManager.PutCoreNetworkPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new, immutable version of a core network policy. A subsequent
+-- change set is created showing the differences between the LIVE policy
+-- and the submitted policy.
+module Amazonka.NetworkManager.PutCoreNetworkPolicy
+  ( -- * Creating a Request
+    PutCoreNetworkPolicy (..),
+    newPutCoreNetworkPolicy,
+
+    -- * Request Lenses
+    putCoreNetworkPolicy_clientToken,
+    putCoreNetworkPolicy_description,
+    putCoreNetworkPolicy_latestVersionId,
+    putCoreNetworkPolicy_coreNetworkId,
+    putCoreNetworkPolicy_policyDocument,
+
+    -- * Destructuring the Response
+    PutCoreNetworkPolicyResponse (..),
+    newPutCoreNetworkPolicyResponse,
+
+    -- * Response Lenses
+    putCoreNetworkPolicyResponse_coreNetworkPolicy,
+    putCoreNetworkPolicyResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutCoreNetworkPolicy' smart constructor.
+data PutCoreNetworkPolicy = PutCoreNetworkPolicy'
+  { -- | The client token associated with the request.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | a core network policy description.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network policy.
+    latestVersionId :: Prelude.Maybe Prelude.Int,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Text,
+    -- | The policy document.
+    policyDocument :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutCoreNetworkPolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'putCoreNetworkPolicy_clientToken' - The client token associated with the request.
+--
+-- 'description', 'putCoreNetworkPolicy_description' - a core network policy description.
+--
+-- 'latestVersionId', 'putCoreNetworkPolicy_latestVersionId' - The ID of a core network policy.
+--
+-- 'coreNetworkId', 'putCoreNetworkPolicy_coreNetworkId' - The ID of a core network.
+--
+-- 'policyDocument', 'putCoreNetworkPolicy_policyDocument' - The policy document.
+newPutCoreNetworkPolicy ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  -- | 'policyDocument'
+  Prelude.Text ->
+  PutCoreNetworkPolicy
+newPutCoreNetworkPolicy
+  pCoreNetworkId_
+  pPolicyDocument_ =
+    PutCoreNetworkPolicy'
+      { clientToken =
+          Prelude.Nothing,
+        description = Prelude.Nothing,
+        latestVersionId = Prelude.Nothing,
+        coreNetworkId = pCoreNetworkId_,
+        policyDocument = pPolicyDocument_
+      }
+
+-- | The client token associated with the request.
+putCoreNetworkPolicy_clientToken :: Lens.Lens' PutCoreNetworkPolicy (Prelude.Maybe Prelude.Text)
+putCoreNetworkPolicy_clientToken = Lens.lens (\PutCoreNetworkPolicy' {clientToken} -> clientToken) (\s@PutCoreNetworkPolicy' {} a -> s {clientToken = a} :: PutCoreNetworkPolicy)
+
+-- | a core network policy description.
+putCoreNetworkPolicy_description :: Lens.Lens' PutCoreNetworkPolicy (Prelude.Maybe Prelude.Text)
+putCoreNetworkPolicy_description = Lens.lens (\PutCoreNetworkPolicy' {description} -> description) (\s@PutCoreNetworkPolicy' {} a -> s {description = a} :: PutCoreNetworkPolicy)
+
+-- | The ID of a core network policy.
+putCoreNetworkPolicy_latestVersionId :: Lens.Lens' PutCoreNetworkPolicy (Prelude.Maybe Prelude.Int)
+putCoreNetworkPolicy_latestVersionId = Lens.lens (\PutCoreNetworkPolicy' {latestVersionId} -> latestVersionId) (\s@PutCoreNetworkPolicy' {} a -> s {latestVersionId = a} :: PutCoreNetworkPolicy)
+
+-- | The ID of a core network.
+putCoreNetworkPolicy_coreNetworkId :: Lens.Lens' PutCoreNetworkPolicy Prelude.Text
+putCoreNetworkPolicy_coreNetworkId = Lens.lens (\PutCoreNetworkPolicy' {coreNetworkId} -> coreNetworkId) (\s@PutCoreNetworkPolicy' {} a -> s {coreNetworkId = a} :: PutCoreNetworkPolicy)
+
+-- | The policy document.
+putCoreNetworkPolicy_policyDocument :: Lens.Lens' PutCoreNetworkPolicy Prelude.Text
+putCoreNetworkPolicy_policyDocument = Lens.lens (\PutCoreNetworkPolicy' {policyDocument} -> policyDocument) (\s@PutCoreNetworkPolicy' {} a -> s {policyDocument = a} :: PutCoreNetworkPolicy)
+
+instance Core.AWSRequest PutCoreNetworkPolicy where
+  type
+    AWSResponse PutCoreNetworkPolicy =
+      PutCoreNetworkPolicyResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutCoreNetworkPolicyResponse'
+            Prelude.<$> (x Data..?> "CoreNetworkPolicy")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable PutCoreNetworkPolicy where
+  hashWithSalt _salt PutCoreNetworkPolicy' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` latestVersionId
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` policyDocument
+
+instance Prelude.NFData PutCoreNetworkPolicy where
+  rnf PutCoreNetworkPolicy' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf latestVersionId
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf policyDocument
+
+instance Data.ToHeaders PutCoreNetworkPolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON PutCoreNetworkPolicy where
+  toJSON PutCoreNetworkPolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("Description" Data..=) Prelude.<$> description,
+            ("LatestVersionId" Data..=)
+              Prelude.<$> latestVersionId,
+            Prelude.Just
+              ("PolicyDocument" Data..= policyDocument)
+          ]
+      )
+
+instance Data.ToPath PutCoreNetworkPolicy where
+  toPath PutCoreNetworkPolicy' {..} =
+    Prelude.mconcat
+      [ "/core-networks/",
+        Data.toBS coreNetworkId,
+        "/core-network-policy"
+      ]
+
+instance Data.ToQuery PutCoreNetworkPolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutCoreNetworkPolicyResponse' smart constructor.
+data PutCoreNetworkPolicyResponse = PutCoreNetworkPolicyResponse'
+  { -- | Describes the changed core network policy.
+    coreNetworkPolicy :: Prelude.Maybe CoreNetworkPolicy,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutCoreNetworkPolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkPolicy', 'putCoreNetworkPolicyResponse_coreNetworkPolicy' - Describes the changed core network policy.
+--
+-- 'httpStatus', 'putCoreNetworkPolicyResponse_httpStatus' - The response's http status code.
+newPutCoreNetworkPolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutCoreNetworkPolicyResponse
+newPutCoreNetworkPolicyResponse pHttpStatus_ =
+  PutCoreNetworkPolicyResponse'
+    { coreNetworkPolicy =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Describes the changed core network policy.
+putCoreNetworkPolicyResponse_coreNetworkPolicy :: Lens.Lens' PutCoreNetworkPolicyResponse (Prelude.Maybe CoreNetworkPolicy)
+putCoreNetworkPolicyResponse_coreNetworkPolicy = Lens.lens (\PutCoreNetworkPolicyResponse' {coreNetworkPolicy} -> coreNetworkPolicy) (\s@PutCoreNetworkPolicyResponse' {} a -> s {coreNetworkPolicy = a} :: PutCoreNetworkPolicyResponse)
+
+-- | The response's http status code.
+putCoreNetworkPolicyResponse_httpStatus :: Lens.Lens' PutCoreNetworkPolicyResponse Prelude.Int
+putCoreNetworkPolicyResponse_httpStatus = Lens.lens (\PutCoreNetworkPolicyResponse' {httpStatus} -> httpStatus) (\s@PutCoreNetworkPolicyResponse' {} a -> s {httpStatus = a} :: PutCoreNetworkPolicyResponse)
+
+instance Prelude.NFData PutCoreNetworkPolicyResponse where
+  rnf PutCoreNetworkPolicyResponse' {..} =
+    Prelude.rnf coreNetworkPolicy
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/PutResourcePolicy.hs b/gen/Amazonka/NetworkManager/PutResourcePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/PutResourcePolicy.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.NetworkManager.PutResourcePolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates or updates a resource policy.
+module Amazonka.NetworkManager.PutResourcePolicy
+  ( -- * Creating a Request
+    PutResourcePolicy (..),
+    newPutResourcePolicy,
+
+    -- * Request Lenses
+    putResourcePolicy_policyDocument,
+    putResourcePolicy_resourceArn,
+
+    -- * Destructuring the Response
+    PutResourcePolicyResponse (..),
+    newPutResourcePolicyResponse,
+
+    -- * Response Lenses
+    putResourcePolicyResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutResourcePolicy' smart constructor.
+data PutResourcePolicy = PutResourcePolicy'
+  { -- | The JSON resource policy document.
+    policyDocument :: Prelude.Text,
+    -- | The ARN of the resource policy.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutResourcePolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'policyDocument', 'putResourcePolicy_policyDocument' - The JSON resource policy document.
+--
+-- 'resourceArn', 'putResourcePolicy_resourceArn' - The ARN of the resource policy.
+newPutResourcePolicy ::
+  -- | 'policyDocument'
+  Prelude.Text ->
+  -- | 'resourceArn'
+  Prelude.Text ->
+  PutResourcePolicy
+newPutResourcePolicy pPolicyDocument_ pResourceArn_ =
+  PutResourcePolicy'
+    { policyDocument =
+        pPolicyDocument_,
+      resourceArn = pResourceArn_
+    }
+
+-- | The JSON resource policy document.
+putResourcePolicy_policyDocument :: Lens.Lens' PutResourcePolicy Prelude.Text
+putResourcePolicy_policyDocument = Lens.lens (\PutResourcePolicy' {policyDocument} -> policyDocument) (\s@PutResourcePolicy' {} a -> s {policyDocument = a} :: PutResourcePolicy)
+
+-- | The ARN of the resource policy.
+putResourcePolicy_resourceArn :: Lens.Lens' PutResourcePolicy Prelude.Text
+putResourcePolicy_resourceArn = Lens.lens (\PutResourcePolicy' {resourceArn} -> resourceArn) (\s@PutResourcePolicy' {} a -> s {resourceArn = a} :: PutResourcePolicy)
+
+instance Core.AWSRequest PutResourcePolicy where
+  type
+    AWSResponse PutResourcePolicy =
+      PutResourcePolicyResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          PutResourcePolicyResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable PutResourcePolicy where
+  hashWithSalt _salt PutResourcePolicy' {..} =
+    _salt
+      `Prelude.hashWithSalt` policyDocument
+      `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData PutResourcePolicy where
+  rnf PutResourcePolicy' {..} =
+    Prelude.rnf policyDocument
+      `Prelude.seq` Prelude.rnf resourceArn
+
+instance Data.ToHeaders PutResourcePolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON PutResourcePolicy where
+  toJSON PutResourcePolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("PolicyDocument" Data..= policyDocument)
+          ]
+      )
+
+instance Data.ToPath PutResourcePolicy where
+  toPath PutResourcePolicy' {..} =
+    Prelude.mconcat
+      ["/resource-policy/", Data.toBS resourceArn]
+
+instance Data.ToQuery PutResourcePolicy where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutResourcePolicyResponse' smart constructor.
+data PutResourcePolicyResponse = PutResourcePolicyResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutResourcePolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'putResourcePolicyResponse_httpStatus' - The response's http status code.
+newPutResourcePolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutResourcePolicyResponse
+newPutResourcePolicyResponse pHttpStatus_ =
+  PutResourcePolicyResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+putResourcePolicyResponse_httpStatus :: Lens.Lens' PutResourcePolicyResponse Prelude.Int
+putResourcePolicyResponse_httpStatus = Lens.lens (\PutResourcePolicyResponse' {httpStatus} -> httpStatus) (\s@PutResourcePolicyResponse' {} a -> s {httpStatus = a} :: PutResourcePolicyResponse)
+
+instance Prelude.NFData PutResourcePolicyResponse where
+  rnf PutResourcePolicyResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/RegisterTransitGateway.hs b/gen/Amazonka/NetworkManager/RegisterTransitGateway.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/RegisterTransitGateway.hs
@@ -0,0 +1,198 @@
+{-# 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.NetworkManager.RegisterTransitGateway
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Registers a transit gateway in your global network. The transit gateway
+-- can be in any Amazon Web Services Region, but it must be owned by the
+-- same Amazon Web Services account that owns the global network. You
+-- cannot register a transit gateway in more than one global network.
+module Amazonka.NetworkManager.RegisterTransitGateway
+  ( -- * Creating a Request
+    RegisterTransitGateway (..),
+    newRegisterTransitGateway,
+
+    -- * Request Lenses
+    registerTransitGateway_globalNetworkId,
+    registerTransitGateway_transitGatewayArn,
+
+    -- * Destructuring the Response
+    RegisterTransitGatewayResponse (..),
+    newRegisterTransitGatewayResponse,
+
+    -- * Response Lenses
+    registerTransitGatewayResponse_transitGatewayRegistration,
+    registerTransitGatewayResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRegisterTransitGateway' smart constructor.
+data RegisterTransitGateway = RegisterTransitGateway'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the transit gateway.
+    transitGatewayArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisterTransitGateway' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'registerTransitGateway_globalNetworkId' - The ID of the global network.
+--
+-- 'transitGatewayArn', 'registerTransitGateway_transitGatewayArn' - The Amazon Resource Name (ARN) of the transit gateway.
+newRegisterTransitGateway ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'transitGatewayArn'
+  Prelude.Text ->
+  RegisterTransitGateway
+newRegisterTransitGateway
+  pGlobalNetworkId_
+  pTransitGatewayArn_ =
+    RegisterTransitGateway'
+      { globalNetworkId =
+          pGlobalNetworkId_,
+        transitGatewayArn = pTransitGatewayArn_
+      }
+
+-- | The ID of the global network.
+registerTransitGateway_globalNetworkId :: Lens.Lens' RegisterTransitGateway Prelude.Text
+registerTransitGateway_globalNetworkId = Lens.lens (\RegisterTransitGateway' {globalNetworkId} -> globalNetworkId) (\s@RegisterTransitGateway' {} a -> s {globalNetworkId = a} :: RegisterTransitGateway)
+
+-- | The Amazon Resource Name (ARN) of the transit gateway.
+registerTransitGateway_transitGatewayArn :: Lens.Lens' RegisterTransitGateway Prelude.Text
+registerTransitGateway_transitGatewayArn = Lens.lens (\RegisterTransitGateway' {transitGatewayArn} -> transitGatewayArn) (\s@RegisterTransitGateway' {} a -> s {transitGatewayArn = a} :: RegisterTransitGateway)
+
+instance Core.AWSRequest RegisterTransitGateway where
+  type
+    AWSResponse RegisterTransitGateway =
+      RegisterTransitGatewayResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RegisterTransitGatewayResponse'
+            Prelude.<$> (x Data..?> "TransitGatewayRegistration")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RegisterTransitGateway where
+  hashWithSalt _salt RegisterTransitGateway' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` transitGatewayArn
+
+instance Prelude.NFData RegisterTransitGateway where
+  rnf RegisterTransitGateway' {..} =
+    Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf transitGatewayArn
+
+instance Data.ToHeaders RegisterTransitGateway where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RegisterTransitGateway where
+  toJSON RegisterTransitGateway' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("TransitGatewayArn" Data..= transitGatewayArn)
+          ]
+      )
+
+instance Data.ToPath RegisterTransitGateway where
+  toPath RegisterTransitGateway' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/transit-gateway-registrations"
+      ]
+
+instance Data.ToQuery RegisterTransitGateway where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRegisterTransitGatewayResponse' smart constructor.
+data RegisterTransitGatewayResponse = RegisterTransitGatewayResponse'
+  { -- | Information about the transit gateway registration.
+    transitGatewayRegistration :: Prelude.Maybe TransitGatewayRegistration,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisterTransitGatewayResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'transitGatewayRegistration', 'registerTransitGatewayResponse_transitGatewayRegistration' - Information about the transit gateway registration.
+--
+-- 'httpStatus', 'registerTransitGatewayResponse_httpStatus' - The response's http status code.
+newRegisterTransitGatewayResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RegisterTransitGatewayResponse
+newRegisterTransitGatewayResponse pHttpStatus_ =
+  RegisterTransitGatewayResponse'
+    { transitGatewayRegistration =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the transit gateway registration.
+registerTransitGatewayResponse_transitGatewayRegistration :: Lens.Lens' RegisterTransitGatewayResponse (Prelude.Maybe TransitGatewayRegistration)
+registerTransitGatewayResponse_transitGatewayRegistration = Lens.lens (\RegisterTransitGatewayResponse' {transitGatewayRegistration} -> transitGatewayRegistration) (\s@RegisterTransitGatewayResponse' {} a -> s {transitGatewayRegistration = a} :: RegisterTransitGatewayResponse)
+
+-- | The response's http status code.
+registerTransitGatewayResponse_httpStatus :: Lens.Lens' RegisterTransitGatewayResponse Prelude.Int
+registerTransitGatewayResponse_httpStatus = Lens.lens (\RegisterTransitGatewayResponse' {httpStatus} -> httpStatus) (\s@RegisterTransitGatewayResponse' {} a -> s {httpStatus = a} :: RegisterTransitGatewayResponse)
+
+instance
+  Prelude.NFData
+    RegisterTransitGatewayResponse
+  where
+  rnf RegisterTransitGatewayResponse' {..} =
+    Prelude.rnf transitGatewayRegistration
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/RejectAttachment.hs b/gen/Amazonka/NetworkManager/RejectAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/RejectAttachment.hs
@@ -0,0 +1,162 @@
+{-# 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.NetworkManager.RejectAttachment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Rejects a core network attachment request.
+module Amazonka.NetworkManager.RejectAttachment
+  ( -- * Creating a Request
+    RejectAttachment (..),
+    newRejectAttachment,
+
+    -- * Request Lenses
+    rejectAttachment_attachmentId,
+
+    -- * Destructuring the Response
+    RejectAttachmentResponse (..),
+    newRejectAttachmentResponse,
+
+    -- * Response Lenses
+    rejectAttachmentResponse_attachment,
+    rejectAttachmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRejectAttachment' smart constructor.
+data RejectAttachment = RejectAttachment'
+  { -- | The ID of the attachment.
+    attachmentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RejectAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachmentId', 'rejectAttachment_attachmentId' - The ID of the attachment.
+newRejectAttachment ::
+  -- | 'attachmentId'
+  Prelude.Text ->
+  RejectAttachment
+newRejectAttachment pAttachmentId_ =
+  RejectAttachment' {attachmentId = pAttachmentId_}
+
+-- | The ID of the attachment.
+rejectAttachment_attachmentId :: Lens.Lens' RejectAttachment Prelude.Text
+rejectAttachment_attachmentId = Lens.lens (\RejectAttachment' {attachmentId} -> attachmentId) (\s@RejectAttachment' {} a -> s {attachmentId = a} :: RejectAttachment)
+
+instance Core.AWSRequest RejectAttachment where
+  type
+    AWSResponse RejectAttachment =
+      RejectAttachmentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RejectAttachmentResponse'
+            Prelude.<$> (x Data..?> "Attachment")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RejectAttachment where
+  hashWithSalt _salt RejectAttachment' {..} =
+    _salt `Prelude.hashWithSalt` attachmentId
+
+instance Prelude.NFData RejectAttachment where
+  rnf RejectAttachment' {..} = Prelude.rnf attachmentId
+
+instance Data.ToHeaders RejectAttachment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RejectAttachment where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath RejectAttachment where
+  toPath RejectAttachment' {..} =
+    Prelude.mconcat
+      ["/attachments/", Data.toBS attachmentId, "/reject"]
+
+instance Data.ToQuery RejectAttachment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRejectAttachmentResponse' smart constructor.
+data RejectAttachmentResponse = RejectAttachmentResponse'
+  { -- | Describes the rejected attachment request.
+    attachment :: Prelude.Maybe Attachment,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RejectAttachmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachment', 'rejectAttachmentResponse_attachment' - Describes the rejected attachment request.
+--
+-- 'httpStatus', 'rejectAttachmentResponse_httpStatus' - The response's http status code.
+newRejectAttachmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RejectAttachmentResponse
+newRejectAttachmentResponse pHttpStatus_ =
+  RejectAttachmentResponse'
+    { attachment =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Describes the rejected attachment request.
+rejectAttachmentResponse_attachment :: Lens.Lens' RejectAttachmentResponse (Prelude.Maybe Attachment)
+rejectAttachmentResponse_attachment = Lens.lens (\RejectAttachmentResponse' {attachment} -> attachment) (\s@RejectAttachmentResponse' {} a -> s {attachment = a} :: RejectAttachmentResponse)
+
+-- | The response's http status code.
+rejectAttachmentResponse_httpStatus :: Lens.Lens' RejectAttachmentResponse Prelude.Int
+rejectAttachmentResponse_httpStatus = Lens.lens (\RejectAttachmentResponse' {httpStatus} -> httpStatus) (\s@RejectAttachmentResponse' {} a -> s {httpStatus = a} :: RejectAttachmentResponse)
+
+instance Prelude.NFData RejectAttachmentResponse where
+  rnf RejectAttachmentResponse' {..} =
+    Prelude.rnf attachment
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/RestoreCoreNetworkPolicyVersion.hs b/gen/Amazonka/NetworkManager/RestoreCoreNetworkPolicyVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/RestoreCoreNetworkPolicyVersion.hs
@@ -0,0 +1,208 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.RestoreCoreNetworkPolicyVersion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Restores a previous policy version as a new, immutable version of a core
+-- network policy. A subsequent change set is created showing the
+-- differences between the LIVE policy and restored policy.
+module Amazonka.NetworkManager.RestoreCoreNetworkPolicyVersion
+  ( -- * Creating a Request
+    RestoreCoreNetworkPolicyVersion (..),
+    newRestoreCoreNetworkPolicyVersion,
+
+    -- * Request Lenses
+    restoreCoreNetworkPolicyVersion_coreNetworkId,
+    restoreCoreNetworkPolicyVersion_policyVersionId,
+
+    -- * Destructuring the Response
+    RestoreCoreNetworkPolicyVersionResponse (..),
+    newRestoreCoreNetworkPolicyVersionResponse,
+
+    -- * Response Lenses
+    restoreCoreNetworkPolicyVersionResponse_coreNetworkPolicy,
+    restoreCoreNetworkPolicyVersionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRestoreCoreNetworkPolicyVersion' smart constructor.
+data RestoreCoreNetworkPolicyVersion = RestoreCoreNetworkPolicyVersion'
+  { -- | The ID of a core network.
+    coreNetworkId :: Prelude.Text,
+    -- | The ID of the policy version to restore.
+    policyVersionId :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RestoreCoreNetworkPolicyVersion' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkId', 'restoreCoreNetworkPolicyVersion_coreNetworkId' - The ID of a core network.
+--
+-- 'policyVersionId', 'restoreCoreNetworkPolicyVersion_policyVersionId' - The ID of the policy version to restore.
+newRestoreCoreNetworkPolicyVersion ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  -- | 'policyVersionId'
+  Prelude.Int ->
+  RestoreCoreNetworkPolicyVersion
+newRestoreCoreNetworkPolicyVersion
+  pCoreNetworkId_
+  pPolicyVersionId_ =
+    RestoreCoreNetworkPolicyVersion'
+      { coreNetworkId =
+          pCoreNetworkId_,
+        policyVersionId = pPolicyVersionId_
+      }
+
+-- | The ID of a core network.
+restoreCoreNetworkPolicyVersion_coreNetworkId :: Lens.Lens' RestoreCoreNetworkPolicyVersion Prelude.Text
+restoreCoreNetworkPolicyVersion_coreNetworkId = Lens.lens (\RestoreCoreNetworkPolicyVersion' {coreNetworkId} -> coreNetworkId) (\s@RestoreCoreNetworkPolicyVersion' {} a -> s {coreNetworkId = a} :: RestoreCoreNetworkPolicyVersion)
+
+-- | The ID of the policy version to restore.
+restoreCoreNetworkPolicyVersion_policyVersionId :: Lens.Lens' RestoreCoreNetworkPolicyVersion Prelude.Int
+restoreCoreNetworkPolicyVersion_policyVersionId = Lens.lens (\RestoreCoreNetworkPolicyVersion' {policyVersionId} -> policyVersionId) (\s@RestoreCoreNetworkPolicyVersion' {} a -> s {policyVersionId = a} :: RestoreCoreNetworkPolicyVersion)
+
+instance
+  Core.AWSRequest
+    RestoreCoreNetworkPolicyVersion
+  where
+  type
+    AWSResponse RestoreCoreNetworkPolicyVersion =
+      RestoreCoreNetworkPolicyVersionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RestoreCoreNetworkPolicyVersionResponse'
+            Prelude.<$> (x Data..?> "CoreNetworkPolicy")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    RestoreCoreNetworkPolicyVersion
+  where
+  hashWithSalt
+    _salt
+    RestoreCoreNetworkPolicyVersion' {..} =
+      _salt
+        `Prelude.hashWithSalt` coreNetworkId
+        `Prelude.hashWithSalt` policyVersionId
+
+instance
+  Prelude.NFData
+    RestoreCoreNetworkPolicyVersion
+  where
+  rnf RestoreCoreNetworkPolicyVersion' {..} =
+    Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf policyVersionId
+
+instance
+  Data.ToHeaders
+    RestoreCoreNetworkPolicyVersion
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RestoreCoreNetworkPolicyVersion where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath RestoreCoreNetworkPolicyVersion where
+  toPath RestoreCoreNetworkPolicyVersion' {..} =
+    Prelude.mconcat
+      [ "/core-networks/",
+        Data.toBS coreNetworkId,
+        "/core-network-policy-versions/",
+        Data.toBS policyVersionId,
+        "/restore"
+      ]
+
+instance Data.ToQuery RestoreCoreNetworkPolicyVersion where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRestoreCoreNetworkPolicyVersionResponse' smart constructor.
+data RestoreCoreNetworkPolicyVersionResponse = RestoreCoreNetworkPolicyVersionResponse'
+  { -- | Describes the restored core network policy.
+    coreNetworkPolicy :: Prelude.Maybe CoreNetworkPolicy,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RestoreCoreNetworkPolicyVersionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkPolicy', 'restoreCoreNetworkPolicyVersionResponse_coreNetworkPolicy' - Describes the restored core network policy.
+--
+-- 'httpStatus', 'restoreCoreNetworkPolicyVersionResponse_httpStatus' - The response's http status code.
+newRestoreCoreNetworkPolicyVersionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RestoreCoreNetworkPolicyVersionResponse
+newRestoreCoreNetworkPolicyVersionResponse
+  pHttpStatus_ =
+    RestoreCoreNetworkPolicyVersionResponse'
+      { coreNetworkPolicy =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Describes the restored core network policy.
+restoreCoreNetworkPolicyVersionResponse_coreNetworkPolicy :: Lens.Lens' RestoreCoreNetworkPolicyVersionResponse (Prelude.Maybe CoreNetworkPolicy)
+restoreCoreNetworkPolicyVersionResponse_coreNetworkPolicy = Lens.lens (\RestoreCoreNetworkPolicyVersionResponse' {coreNetworkPolicy} -> coreNetworkPolicy) (\s@RestoreCoreNetworkPolicyVersionResponse' {} a -> s {coreNetworkPolicy = a} :: RestoreCoreNetworkPolicyVersionResponse)
+
+-- | The response's http status code.
+restoreCoreNetworkPolicyVersionResponse_httpStatus :: Lens.Lens' RestoreCoreNetworkPolicyVersionResponse Prelude.Int
+restoreCoreNetworkPolicyVersionResponse_httpStatus = Lens.lens (\RestoreCoreNetworkPolicyVersionResponse' {httpStatus} -> httpStatus) (\s@RestoreCoreNetworkPolicyVersionResponse' {} a -> s {httpStatus = a} :: RestoreCoreNetworkPolicyVersionResponse)
+
+instance
+  Prelude.NFData
+    RestoreCoreNetworkPolicyVersionResponse
+  where
+  rnf RestoreCoreNetworkPolicyVersionResponse' {..} =
+    Prelude.rnf coreNetworkPolicy
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/StartOrganizationServiceAccessUpdate.hs b/gen/Amazonka/NetworkManager/StartOrganizationServiceAccessUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/StartOrganizationServiceAccessUpdate.hs
@@ -0,0 +1,204 @@
+{-# 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.NetworkManager.StartOrganizationServiceAccessUpdate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Enables the Network Manager service for an Amazon Web Services
+-- Organization. This can only be called by a management account within the
+-- organization.
+module Amazonka.NetworkManager.StartOrganizationServiceAccessUpdate
+  ( -- * Creating a Request
+    StartOrganizationServiceAccessUpdate (..),
+    newStartOrganizationServiceAccessUpdate,
+
+    -- * Request Lenses
+    startOrganizationServiceAccessUpdate_action,
+
+    -- * Destructuring the Response
+    StartOrganizationServiceAccessUpdateResponse (..),
+    newStartOrganizationServiceAccessUpdateResponse,
+
+    -- * Response Lenses
+    startOrganizationServiceAccessUpdateResponse_organizationStatus,
+    startOrganizationServiceAccessUpdateResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStartOrganizationServiceAccessUpdate' smart constructor.
+data StartOrganizationServiceAccessUpdate = StartOrganizationServiceAccessUpdate'
+  { -- | The action to take for the update request. This can be either @ENABLE@
+    -- or @DISABLE@.
+    action :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartOrganizationServiceAccessUpdate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'action', 'startOrganizationServiceAccessUpdate_action' - The action to take for the update request. This can be either @ENABLE@
+-- or @DISABLE@.
+newStartOrganizationServiceAccessUpdate ::
+  -- | 'action'
+  Prelude.Text ->
+  StartOrganizationServiceAccessUpdate
+newStartOrganizationServiceAccessUpdate pAction_ =
+  StartOrganizationServiceAccessUpdate'
+    { action =
+        pAction_
+    }
+
+-- | The action to take for the update request. This can be either @ENABLE@
+-- or @DISABLE@.
+startOrganizationServiceAccessUpdate_action :: Lens.Lens' StartOrganizationServiceAccessUpdate Prelude.Text
+startOrganizationServiceAccessUpdate_action = Lens.lens (\StartOrganizationServiceAccessUpdate' {action} -> action) (\s@StartOrganizationServiceAccessUpdate' {} a -> s {action = a} :: StartOrganizationServiceAccessUpdate)
+
+instance
+  Core.AWSRequest
+    StartOrganizationServiceAccessUpdate
+  where
+  type
+    AWSResponse StartOrganizationServiceAccessUpdate =
+      StartOrganizationServiceAccessUpdateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartOrganizationServiceAccessUpdateResponse'
+            Prelude.<$> (x Data..?> "OrganizationStatus")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    StartOrganizationServiceAccessUpdate
+  where
+  hashWithSalt
+    _salt
+    StartOrganizationServiceAccessUpdate' {..} =
+      _salt `Prelude.hashWithSalt` action
+
+instance
+  Prelude.NFData
+    StartOrganizationServiceAccessUpdate
+  where
+  rnf StartOrganizationServiceAccessUpdate' {..} =
+    Prelude.rnf action
+
+instance
+  Data.ToHeaders
+    StartOrganizationServiceAccessUpdate
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    StartOrganizationServiceAccessUpdate
+  where
+  toJSON StartOrganizationServiceAccessUpdate' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Action" Data..= action)]
+      )
+
+instance
+  Data.ToPath
+    StartOrganizationServiceAccessUpdate
+  where
+  toPath =
+    Prelude.const "/organizations/service-access"
+
+instance
+  Data.ToQuery
+    StartOrganizationServiceAccessUpdate
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartOrganizationServiceAccessUpdateResponse' smart constructor.
+data StartOrganizationServiceAccessUpdateResponse = StartOrganizationServiceAccessUpdateResponse'
+  { -- | The status of the service access update request for an Amazon Web
+    -- Services Organization.
+    organizationStatus :: Prelude.Maybe OrganizationStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartOrganizationServiceAccessUpdateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'organizationStatus', 'startOrganizationServiceAccessUpdateResponse_organizationStatus' - The status of the service access update request for an Amazon Web
+-- Services Organization.
+--
+-- 'httpStatus', 'startOrganizationServiceAccessUpdateResponse_httpStatus' - The response's http status code.
+newStartOrganizationServiceAccessUpdateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartOrganizationServiceAccessUpdateResponse
+newStartOrganizationServiceAccessUpdateResponse
+  pHttpStatus_ =
+    StartOrganizationServiceAccessUpdateResponse'
+      { organizationStatus =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The status of the service access update request for an Amazon Web
+-- Services Organization.
+startOrganizationServiceAccessUpdateResponse_organizationStatus :: Lens.Lens' StartOrganizationServiceAccessUpdateResponse (Prelude.Maybe OrganizationStatus)
+startOrganizationServiceAccessUpdateResponse_organizationStatus = Lens.lens (\StartOrganizationServiceAccessUpdateResponse' {organizationStatus} -> organizationStatus) (\s@StartOrganizationServiceAccessUpdateResponse' {} a -> s {organizationStatus = a} :: StartOrganizationServiceAccessUpdateResponse)
+
+-- | The response's http status code.
+startOrganizationServiceAccessUpdateResponse_httpStatus :: Lens.Lens' StartOrganizationServiceAccessUpdateResponse Prelude.Int
+startOrganizationServiceAccessUpdateResponse_httpStatus = Lens.lens (\StartOrganizationServiceAccessUpdateResponse' {httpStatus} -> httpStatus) (\s@StartOrganizationServiceAccessUpdateResponse' {} a -> s {httpStatus = a} :: StartOrganizationServiceAccessUpdateResponse)
+
+instance
+  Prelude.NFData
+    StartOrganizationServiceAccessUpdateResponse
+  where
+  rnf StartOrganizationServiceAccessUpdateResponse' {..} =
+    Prelude.rnf organizationStatus
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/StartRouteAnalysis.hs b/gen/Amazonka/NetworkManager/StartRouteAnalysis.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/StartRouteAnalysis.hs
@@ -0,0 +1,240 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.StartRouteAnalysis
+-- 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 analyzing the routing path between the specified source and
+-- destination. For more information, see
+-- <https://docs.aws.amazon.com/vpc/latest/tgw/route-analyzer.html Route Analyzer>.
+module Amazonka.NetworkManager.StartRouteAnalysis
+  ( -- * Creating a Request
+    StartRouteAnalysis (..),
+    newStartRouteAnalysis,
+
+    -- * Request Lenses
+    startRouteAnalysis_includeReturnPath,
+    startRouteAnalysis_useMiddleboxes,
+    startRouteAnalysis_globalNetworkId,
+    startRouteAnalysis_source,
+    startRouteAnalysis_destination,
+
+    -- * Destructuring the Response
+    StartRouteAnalysisResponse (..),
+    newStartRouteAnalysisResponse,
+
+    -- * Response Lenses
+    startRouteAnalysisResponse_routeAnalysis,
+    startRouteAnalysisResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStartRouteAnalysis' smart constructor.
+data StartRouteAnalysis = StartRouteAnalysis'
+  { -- | Indicates whether to analyze the return path. The default is @false@.
+    includeReturnPath :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether to include the location of middlebox appliances in the
+    -- route analysis. The default is @false@.
+    useMiddleboxes :: Prelude.Maybe Prelude.Bool,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The source from which traffic originates.
+    source :: RouteAnalysisEndpointOptionsSpecification,
+    -- | The destination.
+    destination :: RouteAnalysisEndpointOptionsSpecification
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartRouteAnalysis' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'includeReturnPath', 'startRouteAnalysis_includeReturnPath' - Indicates whether to analyze the return path. The default is @false@.
+--
+-- 'useMiddleboxes', 'startRouteAnalysis_useMiddleboxes' - Indicates whether to include the location of middlebox appliances in the
+-- route analysis. The default is @false@.
+--
+-- 'globalNetworkId', 'startRouteAnalysis_globalNetworkId' - The ID of the global network.
+--
+-- 'source', 'startRouteAnalysis_source' - The source from which traffic originates.
+--
+-- 'destination', 'startRouteAnalysis_destination' - The destination.
+newStartRouteAnalysis ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'source'
+  RouteAnalysisEndpointOptionsSpecification ->
+  -- | 'destination'
+  RouteAnalysisEndpointOptionsSpecification ->
+  StartRouteAnalysis
+newStartRouteAnalysis
+  pGlobalNetworkId_
+  pSource_
+  pDestination_ =
+    StartRouteAnalysis'
+      { includeReturnPath =
+          Prelude.Nothing,
+        useMiddleboxes = Prelude.Nothing,
+        globalNetworkId = pGlobalNetworkId_,
+        source = pSource_,
+        destination = pDestination_
+      }
+
+-- | Indicates whether to analyze the return path. The default is @false@.
+startRouteAnalysis_includeReturnPath :: Lens.Lens' StartRouteAnalysis (Prelude.Maybe Prelude.Bool)
+startRouteAnalysis_includeReturnPath = Lens.lens (\StartRouteAnalysis' {includeReturnPath} -> includeReturnPath) (\s@StartRouteAnalysis' {} a -> s {includeReturnPath = a} :: StartRouteAnalysis)
+
+-- | Indicates whether to include the location of middlebox appliances in the
+-- route analysis. The default is @false@.
+startRouteAnalysis_useMiddleboxes :: Lens.Lens' StartRouteAnalysis (Prelude.Maybe Prelude.Bool)
+startRouteAnalysis_useMiddleboxes = Lens.lens (\StartRouteAnalysis' {useMiddleboxes} -> useMiddleboxes) (\s@StartRouteAnalysis' {} a -> s {useMiddleboxes = a} :: StartRouteAnalysis)
+
+-- | The ID of the global network.
+startRouteAnalysis_globalNetworkId :: Lens.Lens' StartRouteAnalysis Prelude.Text
+startRouteAnalysis_globalNetworkId = Lens.lens (\StartRouteAnalysis' {globalNetworkId} -> globalNetworkId) (\s@StartRouteAnalysis' {} a -> s {globalNetworkId = a} :: StartRouteAnalysis)
+
+-- | The source from which traffic originates.
+startRouteAnalysis_source :: Lens.Lens' StartRouteAnalysis RouteAnalysisEndpointOptionsSpecification
+startRouteAnalysis_source = Lens.lens (\StartRouteAnalysis' {source} -> source) (\s@StartRouteAnalysis' {} a -> s {source = a} :: StartRouteAnalysis)
+
+-- | The destination.
+startRouteAnalysis_destination :: Lens.Lens' StartRouteAnalysis RouteAnalysisEndpointOptionsSpecification
+startRouteAnalysis_destination = Lens.lens (\StartRouteAnalysis' {destination} -> destination) (\s@StartRouteAnalysis' {} a -> s {destination = a} :: StartRouteAnalysis)
+
+instance Core.AWSRequest StartRouteAnalysis where
+  type
+    AWSResponse StartRouteAnalysis =
+      StartRouteAnalysisResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartRouteAnalysisResponse'
+            Prelude.<$> (x Data..?> "RouteAnalysis")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartRouteAnalysis where
+  hashWithSalt _salt StartRouteAnalysis' {..} =
+    _salt
+      `Prelude.hashWithSalt` includeReturnPath
+      `Prelude.hashWithSalt` useMiddleboxes
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` destination
+
+instance Prelude.NFData StartRouteAnalysis where
+  rnf StartRouteAnalysis' {..} =
+    Prelude.rnf includeReturnPath
+      `Prelude.seq` Prelude.rnf useMiddleboxes
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf destination
+
+instance Data.ToHeaders StartRouteAnalysis where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartRouteAnalysis where
+  toJSON StartRouteAnalysis' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("IncludeReturnPath" Data..=)
+              Prelude.<$> includeReturnPath,
+            ("UseMiddleboxes" Data..=)
+              Prelude.<$> useMiddleboxes,
+            Prelude.Just ("Source" Data..= source),
+            Prelude.Just ("Destination" Data..= destination)
+          ]
+      )
+
+instance Data.ToPath StartRouteAnalysis where
+  toPath StartRouteAnalysis' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/route-analyses"
+      ]
+
+instance Data.ToQuery StartRouteAnalysis where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartRouteAnalysisResponse' smart constructor.
+data StartRouteAnalysisResponse = StartRouteAnalysisResponse'
+  { -- | The route analysis.
+    routeAnalysis :: Prelude.Maybe RouteAnalysis,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartRouteAnalysisResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'routeAnalysis', 'startRouteAnalysisResponse_routeAnalysis' - The route analysis.
+--
+-- 'httpStatus', 'startRouteAnalysisResponse_httpStatus' - The response's http status code.
+newStartRouteAnalysisResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartRouteAnalysisResponse
+newStartRouteAnalysisResponse pHttpStatus_ =
+  StartRouteAnalysisResponse'
+    { routeAnalysis =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The route analysis.
+startRouteAnalysisResponse_routeAnalysis :: Lens.Lens' StartRouteAnalysisResponse (Prelude.Maybe RouteAnalysis)
+startRouteAnalysisResponse_routeAnalysis = Lens.lens (\StartRouteAnalysisResponse' {routeAnalysis} -> routeAnalysis) (\s@StartRouteAnalysisResponse' {} a -> s {routeAnalysis = a} :: StartRouteAnalysisResponse)
+
+-- | The response's http status code.
+startRouteAnalysisResponse_httpStatus :: Lens.Lens' StartRouteAnalysisResponse Prelude.Int
+startRouteAnalysisResponse_httpStatus = Lens.lens (\StartRouteAnalysisResponse' {httpStatus} -> httpStatus) (\s@StartRouteAnalysisResponse' {} a -> s {httpStatus = a} :: StartRouteAnalysisResponse)
+
+instance Prelude.NFData StartRouteAnalysisResponse where
+  rnf StartRouteAnalysisResponse' {..} =
+    Prelude.rnf routeAnalysis
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/TagResource.hs b/gen/Amazonka/NetworkManager/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/TagResource.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.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)
+--
+-- Tags a specified resource.
+module Amazonka.NetworkManager.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    resourceArn :: Prelude.Text,
+    -- | The tags to apply to the specified resource.
+    tags :: [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'tags', 'tagResource_tags' - The tags to apply to the specified resource.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+-- | The tags to apply to the specified resource.
+tagResource_tags :: Lens.Lens' TagResource [Tag]
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "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/NetworkManager/Types.hs b/gen/Amazonka/NetworkManager/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types.hs
@@ -0,0 +1,878 @@
+{-# 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.NetworkManager.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.NetworkManager.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _CoreNetworkPolicyException,
+    _InternalServerException,
+    _ResourceNotFoundException,
+    _ServiceQuotaExceededException,
+    _ThrottlingException,
+    _ValidationException,
+
+    -- * AttachmentState
+    AttachmentState (..),
+
+    -- * AttachmentType
+    AttachmentType (..),
+
+    -- * ChangeAction
+    ChangeAction (..),
+
+    -- * ChangeSetState
+    ChangeSetState (..),
+
+    -- * ChangeStatus
+    ChangeStatus (..),
+
+    -- * ChangeType
+    ChangeType (..),
+
+    -- * ConnectPeerAssociationState
+    ConnectPeerAssociationState (..),
+
+    -- * ConnectPeerState
+    ConnectPeerState (..),
+
+    -- * ConnectionState
+    ConnectionState (..),
+
+    -- * ConnectionStatus
+    ConnectionStatus (..),
+
+    -- * ConnectionType
+    ConnectionType (..),
+
+    -- * CoreNetworkPolicyAlias
+    CoreNetworkPolicyAlias (..),
+
+    -- * CoreNetworkState
+    CoreNetworkState (..),
+
+    -- * CustomerGatewayAssociationState
+    CustomerGatewayAssociationState (..),
+
+    -- * DeviceState
+    DeviceState (..),
+
+    -- * GlobalNetworkState
+    GlobalNetworkState (..),
+
+    -- * LinkAssociationState
+    LinkAssociationState (..),
+
+    -- * LinkState
+    LinkState (..),
+
+    -- * PeeringState
+    PeeringState (..),
+
+    -- * PeeringType
+    PeeringType (..),
+
+    -- * RouteAnalysisCompletionReasonCode
+    RouteAnalysisCompletionReasonCode (..),
+
+    -- * RouteAnalysisCompletionResultCode
+    RouteAnalysisCompletionResultCode (..),
+
+    -- * RouteAnalysisStatus
+    RouteAnalysisStatus (..),
+
+    -- * RouteState
+    RouteState (..),
+
+    -- * RouteTableType
+    RouteTableType (..),
+
+    -- * RouteType
+    RouteType (..),
+
+    -- * SiteState
+    SiteState (..),
+
+    -- * TransitGatewayConnectPeerAssociationState
+    TransitGatewayConnectPeerAssociationState (..),
+
+    -- * TransitGatewayRegistrationState
+    TransitGatewayRegistrationState (..),
+
+    -- * TunnelProtocol
+    TunnelProtocol (..),
+
+    -- * AWSLocation
+    AWSLocation (..),
+    newAWSLocation,
+    aWSLocation_subnetArn,
+    aWSLocation_zone,
+
+    -- * AccountStatus
+    AccountStatus (..),
+    newAccountStatus,
+    accountStatus_accountId,
+    accountStatus_sLRDeploymentStatus,
+
+    -- * Attachment
+    Attachment (..),
+    newAttachment,
+    attachment_attachmentId,
+    attachment_attachmentPolicyRuleNumber,
+    attachment_attachmentType,
+    attachment_coreNetworkArn,
+    attachment_coreNetworkId,
+    attachment_createdAt,
+    attachment_edgeLocation,
+    attachment_ownerAccountId,
+    attachment_proposedSegmentChange,
+    attachment_resourceArn,
+    attachment_segmentName,
+    attachment_state,
+    attachment_tags,
+    attachment_updatedAt,
+
+    -- * Bandwidth
+    Bandwidth (..),
+    newBandwidth,
+    bandwidth_downloadSpeed,
+    bandwidth_uploadSpeed,
+
+    -- * BgpOptions
+    BgpOptions (..),
+    newBgpOptions,
+    bgpOptions_peerAsn,
+
+    -- * ConnectAttachment
+    ConnectAttachment (..),
+    newConnectAttachment,
+    connectAttachment_attachment,
+    connectAttachment_options,
+    connectAttachment_transportAttachmentId,
+
+    -- * ConnectAttachmentOptions
+    ConnectAttachmentOptions (..),
+    newConnectAttachmentOptions,
+    connectAttachmentOptions_protocol,
+
+    -- * ConnectPeer
+    ConnectPeer (..),
+    newConnectPeer,
+    connectPeer_configuration,
+    connectPeer_connectAttachmentId,
+    connectPeer_connectPeerId,
+    connectPeer_coreNetworkId,
+    connectPeer_createdAt,
+    connectPeer_edgeLocation,
+    connectPeer_state,
+    connectPeer_tags,
+
+    -- * ConnectPeerAssociation
+    ConnectPeerAssociation (..),
+    newConnectPeerAssociation,
+    connectPeerAssociation_connectPeerId,
+    connectPeerAssociation_deviceId,
+    connectPeerAssociation_globalNetworkId,
+    connectPeerAssociation_linkId,
+    connectPeerAssociation_state,
+
+    -- * ConnectPeerBgpConfiguration
+    ConnectPeerBgpConfiguration (..),
+    newConnectPeerBgpConfiguration,
+    connectPeerBgpConfiguration_coreNetworkAddress,
+    connectPeerBgpConfiguration_coreNetworkAsn,
+    connectPeerBgpConfiguration_peerAddress,
+    connectPeerBgpConfiguration_peerAsn,
+
+    -- * ConnectPeerConfiguration
+    ConnectPeerConfiguration (..),
+    newConnectPeerConfiguration,
+    connectPeerConfiguration_bgpConfigurations,
+    connectPeerConfiguration_coreNetworkAddress,
+    connectPeerConfiguration_insideCidrBlocks,
+    connectPeerConfiguration_peerAddress,
+    connectPeerConfiguration_protocol,
+
+    -- * ConnectPeerSummary
+    ConnectPeerSummary (..),
+    newConnectPeerSummary,
+    connectPeerSummary_connectAttachmentId,
+    connectPeerSummary_connectPeerId,
+    connectPeerSummary_connectPeerState,
+    connectPeerSummary_coreNetworkId,
+    connectPeerSummary_createdAt,
+    connectPeerSummary_edgeLocation,
+    connectPeerSummary_tags,
+
+    -- * Connection
+    Connection (..),
+    newConnection,
+    connection_connectedDeviceId,
+    connection_connectedLinkId,
+    connection_connectionArn,
+    connection_connectionId,
+    connection_createdAt,
+    connection_description,
+    connection_deviceId,
+    connection_globalNetworkId,
+    connection_linkId,
+    connection_state,
+    connection_tags,
+
+    -- * ConnectionHealth
+    ConnectionHealth (..),
+    newConnectionHealth,
+    connectionHealth_status,
+    connectionHealth_timestamp,
+    connectionHealth_type,
+
+    -- * CoreNetwork
+    CoreNetwork (..),
+    newCoreNetwork,
+    coreNetwork_coreNetworkArn,
+    coreNetwork_coreNetworkId,
+    coreNetwork_createdAt,
+    coreNetwork_description,
+    coreNetwork_edges,
+    coreNetwork_globalNetworkId,
+    coreNetwork_segments,
+    coreNetwork_state,
+    coreNetwork_tags,
+
+    -- * CoreNetworkChange
+    CoreNetworkChange (..),
+    newCoreNetworkChange,
+    coreNetworkChange_action,
+    coreNetworkChange_identifier,
+    coreNetworkChange_identifierPath,
+    coreNetworkChange_newValues,
+    coreNetworkChange_previousValues,
+    coreNetworkChange_type,
+
+    -- * CoreNetworkChangeEvent
+    CoreNetworkChangeEvent (..),
+    newCoreNetworkChangeEvent,
+    coreNetworkChangeEvent_action,
+    coreNetworkChangeEvent_eventTime,
+    coreNetworkChangeEvent_identifierPath,
+    coreNetworkChangeEvent_status,
+    coreNetworkChangeEvent_type,
+    coreNetworkChangeEvent_values,
+
+    -- * CoreNetworkChangeEventValues
+    CoreNetworkChangeEventValues (..),
+    newCoreNetworkChangeEventValues,
+    coreNetworkChangeEventValues_attachmentId,
+    coreNetworkChangeEventValues_cidr,
+    coreNetworkChangeEventValues_edgeLocation,
+    coreNetworkChangeEventValues_segmentName,
+
+    -- * CoreNetworkChangeValues
+    CoreNetworkChangeValues (..),
+    newCoreNetworkChangeValues,
+    coreNetworkChangeValues_asn,
+    coreNetworkChangeValues_cidr,
+    coreNetworkChangeValues_destinationIdentifier,
+    coreNetworkChangeValues_edgeLocations,
+    coreNetworkChangeValues_insideCidrBlocks,
+    coreNetworkChangeValues_segmentName,
+    coreNetworkChangeValues_sharedSegments,
+
+    -- * CoreNetworkEdge
+    CoreNetworkEdge (..),
+    newCoreNetworkEdge,
+    coreNetworkEdge_asn,
+    coreNetworkEdge_edgeLocation,
+    coreNetworkEdge_insideCidrBlocks,
+
+    -- * CoreNetworkPolicy
+    CoreNetworkPolicy (..),
+    newCoreNetworkPolicy,
+    coreNetworkPolicy_alias,
+    coreNetworkPolicy_changeSetState,
+    coreNetworkPolicy_coreNetworkId,
+    coreNetworkPolicy_createdAt,
+    coreNetworkPolicy_description,
+    coreNetworkPolicy_policyDocument,
+    coreNetworkPolicy_policyErrors,
+    coreNetworkPolicy_policyVersionId,
+
+    -- * CoreNetworkPolicyError
+    CoreNetworkPolicyError (..),
+    newCoreNetworkPolicyError,
+    coreNetworkPolicyError_path,
+    coreNetworkPolicyError_errorCode,
+    coreNetworkPolicyError_message,
+
+    -- * CoreNetworkPolicyVersion
+    CoreNetworkPolicyVersion (..),
+    newCoreNetworkPolicyVersion,
+    coreNetworkPolicyVersion_alias,
+    coreNetworkPolicyVersion_changeSetState,
+    coreNetworkPolicyVersion_coreNetworkId,
+    coreNetworkPolicyVersion_createdAt,
+    coreNetworkPolicyVersion_description,
+    coreNetworkPolicyVersion_policyVersionId,
+
+    -- * CoreNetworkSegment
+    CoreNetworkSegment (..),
+    newCoreNetworkSegment,
+    coreNetworkSegment_edgeLocations,
+    coreNetworkSegment_name,
+    coreNetworkSegment_sharedSegments,
+
+    -- * CoreNetworkSegmentEdgeIdentifier
+    CoreNetworkSegmentEdgeIdentifier (..),
+    newCoreNetworkSegmentEdgeIdentifier,
+    coreNetworkSegmentEdgeIdentifier_coreNetworkId,
+    coreNetworkSegmentEdgeIdentifier_edgeLocation,
+    coreNetworkSegmentEdgeIdentifier_segmentName,
+
+    -- * CoreNetworkSummary
+    CoreNetworkSummary (..),
+    newCoreNetworkSummary,
+    coreNetworkSummary_coreNetworkArn,
+    coreNetworkSummary_coreNetworkId,
+    coreNetworkSummary_description,
+    coreNetworkSummary_globalNetworkId,
+    coreNetworkSummary_ownerAccountId,
+    coreNetworkSummary_state,
+    coreNetworkSummary_tags,
+
+    -- * CustomerGatewayAssociation
+    CustomerGatewayAssociation (..),
+    newCustomerGatewayAssociation,
+    customerGatewayAssociation_customerGatewayArn,
+    customerGatewayAssociation_deviceId,
+    customerGatewayAssociation_globalNetworkId,
+    customerGatewayAssociation_linkId,
+    customerGatewayAssociation_state,
+
+    -- * Device
+    Device (..),
+    newDevice,
+    device_aWSLocation,
+    device_createdAt,
+    device_description,
+    device_deviceArn,
+    device_deviceId,
+    device_globalNetworkId,
+    device_location,
+    device_model,
+    device_serialNumber,
+    device_siteId,
+    device_state,
+    device_tags,
+    device_type,
+    device_vendor,
+
+    -- * GlobalNetwork
+    GlobalNetwork (..),
+    newGlobalNetwork,
+    globalNetwork_createdAt,
+    globalNetwork_description,
+    globalNetwork_globalNetworkArn,
+    globalNetwork_globalNetworkId,
+    globalNetwork_state,
+    globalNetwork_tags,
+
+    -- * Link
+    Link (..),
+    newLink,
+    link_bandwidth,
+    link_createdAt,
+    link_description,
+    link_globalNetworkId,
+    link_linkArn,
+    link_linkId,
+    link_provider,
+    link_siteId,
+    link_state,
+    link_tags,
+    link_type,
+
+    -- * LinkAssociation
+    LinkAssociation (..),
+    newLinkAssociation,
+    linkAssociation_deviceId,
+    linkAssociation_globalNetworkId,
+    linkAssociation_linkAssociationState,
+    linkAssociation_linkId,
+
+    -- * Location
+    Location (..),
+    newLocation,
+    location_address,
+    location_latitude,
+    location_longitude,
+
+    -- * NetworkResource
+    NetworkResource (..),
+    newNetworkResource,
+    networkResource_accountId,
+    networkResource_awsRegion,
+    networkResource_coreNetworkId,
+    networkResource_definition,
+    networkResource_definitionTimestamp,
+    networkResource_metadata,
+    networkResource_registeredGatewayArn,
+    networkResource_resourceArn,
+    networkResource_resourceId,
+    networkResource_resourceType,
+    networkResource_tags,
+
+    -- * NetworkResourceCount
+    NetworkResourceCount (..),
+    newNetworkResourceCount,
+    networkResourceCount_count,
+    networkResourceCount_resourceType,
+
+    -- * NetworkResourceSummary
+    NetworkResourceSummary (..),
+    newNetworkResourceSummary,
+    networkResourceSummary_definition,
+    networkResourceSummary_isMiddlebox,
+    networkResourceSummary_nameTag,
+    networkResourceSummary_registeredGatewayArn,
+    networkResourceSummary_resourceArn,
+    networkResourceSummary_resourceType,
+
+    -- * NetworkRoute
+    NetworkRoute (..),
+    newNetworkRoute,
+    networkRoute_destinationCidrBlock,
+    networkRoute_destinations,
+    networkRoute_prefixListId,
+    networkRoute_state,
+    networkRoute_type,
+
+    -- * NetworkRouteDestination
+    NetworkRouteDestination (..),
+    newNetworkRouteDestination,
+    networkRouteDestination_coreNetworkAttachmentId,
+    networkRouteDestination_edgeLocation,
+    networkRouteDestination_resourceId,
+    networkRouteDestination_resourceType,
+    networkRouteDestination_segmentName,
+    networkRouteDestination_transitGatewayAttachmentId,
+
+    -- * NetworkTelemetry
+    NetworkTelemetry (..),
+    newNetworkTelemetry,
+    networkTelemetry_accountId,
+    networkTelemetry_address,
+    networkTelemetry_awsRegion,
+    networkTelemetry_coreNetworkId,
+    networkTelemetry_health,
+    networkTelemetry_registeredGatewayArn,
+    networkTelemetry_resourceArn,
+    networkTelemetry_resourceId,
+    networkTelemetry_resourceType,
+
+    -- * OrganizationStatus
+    OrganizationStatus (..),
+    newOrganizationStatus,
+    organizationStatus_accountStatusList,
+    organizationStatus_organizationAwsServiceAccessStatus,
+    organizationStatus_organizationId,
+    organizationStatus_sLRDeploymentStatus,
+
+    -- * PathComponent
+    PathComponent (..),
+    newPathComponent,
+    pathComponent_destinationCidrBlock,
+    pathComponent_resource,
+    pathComponent_sequence,
+
+    -- * Peering
+    Peering (..),
+    newPeering,
+    peering_coreNetworkArn,
+    peering_coreNetworkId,
+    peering_createdAt,
+    peering_edgeLocation,
+    peering_ownerAccountId,
+    peering_peeringId,
+    peering_peeringType,
+    peering_resourceArn,
+    peering_state,
+    peering_tags,
+
+    -- * ProposedSegmentChange
+    ProposedSegmentChange (..),
+    newProposedSegmentChange,
+    proposedSegmentChange_attachmentPolicyRuleNumber,
+    proposedSegmentChange_segmentName,
+    proposedSegmentChange_tags,
+
+    -- * Relationship
+    Relationship (..),
+    newRelationship,
+    relationship_from,
+    relationship_to,
+
+    -- * RouteAnalysis
+    RouteAnalysis (..),
+    newRouteAnalysis,
+    routeAnalysis_destination,
+    routeAnalysis_forwardPath,
+    routeAnalysis_globalNetworkId,
+    routeAnalysis_includeReturnPath,
+    routeAnalysis_ownerAccountId,
+    routeAnalysis_returnPath,
+    routeAnalysis_routeAnalysisId,
+    routeAnalysis_source,
+    routeAnalysis_startTimestamp,
+    routeAnalysis_status,
+    routeAnalysis_useMiddleboxes,
+
+    -- * RouteAnalysisCompletion
+    RouteAnalysisCompletion (..),
+    newRouteAnalysisCompletion,
+    routeAnalysisCompletion_reasonCode,
+    routeAnalysisCompletion_reasonContext,
+    routeAnalysisCompletion_resultCode,
+
+    -- * RouteAnalysisEndpointOptions
+    RouteAnalysisEndpointOptions (..),
+    newRouteAnalysisEndpointOptions,
+    routeAnalysisEndpointOptions_ipAddress,
+    routeAnalysisEndpointOptions_transitGatewayArn,
+    routeAnalysisEndpointOptions_transitGatewayAttachmentArn,
+
+    -- * RouteAnalysisEndpointOptionsSpecification
+    RouteAnalysisEndpointOptionsSpecification (..),
+    newRouteAnalysisEndpointOptionsSpecification,
+    routeAnalysisEndpointOptionsSpecification_ipAddress,
+    routeAnalysisEndpointOptionsSpecification_transitGatewayAttachmentArn,
+
+    -- * RouteAnalysisPath
+    RouteAnalysisPath (..),
+    newRouteAnalysisPath,
+    routeAnalysisPath_completionStatus,
+    routeAnalysisPath_path,
+
+    -- * RouteTableIdentifier
+    RouteTableIdentifier (..),
+    newRouteTableIdentifier,
+    routeTableIdentifier_coreNetworkSegmentEdge,
+    routeTableIdentifier_transitGatewayRouteTableArn,
+
+    -- * Site
+    Site (..),
+    newSite,
+    site_createdAt,
+    site_description,
+    site_globalNetworkId,
+    site_location,
+    site_siteArn,
+    site_siteId,
+    site_state,
+    site_tags,
+
+    -- * SiteToSiteVpnAttachment
+    SiteToSiteVpnAttachment (..),
+    newSiteToSiteVpnAttachment,
+    siteToSiteVpnAttachment_attachment,
+    siteToSiteVpnAttachment_vpnConnectionArn,
+
+    -- * Tag
+    Tag (..),
+    newTag,
+    tag_key,
+    tag_value,
+
+    -- * TransitGatewayConnectPeerAssociation
+    TransitGatewayConnectPeerAssociation (..),
+    newTransitGatewayConnectPeerAssociation,
+    transitGatewayConnectPeerAssociation_deviceId,
+    transitGatewayConnectPeerAssociation_globalNetworkId,
+    transitGatewayConnectPeerAssociation_linkId,
+    transitGatewayConnectPeerAssociation_state,
+    transitGatewayConnectPeerAssociation_transitGatewayConnectPeerArn,
+
+    -- * TransitGatewayPeering
+    TransitGatewayPeering (..),
+    newTransitGatewayPeering,
+    transitGatewayPeering_peering,
+    transitGatewayPeering_transitGatewayArn,
+    transitGatewayPeering_transitGatewayPeeringAttachmentId,
+
+    -- * TransitGatewayRegistration
+    TransitGatewayRegistration (..),
+    newTransitGatewayRegistration,
+    transitGatewayRegistration_globalNetworkId,
+    transitGatewayRegistration_state,
+    transitGatewayRegistration_transitGatewayArn,
+
+    -- * TransitGatewayRegistrationStateReason
+    TransitGatewayRegistrationStateReason (..),
+    newTransitGatewayRegistrationStateReason,
+    transitGatewayRegistrationStateReason_code,
+    transitGatewayRegistrationStateReason_message,
+
+    -- * TransitGatewayRouteTableAttachment
+    TransitGatewayRouteTableAttachment (..),
+    newTransitGatewayRouteTableAttachment,
+    transitGatewayRouteTableAttachment_attachment,
+    transitGatewayRouteTableAttachment_peeringId,
+    transitGatewayRouteTableAttachment_transitGatewayRouteTableArn,
+
+    -- * VpcAttachment
+    VpcAttachment (..),
+    newVpcAttachment,
+    vpcAttachment_attachment,
+    vpcAttachment_options,
+    vpcAttachment_subnetArns,
+
+    -- * VpcOptions
+    VpcOptions (..),
+    newVpcOptions,
+    vpcOptions_applianceModeSupport,
+    vpcOptions_ipv6Support,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.NetworkManager.Types.AWSLocation
+import Amazonka.NetworkManager.Types.AccountStatus
+import Amazonka.NetworkManager.Types.Attachment
+import Amazonka.NetworkManager.Types.AttachmentState
+import Amazonka.NetworkManager.Types.AttachmentType
+import Amazonka.NetworkManager.Types.Bandwidth
+import Amazonka.NetworkManager.Types.BgpOptions
+import Amazonka.NetworkManager.Types.ChangeAction
+import Amazonka.NetworkManager.Types.ChangeSetState
+import Amazonka.NetworkManager.Types.ChangeStatus
+import Amazonka.NetworkManager.Types.ChangeType
+import Amazonka.NetworkManager.Types.ConnectAttachment
+import Amazonka.NetworkManager.Types.ConnectAttachmentOptions
+import Amazonka.NetworkManager.Types.ConnectPeer
+import Amazonka.NetworkManager.Types.ConnectPeerAssociation
+import Amazonka.NetworkManager.Types.ConnectPeerAssociationState
+import Amazonka.NetworkManager.Types.ConnectPeerBgpConfiguration
+import Amazonka.NetworkManager.Types.ConnectPeerConfiguration
+import Amazonka.NetworkManager.Types.ConnectPeerState
+import Amazonka.NetworkManager.Types.ConnectPeerSummary
+import Amazonka.NetworkManager.Types.Connection
+import Amazonka.NetworkManager.Types.ConnectionHealth
+import Amazonka.NetworkManager.Types.ConnectionState
+import Amazonka.NetworkManager.Types.ConnectionStatus
+import Amazonka.NetworkManager.Types.ConnectionType
+import Amazonka.NetworkManager.Types.CoreNetwork
+import Amazonka.NetworkManager.Types.CoreNetworkChange
+import Amazonka.NetworkManager.Types.CoreNetworkChangeEvent
+import Amazonka.NetworkManager.Types.CoreNetworkChangeEventValues
+import Amazonka.NetworkManager.Types.CoreNetworkChangeValues
+import Amazonka.NetworkManager.Types.CoreNetworkEdge
+import Amazonka.NetworkManager.Types.CoreNetworkPolicy
+import Amazonka.NetworkManager.Types.CoreNetworkPolicyAlias
+import Amazonka.NetworkManager.Types.CoreNetworkPolicyError
+import Amazonka.NetworkManager.Types.CoreNetworkPolicyVersion
+import Amazonka.NetworkManager.Types.CoreNetworkSegment
+import Amazonka.NetworkManager.Types.CoreNetworkSegmentEdgeIdentifier
+import Amazonka.NetworkManager.Types.CoreNetworkState
+import Amazonka.NetworkManager.Types.CoreNetworkSummary
+import Amazonka.NetworkManager.Types.CustomerGatewayAssociation
+import Amazonka.NetworkManager.Types.CustomerGatewayAssociationState
+import Amazonka.NetworkManager.Types.Device
+import Amazonka.NetworkManager.Types.DeviceState
+import Amazonka.NetworkManager.Types.GlobalNetwork
+import Amazonka.NetworkManager.Types.GlobalNetworkState
+import Amazonka.NetworkManager.Types.Link
+import Amazonka.NetworkManager.Types.LinkAssociation
+import Amazonka.NetworkManager.Types.LinkAssociationState
+import Amazonka.NetworkManager.Types.LinkState
+import Amazonka.NetworkManager.Types.Location
+import Amazonka.NetworkManager.Types.NetworkResource
+import Amazonka.NetworkManager.Types.NetworkResourceCount
+import Amazonka.NetworkManager.Types.NetworkResourceSummary
+import Amazonka.NetworkManager.Types.NetworkRoute
+import Amazonka.NetworkManager.Types.NetworkRouteDestination
+import Amazonka.NetworkManager.Types.NetworkTelemetry
+import Amazonka.NetworkManager.Types.OrganizationStatus
+import Amazonka.NetworkManager.Types.PathComponent
+import Amazonka.NetworkManager.Types.Peering
+import Amazonka.NetworkManager.Types.PeeringState
+import Amazonka.NetworkManager.Types.PeeringType
+import Amazonka.NetworkManager.Types.ProposedSegmentChange
+import Amazonka.NetworkManager.Types.Relationship
+import Amazonka.NetworkManager.Types.RouteAnalysis
+import Amazonka.NetworkManager.Types.RouteAnalysisCompletion
+import Amazonka.NetworkManager.Types.RouteAnalysisCompletionReasonCode
+import Amazonka.NetworkManager.Types.RouteAnalysisCompletionResultCode
+import Amazonka.NetworkManager.Types.RouteAnalysisEndpointOptions
+import Amazonka.NetworkManager.Types.RouteAnalysisEndpointOptionsSpecification
+import Amazonka.NetworkManager.Types.RouteAnalysisPath
+import Amazonka.NetworkManager.Types.RouteAnalysisStatus
+import Amazonka.NetworkManager.Types.RouteState
+import Amazonka.NetworkManager.Types.RouteTableIdentifier
+import Amazonka.NetworkManager.Types.RouteTableType
+import Amazonka.NetworkManager.Types.RouteType
+import Amazonka.NetworkManager.Types.Site
+import Amazonka.NetworkManager.Types.SiteState
+import Amazonka.NetworkManager.Types.SiteToSiteVpnAttachment
+import Amazonka.NetworkManager.Types.Tag
+import Amazonka.NetworkManager.Types.TransitGatewayConnectPeerAssociation
+import Amazonka.NetworkManager.Types.TransitGatewayConnectPeerAssociationState
+import Amazonka.NetworkManager.Types.TransitGatewayPeering
+import Amazonka.NetworkManager.Types.TransitGatewayRegistration
+import Amazonka.NetworkManager.Types.TransitGatewayRegistrationState
+import Amazonka.NetworkManager.Types.TransitGatewayRegistrationStateReason
+import Amazonka.NetworkManager.Types.TransitGatewayRouteTableAttachment
+import Amazonka.NetworkManager.Types.TunnelProtocol
+import Amazonka.NetworkManager.Types.VpcAttachment
+import Amazonka.NetworkManager.Types.VpcOptions
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2019-07-05@ of the Amazon Network Manager SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "NetworkManager",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "networkmanager",
+      Core.signingName = "networkmanager",
+      Core.version = "2019-07-05",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "NetworkManager",
+      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
+
+-- | You do not have sufficient access to perform this action.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 403
+
+-- | There was a conflict processing the request. Updating or deleting the
+-- resource can cause an inconsistent state.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | Describes a core network policy exception.
+_CoreNetworkPolicyException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_CoreNetworkPolicyException =
+  Core._MatchServiceError
+    defaultService
+    "CoreNetworkPolicyException"
+    Prelude.. Core.hasStatus 400
+
+-- | The request has failed due to an internal error.
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+    Prelude.. Core.hasStatus 500
+
+-- | The specified resource could not be found.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | A service limit was exceeded.
+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceQuotaExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceQuotaExceededException"
+    Prelude.. Core.hasStatus 402
+
+-- | The request was denied due to request throttling.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+    Prelude.. Core.hasStatus 429
+
+-- | The input fails to satisfy the constraints.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/NetworkManager/Types/AWSLocation.hs b/gen/Amazonka/NetworkManager/Types/AWSLocation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/AWSLocation.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.NetworkManager.Types.AWSLocation
+-- 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.NetworkManager.Types.AWSLocation where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies a location in Amazon Web Services.
+--
+-- /See:/ 'newAWSLocation' smart constructor.
+data AWSLocation = AWSLocation'
+  { -- | The Amazon Resource Name (ARN) of the subnet that the device is located
+    -- in.
+    subnetArn :: Prelude.Maybe Prelude.Text,
+    -- | The Zone that the device is located in. Specify the ID of an
+    -- Availability Zone, Local Zone, Wavelength Zone, or an Outpost.
+    zone :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AWSLocation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'subnetArn', 'aWSLocation_subnetArn' - The Amazon Resource Name (ARN) of the subnet that the device is located
+-- in.
+--
+-- 'zone', 'aWSLocation_zone' - The Zone that the device is located in. Specify the ID of an
+-- Availability Zone, Local Zone, Wavelength Zone, or an Outpost.
+newAWSLocation ::
+  AWSLocation
+newAWSLocation =
+  AWSLocation'
+    { subnetArn = Prelude.Nothing,
+      zone = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the subnet that the device is located
+-- in.
+aWSLocation_subnetArn :: Lens.Lens' AWSLocation (Prelude.Maybe Prelude.Text)
+aWSLocation_subnetArn = Lens.lens (\AWSLocation' {subnetArn} -> subnetArn) (\s@AWSLocation' {} a -> s {subnetArn = a} :: AWSLocation)
+
+-- | The Zone that the device is located in. Specify the ID of an
+-- Availability Zone, Local Zone, Wavelength Zone, or an Outpost.
+aWSLocation_zone :: Lens.Lens' AWSLocation (Prelude.Maybe Prelude.Text)
+aWSLocation_zone = Lens.lens (\AWSLocation' {zone} -> zone) (\s@AWSLocation' {} a -> s {zone = a} :: AWSLocation)
+
+instance Data.FromJSON AWSLocation where
+  parseJSON =
+    Data.withObject
+      "AWSLocation"
+      ( \x ->
+          AWSLocation'
+            Prelude.<$> (x Data..:? "SubnetArn")
+            Prelude.<*> (x Data..:? "Zone")
+      )
+
+instance Prelude.Hashable AWSLocation where
+  hashWithSalt _salt AWSLocation' {..} =
+    _salt
+      `Prelude.hashWithSalt` subnetArn
+      `Prelude.hashWithSalt` zone
+
+instance Prelude.NFData AWSLocation where
+  rnf AWSLocation' {..} =
+    Prelude.rnf subnetArn
+      `Prelude.seq` Prelude.rnf zone
+
+instance Data.ToJSON AWSLocation where
+  toJSON AWSLocation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SubnetArn" Data..=) Prelude.<$> subnetArn,
+            ("Zone" Data..=) Prelude.<$> zone
+          ]
+      )
diff --git a/gen/Amazonka/NetworkManager/Types/AccountStatus.hs b/gen/Amazonka/NetworkManager/Types/AccountStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/AccountStatus.hs
@@ -0,0 +1,85 @@
+{-# 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.NetworkManager.Types.AccountStatus
+-- 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.NetworkManager.Types.AccountStatus 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
+
+-- | Describes the current status of an account within an Amazon Web Services
+-- Organization, including service-linked roles (SLRs).
+--
+-- /See:/ 'newAccountStatus' smart constructor.
+data AccountStatus = AccountStatus'
+  { -- | The ID of an account within the Amazon Web Services Organization.
+    accountId :: Prelude.Maybe Prelude.Text,
+    -- | The status of SLR deployment for the account.
+    sLRDeploymentStatus :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AccountStatus' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'accountStatus_accountId' - The ID of an account within the Amazon Web Services Organization.
+--
+-- 'sLRDeploymentStatus', 'accountStatus_sLRDeploymentStatus' - The status of SLR deployment for the account.
+newAccountStatus ::
+  AccountStatus
+newAccountStatus =
+  AccountStatus'
+    { accountId = Prelude.Nothing,
+      sLRDeploymentStatus = Prelude.Nothing
+    }
+
+-- | The ID of an account within the Amazon Web Services Organization.
+accountStatus_accountId :: Lens.Lens' AccountStatus (Prelude.Maybe Prelude.Text)
+accountStatus_accountId = Lens.lens (\AccountStatus' {accountId} -> accountId) (\s@AccountStatus' {} a -> s {accountId = a} :: AccountStatus)
+
+-- | The status of SLR deployment for the account.
+accountStatus_sLRDeploymentStatus :: Lens.Lens' AccountStatus (Prelude.Maybe Prelude.Text)
+accountStatus_sLRDeploymentStatus = Lens.lens (\AccountStatus' {sLRDeploymentStatus} -> sLRDeploymentStatus) (\s@AccountStatus' {} a -> s {sLRDeploymentStatus = a} :: AccountStatus)
+
+instance Data.FromJSON AccountStatus where
+  parseJSON =
+    Data.withObject
+      "AccountStatus"
+      ( \x ->
+          AccountStatus'
+            Prelude.<$> (x Data..:? "AccountId")
+            Prelude.<*> (x Data..:? "SLRDeploymentStatus")
+      )
+
+instance Prelude.Hashable AccountStatus where
+  hashWithSalt _salt AccountStatus' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` sLRDeploymentStatus
+
+instance Prelude.NFData AccountStatus where
+  rnf AccountStatus' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf sLRDeploymentStatus
diff --git a/gen/Amazonka/NetworkManager/Types/Attachment.hs b/gen/Amazonka/NetworkManager/Types/Attachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/Attachment.hs
@@ -0,0 +1,232 @@
+{-# 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.NetworkManager.Types.Attachment
+-- 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.NetworkManager.Types.Attachment where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.AttachmentState
+import Amazonka.NetworkManager.Types.AttachmentType
+import Amazonka.NetworkManager.Types.ProposedSegmentChange
+import Amazonka.NetworkManager.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a core network attachment.
+--
+-- /See:/ 'newAttachment' smart constructor.
+data Attachment = Attachment'
+  { -- | The ID of the attachment.
+    attachmentId :: Prelude.Maybe Prelude.Text,
+    -- | The policy rule number associated with the attachment.
+    attachmentPolicyRuleNumber :: Prelude.Maybe Prelude.Int,
+    -- | The type of attachment.
+    attachmentType :: Prelude.Maybe AttachmentType,
+    -- | The ARN of a core network.
+    coreNetworkArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp when the attachment was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The Region where the edge is located.
+    edgeLocation :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the attachment account owner.
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The attachment to move from one segment to another.
+    proposedSegmentChange :: Prelude.Maybe ProposedSegmentChange,
+    -- | The attachment resource ARN.
+    resourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the segment attachment.
+    segmentName :: Prelude.Maybe Prelude.Text,
+    -- | The state of the attachment.
+    state :: Prelude.Maybe AttachmentState,
+    -- | The tags associated with the attachment.
+    tags :: Prelude.Maybe [Tag],
+    -- | The timestamp when the attachment was last updated.
+    updatedAt :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Attachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachmentId', 'attachment_attachmentId' - The ID of the attachment.
+--
+-- 'attachmentPolicyRuleNumber', 'attachment_attachmentPolicyRuleNumber' - The policy rule number associated with the attachment.
+--
+-- 'attachmentType', 'attachment_attachmentType' - The type of attachment.
+--
+-- 'coreNetworkArn', 'attachment_coreNetworkArn' - The ARN of a core network.
+--
+-- 'coreNetworkId', 'attachment_coreNetworkId' - The ID of a core network.
+--
+-- 'createdAt', 'attachment_createdAt' - The timestamp when the attachment was created.
+--
+-- 'edgeLocation', 'attachment_edgeLocation' - The Region where the edge is located.
+--
+-- 'ownerAccountId', 'attachment_ownerAccountId' - The ID of the attachment account owner.
+--
+-- 'proposedSegmentChange', 'attachment_proposedSegmentChange' - The attachment to move from one segment to another.
+--
+-- 'resourceArn', 'attachment_resourceArn' - The attachment resource ARN.
+--
+-- 'segmentName', 'attachment_segmentName' - The name of the segment attachment.
+--
+-- 'state', 'attachment_state' - The state of the attachment.
+--
+-- 'tags', 'attachment_tags' - The tags associated with the attachment.
+--
+-- 'updatedAt', 'attachment_updatedAt' - The timestamp when the attachment was last updated.
+newAttachment ::
+  Attachment
+newAttachment =
+  Attachment'
+    { attachmentId = Prelude.Nothing,
+      attachmentPolicyRuleNumber = Prelude.Nothing,
+      attachmentType = Prelude.Nothing,
+      coreNetworkArn = Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      edgeLocation = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      proposedSegmentChange = Prelude.Nothing,
+      resourceArn = Prelude.Nothing,
+      segmentName = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      updatedAt = Prelude.Nothing
+    }
+
+-- | The ID of the attachment.
+attachment_attachmentId :: Lens.Lens' Attachment (Prelude.Maybe Prelude.Text)
+attachment_attachmentId = Lens.lens (\Attachment' {attachmentId} -> attachmentId) (\s@Attachment' {} a -> s {attachmentId = a} :: Attachment)
+
+-- | The policy rule number associated with the attachment.
+attachment_attachmentPolicyRuleNumber :: Lens.Lens' Attachment (Prelude.Maybe Prelude.Int)
+attachment_attachmentPolicyRuleNumber = Lens.lens (\Attachment' {attachmentPolicyRuleNumber} -> attachmentPolicyRuleNumber) (\s@Attachment' {} a -> s {attachmentPolicyRuleNumber = a} :: Attachment)
+
+-- | The type of attachment.
+attachment_attachmentType :: Lens.Lens' Attachment (Prelude.Maybe AttachmentType)
+attachment_attachmentType = Lens.lens (\Attachment' {attachmentType} -> attachmentType) (\s@Attachment' {} a -> s {attachmentType = a} :: Attachment)
+
+-- | The ARN of a core network.
+attachment_coreNetworkArn :: Lens.Lens' Attachment (Prelude.Maybe Prelude.Text)
+attachment_coreNetworkArn = Lens.lens (\Attachment' {coreNetworkArn} -> coreNetworkArn) (\s@Attachment' {} a -> s {coreNetworkArn = a} :: Attachment)
+
+-- | The ID of a core network.
+attachment_coreNetworkId :: Lens.Lens' Attachment (Prelude.Maybe Prelude.Text)
+attachment_coreNetworkId = Lens.lens (\Attachment' {coreNetworkId} -> coreNetworkId) (\s@Attachment' {} a -> s {coreNetworkId = a} :: Attachment)
+
+-- | The timestamp when the attachment was created.
+attachment_createdAt :: Lens.Lens' Attachment (Prelude.Maybe Prelude.UTCTime)
+attachment_createdAt = Lens.lens (\Attachment' {createdAt} -> createdAt) (\s@Attachment' {} a -> s {createdAt = a} :: Attachment) Prelude.. Lens.mapping Data._Time
+
+-- | The Region where the edge is located.
+attachment_edgeLocation :: Lens.Lens' Attachment (Prelude.Maybe Prelude.Text)
+attachment_edgeLocation = Lens.lens (\Attachment' {edgeLocation} -> edgeLocation) (\s@Attachment' {} a -> s {edgeLocation = a} :: Attachment)
+
+-- | The ID of the attachment account owner.
+attachment_ownerAccountId :: Lens.Lens' Attachment (Prelude.Maybe Prelude.Text)
+attachment_ownerAccountId = Lens.lens (\Attachment' {ownerAccountId} -> ownerAccountId) (\s@Attachment' {} a -> s {ownerAccountId = a} :: Attachment)
+
+-- | The attachment to move from one segment to another.
+attachment_proposedSegmentChange :: Lens.Lens' Attachment (Prelude.Maybe ProposedSegmentChange)
+attachment_proposedSegmentChange = Lens.lens (\Attachment' {proposedSegmentChange} -> proposedSegmentChange) (\s@Attachment' {} a -> s {proposedSegmentChange = a} :: Attachment)
+
+-- | The attachment resource ARN.
+attachment_resourceArn :: Lens.Lens' Attachment (Prelude.Maybe Prelude.Text)
+attachment_resourceArn = Lens.lens (\Attachment' {resourceArn} -> resourceArn) (\s@Attachment' {} a -> s {resourceArn = a} :: Attachment)
+
+-- | The name of the segment attachment.
+attachment_segmentName :: Lens.Lens' Attachment (Prelude.Maybe Prelude.Text)
+attachment_segmentName = Lens.lens (\Attachment' {segmentName} -> segmentName) (\s@Attachment' {} a -> s {segmentName = a} :: Attachment)
+
+-- | The state of the attachment.
+attachment_state :: Lens.Lens' Attachment (Prelude.Maybe AttachmentState)
+attachment_state = Lens.lens (\Attachment' {state} -> state) (\s@Attachment' {} a -> s {state = a} :: Attachment)
+
+-- | The tags associated with the attachment.
+attachment_tags :: Lens.Lens' Attachment (Prelude.Maybe [Tag])
+attachment_tags = Lens.lens (\Attachment' {tags} -> tags) (\s@Attachment' {} a -> s {tags = a} :: Attachment) Prelude.. Lens.mapping Lens.coerced
+
+-- | The timestamp when the attachment was last updated.
+attachment_updatedAt :: Lens.Lens' Attachment (Prelude.Maybe Prelude.UTCTime)
+attachment_updatedAt = Lens.lens (\Attachment' {updatedAt} -> updatedAt) (\s@Attachment' {} a -> s {updatedAt = a} :: Attachment) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON Attachment where
+  parseJSON =
+    Data.withObject
+      "Attachment"
+      ( \x ->
+          Attachment'
+            Prelude.<$> (x Data..:? "AttachmentId")
+            Prelude.<*> (x Data..:? "AttachmentPolicyRuleNumber")
+            Prelude.<*> (x Data..:? "AttachmentType")
+            Prelude.<*> (x Data..:? "CoreNetworkArn")
+            Prelude.<*> (x Data..:? "CoreNetworkId")
+            Prelude.<*> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "EdgeLocation")
+            Prelude.<*> (x Data..:? "OwnerAccountId")
+            Prelude.<*> (x Data..:? "ProposedSegmentChange")
+            Prelude.<*> (x Data..:? "ResourceArn")
+            Prelude.<*> (x Data..:? "SegmentName")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "UpdatedAt")
+      )
+
+instance Prelude.Hashable Attachment where
+  hashWithSalt _salt Attachment' {..} =
+    _salt
+      `Prelude.hashWithSalt` attachmentId
+      `Prelude.hashWithSalt` attachmentPolicyRuleNumber
+      `Prelude.hashWithSalt` attachmentType
+      `Prelude.hashWithSalt` coreNetworkArn
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` edgeLocation
+      `Prelude.hashWithSalt` ownerAccountId
+      `Prelude.hashWithSalt` proposedSegmentChange
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` segmentName
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` updatedAt
+
+instance Prelude.NFData Attachment where
+  rnf Attachment' {..} =
+    Prelude.rnf attachmentId
+      `Prelude.seq` Prelude.rnf attachmentPolicyRuleNumber
+      `Prelude.seq` Prelude.rnf attachmentType
+      `Prelude.seq` Prelude.rnf coreNetworkArn
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf edgeLocation
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf proposedSegmentChange
+      `Prelude.seq` Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf segmentName
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf updatedAt
diff --git a/gen/Amazonka/NetworkManager/Types/AttachmentState.hs b/gen/Amazonka/NetworkManager/Types/AttachmentState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/AttachmentState.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.AttachmentState
+-- 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.NetworkManager.Types.AttachmentState
+  ( AttachmentState
+      ( ..,
+        AttachmentState_AVAILABLE,
+        AttachmentState_CREATING,
+        AttachmentState_DELETING,
+        AttachmentState_FAILED,
+        AttachmentState_PENDING_ATTACHMENT_ACCEPTANCE,
+        AttachmentState_PENDING_NETWORK_UPDATE,
+        AttachmentState_PENDING_TAG_ACCEPTANCE,
+        AttachmentState_REJECTED,
+        AttachmentState_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AttachmentState = AttachmentState'
+  { fromAttachmentState ::
+      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 AttachmentState_AVAILABLE :: AttachmentState
+pattern AttachmentState_AVAILABLE = AttachmentState' "AVAILABLE"
+
+pattern AttachmentState_CREATING :: AttachmentState
+pattern AttachmentState_CREATING = AttachmentState' "CREATING"
+
+pattern AttachmentState_DELETING :: AttachmentState
+pattern AttachmentState_DELETING = AttachmentState' "DELETING"
+
+pattern AttachmentState_FAILED :: AttachmentState
+pattern AttachmentState_FAILED = AttachmentState' "FAILED"
+
+pattern AttachmentState_PENDING_ATTACHMENT_ACCEPTANCE :: AttachmentState
+pattern AttachmentState_PENDING_ATTACHMENT_ACCEPTANCE = AttachmentState' "PENDING_ATTACHMENT_ACCEPTANCE"
+
+pattern AttachmentState_PENDING_NETWORK_UPDATE :: AttachmentState
+pattern AttachmentState_PENDING_NETWORK_UPDATE = AttachmentState' "PENDING_NETWORK_UPDATE"
+
+pattern AttachmentState_PENDING_TAG_ACCEPTANCE :: AttachmentState
+pattern AttachmentState_PENDING_TAG_ACCEPTANCE = AttachmentState' "PENDING_TAG_ACCEPTANCE"
+
+pattern AttachmentState_REJECTED :: AttachmentState
+pattern AttachmentState_REJECTED = AttachmentState' "REJECTED"
+
+pattern AttachmentState_UPDATING :: AttachmentState
+pattern AttachmentState_UPDATING = AttachmentState' "UPDATING"
+
+{-# COMPLETE
+  AttachmentState_AVAILABLE,
+  AttachmentState_CREATING,
+  AttachmentState_DELETING,
+  AttachmentState_FAILED,
+  AttachmentState_PENDING_ATTACHMENT_ACCEPTANCE,
+  AttachmentState_PENDING_NETWORK_UPDATE,
+  AttachmentState_PENDING_TAG_ACCEPTANCE,
+  AttachmentState_REJECTED,
+  AttachmentState_UPDATING,
+  AttachmentState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/AttachmentType.hs b/gen/Amazonka/NetworkManager/Types/AttachmentType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/AttachmentType.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.NetworkManager.Types.AttachmentType
+-- 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.NetworkManager.Types.AttachmentType
+  ( AttachmentType
+      ( ..,
+        AttachmentType_CONNECT,
+        AttachmentType_SITE_TO_SITE_VPN,
+        AttachmentType_TRANSIT_GATEWAY_ROUTE_TABLE,
+        AttachmentType_VPC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AttachmentType = AttachmentType'
+  { fromAttachmentType ::
+      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 AttachmentType_CONNECT :: AttachmentType
+pattern AttachmentType_CONNECT = AttachmentType' "CONNECT"
+
+pattern AttachmentType_SITE_TO_SITE_VPN :: AttachmentType
+pattern AttachmentType_SITE_TO_SITE_VPN = AttachmentType' "SITE_TO_SITE_VPN"
+
+pattern AttachmentType_TRANSIT_GATEWAY_ROUTE_TABLE :: AttachmentType
+pattern AttachmentType_TRANSIT_GATEWAY_ROUTE_TABLE = AttachmentType' "TRANSIT_GATEWAY_ROUTE_TABLE"
+
+pattern AttachmentType_VPC :: AttachmentType
+pattern AttachmentType_VPC = AttachmentType' "VPC"
+
+{-# COMPLETE
+  AttachmentType_CONNECT,
+  AttachmentType_SITE_TO_SITE_VPN,
+  AttachmentType_TRANSIT_GATEWAY_ROUTE_TABLE,
+  AttachmentType_VPC,
+  AttachmentType'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/Bandwidth.hs b/gen/Amazonka/NetworkManager/Types/Bandwidth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/Bandwidth.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.NetworkManager.Types.Bandwidth
+-- 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.NetworkManager.Types.Bandwidth 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
+
+-- | Describes bandwidth information.
+--
+-- /See:/ 'newBandwidth' smart constructor.
+data Bandwidth = Bandwidth'
+  { -- | Download speed in Mbps.
+    downloadSpeed :: Prelude.Maybe Prelude.Int,
+    -- | Upload speed in Mbps.
+    uploadSpeed :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Bandwidth' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'downloadSpeed', 'bandwidth_downloadSpeed' - Download speed in Mbps.
+--
+-- 'uploadSpeed', 'bandwidth_uploadSpeed' - Upload speed in Mbps.
+newBandwidth ::
+  Bandwidth
+newBandwidth =
+  Bandwidth'
+    { downloadSpeed = Prelude.Nothing,
+      uploadSpeed = Prelude.Nothing
+    }
+
+-- | Download speed in Mbps.
+bandwidth_downloadSpeed :: Lens.Lens' Bandwidth (Prelude.Maybe Prelude.Int)
+bandwidth_downloadSpeed = Lens.lens (\Bandwidth' {downloadSpeed} -> downloadSpeed) (\s@Bandwidth' {} a -> s {downloadSpeed = a} :: Bandwidth)
+
+-- | Upload speed in Mbps.
+bandwidth_uploadSpeed :: Lens.Lens' Bandwidth (Prelude.Maybe Prelude.Int)
+bandwidth_uploadSpeed = Lens.lens (\Bandwidth' {uploadSpeed} -> uploadSpeed) (\s@Bandwidth' {} a -> s {uploadSpeed = a} :: Bandwidth)
+
+instance Data.FromJSON Bandwidth where
+  parseJSON =
+    Data.withObject
+      "Bandwidth"
+      ( \x ->
+          Bandwidth'
+            Prelude.<$> (x Data..:? "DownloadSpeed")
+            Prelude.<*> (x Data..:? "UploadSpeed")
+      )
+
+instance Prelude.Hashable Bandwidth where
+  hashWithSalt _salt Bandwidth' {..} =
+    _salt
+      `Prelude.hashWithSalt` downloadSpeed
+      `Prelude.hashWithSalt` uploadSpeed
+
+instance Prelude.NFData Bandwidth where
+  rnf Bandwidth' {..} =
+    Prelude.rnf downloadSpeed
+      `Prelude.seq` Prelude.rnf uploadSpeed
+
+instance Data.ToJSON Bandwidth where
+  toJSON Bandwidth' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DownloadSpeed" Data..=) Prelude.<$> downloadSpeed,
+            ("UploadSpeed" Data..=) Prelude.<$> uploadSpeed
+          ]
+      )
diff --git a/gen/Amazonka/NetworkManager/Types/BgpOptions.hs b/gen/Amazonka/NetworkManager/Types/BgpOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/BgpOptions.hs
@@ -0,0 +1,66 @@
+{-# 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.NetworkManager.Types.BgpOptions
+-- 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.NetworkManager.Types.BgpOptions 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
+
+-- | Describes the BGP options.
+--
+-- /See:/ 'newBgpOptions' smart constructor.
+data BgpOptions = BgpOptions'
+  { -- | The Peer ASN of the BGP.
+    peerAsn :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BgpOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'peerAsn', 'bgpOptions_peerAsn' - The Peer ASN of the BGP.
+newBgpOptions ::
+  BgpOptions
+newBgpOptions =
+  BgpOptions' {peerAsn = Prelude.Nothing}
+
+-- | The Peer ASN of the BGP.
+bgpOptions_peerAsn :: Lens.Lens' BgpOptions (Prelude.Maybe Prelude.Integer)
+bgpOptions_peerAsn = Lens.lens (\BgpOptions' {peerAsn} -> peerAsn) (\s@BgpOptions' {} a -> s {peerAsn = a} :: BgpOptions)
+
+instance Prelude.Hashable BgpOptions where
+  hashWithSalt _salt BgpOptions' {..} =
+    _salt `Prelude.hashWithSalt` peerAsn
+
+instance Prelude.NFData BgpOptions where
+  rnf BgpOptions' {..} = Prelude.rnf peerAsn
+
+instance Data.ToJSON BgpOptions where
+  toJSON BgpOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("PeerAsn" Data..=) Prelude.<$> peerAsn]
+      )
diff --git a/gen/Amazonka/NetworkManager/Types/ChangeAction.hs b/gen/Amazonka/NetworkManager/Types/ChangeAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ChangeAction.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.NetworkManager.Types.ChangeAction
+-- 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.NetworkManager.Types.ChangeAction
+  ( ChangeAction
+      ( ..,
+        ChangeAction_ADD,
+        ChangeAction_MODIFY,
+        ChangeAction_REMOVE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ChangeAction = ChangeAction'
+  { fromChangeAction ::
+      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 ChangeAction_ADD :: ChangeAction
+pattern ChangeAction_ADD = ChangeAction' "ADD"
+
+pattern ChangeAction_MODIFY :: ChangeAction
+pattern ChangeAction_MODIFY = ChangeAction' "MODIFY"
+
+pattern ChangeAction_REMOVE :: ChangeAction
+pattern ChangeAction_REMOVE = ChangeAction' "REMOVE"
+
+{-# COMPLETE
+  ChangeAction_ADD,
+  ChangeAction_MODIFY,
+  ChangeAction_REMOVE,
+  ChangeAction'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/ChangeSetState.hs b/gen/Amazonka/NetworkManager/Types/ChangeSetState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ChangeSetState.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.NetworkManager.Types.ChangeSetState
+-- 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.NetworkManager.Types.ChangeSetState
+  ( ChangeSetState
+      ( ..,
+        ChangeSetState_EXECUTING,
+        ChangeSetState_EXECUTION_SUCCEEDED,
+        ChangeSetState_FAILED_GENERATION,
+        ChangeSetState_OUT_OF_DATE,
+        ChangeSetState_PENDING_GENERATION,
+        ChangeSetState_READY_TO_EXECUTE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ChangeSetState = ChangeSetState'
+  { fromChangeSetState ::
+      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 ChangeSetState_EXECUTING :: ChangeSetState
+pattern ChangeSetState_EXECUTING = ChangeSetState' "EXECUTING"
+
+pattern ChangeSetState_EXECUTION_SUCCEEDED :: ChangeSetState
+pattern ChangeSetState_EXECUTION_SUCCEEDED = ChangeSetState' "EXECUTION_SUCCEEDED"
+
+pattern ChangeSetState_FAILED_GENERATION :: ChangeSetState
+pattern ChangeSetState_FAILED_GENERATION = ChangeSetState' "FAILED_GENERATION"
+
+pattern ChangeSetState_OUT_OF_DATE :: ChangeSetState
+pattern ChangeSetState_OUT_OF_DATE = ChangeSetState' "OUT_OF_DATE"
+
+pattern ChangeSetState_PENDING_GENERATION :: ChangeSetState
+pattern ChangeSetState_PENDING_GENERATION = ChangeSetState' "PENDING_GENERATION"
+
+pattern ChangeSetState_READY_TO_EXECUTE :: ChangeSetState
+pattern ChangeSetState_READY_TO_EXECUTE = ChangeSetState' "READY_TO_EXECUTE"
+
+{-# COMPLETE
+  ChangeSetState_EXECUTING,
+  ChangeSetState_EXECUTION_SUCCEEDED,
+  ChangeSetState_FAILED_GENERATION,
+  ChangeSetState_OUT_OF_DATE,
+  ChangeSetState_PENDING_GENERATION,
+  ChangeSetState_READY_TO_EXECUTE,
+  ChangeSetState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/ChangeStatus.hs b/gen/Amazonka/NetworkManager/Types/ChangeStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ChangeStatus.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.NetworkManager.Types.ChangeStatus
+-- 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.NetworkManager.Types.ChangeStatus
+  ( ChangeStatus
+      ( ..,
+        ChangeStatus_COMPLETE,
+        ChangeStatus_FAILED,
+        ChangeStatus_IN_PROGRESS,
+        ChangeStatus_NOT_STARTED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ChangeStatus = ChangeStatus'
+  { fromChangeStatus ::
+      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 ChangeStatus_COMPLETE :: ChangeStatus
+pattern ChangeStatus_COMPLETE = ChangeStatus' "COMPLETE"
+
+pattern ChangeStatus_FAILED :: ChangeStatus
+pattern ChangeStatus_FAILED = ChangeStatus' "FAILED"
+
+pattern ChangeStatus_IN_PROGRESS :: ChangeStatus
+pattern ChangeStatus_IN_PROGRESS = ChangeStatus' "IN_PROGRESS"
+
+pattern ChangeStatus_NOT_STARTED :: ChangeStatus
+pattern ChangeStatus_NOT_STARTED = ChangeStatus' "NOT_STARTED"
+
+{-# COMPLETE
+  ChangeStatus_COMPLETE,
+  ChangeStatus_FAILED,
+  ChangeStatus_IN_PROGRESS,
+  ChangeStatus_NOT_STARTED,
+  ChangeStatus'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/ChangeType.hs b/gen/Amazonka/NetworkManager/Types/ChangeType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ChangeType.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.ChangeType
+-- 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.NetworkManager.Types.ChangeType
+  ( ChangeType
+      ( ..,
+        ChangeType_ATTACHMENT_MAPPING,
+        ChangeType_ATTACHMENT_POLICIES_CONFIGURATION,
+        ChangeType_ATTACHMENT_ROUTE_PROPAGATION,
+        ChangeType_ATTACHMENT_ROUTE_STATIC,
+        ChangeType_CORE_NETWORK_CONFIGURATION,
+        ChangeType_CORE_NETWORK_EDGE,
+        ChangeType_CORE_NETWORK_SEGMENT,
+        ChangeType_SEGMENTS_CONFIGURATION,
+        ChangeType_SEGMENT_ACTIONS_CONFIGURATION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ChangeType = ChangeType'
+  { fromChangeType ::
+      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 ChangeType_ATTACHMENT_MAPPING :: ChangeType
+pattern ChangeType_ATTACHMENT_MAPPING = ChangeType' "ATTACHMENT_MAPPING"
+
+pattern ChangeType_ATTACHMENT_POLICIES_CONFIGURATION :: ChangeType
+pattern ChangeType_ATTACHMENT_POLICIES_CONFIGURATION = ChangeType' "ATTACHMENT_POLICIES_CONFIGURATION"
+
+pattern ChangeType_ATTACHMENT_ROUTE_PROPAGATION :: ChangeType
+pattern ChangeType_ATTACHMENT_ROUTE_PROPAGATION = ChangeType' "ATTACHMENT_ROUTE_PROPAGATION"
+
+pattern ChangeType_ATTACHMENT_ROUTE_STATIC :: ChangeType
+pattern ChangeType_ATTACHMENT_ROUTE_STATIC = ChangeType' "ATTACHMENT_ROUTE_STATIC"
+
+pattern ChangeType_CORE_NETWORK_CONFIGURATION :: ChangeType
+pattern ChangeType_CORE_NETWORK_CONFIGURATION = ChangeType' "CORE_NETWORK_CONFIGURATION"
+
+pattern ChangeType_CORE_NETWORK_EDGE :: ChangeType
+pattern ChangeType_CORE_NETWORK_EDGE = ChangeType' "CORE_NETWORK_EDGE"
+
+pattern ChangeType_CORE_NETWORK_SEGMENT :: ChangeType
+pattern ChangeType_CORE_NETWORK_SEGMENT = ChangeType' "CORE_NETWORK_SEGMENT"
+
+pattern ChangeType_SEGMENTS_CONFIGURATION :: ChangeType
+pattern ChangeType_SEGMENTS_CONFIGURATION = ChangeType' "SEGMENTS_CONFIGURATION"
+
+pattern ChangeType_SEGMENT_ACTIONS_CONFIGURATION :: ChangeType
+pattern ChangeType_SEGMENT_ACTIONS_CONFIGURATION = ChangeType' "SEGMENT_ACTIONS_CONFIGURATION"
+
+{-# COMPLETE
+  ChangeType_ATTACHMENT_MAPPING,
+  ChangeType_ATTACHMENT_POLICIES_CONFIGURATION,
+  ChangeType_ATTACHMENT_ROUTE_PROPAGATION,
+  ChangeType_ATTACHMENT_ROUTE_STATIC,
+  ChangeType_CORE_NETWORK_CONFIGURATION,
+  ChangeType_CORE_NETWORK_EDGE,
+  ChangeType_CORE_NETWORK_SEGMENT,
+  ChangeType_SEGMENTS_CONFIGURATION,
+  ChangeType_SEGMENT_ACTIONS_CONFIGURATION,
+  ChangeType'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/ConnectAttachment.hs b/gen/Amazonka/NetworkManager/Types/ConnectAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ConnectAttachment.hs
@@ -0,0 +1,98 @@
+{-# 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.NetworkManager.Types.ConnectAttachment
+-- 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.NetworkManager.Types.ConnectAttachment where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.Attachment
+import Amazonka.NetworkManager.Types.ConnectAttachmentOptions
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a core network Connect attachment.
+--
+-- /See:/ 'newConnectAttachment' smart constructor.
+data ConnectAttachment = ConnectAttachment'
+  { -- | The attachment details.
+    attachment :: Prelude.Maybe Attachment,
+    -- | Options for connecting an attachment.
+    options :: Prelude.Maybe ConnectAttachmentOptions,
+    -- | The ID of the transport attachment.
+    transportAttachmentId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachment', 'connectAttachment_attachment' - The attachment details.
+--
+-- 'options', 'connectAttachment_options' - Options for connecting an attachment.
+--
+-- 'transportAttachmentId', 'connectAttachment_transportAttachmentId' - The ID of the transport attachment.
+newConnectAttachment ::
+  ConnectAttachment
+newConnectAttachment =
+  ConnectAttachment'
+    { attachment = Prelude.Nothing,
+      options = Prelude.Nothing,
+      transportAttachmentId = Prelude.Nothing
+    }
+
+-- | The attachment details.
+connectAttachment_attachment :: Lens.Lens' ConnectAttachment (Prelude.Maybe Attachment)
+connectAttachment_attachment = Lens.lens (\ConnectAttachment' {attachment} -> attachment) (\s@ConnectAttachment' {} a -> s {attachment = a} :: ConnectAttachment)
+
+-- | Options for connecting an attachment.
+connectAttachment_options :: Lens.Lens' ConnectAttachment (Prelude.Maybe ConnectAttachmentOptions)
+connectAttachment_options = Lens.lens (\ConnectAttachment' {options} -> options) (\s@ConnectAttachment' {} a -> s {options = a} :: ConnectAttachment)
+
+-- | The ID of the transport attachment.
+connectAttachment_transportAttachmentId :: Lens.Lens' ConnectAttachment (Prelude.Maybe Prelude.Text)
+connectAttachment_transportAttachmentId = Lens.lens (\ConnectAttachment' {transportAttachmentId} -> transportAttachmentId) (\s@ConnectAttachment' {} a -> s {transportAttachmentId = a} :: ConnectAttachment)
+
+instance Data.FromJSON ConnectAttachment where
+  parseJSON =
+    Data.withObject
+      "ConnectAttachment"
+      ( \x ->
+          ConnectAttachment'
+            Prelude.<$> (x Data..:? "Attachment")
+            Prelude.<*> (x Data..:? "Options")
+            Prelude.<*> (x Data..:? "TransportAttachmentId")
+      )
+
+instance Prelude.Hashable ConnectAttachment where
+  hashWithSalt _salt ConnectAttachment' {..} =
+    _salt
+      `Prelude.hashWithSalt` attachment
+      `Prelude.hashWithSalt` options
+      `Prelude.hashWithSalt` transportAttachmentId
+
+instance Prelude.NFData ConnectAttachment where
+  rnf ConnectAttachment' {..} =
+    Prelude.rnf attachment
+      `Prelude.seq` Prelude.rnf options
+      `Prelude.seq` Prelude.rnf transportAttachmentId
diff --git a/gen/Amazonka/NetworkManager/Types/ConnectAttachmentOptions.hs b/gen/Amazonka/NetworkManager/Types/ConnectAttachmentOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ConnectAttachmentOptions.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.ConnectAttachmentOptions
+-- 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.NetworkManager.Types.ConnectAttachmentOptions where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.TunnelProtocol
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a core network Connect attachment options.
+--
+-- /See:/ 'newConnectAttachmentOptions' smart constructor.
+data ConnectAttachmentOptions = ConnectAttachmentOptions'
+  { -- | The protocol used for the attachment connection.
+    protocol :: Prelude.Maybe TunnelProtocol
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectAttachmentOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'protocol', 'connectAttachmentOptions_protocol' - The protocol used for the attachment connection.
+newConnectAttachmentOptions ::
+  ConnectAttachmentOptions
+newConnectAttachmentOptions =
+  ConnectAttachmentOptions'
+    { protocol =
+        Prelude.Nothing
+    }
+
+-- | The protocol used for the attachment connection.
+connectAttachmentOptions_protocol :: Lens.Lens' ConnectAttachmentOptions (Prelude.Maybe TunnelProtocol)
+connectAttachmentOptions_protocol = Lens.lens (\ConnectAttachmentOptions' {protocol} -> protocol) (\s@ConnectAttachmentOptions' {} a -> s {protocol = a} :: ConnectAttachmentOptions)
+
+instance Data.FromJSON ConnectAttachmentOptions where
+  parseJSON =
+    Data.withObject
+      "ConnectAttachmentOptions"
+      ( \x ->
+          ConnectAttachmentOptions'
+            Prelude.<$> (x Data..:? "Protocol")
+      )
+
+instance Prelude.Hashable ConnectAttachmentOptions where
+  hashWithSalt _salt ConnectAttachmentOptions' {..} =
+    _salt `Prelude.hashWithSalt` protocol
+
+instance Prelude.NFData ConnectAttachmentOptions where
+  rnf ConnectAttachmentOptions' {..} =
+    Prelude.rnf protocol
+
+instance Data.ToJSON ConnectAttachmentOptions where
+  toJSON ConnectAttachmentOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Protocol" Data..=) Prelude.<$> protocol]
+      )
diff --git a/gen/Amazonka/NetworkManager/Types/ConnectPeer.hs b/gen/Amazonka/NetworkManager/Types/ConnectPeer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ConnectPeer.hs
@@ -0,0 +1,159 @@
+{-# 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.NetworkManager.Types.ConnectPeer
+-- 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.NetworkManager.Types.ConnectPeer where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.ConnectPeerConfiguration
+import Amazonka.NetworkManager.Types.ConnectPeerState
+import Amazonka.NetworkManager.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a core network Connect peer.
+--
+-- /See:/ 'newConnectPeer' smart constructor.
+data ConnectPeer = ConnectPeer'
+  { -- | The configuration of the Connect peer.
+    configuration :: Prelude.Maybe ConnectPeerConfiguration,
+    -- | The ID of the attachment to connect.
+    connectAttachmentId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Connect peer.
+    connectPeerId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp when the Connect peer was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The Connect peer Regions where edges are located.
+    edgeLocation :: Prelude.Maybe Prelude.Text,
+    -- | The state of the Connect peer.
+    state :: Prelude.Maybe ConnectPeerState,
+    -- | The list of key-value tags associated with the Connect peer.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectPeer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configuration', 'connectPeer_configuration' - The configuration of the Connect peer.
+--
+-- 'connectAttachmentId', 'connectPeer_connectAttachmentId' - The ID of the attachment to connect.
+--
+-- 'connectPeerId', 'connectPeer_connectPeerId' - The ID of the Connect peer.
+--
+-- 'coreNetworkId', 'connectPeer_coreNetworkId' - The ID of a core network.
+--
+-- 'createdAt', 'connectPeer_createdAt' - The timestamp when the Connect peer was created.
+--
+-- 'edgeLocation', 'connectPeer_edgeLocation' - The Connect peer Regions where edges are located.
+--
+-- 'state', 'connectPeer_state' - The state of the Connect peer.
+--
+-- 'tags', 'connectPeer_tags' - The list of key-value tags associated with the Connect peer.
+newConnectPeer ::
+  ConnectPeer
+newConnectPeer =
+  ConnectPeer'
+    { configuration = Prelude.Nothing,
+      connectAttachmentId = Prelude.Nothing,
+      connectPeerId = Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      edgeLocation = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The configuration of the Connect peer.
+connectPeer_configuration :: Lens.Lens' ConnectPeer (Prelude.Maybe ConnectPeerConfiguration)
+connectPeer_configuration = Lens.lens (\ConnectPeer' {configuration} -> configuration) (\s@ConnectPeer' {} a -> s {configuration = a} :: ConnectPeer)
+
+-- | The ID of the attachment to connect.
+connectPeer_connectAttachmentId :: Lens.Lens' ConnectPeer (Prelude.Maybe Prelude.Text)
+connectPeer_connectAttachmentId = Lens.lens (\ConnectPeer' {connectAttachmentId} -> connectAttachmentId) (\s@ConnectPeer' {} a -> s {connectAttachmentId = a} :: ConnectPeer)
+
+-- | The ID of the Connect peer.
+connectPeer_connectPeerId :: Lens.Lens' ConnectPeer (Prelude.Maybe Prelude.Text)
+connectPeer_connectPeerId = Lens.lens (\ConnectPeer' {connectPeerId} -> connectPeerId) (\s@ConnectPeer' {} a -> s {connectPeerId = a} :: ConnectPeer)
+
+-- | The ID of a core network.
+connectPeer_coreNetworkId :: Lens.Lens' ConnectPeer (Prelude.Maybe Prelude.Text)
+connectPeer_coreNetworkId = Lens.lens (\ConnectPeer' {coreNetworkId} -> coreNetworkId) (\s@ConnectPeer' {} a -> s {coreNetworkId = a} :: ConnectPeer)
+
+-- | The timestamp when the Connect peer was created.
+connectPeer_createdAt :: Lens.Lens' ConnectPeer (Prelude.Maybe Prelude.UTCTime)
+connectPeer_createdAt = Lens.lens (\ConnectPeer' {createdAt} -> createdAt) (\s@ConnectPeer' {} a -> s {createdAt = a} :: ConnectPeer) Prelude.. Lens.mapping Data._Time
+
+-- | The Connect peer Regions where edges are located.
+connectPeer_edgeLocation :: Lens.Lens' ConnectPeer (Prelude.Maybe Prelude.Text)
+connectPeer_edgeLocation = Lens.lens (\ConnectPeer' {edgeLocation} -> edgeLocation) (\s@ConnectPeer' {} a -> s {edgeLocation = a} :: ConnectPeer)
+
+-- | The state of the Connect peer.
+connectPeer_state :: Lens.Lens' ConnectPeer (Prelude.Maybe ConnectPeerState)
+connectPeer_state = Lens.lens (\ConnectPeer' {state} -> state) (\s@ConnectPeer' {} a -> s {state = a} :: ConnectPeer)
+
+-- | The list of key-value tags associated with the Connect peer.
+connectPeer_tags :: Lens.Lens' ConnectPeer (Prelude.Maybe [Tag])
+connectPeer_tags = Lens.lens (\ConnectPeer' {tags} -> tags) (\s@ConnectPeer' {} a -> s {tags = a} :: ConnectPeer) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ConnectPeer where
+  parseJSON =
+    Data.withObject
+      "ConnectPeer"
+      ( \x ->
+          ConnectPeer'
+            Prelude.<$> (x Data..:? "Configuration")
+            Prelude.<*> (x Data..:? "ConnectAttachmentId")
+            Prelude.<*> (x Data..:? "ConnectPeerId")
+            Prelude.<*> (x Data..:? "CoreNetworkId")
+            Prelude.<*> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "EdgeLocation")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable ConnectPeer where
+  hashWithSalt _salt ConnectPeer' {..} =
+    _salt
+      `Prelude.hashWithSalt` configuration
+      `Prelude.hashWithSalt` connectAttachmentId
+      `Prelude.hashWithSalt` connectPeerId
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` edgeLocation
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData ConnectPeer where
+  rnf ConnectPeer' {..} =
+    Prelude.rnf configuration
+      `Prelude.seq` Prelude.rnf connectAttachmentId
+      `Prelude.seq` Prelude.rnf connectPeerId
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf edgeLocation
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/NetworkManager/Types/ConnectPeerAssociation.hs b/gen/Amazonka/NetworkManager/Types/ConnectPeerAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ConnectPeerAssociation.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.ConnectPeerAssociation
+-- 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.NetworkManager.Types.ConnectPeerAssociation where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.ConnectPeerAssociationState
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a core network Connect peer association.
+--
+-- /See:/ 'newConnectPeerAssociation' smart constructor.
+data ConnectPeerAssociation = ConnectPeerAssociation'
+  { -- | The ID of the Connect peer.
+    connectPeerId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the device to connect to.
+    deviceId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the link.
+    linkId :: Prelude.Maybe Prelude.Text,
+    -- | The state of the Connect peer association.
+    state :: Prelude.Maybe ConnectPeerAssociationState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectPeerAssociation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectPeerId', 'connectPeerAssociation_connectPeerId' - The ID of the Connect peer.
+--
+-- 'deviceId', 'connectPeerAssociation_deviceId' - The ID of the device to connect to.
+--
+-- 'globalNetworkId', 'connectPeerAssociation_globalNetworkId' - The ID of the global network.
+--
+-- 'linkId', 'connectPeerAssociation_linkId' - The ID of the link.
+--
+-- 'state', 'connectPeerAssociation_state' - The state of the Connect peer association.
+newConnectPeerAssociation ::
+  ConnectPeerAssociation
+newConnectPeerAssociation =
+  ConnectPeerAssociation'
+    { connectPeerId =
+        Prelude.Nothing,
+      deviceId = Prelude.Nothing,
+      globalNetworkId = Prelude.Nothing,
+      linkId = Prelude.Nothing,
+      state = Prelude.Nothing
+    }
+
+-- | The ID of the Connect peer.
+connectPeerAssociation_connectPeerId :: Lens.Lens' ConnectPeerAssociation (Prelude.Maybe Prelude.Text)
+connectPeerAssociation_connectPeerId = Lens.lens (\ConnectPeerAssociation' {connectPeerId} -> connectPeerId) (\s@ConnectPeerAssociation' {} a -> s {connectPeerId = a} :: ConnectPeerAssociation)
+
+-- | The ID of the device to connect to.
+connectPeerAssociation_deviceId :: Lens.Lens' ConnectPeerAssociation (Prelude.Maybe Prelude.Text)
+connectPeerAssociation_deviceId = Lens.lens (\ConnectPeerAssociation' {deviceId} -> deviceId) (\s@ConnectPeerAssociation' {} a -> s {deviceId = a} :: ConnectPeerAssociation)
+
+-- | The ID of the global network.
+connectPeerAssociation_globalNetworkId :: Lens.Lens' ConnectPeerAssociation (Prelude.Maybe Prelude.Text)
+connectPeerAssociation_globalNetworkId = Lens.lens (\ConnectPeerAssociation' {globalNetworkId} -> globalNetworkId) (\s@ConnectPeerAssociation' {} a -> s {globalNetworkId = a} :: ConnectPeerAssociation)
+
+-- | The ID of the link.
+connectPeerAssociation_linkId :: Lens.Lens' ConnectPeerAssociation (Prelude.Maybe Prelude.Text)
+connectPeerAssociation_linkId = Lens.lens (\ConnectPeerAssociation' {linkId} -> linkId) (\s@ConnectPeerAssociation' {} a -> s {linkId = a} :: ConnectPeerAssociation)
+
+-- | The state of the Connect peer association.
+connectPeerAssociation_state :: Lens.Lens' ConnectPeerAssociation (Prelude.Maybe ConnectPeerAssociationState)
+connectPeerAssociation_state = Lens.lens (\ConnectPeerAssociation' {state} -> state) (\s@ConnectPeerAssociation' {} a -> s {state = a} :: ConnectPeerAssociation)
+
+instance Data.FromJSON ConnectPeerAssociation where
+  parseJSON =
+    Data.withObject
+      "ConnectPeerAssociation"
+      ( \x ->
+          ConnectPeerAssociation'
+            Prelude.<$> (x Data..:? "ConnectPeerId")
+            Prelude.<*> (x Data..:? "DeviceId")
+            Prelude.<*> (x Data..:? "GlobalNetworkId")
+            Prelude.<*> (x Data..:? "LinkId")
+            Prelude.<*> (x Data..:? "State")
+      )
+
+instance Prelude.Hashable ConnectPeerAssociation where
+  hashWithSalt _salt ConnectPeerAssociation' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectPeerId
+      `Prelude.hashWithSalt` deviceId
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` linkId
+      `Prelude.hashWithSalt` state
+
+instance Prelude.NFData ConnectPeerAssociation where
+  rnf ConnectPeerAssociation' {..} =
+    Prelude.rnf connectPeerId
+      `Prelude.seq` Prelude.rnf deviceId
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf linkId
+      `Prelude.seq` Prelude.rnf state
diff --git a/gen/Amazonka/NetworkManager/Types/ConnectPeerAssociationState.hs b/gen/Amazonka/NetworkManager/Types/ConnectPeerAssociationState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ConnectPeerAssociationState.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.NetworkManager.Types.ConnectPeerAssociationState
+-- 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.NetworkManager.Types.ConnectPeerAssociationState
+  ( ConnectPeerAssociationState
+      ( ..,
+        ConnectPeerAssociationState_AVAILABLE,
+        ConnectPeerAssociationState_DELETED,
+        ConnectPeerAssociationState_DELETING,
+        ConnectPeerAssociationState_PENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConnectPeerAssociationState = ConnectPeerAssociationState'
+  { fromConnectPeerAssociationState ::
+      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 ConnectPeerAssociationState_AVAILABLE :: ConnectPeerAssociationState
+pattern ConnectPeerAssociationState_AVAILABLE = ConnectPeerAssociationState' "AVAILABLE"
+
+pattern ConnectPeerAssociationState_DELETED :: ConnectPeerAssociationState
+pattern ConnectPeerAssociationState_DELETED = ConnectPeerAssociationState' "DELETED"
+
+pattern ConnectPeerAssociationState_DELETING :: ConnectPeerAssociationState
+pattern ConnectPeerAssociationState_DELETING = ConnectPeerAssociationState' "DELETING"
+
+pattern ConnectPeerAssociationState_PENDING :: ConnectPeerAssociationState
+pattern ConnectPeerAssociationState_PENDING = ConnectPeerAssociationState' "PENDING"
+
+{-# COMPLETE
+  ConnectPeerAssociationState_AVAILABLE,
+  ConnectPeerAssociationState_DELETED,
+  ConnectPeerAssociationState_DELETING,
+  ConnectPeerAssociationState_PENDING,
+  ConnectPeerAssociationState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/ConnectPeerBgpConfiguration.hs b/gen/Amazonka/NetworkManager/Types/ConnectPeerBgpConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ConnectPeerBgpConfiguration.hs
@@ -0,0 +1,109 @@
+{-# 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.NetworkManager.Types.ConnectPeerBgpConfiguration
+-- 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.NetworkManager.Types.ConnectPeerBgpConfiguration 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
+
+-- | Describes a core network BGP configuration.
+--
+-- /See:/ 'newConnectPeerBgpConfiguration' smart constructor.
+data ConnectPeerBgpConfiguration = ConnectPeerBgpConfiguration'
+  { -- | The address of a core network.
+    coreNetworkAddress :: Prelude.Maybe Prelude.Text,
+    -- | The ASN of the Coret Network.
+    coreNetworkAsn :: Prelude.Maybe Prelude.Integer,
+    -- | The address of a core network Connect peer.
+    peerAddress :: Prelude.Maybe Prelude.Text,
+    -- | The ASN of the Connect peer.
+    peerAsn :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectPeerBgpConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkAddress', 'connectPeerBgpConfiguration_coreNetworkAddress' - The address of a core network.
+--
+-- 'coreNetworkAsn', 'connectPeerBgpConfiguration_coreNetworkAsn' - The ASN of the Coret Network.
+--
+-- 'peerAddress', 'connectPeerBgpConfiguration_peerAddress' - The address of a core network Connect peer.
+--
+-- 'peerAsn', 'connectPeerBgpConfiguration_peerAsn' - The ASN of the Connect peer.
+newConnectPeerBgpConfiguration ::
+  ConnectPeerBgpConfiguration
+newConnectPeerBgpConfiguration =
+  ConnectPeerBgpConfiguration'
+    { coreNetworkAddress =
+        Prelude.Nothing,
+      coreNetworkAsn = Prelude.Nothing,
+      peerAddress = Prelude.Nothing,
+      peerAsn = Prelude.Nothing
+    }
+
+-- | The address of a core network.
+connectPeerBgpConfiguration_coreNetworkAddress :: Lens.Lens' ConnectPeerBgpConfiguration (Prelude.Maybe Prelude.Text)
+connectPeerBgpConfiguration_coreNetworkAddress = Lens.lens (\ConnectPeerBgpConfiguration' {coreNetworkAddress} -> coreNetworkAddress) (\s@ConnectPeerBgpConfiguration' {} a -> s {coreNetworkAddress = a} :: ConnectPeerBgpConfiguration)
+
+-- | The ASN of the Coret Network.
+connectPeerBgpConfiguration_coreNetworkAsn :: Lens.Lens' ConnectPeerBgpConfiguration (Prelude.Maybe Prelude.Integer)
+connectPeerBgpConfiguration_coreNetworkAsn = Lens.lens (\ConnectPeerBgpConfiguration' {coreNetworkAsn} -> coreNetworkAsn) (\s@ConnectPeerBgpConfiguration' {} a -> s {coreNetworkAsn = a} :: ConnectPeerBgpConfiguration)
+
+-- | The address of a core network Connect peer.
+connectPeerBgpConfiguration_peerAddress :: Lens.Lens' ConnectPeerBgpConfiguration (Prelude.Maybe Prelude.Text)
+connectPeerBgpConfiguration_peerAddress = Lens.lens (\ConnectPeerBgpConfiguration' {peerAddress} -> peerAddress) (\s@ConnectPeerBgpConfiguration' {} a -> s {peerAddress = a} :: ConnectPeerBgpConfiguration)
+
+-- | The ASN of the Connect peer.
+connectPeerBgpConfiguration_peerAsn :: Lens.Lens' ConnectPeerBgpConfiguration (Prelude.Maybe Prelude.Integer)
+connectPeerBgpConfiguration_peerAsn = Lens.lens (\ConnectPeerBgpConfiguration' {peerAsn} -> peerAsn) (\s@ConnectPeerBgpConfiguration' {} a -> s {peerAsn = a} :: ConnectPeerBgpConfiguration)
+
+instance Data.FromJSON ConnectPeerBgpConfiguration where
+  parseJSON =
+    Data.withObject
+      "ConnectPeerBgpConfiguration"
+      ( \x ->
+          ConnectPeerBgpConfiguration'
+            Prelude.<$> (x Data..:? "CoreNetworkAddress")
+            Prelude.<*> (x Data..:? "CoreNetworkAsn")
+            Prelude.<*> (x Data..:? "PeerAddress")
+            Prelude.<*> (x Data..:? "PeerAsn")
+      )
+
+instance Prelude.Hashable ConnectPeerBgpConfiguration where
+  hashWithSalt _salt ConnectPeerBgpConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` coreNetworkAddress
+      `Prelude.hashWithSalt` coreNetworkAsn
+      `Prelude.hashWithSalt` peerAddress
+      `Prelude.hashWithSalt` peerAsn
+
+instance Prelude.NFData ConnectPeerBgpConfiguration where
+  rnf ConnectPeerBgpConfiguration' {..} =
+    Prelude.rnf coreNetworkAddress
+      `Prelude.seq` Prelude.rnf coreNetworkAsn
+      `Prelude.seq` Prelude.rnf peerAddress
+      `Prelude.seq` Prelude.rnf peerAsn
diff --git a/gen/Amazonka/NetworkManager/Types/ConnectPeerConfiguration.hs b/gen/Amazonka/NetworkManager/Types/ConnectPeerConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ConnectPeerConfiguration.hs
@@ -0,0 +1,129 @@
+{-# 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.NetworkManager.Types.ConnectPeerConfiguration
+-- 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.NetworkManager.Types.ConnectPeerConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.ConnectPeerBgpConfiguration
+import Amazonka.NetworkManager.Types.TunnelProtocol
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a core network Connect peer configuration.
+--
+-- /See:/ 'newConnectPeerConfiguration' smart constructor.
+data ConnectPeerConfiguration = ConnectPeerConfiguration'
+  { -- | The Connect peer BGP configurations.
+    bgpConfigurations :: Prelude.Maybe [ConnectPeerBgpConfiguration],
+    -- | The IP address of a core network.
+    coreNetworkAddress :: Prelude.Maybe Prelude.Text,
+    -- | The inside IP addresses used for a Connect peer configuration.
+    insideCidrBlocks :: Prelude.Maybe [Prelude.Text],
+    -- | The IP address of the Connect peer.
+    peerAddress :: Prelude.Maybe Prelude.Text,
+    -- | The protocol used for a Connect peer configuration.
+    protocol :: Prelude.Maybe TunnelProtocol
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectPeerConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bgpConfigurations', 'connectPeerConfiguration_bgpConfigurations' - The Connect peer BGP configurations.
+--
+-- 'coreNetworkAddress', 'connectPeerConfiguration_coreNetworkAddress' - The IP address of a core network.
+--
+-- 'insideCidrBlocks', 'connectPeerConfiguration_insideCidrBlocks' - The inside IP addresses used for a Connect peer configuration.
+--
+-- 'peerAddress', 'connectPeerConfiguration_peerAddress' - The IP address of the Connect peer.
+--
+-- 'protocol', 'connectPeerConfiguration_protocol' - The protocol used for a Connect peer configuration.
+newConnectPeerConfiguration ::
+  ConnectPeerConfiguration
+newConnectPeerConfiguration =
+  ConnectPeerConfiguration'
+    { bgpConfigurations =
+        Prelude.Nothing,
+      coreNetworkAddress = Prelude.Nothing,
+      insideCidrBlocks = Prelude.Nothing,
+      peerAddress = Prelude.Nothing,
+      protocol = Prelude.Nothing
+    }
+
+-- | The Connect peer BGP configurations.
+connectPeerConfiguration_bgpConfigurations :: Lens.Lens' ConnectPeerConfiguration (Prelude.Maybe [ConnectPeerBgpConfiguration])
+connectPeerConfiguration_bgpConfigurations = Lens.lens (\ConnectPeerConfiguration' {bgpConfigurations} -> bgpConfigurations) (\s@ConnectPeerConfiguration' {} a -> s {bgpConfigurations = a} :: ConnectPeerConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The IP address of a core network.
+connectPeerConfiguration_coreNetworkAddress :: Lens.Lens' ConnectPeerConfiguration (Prelude.Maybe Prelude.Text)
+connectPeerConfiguration_coreNetworkAddress = Lens.lens (\ConnectPeerConfiguration' {coreNetworkAddress} -> coreNetworkAddress) (\s@ConnectPeerConfiguration' {} a -> s {coreNetworkAddress = a} :: ConnectPeerConfiguration)
+
+-- | The inside IP addresses used for a Connect peer configuration.
+connectPeerConfiguration_insideCidrBlocks :: Lens.Lens' ConnectPeerConfiguration (Prelude.Maybe [Prelude.Text])
+connectPeerConfiguration_insideCidrBlocks = Lens.lens (\ConnectPeerConfiguration' {insideCidrBlocks} -> insideCidrBlocks) (\s@ConnectPeerConfiguration' {} a -> s {insideCidrBlocks = a} :: ConnectPeerConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The IP address of the Connect peer.
+connectPeerConfiguration_peerAddress :: Lens.Lens' ConnectPeerConfiguration (Prelude.Maybe Prelude.Text)
+connectPeerConfiguration_peerAddress = Lens.lens (\ConnectPeerConfiguration' {peerAddress} -> peerAddress) (\s@ConnectPeerConfiguration' {} a -> s {peerAddress = a} :: ConnectPeerConfiguration)
+
+-- | The protocol used for a Connect peer configuration.
+connectPeerConfiguration_protocol :: Lens.Lens' ConnectPeerConfiguration (Prelude.Maybe TunnelProtocol)
+connectPeerConfiguration_protocol = Lens.lens (\ConnectPeerConfiguration' {protocol} -> protocol) (\s@ConnectPeerConfiguration' {} a -> s {protocol = a} :: ConnectPeerConfiguration)
+
+instance Data.FromJSON ConnectPeerConfiguration where
+  parseJSON =
+    Data.withObject
+      "ConnectPeerConfiguration"
+      ( \x ->
+          ConnectPeerConfiguration'
+            Prelude.<$> ( x
+                            Data..:? "BgpConfigurations"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "CoreNetworkAddress")
+            Prelude.<*> ( x
+                            Data..:? "InsideCidrBlocks"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "PeerAddress")
+            Prelude.<*> (x Data..:? "Protocol")
+      )
+
+instance Prelude.Hashable ConnectPeerConfiguration where
+  hashWithSalt _salt ConnectPeerConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` bgpConfigurations
+      `Prelude.hashWithSalt` coreNetworkAddress
+      `Prelude.hashWithSalt` insideCidrBlocks
+      `Prelude.hashWithSalt` peerAddress
+      `Prelude.hashWithSalt` protocol
+
+instance Prelude.NFData ConnectPeerConfiguration where
+  rnf ConnectPeerConfiguration' {..} =
+    Prelude.rnf bgpConfigurations
+      `Prelude.seq` Prelude.rnf coreNetworkAddress
+      `Prelude.seq` Prelude.rnf insideCidrBlocks
+      `Prelude.seq` Prelude.rnf peerAddress
+      `Prelude.seq` Prelude.rnf protocol
diff --git a/gen/Amazonka/NetworkManager/Types/ConnectPeerState.hs b/gen/Amazonka/NetworkManager/Types/ConnectPeerState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ConnectPeerState.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.NetworkManager.Types.ConnectPeerState
+-- 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.NetworkManager.Types.ConnectPeerState
+  ( ConnectPeerState
+      ( ..,
+        ConnectPeerState_AVAILABLE,
+        ConnectPeerState_CREATING,
+        ConnectPeerState_DELETING,
+        ConnectPeerState_FAILED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConnectPeerState = ConnectPeerState'
+  { fromConnectPeerState ::
+      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 ConnectPeerState_AVAILABLE :: ConnectPeerState
+pattern ConnectPeerState_AVAILABLE = ConnectPeerState' "AVAILABLE"
+
+pattern ConnectPeerState_CREATING :: ConnectPeerState
+pattern ConnectPeerState_CREATING = ConnectPeerState' "CREATING"
+
+pattern ConnectPeerState_DELETING :: ConnectPeerState
+pattern ConnectPeerState_DELETING = ConnectPeerState' "DELETING"
+
+pattern ConnectPeerState_FAILED :: ConnectPeerState
+pattern ConnectPeerState_FAILED = ConnectPeerState' "FAILED"
+
+{-# COMPLETE
+  ConnectPeerState_AVAILABLE,
+  ConnectPeerState_CREATING,
+  ConnectPeerState_DELETING,
+  ConnectPeerState_FAILED,
+  ConnectPeerState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/ConnectPeerSummary.hs b/gen/Amazonka/NetworkManager/Types/ConnectPeerSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ConnectPeerSummary.hs
@@ -0,0 +1,147 @@
+{-# 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.NetworkManager.Types.ConnectPeerSummary
+-- 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.NetworkManager.Types.ConnectPeerSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.ConnectPeerState
+import Amazonka.NetworkManager.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Summary description of a Connect peer.
+--
+-- /See:/ 'newConnectPeerSummary' smart constructor.
+data ConnectPeerSummary = ConnectPeerSummary'
+  { -- | The ID of a Connect peer attachment.
+    connectAttachmentId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a Connect peer.
+    connectPeerId :: Prelude.Maybe Prelude.Text,
+    -- | The state of a Connect peer.
+    connectPeerState :: Prelude.Maybe ConnectPeerState,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp when a Connect peer was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The Region where the edge is located.
+    edgeLocation :: Prelude.Maybe Prelude.Text,
+    -- | The list of key-value tags associated with the Connect peer summary.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectPeerSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectAttachmentId', 'connectPeerSummary_connectAttachmentId' - The ID of a Connect peer attachment.
+--
+-- 'connectPeerId', 'connectPeerSummary_connectPeerId' - The ID of a Connect peer.
+--
+-- 'connectPeerState', 'connectPeerSummary_connectPeerState' - The state of a Connect peer.
+--
+-- 'coreNetworkId', 'connectPeerSummary_coreNetworkId' - The ID of a core network.
+--
+-- 'createdAt', 'connectPeerSummary_createdAt' - The timestamp when a Connect peer was created.
+--
+-- 'edgeLocation', 'connectPeerSummary_edgeLocation' - The Region where the edge is located.
+--
+-- 'tags', 'connectPeerSummary_tags' - The list of key-value tags associated with the Connect peer summary.
+newConnectPeerSummary ::
+  ConnectPeerSummary
+newConnectPeerSummary =
+  ConnectPeerSummary'
+    { connectAttachmentId =
+        Prelude.Nothing,
+      connectPeerId = Prelude.Nothing,
+      connectPeerState = Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      edgeLocation = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The ID of a Connect peer attachment.
+connectPeerSummary_connectAttachmentId :: Lens.Lens' ConnectPeerSummary (Prelude.Maybe Prelude.Text)
+connectPeerSummary_connectAttachmentId = Lens.lens (\ConnectPeerSummary' {connectAttachmentId} -> connectAttachmentId) (\s@ConnectPeerSummary' {} a -> s {connectAttachmentId = a} :: ConnectPeerSummary)
+
+-- | The ID of a Connect peer.
+connectPeerSummary_connectPeerId :: Lens.Lens' ConnectPeerSummary (Prelude.Maybe Prelude.Text)
+connectPeerSummary_connectPeerId = Lens.lens (\ConnectPeerSummary' {connectPeerId} -> connectPeerId) (\s@ConnectPeerSummary' {} a -> s {connectPeerId = a} :: ConnectPeerSummary)
+
+-- | The state of a Connect peer.
+connectPeerSummary_connectPeerState :: Lens.Lens' ConnectPeerSummary (Prelude.Maybe ConnectPeerState)
+connectPeerSummary_connectPeerState = Lens.lens (\ConnectPeerSummary' {connectPeerState} -> connectPeerState) (\s@ConnectPeerSummary' {} a -> s {connectPeerState = a} :: ConnectPeerSummary)
+
+-- | The ID of a core network.
+connectPeerSummary_coreNetworkId :: Lens.Lens' ConnectPeerSummary (Prelude.Maybe Prelude.Text)
+connectPeerSummary_coreNetworkId = Lens.lens (\ConnectPeerSummary' {coreNetworkId} -> coreNetworkId) (\s@ConnectPeerSummary' {} a -> s {coreNetworkId = a} :: ConnectPeerSummary)
+
+-- | The timestamp when a Connect peer was created.
+connectPeerSummary_createdAt :: Lens.Lens' ConnectPeerSummary (Prelude.Maybe Prelude.UTCTime)
+connectPeerSummary_createdAt = Lens.lens (\ConnectPeerSummary' {createdAt} -> createdAt) (\s@ConnectPeerSummary' {} a -> s {createdAt = a} :: ConnectPeerSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The Region where the edge is located.
+connectPeerSummary_edgeLocation :: Lens.Lens' ConnectPeerSummary (Prelude.Maybe Prelude.Text)
+connectPeerSummary_edgeLocation = Lens.lens (\ConnectPeerSummary' {edgeLocation} -> edgeLocation) (\s@ConnectPeerSummary' {} a -> s {edgeLocation = a} :: ConnectPeerSummary)
+
+-- | The list of key-value tags associated with the Connect peer summary.
+connectPeerSummary_tags :: Lens.Lens' ConnectPeerSummary (Prelude.Maybe [Tag])
+connectPeerSummary_tags = Lens.lens (\ConnectPeerSummary' {tags} -> tags) (\s@ConnectPeerSummary' {} a -> s {tags = a} :: ConnectPeerSummary) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ConnectPeerSummary where
+  parseJSON =
+    Data.withObject
+      "ConnectPeerSummary"
+      ( \x ->
+          ConnectPeerSummary'
+            Prelude.<$> (x Data..:? "ConnectAttachmentId")
+            Prelude.<*> (x Data..:? "ConnectPeerId")
+            Prelude.<*> (x Data..:? "ConnectPeerState")
+            Prelude.<*> (x Data..:? "CoreNetworkId")
+            Prelude.<*> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "EdgeLocation")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable ConnectPeerSummary where
+  hashWithSalt _salt ConnectPeerSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectAttachmentId
+      `Prelude.hashWithSalt` connectPeerId
+      `Prelude.hashWithSalt` connectPeerState
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` edgeLocation
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData ConnectPeerSummary where
+  rnf ConnectPeerSummary' {..} =
+    Prelude.rnf connectAttachmentId
+      `Prelude.seq` Prelude.rnf connectPeerId
+      `Prelude.seq` Prelude.rnf connectPeerState
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf edgeLocation
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/NetworkManager/Types/Connection.hs b/gen/Amazonka/NetworkManager/Types/Connection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/Connection.hs
@@ -0,0 +1,194 @@
+{-# 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.NetworkManager.Types.Connection
+-- 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.NetworkManager.Types.Connection where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.ConnectionState
+import Amazonka.NetworkManager.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a connection.
+--
+-- /See:/ 'newConnection' smart constructor.
+data Connection = Connection'
+  { -- | The ID of the second device in the connection.
+    connectedDeviceId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the link for the second device in the connection.
+    connectedLinkId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the connection.
+    connectionArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the connection.
+    connectionId :: Prelude.Maybe Prelude.Text,
+    -- | The date and time that the connection was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The description of the connection.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the first device in the connection.
+    deviceId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the link for the first device in the connection.
+    linkId :: Prelude.Maybe Prelude.Text,
+    -- | The state of the connection.
+    state :: Prelude.Maybe ConnectionState,
+    -- | The tags for the connection.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Connection' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectedDeviceId', 'connection_connectedDeviceId' - The ID of the second device in the connection.
+--
+-- 'connectedLinkId', 'connection_connectedLinkId' - The ID of the link for the second device in the connection.
+--
+-- 'connectionArn', 'connection_connectionArn' - The Amazon Resource Name (ARN) of the connection.
+--
+-- 'connectionId', 'connection_connectionId' - The ID of the connection.
+--
+-- 'createdAt', 'connection_createdAt' - The date and time that the connection was created.
+--
+-- 'description', 'connection_description' - The description of the connection.
+--
+-- 'deviceId', 'connection_deviceId' - The ID of the first device in the connection.
+--
+-- 'globalNetworkId', 'connection_globalNetworkId' - The ID of the global network.
+--
+-- 'linkId', 'connection_linkId' - The ID of the link for the first device in the connection.
+--
+-- 'state', 'connection_state' - The state of the connection.
+--
+-- 'tags', 'connection_tags' - The tags for the connection.
+newConnection ::
+  Connection
+newConnection =
+  Connection'
+    { connectedDeviceId = Prelude.Nothing,
+      connectedLinkId = Prelude.Nothing,
+      connectionArn = Prelude.Nothing,
+      connectionId = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      description = Prelude.Nothing,
+      deviceId = Prelude.Nothing,
+      globalNetworkId = Prelude.Nothing,
+      linkId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The ID of the second device in the connection.
+connection_connectedDeviceId :: Lens.Lens' Connection (Prelude.Maybe Prelude.Text)
+connection_connectedDeviceId = Lens.lens (\Connection' {connectedDeviceId} -> connectedDeviceId) (\s@Connection' {} a -> s {connectedDeviceId = a} :: Connection)
+
+-- | The ID of the link for the second device in the connection.
+connection_connectedLinkId :: Lens.Lens' Connection (Prelude.Maybe Prelude.Text)
+connection_connectedLinkId = Lens.lens (\Connection' {connectedLinkId} -> connectedLinkId) (\s@Connection' {} a -> s {connectedLinkId = a} :: Connection)
+
+-- | The Amazon Resource Name (ARN) of the connection.
+connection_connectionArn :: Lens.Lens' Connection (Prelude.Maybe Prelude.Text)
+connection_connectionArn = Lens.lens (\Connection' {connectionArn} -> connectionArn) (\s@Connection' {} a -> s {connectionArn = a} :: Connection)
+
+-- | The ID of the connection.
+connection_connectionId :: Lens.Lens' Connection (Prelude.Maybe Prelude.Text)
+connection_connectionId = Lens.lens (\Connection' {connectionId} -> connectionId) (\s@Connection' {} a -> s {connectionId = a} :: Connection)
+
+-- | The date and time that the connection was created.
+connection_createdAt :: Lens.Lens' Connection (Prelude.Maybe Prelude.UTCTime)
+connection_createdAt = Lens.lens (\Connection' {createdAt} -> createdAt) (\s@Connection' {} a -> s {createdAt = a} :: Connection) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the connection.
+connection_description :: Lens.Lens' Connection (Prelude.Maybe Prelude.Text)
+connection_description = Lens.lens (\Connection' {description} -> description) (\s@Connection' {} a -> s {description = a} :: Connection)
+
+-- | The ID of the first device in the connection.
+connection_deviceId :: Lens.Lens' Connection (Prelude.Maybe Prelude.Text)
+connection_deviceId = Lens.lens (\Connection' {deviceId} -> deviceId) (\s@Connection' {} a -> s {deviceId = a} :: Connection)
+
+-- | The ID of the global network.
+connection_globalNetworkId :: Lens.Lens' Connection (Prelude.Maybe Prelude.Text)
+connection_globalNetworkId = Lens.lens (\Connection' {globalNetworkId} -> globalNetworkId) (\s@Connection' {} a -> s {globalNetworkId = a} :: Connection)
+
+-- | The ID of the link for the first device in the connection.
+connection_linkId :: Lens.Lens' Connection (Prelude.Maybe Prelude.Text)
+connection_linkId = Lens.lens (\Connection' {linkId} -> linkId) (\s@Connection' {} a -> s {linkId = a} :: Connection)
+
+-- | The state of the connection.
+connection_state :: Lens.Lens' Connection (Prelude.Maybe ConnectionState)
+connection_state = Lens.lens (\Connection' {state} -> state) (\s@Connection' {} a -> s {state = a} :: Connection)
+
+-- | The tags for the connection.
+connection_tags :: Lens.Lens' Connection (Prelude.Maybe [Tag])
+connection_tags = Lens.lens (\Connection' {tags} -> tags) (\s@Connection' {} a -> s {tags = a} :: Connection) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Connection where
+  parseJSON =
+    Data.withObject
+      "Connection"
+      ( \x ->
+          Connection'
+            Prelude.<$> (x Data..:? "ConnectedDeviceId")
+            Prelude.<*> (x Data..:? "ConnectedLinkId")
+            Prelude.<*> (x Data..:? "ConnectionArn")
+            Prelude.<*> (x Data..:? "ConnectionId")
+            Prelude.<*> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "DeviceId")
+            Prelude.<*> (x Data..:? "GlobalNetworkId")
+            Prelude.<*> (x Data..:? "LinkId")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable Connection where
+  hashWithSalt _salt Connection' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectedDeviceId
+      `Prelude.hashWithSalt` connectedLinkId
+      `Prelude.hashWithSalt` connectionArn
+      `Prelude.hashWithSalt` connectionId
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` deviceId
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` linkId
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData Connection where
+  rnf Connection' {..} =
+    Prelude.rnf connectedDeviceId
+      `Prelude.seq` Prelude.rnf connectedLinkId
+      `Prelude.seq` Prelude.rnf connectionArn
+      `Prelude.seq` Prelude.rnf connectionId
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf deviceId
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf linkId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/NetworkManager/Types/ConnectionHealth.hs b/gen/Amazonka/NetworkManager/Types/ConnectionHealth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ConnectionHealth.hs
@@ -0,0 +1,98 @@
+{-# 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.NetworkManager.Types.ConnectionHealth
+-- 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.NetworkManager.Types.ConnectionHealth where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.ConnectionStatus
+import Amazonka.NetworkManager.Types.ConnectionType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes connection health.
+--
+-- /See:/ 'newConnectionHealth' smart constructor.
+data ConnectionHealth = ConnectionHealth'
+  { -- | The connection status.
+    status :: Prelude.Maybe ConnectionStatus,
+    -- | The time the status was last updated.
+    timestamp :: Prelude.Maybe Data.POSIX,
+    -- | The connection type.
+    type' :: Prelude.Maybe ConnectionType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectionHealth' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'connectionHealth_status' - The connection status.
+--
+-- 'timestamp', 'connectionHealth_timestamp' - The time the status was last updated.
+--
+-- 'type'', 'connectionHealth_type' - The connection type.
+newConnectionHealth ::
+  ConnectionHealth
+newConnectionHealth =
+  ConnectionHealth'
+    { status = Prelude.Nothing,
+      timestamp = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The connection status.
+connectionHealth_status :: Lens.Lens' ConnectionHealth (Prelude.Maybe ConnectionStatus)
+connectionHealth_status = Lens.lens (\ConnectionHealth' {status} -> status) (\s@ConnectionHealth' {} a -> s {status = a} :: ConnectionHealth)
+
+-- | The time the status was last updated.
+connectionHealth_timestamp :: Lens.Lens' ConnectionHealth (Prelude.Maybe Prelude.UTCTime)
+connectionHealth_timestamp = Lens.lens (\ConnectionHealth' {timestamp} -> timestamp) (\s@ConnectionHealth' {} a -> s {timestamp = a} :: ConnectionHealth) Prelude.. Lens.mapping Data._Time
+
+-- | The connection type.
+connectionHealth_type :: Lens.Lens' ConnectionHealth (Prelude.Maybe ConnectionType)
+connectionHealth_type = Lens.lens (\ConnectionHealth' {type'} -> type') (\s@ConnectionHealth' {} a -> s {type' = a} :: ConnectionHealth)
+
+instance Data.FromJSON ConnectionHealth where
+  parseJSON =
+    Data.withObject
+      "ConnectionHealth"
+      ( \x ->
+          ConnectionHealth'
+            Prelude.<$> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "Timestamp")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable ConnectionHealth where
+  hashWithSalt _salt ConnectionHealth' {..} =
+    _salt
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` timestamp
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData ConnectionHealth where
+  rnf ConnectionHealth' {..} =
+    Prelude.rnf status
+      `Prelude.seq` Prelude.rnf timestamp
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/NetworkManager/Types/ConnectionState.hs b/gen/Amazonka/NetworkManager/Types/ConnectionState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ConnectionState.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.NetworkManager.Types.ConnectionState
+-- 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.NetworkManager.Types.ConnectionState
+  ( ConnectionState
+      ( ..,
+        ConnectionState_AVAILABLE,
+        ConnectionState_DELETING,
+        ConnectionState_PENDING,
+        ConnectionState_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConnectionState = ConnectionState'
+  { fromConnectionState ::
+      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 ConnectionState_AVAILABLE :: ConnectionState
+pattern ConnectionState_AVAILABLE = ConnectionState' "AVAILABLE"
+
+pattern ConnectionState_DELETING :: ConnectionState
+pattern ConnectionState_DELETING = ConnectionState' "DELETING"
+
+pattern ConnectionState_PENDING :: ConnectionState
+pattern ConnectionState_PENDING = ConnectionState' "PENDING"
+
+pattern ConnectionState_UPDATING :: ConnectionState
+pattern ConnectionState_UPDATING = ConnectionState' "UPDATING"
+
+{-# COMPLETE
+  ConnectionState_AVAILABLE,
+  ConnectionState_DELETING,
+  ConnectionState_PENDING,
+  ConnectionState_UPDATING,
+  ConnectionState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/ConnectionStatus.hs b/gen/Amazonka/NetworkManager/Types/ConnectionStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ConnectionStatus.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.ConnectionStatus
+-- 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.NetworkManager.Types.ConnectionStatus
+  ( ConnectionStatus
+      ( ..,
+        ConnectionStatus_DOWN,
+        ConnectionStatus_UP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConnectionStatus = ConnectionStatus'
+  { fromConnectionStatus ::
+      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 ConnectionStatus_DOWN :: ConnectionStatus
+pattern ConnectionStatus_DOWN = ConnectionStatus' "DOWN"
+
+pattern ConnectionStatus_UP :: ConnectionStatus
+pattern ConnectionStatus_UP = ConnectionStatus' "UP"
+
+{-# COMPLETE
+  ConnectionStatus_DOWN,
+  ConnectionStatus_UP,
+  ConnectionStatus'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/ConnectionType.hs b/gen/Amazonka/NetworkManager/Types/ConnectionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ConnectionType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.ConnectionType
+-- 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.NetworkManager.Types.ConnectionType
+  ( ConnectionType
+      ( ..,
+        ConnectionType_BGP,
+        ConnectionType_IPSEC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConnectionType = ConnectionType'
+  { fromConnectionType ::
+      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 ConnectionType_BGP :: ConnectionType
+pattern ConnectionType_BGP = ConnectionType' "BGP"
+
+pattern ConnectionType_IPSEC :: ConnectionType
+pattern ConnectionType_IPSEC = ConnectionType' "IPSEC"
+
+{-# COMPLETE
+  ConnectionType_BGP,
+  ConnectionType_IPSEC,
+  ConnectionType'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/CoreNetwork.hs b/gen/Amazonka/NetworkManager/Types/CoreNetwork.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CoreNetwork.hs
@@ -0,0 +1,172 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.CoreNetwork
+-- 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.NetworkManager.Types.CoreNetwork where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.CoreNetworkEdge
+import Amazonka.NetworkManager.Types.CoreNetworkSegment
+import Amazonka.NetworkManager.Types.CoreNetworkState
+import Amazonka.NetworkManager.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a core network.
+--
+-- /See:/ 'newCoreNetwork' smart constructor.
+data CoreNetwork = CoreNetwork'
+  { -- | The ARN of a core network.
+    coreNetworkArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp when a core network was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The description of a core network.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The edges within a core network.
+    edges :: Prelude.Maybe [CoreNetworkEdge],
+    -- | The ID of the global network that your core network is a part of.
+    globalNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The segments within a core network.
+    segments :: Prelude.Maybe [CoreNetworkSegment],
+    -- | The current state of a core network.
+    state :: Prelude.Maybe CoreNetworkState,
+    -- | The list of key-value tags associated with a core network.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CoreNetwork' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkArn', 'coreNetwork_coreNetworkArn' - The ARN of a core network.
+--
+-- 'coreNetworkId', 'coreNetwork_coreNetworkId' - The ID of a core network.
+--
+-- 'createdAt', 'coreNetwork_createdAt' - The timestamp when a core network was created.
+--
+-- 'description', 'coreNetwork_description' - The description of a core network.
+--
+-- 'edges', 'coreNetwork_edges' - The edges within a core network.
+--
+-- 'globalNetworkId', 'coreNetwork_globalNetworkId' - The ID of the global network that your core network is a part of.
+--
+-- 'segments', 'coreNetwork_segments' - The segments within a core network.
+--
+-- 'state', 'coreNetwork_state' - The current state of a core network.
+--
+-- 'tags', 'coreNetwork_tags' - The list of key-value tags associated with a core network.
+newCoreNetwork ::
+  CoreNetwork
+newCoreNetwork =
+  CoreNetwork'
+    { coreNetworkArn = Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      description = Prelude.Nothing,
+      edges = Prelude.Nothing,
+      globalNetworkId = Prelude.Nothing,
+      segments = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The ARN of a core network.
+coreNetwork_coreNetworkArn :: Lens.Lens' CoreNetwork (Prelude.Maybe Prelude.Text)
+coreNetwork_coreNetworkArn = Lens.lens (\CoreNetwork' {coreNetworkArn} -> coreNetworkArn) (\s@CoreNetwork' {} a -> s {coreNetworkArn = a} :: CoreNetwork)
+
+-- | The ID of a core network.
+coreNetwork_coreNetworkId :: Lens.Lens' CoreNetwork (Prelude.Maybe Prelude.Text)
+coreNetwork_coreNetworkId = Lens.lens (\CoreNetwork' {coreNetworkId} -> coreNetworkId) (\s@CoreNetwork' {} a -> s {coreNetworkId = a} :: CoreNetwork)
+
+-- | The timestamp when a core network was created.
+coreNetwork_createdAt :: Lens.Lens' CoreNetwork (Prelude.Maybe Prelude.UTCTime)
+coreNetwork_createdAt = Lens.lens (\CoreNetwork' {createdAt} -> createdAt) (\s@CoreNetwork' {} a -> s {createdAt = a} :: CoreNetwork) Prelude.. Lens.mapping Data._Time
+
+-- | The description of a core network.
+coreNetwork_description :: Lens.Lens' CoreNetwork (Prelude.Maybe Prelude.Text)
+coreNetwork_description = Lens.lens (\CoreNetwork' {description} -> description) (\s@CoreNetwork' {} a -> s {description = a} :: CoreNetwork)
+
+-- | The edges within a core network.
+coreNetwork_edges :: Lens.Lens' CoreNetwork (Prelude.Maybe [CoreNetworkEdge])
+coreNetwork_edges = Lens.lens (\CoreNetwork' {edges} -> edges) (\s@CoreNetwork' {} a -> s {edges = a} :: CoreNetwork) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the global network that your core network is a part of.
+coreNetwork_globalNetworkId :: Lens.Lens' CoreNetwork (Prelude.Maybe Prelude.Text)
+coreNetwork_globalNetworkId = Lens.lens (\CoreNetwork' {globalNetworkId} -> globalNetworkId) (\s@CoreNetwork' {} a -> s {globalNetworkId = a} :: CoreNetwork)
+
+-- | The segments within a core network.
+coreNetwork_segments :: Lens.Lens' CoreNetwork (Prelude.Maybe [CoreNetworkSegment])
+coreNetwork_segments = Lens.lens (\CoreNetwork' {segments} -> segments) (\s@CoreNetwork' {} a -> s {segments = a} :: CoreNetwork) Prelude.. Lens.mapping Lens.coerced
+
+-- | The current state of a core network.
+coreNetwork_state :: Lens.Lens' CoreNetwork (Prelude.Maybe CoreNetworkState)
+coreNetwork_state = Lens.lens (\CoreNetwork' {state} -> state) (\s@CoreNetwork' {} a -> s {state = a} :: CoreNetwork)
+
+-- | The list of key-value tags associated with a core network.
+coreNetwork_tags :: Lens.Lens' CoreNetwork (Prelude.Maybe [Tag])
+coreNetwork_tags = Lens.lens (\CoreNetwork' {tags} -> tags) (\s@CoreNetwork' {} a -> s {tags = a} :: CoreNetwork) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON CoreNetwork where
+  parseJSON =
+    Data.withObject
+      "CoreNetwork"
+      ( \x ->
+          CoreNetwork'
+            Prelude.<$> (x Data..:? "CoreNetworkArn")
+            Prelude.<*> (x Data..:? "CoreNetworkId")
+            Prelude.<*> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "Edges" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "GlobalNetworkId")
+            Prelude.<*> (x Data..:? "Segments" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable CoreNetwork where
+  hashWithSalt _salt CoreNetwork' {..} =
+    _salt
+      `Prelude.hashWithSalt` coreNetworkArn
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` edges
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` segments
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData CoreNetwork where
+  rnf CoreNetwork' {..} =
+    Prelude.rnf coreNetworkArn
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf edges
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf segments
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/NetworkManager/Types/CoreNetworkChange.hs b/gen/Amazonka/NetworkManager/Types/CoreNetworkChange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CoreNetworkChange.hs
@@ -0,0 +1,141 @@
+{-# 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.NetworkManager.Types.CoreNetworkChange
+-- 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.NetworkManager.Types.CoreNetworkChange where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.ChangeAction
+import Amazonka.NetworkManager.Types.ChangeType
+import Amazonka.NetworkManager.Types.CoreNetworkChangeValues
+import qualified Amazonka.Prelude as Prelude
+
+-- | Details describing a core network change.
+--
+-- /See:/ 'newCoreNetworkChange' smart constructor.
+data CoreNetworkChange = CoreNetworkChange'
+  { -- | The action to take for a core network.
+    action :: Prelude.Maybe ChangeAction,
+    -- | The resource identifier.
+    identifier :: Prelude.Maybe Prelude.Text,
+    -- | Uniquely identifies the path for a change within the changeset. For
+    -- example, the @IdentifierPath@ for a core network segment change might be
+    -- @\"CORE_NETWORK_SEGMENT\/us-east-1\/devsegment\"@.
+    identifierPath :: Prelude.Maybe Prelude.Text,
+    -- | The new value for a core network
+    newValues' :: Prelude.Maybe CoreNetworkChangeValues,
+    -- | The previous values for a core network.
+    previousValues :: Prelude.Maybe CoreNetworkChangeValues,
+    -- | The type of change.
+    type' :: Prelude.Maybe ChangeType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CoreNetworkChange' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'action', 'coreNetworkChange_action' - The action to take for a core network.
+--
+-- 'identifier', 'coreNetworkChange_identifier' - The resource identifier.
+--
+-- 'identifierPath', 'coreNetworkChange_identifierPath' - Uniquely identifies the path for a change within the changeset. For
+-- example, the @IdentifierPath@ for a core network segment change might be
+-- @\"CORE_NETWORK_SEGMENT\/us-east-1\/devsegment\"@.
+--
+-- 'newValues'', 'coreNetworkChange_newValues' - The new value for a core network
+--
+-- 'previousValues', 'coreNetworkChange_previousValues' - The previous values for a core network.
+--
+-- 'type'', 'coreNetworkChange_type' - The type of change.
+newCoreNetworkChange ::
+  CoreNetworkChange
+newCoreNetworkChange =
+  CoreNetworkChange'
+    { action = Prelude.Nothing,
+      identifier = Prelude.Nothing,
+      identifierPath = Prelude.Nothing,
+      newValues' = Prelude.Nothing,
+      previousValues = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The action to take for a core network.
+coreNetworkChange_action :: Lens.Lens' CoreNetworkChange (Prelude.Maybe ChangeAction)
+coreNetworkChange_action = Lens.lens (\CoreNetworkChange' {action} -> action) (\s@CoreNetworkChange' {} a -> s {action = a} :: CoreNetworkChange)
+
+-- | The resource identifier.
+coreNetworkChange_identifier :: Lens.Lens' CoreNetworkChange (Prelude.Maybe Prelude.Text)
+coreNetworkChange_identifier = Lens.lens (\CoreNetworkChange' {identifier} -> identifier) (\s@CoreNetworkChange' {} a -> s {identifier = a} :: CoreNetworkChange)
+
+-- | Uniquely identifies the path for a change within the changeset. For
+-- example, the @IdentifierPath@ for a core network segment change might be
+-- @\"CORE_NETWORK_SEGMENT\/us-east-1\/devsegment\"@.
+coreNetworkChange_identifierPath :: Lens.Lens' CoreNetworkChange (Prelude.Maybe Prelude.Text)
+coreNetworkChange_identifierPath = Lens.lens (\CoreNetworkChange' {identifierPath} -> identifierPath) (\s@CoreNetworkChange' {} a -> s {identifierPath = a} :: CoreNetworkChange)
+
+-- | The new value for a core network
+coreNetworkChange_newValues :: Lens.Lens' CoreNetworkChange (Prelude.Maybe CoreNetworkChangeValues)
+coreNetworkChange_newValues = Lens.lens (\CoreNetworkChange' {newValues'} -> newValues') (\s@CoreNetworkChange' {} a -> s {newValues' = a} :: CoreNetworkChange)
+
+-- | The previous values for a core network.
+coreNetworkChange_previousValues :: Lens.Lens' CoreNetworkChange (Prelude.Maybe CoreNetworkChangeValues)
+coreNetworkChange_previousValues = Lens.lens (\CoreNetworkChange' {previousValues} -> previousValues) (\s@CoreNetworkChange' {} a -> s {previousValues = a} :: CoreNetworkChange)
+
+-- | The type of change.
+coreNetworkChange_type :: Lens.Lens' CoreNetworkChange (Prelude.Maybe ChangeType)
+coreNetworkChange_type = Lens.lens (\CoreNetworkChange' {type'} -> type') (\s@CoreNetworkChange' {} a -> s {type' = a} :: CoreNetworkChange)
+
+instance Data.FromJSON CoreNetworkChange where
+  parseJSON =
+    Data.withObject
+      "CoreNetworkChange"
+      ( \x ->
+          CoreNetworkChange'
+            Prelude.<$> (x Data..:? "Action")
+            Prelude.<*> (x Data..:? "Identifier")
+            Prelude.<*> (x Data..:? "IdentifierPath")
+            Prelude.<*> (x Data..:? "NewValues")
+            Prelude.<*> (x Data..:? "PreviousValues")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable CoreNetworkChange where
+  hashWithSalt _salt CoreNetworkChange' {..} =
+    _salt
+      `Prelude.hashWithSalt` action
+      `Prelude.hashWithSalt` identifier
+      `Prelude.hashWithSalt` identifierPath
+      `Prelude.hashWithSalt` newValues'
+      `Prelude.hashWithSalt` previousValues
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData CoreNetworkChange where
+  rnf CoreNetworkChange' {..} =
+    Prelude.rnf action
+      `Prelude.seq` Prelude.rnf identifier
+      `Prelude.seq` Prelude.rnf identifierPath
+      `Prelude.seq` Prelude.rnf newValues'
+      `Prelude.seq` Prelude.rnf previousValues
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/NetworkManager/Types/CoreNetworkChangeEvent.hs b/gen/Amazonka/NetworkManager/Types/CoreNetworkChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CoreNetworkChangeEvent.hs
@@ -0,0 +1,143 @@
+{-# 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.NetworkManager.Types.CoreNetworkChangeEvent
+-- 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.NetworkManager.Types.CoreNetworkChangeEvent where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.ChangeAction
+import Amazonka.NetworkManager.Types.ChangeStatus
+import Amazonka.NetworkManager.Types.ChangeType
+import Amazonka.NetworkManager.Types.CoreNetworkChangeEventValues
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a core network change event. This can be a change to a
+-- segment, attachment, route, etc.
+--
+-- /See:/ 'newCoreNetworkChangeEvent' smart constructor.
+data CoreNetworkChangeEvent = CoreNetworkChangeEvent'
+  { -- | The action taken for the change event.
+    action :: Prelude.Maybe ChangeAction,
+    -- | The timestamp for an event change in status.
+    eventTime :: Prelude.Maybe Data.POSIX,
+    -- | Uniquely identifies the path for a change within the changeset. For
+    -- example, the @IdentifierPath@ for a core network segment change might be
+    -- @\"CORE_NETWORK_SEGMENT\/us-east-1\/devsegment\"@.
+    identifierPath :: Prelude.Maybe Prelude.Text,
+    -- | The status of the core network change event.
+    status :: Prelude.Maybe ChangeStatus,
+    -- | Describes the type of change event.
+    type' :: Prelude.Maybe ChangeType,
+    -- | Details of the change event.
+    values :: Prelude.Maybe CoreNetworkChangeEventValues
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CoreNetworkChangeEvent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'action', 'coreNetworkChangeEvent_action' - The action taken for the change event.
+--
+-- 'eventTime', 'coreNetworkChangeEvent_eventTime' - The timestamp for an event change in status.
+--
+-- 'identifierPath', 'coreNetworkChangeEvent_identifierPath' - Uniquely identifies the path for a change within the changeset. For
+-- example, the @IdentifierPath@ for a core network segment change might be
+-- @\"CORE_NETWORK_SEGMENT\/us-east-1\/devsegment\"@.
+--
+-- 'status', 'coreNetworkChangeEvent_status' - The status of the core network change event.
+--
+-- 'type'', 'coreNetworkChangeEvent_type' - Describes the type of change event.
+--
+-- 'values', 'coreNetworkChangeEvent_values' - Details of the change event.
+newCoreNetworkChangeEvent ::
+  CoreNetworkChangeEvent
+newCoreNetworkChangeEvent =
+  CoreNetworkChangeEvent'
+    { action = Prelude.Nothing,
+      eventTime = Prelude.Nothing,
+      identifierPath = Prelude.Nothing,
+      status = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The action taken for the change event.
+coreNetworkChangeEvent_action :: Lens.Lens' CoreNetworkChangeEvent (Prelude.Maybe ChangeAction)
+coreNetworkChangeEvent_action = Lens.lens (\CoreNetworkChangeEvent' {action} -> action) (\s@CoreNetworkChangeEvent' {} a -> s {action = a} :: CoreNetworkChangeEvent)
+
+-- | The timestamp for an event change in status.
+coreNetworkChangeEvent_eventTime :: Lens.Lens' CoreNetworkChangeEvent (Prelude.Maybe Prelude.UTCTime)
+coreNetworkChangeEvent_eventTime = Lens.lens (\CoreNetworkChangeEvent' {eventTime} -> eventTime) (\s@CoreNetworkChangeEvent' {} a -> s {eventTime = a} :: CoreNetworkChangeEvent) Prelude.. Lens.mapping Data._Time
+
+-- | Uniquely identifies the path for a change within the changeset. For
+-- example, the @IdentifierPath@ for a core network segment change might be
+-- @\"CORE_NETWORK_SEGMENT\/us-east-1\/devsegment\"@.
+coreNetworkChangeEvent_identifierPath :: Lens.Lens' CoreNetworkChangeEvent (Prelude.Maybe Prelude.Text)
+coreNetworkChangeEvent_identifierPath = Lens.lens (\CoreNetworkChangeEvent' {identifierPath} -> identifierPath) (\s@CoreNetworkChangeEvent' {} a -> s {identifierPath = a} :: CoreNetworkChangeEvent)
+
+-- | The status of the core network change event.
+coreNetworkChangeEvent_status :: Lens.Lens' CoreNetworkChangeEvent (Prelude.Maybe ChangeStatus)
+coreNetworkChangeEvent_status = Lens.lens (\CoreNetworkChangeEvent' {status} -> status) (\s@CoreNetworkChangeEvent' {} a -> s {status = a} :: CoreNetworkChangeEvent)
+
+-- | Describes the type of change event.
+coreNetworkChangeEvent_type :: Lens.Lens' CoreNetworkChangeEvent (Prelude.Maybe ChangeType)
+coreNetworkChangeEvent_type = Lens.lens (\CoreNetworkChangeEvent' {type'} -> type') (\s@CoreNetworkChangeEvent' {} a -> s {type' = a} :: CoreNetworkChangeEvent)
+
+-- | Details of the change event.
+coreNetworkChangeEvent_values :: Lens.Lens' CoreNetworkChangeEvent (Prelude.Maybe CoreNetworkChangeEventValues)
+coreNetworkChangeEvent_values = Lens.lens (\CoreNetworkChangeEvent' {values} -> values) (\s@CoreNetworkChangeEvent' {} a -> s {values = a} :: CoreNetworkChangeEvent)
+
+instance Data.FromJSON CoreNetworkChangeEvent where
+  parseJSON =
+    Data.withObject
+      "CoreNetworkChangeEvent"
+      ( \x ->
+          CoreNetworkChangeEvent'
+            Prelude.<$> (x Data..:? "Action")
+            Prelude.<*> (x Data..:? "EventTime")
+            Prelude.<*> (x Data..:? "IdentifierPath")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> (x Data..:? "Values")
+      )
+
+instance Prelude.Hashable CoreNetworkChangeEvent where
+  hashWithSalt _salt CoreNetworkChangeEvent' {..} =
+    _salt
+      `Prelude.hashWithSalt` action
+      `Prelude.hashWithSalt` eventTime
+      `Prelude.hashWithSalt` identifierPath
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData CoreNetworkChangeEvent where
+  rnf CoreNetworkChangeEvent' {..} =
+    Prelude.rnf action
+      `Prelude.seq` Prelude.rnf eventTime
+      `Prelude.seq` Prelude.rnf identifierPath
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf values
diff --git a/gen/Amazonka/NetworkManager/Types/CoreNetworkChangeEventValues.hs b/gen/Amazonka/NetworkManager/Types/CoreNetworkChangeEventValues.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CoreNetworkChangeEventValues.hs
@@ -0,0 +1,115 @@
+{-# 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.NetworkManager.Types.CoreNetworkChangeEventValues
+-- 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.NetworkManager.Types.CoreNetworkChangeEventValues 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
+
+-- | Describes a core network change event.
+--
+-- /See:/ 'newCoreNetworkChangeEventValues' smart constructor.
+data CoreNetworkChangeEventValues = CoreNetworkChangeEventValues'
+  { -- | The ID of the attachment if the change event is associated with an
+    -- attachment.
+    attachmentId :: Prelude.Maybe Prelude.Text,
+    -- | For a @STATIC_ROUTE@ event, this is the IP address.
+    cidr :: Prelude.Maybe Prelude.Text,
+    -- | The edge location for the core network change event.
+    edgeLocation :: Prelude.Maybe Prelude.Text,
+    -- | The segment name if the change event is associated with a segment.
+    segmentName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CoreNetworkChangeEventValues' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachmentId', 'coreNetworkChangeEventValues_attachmentId' - The ID of the attachment if the change event is associated with an
+-- attachment.
+--
+-- 'cidr', 'coreNetworkChangeEventValues_cidr' - For a @STATIC_ROUTE@ event, this is the IP address.
+--
+-- 'edgeLocation', 'coreNetworkChangeEventValues_edgeLocation' - The edge location for the core network change event.
+--
+-- 'segmentName', 'coreNetworkChangeEventValues_segmentName' - The segment name if the change event is associated with a segment.
+newCoreNetworkChangeEventValues ::
+  CoreNetworkChangeEventValues
+newCoreNetworkChangeEventValues =
+  CoreNetworkChangeEventValues'
+    { attachmentId =
+        Prelude.Nothing,
+      cidr = Prelude.Nothing,
+      edgeLocation = Prelude.Nothing,
+      segmentName = Prelude.Nothing
+    }
+
+-- | The ID of the attachment if the change event is associated with an
+-- attachment.
+coreNetworkChangeEventValues_attachmentId :: Lens.Lens' CoreNetworkChangeEventValues (Prelude.Maybe Prelude.Text)
+coreNetworkChangeEventValues_attachmentId = Lens.lens (\CoreNetworkChangeEventValues' {attachmentId} -> attachmentId) (\s@CoreNetworkChangeEventValues' {} a -> s {attachmentId = a} :: CoreNetworkChangeEventValues)
+
+-- | For a @STATIC_ROUTE@ event, this is the IP address.
+coreNetworkChangeEventValues_cidr :: Lens.Lens' CoreNetworkChangeEventValues (Prelude.Maybe Prelude.Text)
+coreNetworkChangeEventValues_cidr = Lens.lens (\CoreNetworkChangeEventValues' {cidr} -> cidr) (\s@CoreNetworkChangeEventValues' {} a -> s {cidr = a} :: CoreNetworkChangeEventValues)
+
+-- | The edge location for the core network change event.
+coreNetworkChangeEventValues_edgeLocation :: Lens.Lens' CoreNetworkChangeEventValues (Prelude.Maybe Prelude.Text)
+coreNetworkChangeEventValues_edgeLocation = Lens.lens (\CoreNetworkChangeEventValues' {edgeLocation} -> edgeLocation) (\s@CoreNetworkChangeEventValues' {} a -> s {edgeLocation = a} :: CoreNetworkChangeEventValues)
+
+-- | The segment name if the change event is associated with a segment.
+coreNetworkChangeEventValues_segmentName :: Lens.Lens' CoreNetworkChangeEventValues (Prelude.Maybe Prelude.Text)
+coreNetworkChangeEventValues_segmentName = Lens.lens (\CoreNetworkChangeEventValues' {segmentName} -> segmentName) (\s@CoreNetworkChangeEventValues' {} a -> s {segmentName = a} :: CoreNetworkChangeEventValues)
+
+instance Data.FromJSON CoreNetworkChangeEventValues where
+  parseJSON =
+    Data.withObject
+      "CoreNetworkChangeEventValues"
+      ( \x ->
+          CoreNetworkChangeEventValues'
+            Prelude.<$> (x Data..:? "AttachmentId")
+            Prelude.<*> (x Data..:? "Cidr")
+            Prelude.<*> (x Data..:? "EdgeLocation")
+            Prelude.<*> (x Data..:? "SegmentName")
+      )
+
+instance
+  Prelude.Hashable
+    CoreNetworkChangeEventValues
+  where
+  hashWithSalt _salt CoreNetworkChangeEventValues' {..} =
+    _salt
+      `Prelude.hashWithSalt` attachmentId
+      `Prelude.hashWithSalt` cidr
+      `Prelude.hashWithSalt` edgeLocation
+      `Prelude.hashWithSalt` segmentName
+
+instance Prelude.NFData CoreNetworkChangeEventValues where
+  rnf CoreNetworkChangeEventValues' {..} =
+    Prelude.rnf attachmentId
+      `Prelude.seq` Prelude.rnf cidr
+      `Prelude.seq` Prelude.rnf edgeLocation
+      `Prelude.seq` Prelude.rnf segmentName
diff --git a/gen/Amazonka/NetworkManager/Types/CoreNetworkChangeValues.hs b/gen/Amazonka/NetworkManager/Types/CoreNetworkChangeValues.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CoreNetworkChangeValues.hs
@@ -0,0 +1,150 @@
+{-# 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.NetworkManager.Types.CoreNetworkChangeValues
+-- 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.NetworkManager.Types.CoreNetworkChangeValues 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
+
+-- | Describes a core network change.
+--
+-- /See:/ 'newCoreNetworkChangeValues' smart constructor.
+data CoreNetworkChangeValues = CoreNetworkChangeValues'
+  { -- | The ASN of a core network.
+    asn :: Prelude.Maybe Prelude.Integer,
+    -- | The IP addresses used for a core network.
+    cidr :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the destination.
+    destinationIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The Regions where edges are located in a core network.
+    edgeLocations :: Prelude.Maybe [Prelude.Text],
+    -- | The inside IP addresses used for core network change values.
+    insideCidrBlocks :: Prelude.Maybe [Prelude.Text],
+    -- | The names of the segments in a core network.
+    segmentName :: Prelude.Maybe Prelude.Text,
+    -- | The shared segments for a core network change value.
+    sharedSegments :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CoreNetworkChangeValues' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'asn', 'coreNetworkChangeValues_asn' - The ASN of a core network.
+--
+-- 'cidr', 'coreNetworkChangeValues_cidr' - The IP addresses used for a core network.
+--
+-- 'destinationIdentifier', 'coreNetworkChangeValues_destinationIdentifier' - The ID of the destination.
+--
+-- 'edgeLocations', 'coreNetworkChangeValues_edgeLocations' - The Regions where edges are located in a core network.
+--
+-- 'insideCidrBlocks', 'coreNetworkChangeValues_insideCidrBlocks' - The inside IP addresses used for core network change values.
+--
+-- 'segmentName', 'coreNetworkChangeValues_segmentName' - The names of the segments in a core network.
+--
+-- 'sharedSegments', 'coreNetworkChangeValues_sharedSegments' - The shared segments for a core network change value.
+newCoreNetworkChangeValues ::
+  CoreNetworkChangeValues
+newCoreNetworkChangeValues =
+  CoreNetworkChangeValues'
+    { asn = Prelude.Nothing,
+      cidr = Prelude.Nothing,
+      destinationIdentifier = Prelude.Nothing,
+      edgeLocations = Prelude.Nothing,
+      insideCidrBlocks = Prelude.Nothing,
+      segmentName = Prelude.Nothing,
+      sharedSegments = Prelude.Nothing
+    }
+
+-- | The ASN of a core network.
+coreNetworkChangeValues_asn :: Lens.Lens' CoreNetworkChangeValues (Prelude.Maybe Prelude.Integer)
+coreNetworkChangeValues_asn = Lens.lens (\CoreNetworkChangeValues' {asn} -> asn) (\s@CoreNetworkChangeValues' {} a -> s {asn = a} :: CoreNetworkChangeValues)
+
+-- | The IP addresses used for a core network.
+coreNetworkChangeValues_cidr :: Lens.Lens' CoreNetworkChangeValues (Prelude.Maybe Prelude.Text)
+coreNetworkChangeValues_cidr = Lens.lens (\CoreNetworkChangeValues' {cidr} -> cidr) (\s@CoreNetworkChangeValues' {} a -> s {cidr = a} :: CoreNetworkChangeValues)
+
+-- | The ID of the destination.
+coreNetworkChangeValues_destinationIdentifier :: Lens.Lens' CoreNetworkChangeValues (Prelude.Maybe Prelude.Text)
+coreNetworkChangeValues_destinationIdentifier = Lens.lens (\CoreNetworkChangeValues' {destinationIdentifier} -> destinationIdentifier) (\s@CoreNetworkChangeValues' {} a -> s {destinationIdentifier = a} :: CoreNetworkChangeValues)
+
+-- | The Regions where edges are located in a core network.
+coreNetworkChangeValues_edgeLocations :: Lens.Lens' CoreNetworkChangeValues (Prelude.Maybe [Prelude.Text])
+coreNetworkChangeValues_edgeLocations = Lens.lens (\CoreNetworkChangeValues' {edgeLocations} -> edgeLocations) (\s@CoreNetworkChangeValues' {} a -> s {edgeLocations = a} :: CoreNetworkChangeValues) Prelude.. Lens.mapping Lens.coerced
+
+-- | The inside IP addresses used for core network change values.
+coreNetworkChangeValues_insideCidrBlocks :: Lens.Lens' CoreNetworkChangeValues (Prelude.Maybe [Prelude.Text])
+coreNetworkChangeValues_insideCidrBlocks = Lens.lens (\CoreNetworkChangeValues' {insideCidrBlocks} -> insideCidrBlocks) (\s@CoreNetworkChangeValues' {} a -> s {insideCidrBlocks = a} :: CoreNetworkChangeValues) Prelude.. Lens.mapping Lens.coerced
+
+-- | The names of the segments in a core network.
+coreNetworkChangeValues_segmentName :: Lens.Lens' CoreNetworkChangeValues (Prelude.Maybe Prelude.Text)
+coreNetworkChangeValues_segmentName = Lens.lens (\CoreNetworkChangeValues' {segmentName} -> segmentName) (\s@CoreNetworkChangeValues' {} a -> s {segmentName = a} :: CoreNetworkChangeValues)
+
+-- | The shared segments for a core network change value.
+coreNetworkChangeValues_sharedSegments :: Lens.Lens' CoreNetworkChangeValues (Prelude.Maybe [Prelude.Text])
+coreNetworkChangeValues_sharedSegments = Lens.lens (\CoreNetworkChangeValues' {sharedSegments} -> sharedSegments) (\s@CoreNetworkChangeValues' {} a -> s {sharedSegments = a} :: CoreNetworkChangeValues) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON CoreNetworkChangeValues where
+  parseJSON =
+    Data.withObject
+      "CoreNetworkChangeValues"
+      ( \x ->
+          CoreNetworkChangeValues'
+            Prelude.<$> (x Data..:? "Asn")
+            Prelude.<*> (x Data..:? "Cidr")
+            Prelude.<*> (x Data..:? "DestinationIdentifier")
+            Prelude.<*> (x Data..:? "EdgeLocations" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "InsideCidrBlocks"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "SegmentName")
+            Prelude.<*> ( x
+                            Data..:? "SharedSegments"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable CoreNetworkChangeValues where
+  hashWithSalt _salt CoreNetworkChangeValues' {..} =
+    _salt
+      `Prelude.hashWithSalt` asn
+      `Prelude.hashWithSalt` cidr
+      `Prelude.hashWithSalt` destinationIdentifier
+      `Prelude.hashWithSalt` edgeLocations
+      `Prelude.hashWithSalt` insideCidrBlocks
+      `Prelude.hashWithSalt` segmentName
+      `Prelude.hashWithSalt` sharedSegments
+
+instance Prelude.NFData CoreNetworkChangeValues where
+  rnf CoreNetworkChangeValues' {..} =
+    Prelude.rnf asn
+      `Prelude.seq` Prelude.rnf cidr
+      `Prelude.seq` Prelude.rnf destinationIdentifier
+      `Prelude.seq` Prelude.rnf edgeLocations
+      `Prelude.seq` Prelude.rnf insideCidrBlocks
+      `Prelude.seq` Prelude.rnf segmentName
+      `Prelude.seq` Prelude.rnf sharedSegments
diff --git a/gen/Amazonka/NetworkManager/Types/CoreNetworkEdge.hs b/gen/Amazonka/NetworkManager/Types/CoreNetworkEdge.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CoreNetworkEdge.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.NetworkManager.Types.CoreNetworkEdge
+-- 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.NetworkManager.Types.CoreNetworkEdge 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
+
+-- | Describes a core network edge.
+--
+-- /See:/ 'newCoreNetworkEdge' smart constructor.
+data CoreNetworkEdge = CoreNetworkEdge'
+  { -- | The ASN of a core network edge.
+    asn :: Prelude.Maybe Prelude.Integer,
+    -- | The Region where a core network edge is located.
+    edgeLocation :: Prelude.Maybe Prelude.Text,
+    -- | The inside IP addresses used for core network edges.
+    insideCidrBlocks :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CoreNetworkEdge' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'asn', 'coreNetworkEdge_asn' - The ASN of a core network edge.
+--
+-- 'edgeLocation', 'coreNetworkEdge_edgeLocation' - The Region where a core network edge is located.
+--
+-- 'insideCidrBlocks', 'coreNetworkEdge_insideCidrBlocks' - The inside IP addresses used for core network edges.
+newCoreNetworkEdge ::
+  CoreNetworkEdge
+newCoreNetworkEdge =
+  CoreNetworkEdge'
+    { asn = Prelude.Nothing,
+      edgeLocation = Prelude.Nothing,
+      insideCidrBlocks = Prelude.Nothing
+    }
+
+-- | The ASN of a core network edge.
+coreNetworkEdge_asn :: Lens.Lens' CoreNetworkEdge (Prelude.Maybe Prelude.Integer)
+coreNetworkEdge_asn = Lens.lens (\CoreNetworkEdge' {asn} -> asn) (\s@CoreNetworkEdge' {} a -> s {asn = a} :: CoreNetworkEdge)
+
+-- | The Region where a core network edge is located.
+coreNetworkEdge_edgeLocation :: Lens.Lens' CoreNetworkEdge (Prelude.Maybe Prelude.Text)
+coreNetworkEdge_edgeLocation = Lens.lens (\CoreNetworkEdge' {edgeLocation} -> edgeLocation) (\s@CoreNetworkEdge' {} a -> s {edgeLocation = a} :: CoreNetworkEdge)
+
+-- | The inside IP addresses used for core network edges.
+coreNetworkEdge_insideCidrBlocks :: Lens.Lens' CoreNetworkEdge (Prelude.Maybe [Prelude.Text])
+coreNetworkEdge_insideCidrBlocks = Lens.lens (\CoreNetworkEdge' {insideCidrBlocks} -> insideCidrBlocks) (\s@CoreNetworkEdge' {} a -> s {insideCidrBlocks = a} :: CoreNetworkEdge) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON CoreNetworkEdge where
+  parseJSON =
+    Data.withObject
+      "CoreNetworkEdge"
+      ( \x ->
+          CoreNetworkEdge'
+            Prelude.<$> (x Data..:? "Asn")
+            Prelude.<*> (x Data..:? "EdgeLocation")
+            Prelude.<*> ( x
+                            Data..:? "InsideCidrBlocks"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable CoreNetworkEdge where
+  hashWithSalt _salt CoreNetworkEdge' {..} =
+    _salt
+      `Prelude.hashWithSalt` asn
+      `Prelude.hashWithSalt` edgeLocation
+      `Prelude.hashWithSalt` insideCidrBlocks
+
+instance Prelude.NFData CoreNetworkEdge where
+  rnf CoreNetworkEdge' {..} =
+    Prelude.rnf asn
+      `Prelude.seq` Prelude.rnf edgeLocation
+      `Prelude.seq` Prelude.rnf insideCidrBlocks
diff --git a/gen/Amazonka/NetworkManager/Types/CoreNetworkPolicy.hs b/gen/Amazonka/NetworkManager/Types/CoreNetworkPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CoreNetworkPolicy.hs
@@ -0,0 +1,162 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.CoreNetworkPolicy
+-- 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.NetworkManager.Types.CoreNetworkPolicy where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.ChangeSetState
+import Amazonka.NetworkManager.Types.CoreNetworkPolicyAlias
+import Amazonka.NetworkManager.Types.CoreNetworkPolicyError
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a core network policy. You can have only one LIVE Core Policy.
+--
+-- /See:/ 'newCoreNetworkPolicy' smart constructor.
+data CoreNetworkPolicy = CoreNetworkPolicy'
+  { -- | Whether a core network policy is the current LIVE policy or the most
+    -- recently submitted policy.
+    alias :: Prelude.Maybe CoreNetworkPolicyAlias,
+    -- | The state of a core network policy.
+    changeSetState :: Prelude.Maybe ChangeSetState,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp when a core network policy was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The description of a core network policy.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Describes a core network policy.
+    policyDocument :: Prelude.Maybe Prelude.Text,
+    -- | Describes any errors in a core network policy.
+    policyErrors :: Prelude.Maybe [CoreNetworkPolicyError],
+    -- | The ID of the policy version.
+    policyVersionId :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CoreNetworkPolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'alias', 'coreNetworkPolicy_alias' - Whether a core network policy is the current LIVE policy or the most
+-- recently submitted policy.
+--
+-- 'changeSetState', 'coreNetworkPolicy_changeSetState' - The state of a core network policy.
+--
+-- 'coreNetworkId', 'coreNetworkPolicy_coreNetworkId' - The ID of a core network.
+--
+-- 'createdAt', 'coreNetworkPolicy_createdAt' - The timestamp when a core network policy was created.
+--
+-- 'description', 'coreNetworkPolicy_description' - The description of a core network policy.
+--
+-- 'policyDocument', 'coreNetworkPolicy_policyDocument' - Describes a core network policy.
+--
+-- 'policyErrors', 'coreNetworkPolicy_policyErrors' - Describes any errors in a core network policy.
+--
+-- 'policyVersionId', 'coreNetworkPolicy_policyVersionId' - The ID of the policy version.
+newCoreNetworkPolicy ::
+  CoreNetworkPolicy
+newCoreNetworkPolicy =
+  CoreNetworkPolicy'
+    { alias = Prelude.Nothing,
+      changeSetState = Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      description = Prelude.Nothing,
+      policyDocument = Prelude.Nothing,
+      policyErrors = Prelude.Nothing,
+      policyVersionId = Prelude.Nothing
+    }
+
+-- | Whether a core network policy is the current LIVE policy or the most
+-- recently submitted policy.
+coreNetworkPolicy_alias :: Lens.Lens' CoreNetworkPolicy (Prelude.Maybe CoreNetworkPolicyAlias)
+coreNetworkPolicy_alias = Lens.lens (\CoreNetworkPolicy' {alias} -> alias) (\s@CoreNetworkPolicy' {} a -> s {alias = a} :: CoreNetworkPolicy)
+
+-- | The state of a core network policy.
+coreNetworkPolicy_changeSetState :: Lens.Lens' CoreNetworkPolicy (Prelude.Maybe ChangeSetState)
+coreNetworkPolicy_changeSetState = Lens.lens (\CoreNetworkPolicy' {changeSetState} -> changeSetState) (\s@CoreNetworkPolicy' {} a -> s {changeSetState = a} :: CoreNetworkPolicy)
+
+-- | The ID of a core network.
+coreNetworkPolicy_coreNetworkId :: Lens.Lens' CoreNetworkPolicy (Prelude.Maybe Prelude.Text)
+coreNetworkPolicy_coreNetworkId = Lens.lens (\CoreNetworkPolicy' {coreNetworkId} -> coreNetworkId) (\s@CoreNetworkPolicy' {} a -> s {coreNetworkId = a} :: CoreNetworkPolicy)
+
+-- | The timestamp when a core network policy was created.
+coreNetworkPolicy_createdAt :: Lens.Lens' CoreNetworkPolicy (Prelude.Maybe Prelude.UTCTime)
+coreNetworkPolicy_createdAt = Lens.lens (\CoreNetworkPolicy' {createdAt} -> createdAt) (\s@CoreNetworkPolicy' {} a -> s {createdAt = a} :: CoreNetworkPolicy) Prelude.. Lens.mapping Data._Time
+
+-- | The description of a core network policy.
+coreNetworkPolicy_description :: Lens.Lens' CoreNetworkPolicy (Prelude.Maybe Prelude.Text)
+coreNetworkPolicy_description = Lens.lens (\CoreNetworkPolicy' {description} -> description) (\s@CoreNetworkPolicy' {} a -> s {description = a} :: CoreNetworkPolicy)
+
+-- | Describes a core network policy.
+coreNetworkPolicy_policyDocument :: Lens.Lens' CoreNetworkPolicy (Prelude.Maybe Prelude.Text)
+coreNetworkPolicy_policyDocument = Lens.lens (\CoreNetworkPolicy' {policyDocument} -> policyDocument) (\s@CoreNetworkPolicy' {} a -> s {policyDocument = a} :: CoreNetworkPolicy)
+
+-- | Describes any errors in a core network policy.
+coreNetworkPolicy_policyErrors :: Lens.Lens' CoreNetworkPolicy (Prelude.Maybe [CoreNetworkPolicyError])
+coreNetworkPolicy_policyErrors = Lens.lens (\CoreNetworkPolicy' {policyErrors} -> policyErrors) (\s@CoreNetworkPolicy' {} a -> s {policyErrors = a} :: CoreNetworkPolicy) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the policy version.
+coreNetworkPolicy_policyVersionId :: Lens.Lens' CoreNetworkPolicy (Prelude.Maybe Prelude.Int)
+coreNetworkPolicy_policyVersionId = Lens.lens (\CoreNetworkPolicy' {policyVersionId} -> policyVersionId) (\s@CoreNetworkPolicy' {} a -> s {policyVersionId = a} :: CoreNetworkPolicy)
+
+instance Data.FromJSON CoreNetworkPolicy where
+  parseJSON =
+    Data.withObject
+      "CoreNetworkPolicy"
+      ( \x ->
+          CoreNetworkPolicy'
+            Prelude.<$> (x Data..:? "Alias")
+            Prelude.<*> (x Data..:? "ChangeSetState")
+            Prelude.<*> (x Data..:? "CoreNetworkId")
+            Prelude.<*> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "PolicyDocument")
+            Prelude.<*> (x Data..:? "PolicyErrors" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "PolicyVersionId")
+      )
+
+instance Prelude.Hashable CoreNetworkPolicy where
+  hashWithSalt _salt CoreNetworkPolicy' {..} =
+    _salt
+      `Prelude.hashWithSalt` alias
+      `Prelude.hashWithSalt` changeSetState
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` policyDocument
+      `Prelude.hashWithSalt` policyErrors
+      `Prelude.hashWithSalt` policyVersionId
+
+instance Prelude.NFData CoreNetworkPolicy where
+  rnf CoreNetworkPolicy' {..} =
+    Prelude.rnf alias
+      `Prelude.seq` Prelude.rnf changeSetState
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf policyDocument
+      `Prelude.seq` Prelude.rnf policyErrors
+      `Prelude.seq` Prelude.rnf policyVersionId
diff --git a/gen/Amazonka/NetworkManager/Types/CoreNetworkPolicyAlias.hs b/gen/Amazonka/NetworkManager/Types/CoreNetworkPolicyAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CoreNetworkPolicyAlias.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.CoreNetworkPolicyAlias
+-- 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.NetworkManager.Types.CoreNetworkPolicyAlias
+  ( CoreNetworkPolicyAlias
+      ( ..,
+        CoreNetworkPolicyAlias_LATEST,
+        CoreNetworkPolicyAlias_LIVE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CoreNetworkPolicyAlias = CoreNetworkPolicyAlias'
+  { fromCoreNetworkPolicyAlias ::
+      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 CoreNetworkPolicyAlias_LATEST :: CoreNetworkPolicyAlias
+pattern CoreNetworkPolicyAlias_LATEST = CoreNetworkPolicyAlias' "LATEST"
+
+pattern CoreNetworkPolicyAlias_LIVE :: CoreNetworkPolicyAlias
+pattern CoreNetworkPolicyAlias_LIVE = CoreNetworkPolicyAlias' "LIVE"
+
+{-# COMPLETE
+  CoreNetworkPolicyAlias_LATEST,
+  CoreNetworkPolicyAlias_LIVE,
+  CoreNetworkPolicyAlias'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/CoreNetworkPolicyError.hs b/gen/Amazonka/NetworkManager/Types/CoreNetworkPolicyError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CoreNetworkPolicyError.hs
@@ -0,0 +1,100 @@
+{-# 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.NetworkManager.Types.CoreNetworkPolicyError
+-- 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.NetworkManager.Types.CoreNetworkPolicyError where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provides details about an error in a core network policy.
+--
+-- /See:/ 'newCoreNetworkPolicyError' smart constructor.
+data CoreNetworkPolicyError = CoreNetworkPolicyError'
+  { -- | The JSON path where the error was discovered in the policy document.
+    path :: Prelude.Maybe Prelude.Text,
+    -- | The error code associated with a core network policy error.
+    errorCode :: Prelude.Text,
+    -- | The message associated with a core network policy error code.
+    message :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CoreNetworkPolicyError' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'path', 'coreNetworkPolicyError_path' - The JSON path where the error was discovered in the policy document.
+--
+-- 'errorCode', 'coreNetworkPolicyError_errorCode' - The error code associated with a core network policy error.
+--
+-- 'message', 'coreNetworkPolicyError_message' - The message associated with a core network policy error code.
+newCoreNetworkPolicyError ::
+  -- | 'errorCode'
+  Prelude.Text ->
+  -- | 'message'
+  Prelude.Text ->
+  CoreNetworkPolicyError
+newCoreNetworkPolicyError pErrorCode_ pMessage_ =
+  CoreNetworkPolicyError'
+    { path = Prelude.Nothing,
+      errorCode = pErrorCode_,
+      message = pMessage_
+    }
+
+-- | The JSON path where the error was discovered in the policy document.
+coreNetworkPolicyError_path :: Lens.Lens' CoreNetworkPolicyError (Prelude.Maybe Prelude.Text)
+coreNetworkPolicyError_path = Lens.lens (\CoreNetworkPolicyError' {path} -> path) (\s@CoreNetworkPolicyError' {} a -> s {path = a} :: CoreNetworkPolicyError)
+
+-- | The error code associated with a core network policy error.
+coreNetworkPolicyError_errorCode :: Lens.Lens' CoreNetworkPolicyError Prelude.Text
+coreNetworkPolicyError_errorCode = Lens.lens (\CoreNetworkPolicyError' {errorCode} -> errorCode) (\s@CoreNetworkPolicyError' {} a -> s {errorCode = a} :: CoreNetworkPolicyError)
+
+-- | The message associated with a core network policy error code.
+coreNetworkPolicyError_message :: Lens.Lens' CoreNetworkPolicyError Prelude.Text
+coreNetworkPolicyError_message = Lens.lens (\CoreNetworkPolicyError' {message} -> message) (\s@CoreNetworkPolicyError' {} a -> s {message = a} :: CoreNetworkPolicyError)
+
+instance Data.FromJSON CoreNetworkPolicyError where
+  parseJSON =
+    Data.withObject
+      "CoreNetworkPolicyError"
+      ( \x ->
+          CoreNetworkPolicyError'
+            Prelude.<$> (x Data..:? "Path")
+            Prelude.<*> (x Data..: "ErrorCode")
+            Prelude.<*> (x Data..: "Message")
+      )
+
+instance Prelude.Hashable CoreNetworkPolicyError where
+  hashWithSalt _salt CoreNetworkPolicyError' {..} =
+    _salt
+      `Prelude.hashWithSalt` path
+      `Prelude.hashWithSalt` errorCode
+      `Prelude.hashWithSalt` message
+
+instance Prelude.NFData CoreNetworkPolicyError where
+  rnf CoreNetworkPolicyError' {..} =
+    Prelude.rnf path
+      `Prelude.seq` Prelude.rnf errorCode
+      `Prelude.seq` Prelude.rnf message
diff --git a/gen/Amazonka/NetworkManager/Types/CoreNetworkPolicyVersion.hs b/gen/Amazonka/NetworkManager/Types/CoreNetworkPolicyVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CoreNetworkPolicyVersion.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.NetworkManager.Types.CoreNetworkPolicyVersion
+-- 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.NetworkManager.Types.CoreNetworkPolicyVersion where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.ChangeSetState
+import Amazonka.NetworkManager.Types.CoreNetworkPolicyAlias
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a core network policy version.
+--
+-- /See:/ 'newCoreNetworkPolicyVersion' smart constructor.
+data CoreNetworkPolicyVersion = CoreNetworkPolicyVersion'
+  { -- | Whether a core network policy is the current policy or the most recently
+    -- submitted policy.
+    alias :: Prelude.Maybe CoreNetworkPolicyAlias,
+    -- | The status of the policy version change set.
+    changeSetState :: Prelude.Maybe ChangeSetState,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp when a core network policy version was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The description of a core network policy version.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the policy version.
+    policyVersionId :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CoreNetworkPolicyVersion' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'alias', 'coreNetworkPolicyVersion_alias' - Whether a core network policy is the current policy or the most recently
+-- submitted policy.
+--
+-- 'changeSetState', 'coreNetworkPolicyVersion_changeSetState' - The status of the policy version change set.
+--
+-- 'coreNetworkId', 'coreNetworkPolicyVersion_coreNetworkId' - The ID of a core network.
+--
+-- 'createdAt', 'coreNetworkPolicyVersion_createdAt' - The timestamp when a core network policy version was created.
+--
+-- 'description', 'coreNetworkPolicyVersion_description' - The description of a core network policy version.
+--
+-- 'policyVersionId', 'coreNetworkPolicyVersion_policyVersionId' - The ID of the policy version.
+newCoreNetworkPolicyVersion ::
+  CoreNetworkPolicyVersion
+newCoreNetworkPolicyVersion =
+  CoreNetworkPolicyVersion'
+    { alias = Prelude.Nothing,
+      changeSetState = Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      description = Prelude.Nothing,
+      policyVersionId = Prelude.Nothing
+    }
+
+-- | Whether a core network policy is the current policy or the most recently
+-- submitted policy.
+coreNetworkPolicyVersion_alias :: Lens.Lens' CoreNetworkPolicyVersion (Prelude.Maybe CoreNetworkPolicyAlias)
+coreNetworkPolicyVersion_alias = Lens.lens (\CoreNetworkPolicyVersion' {alias} -> alias) (\s@CoreNetworkPolicyVersion' {} a -> s {alias = a} :: CoreNetworkPolicyVersion)
+
+-- | The status of the policy version change set.
+coreNetworkPolicyVersion_changeSetState :: Lens.Lens' CoreNetworkPolicyVersion (Prelude.Maybe ChangeSetState)
+coreNetworkPolicyVersion_changeSetState = Lens.lens (\CoreNetworkPolicyVersion' {changeSetState} -> changeSetState) (\s@CoreNetworkPolicyVersion' {} a -> s {changeSetState = a} :: CoreNetworkPolicyVersion)
+
+-- | The ID of a core network.
+coreNetworkPolicyVersion_coreNetworkId :: Lens.Lens' CoreNetworkPolicyVersion (Prelude.Maybe Prelude.Text)
+coreNetworkPolicyVersion_coreNetworkId = Lens.lens (\CoreNetworkPolicyVersion' {coreNetworkId} -> coreNetworkId) (\s@CoreNetworkPolicyVersion' {} a -> s {coreNetworkId = a} :: CoreNetworkPolicyVersion)
+
+-- | The timestamp when a core network policy version was created.
+coreNetworkPolicyVersion_createdAt :: Lens.Lens' CoreNetworkPolicyVersion (Prelude.Maybe Prelude.UTCTime)
+coreNetworkPolicyVersion_createdAt = Lens.lens (\CoreNetworkPolicyVersion' {createdAt} -> createdAt) (\s@CoreNetworkPolicyVersion' {} a -> s {createdAt = a} :: CoreNetworkPolicyVersion) Prelude.. Lens.mapping Data._Time
+
+-- | The description of a core network policy version.
+coreNetworkPolicyVersion_description :: Lens.Lens' CoreNetworkPolicyVersion (Prelude.Maybe Prelude.Text)
+coreNetworkPolicyVersion_description = Lens.lens (\CoreNetworkPolicyVersion' {description} -> description) (\s@CoreNetworkPolicyVersion' {} a -> s {description = a} :: CoreNetworkPolicyVersion)
+
+-- | The ID of the policy version.
+coreNetworkPolicyVersion_policyVersionId :: Lens.Lens' CoreNetworkPolicyVersion (Prelude.Maybe Prelude.Int)
+coreNetworkPolicyVersion_policyVersionId = Lens.lens (\CoreNetworkPolicyVersion' {policyVersionId} -> policyVersionId) (\s@CoreNetworkPolicyVersion' {} a -> s {policyVersionId = a} :: CoreNetworkPolicyVersion)
+
+instance Data.FromJSON CoreNetworkPolicyVersion where
+  parseJSON =
+    Data.withObject
+      "CoreNetworkPolicyVersion"
+      ( \x ->
+          CoreNetworkPolicyVersion'
+            Prelude.<$> (x Data..:? "Alias")
+            Prelude.<*> (x Data..:? "ChangeSetState")
+            Prelude.<*> (x Data..:? "CoreNetworkId")
+            Prelude.<*> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "PolicyVersionId")
+      )
+
+instance Prelude.Hashable CoreNetworkPolicyVersion where
+  hashWithSalt _salt CoreNetworkPolicyVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` alias
+      `Prelude.hashWithSalt` changeSetState
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` policyVersionId
+
+instance Prelude.NFData CoreNetworkPolicyVersion where
+  rnf CoreNetworkPolicyVersion' {..} =
+    Prelude.rnf alias
+      `Prelude.seq` Prelude.rnf changeSetState
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf policyVersionId
diff --git a/gen/Amazonka/NetworkManager/Types/CoreNetworkSegment.hs b/gen/Amazonka/NetworkManager/Types/CoreNetworkSegment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CoreNetworkSegment.hs
@@ -0,0 +1,101 @@
+{-# 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.NetworkManager.Types.CoreNetworkSegment
+-- 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.NetworkManager.Types.CoreNetworkSegment 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
+
+-- | Describes a core network segment, which are dedicated routes. Only
+-- attachments within this segment can communicate with each other.
+--
+-- /See:/ 'newCoreNetworkSegment' smart constructor.
+data CoreNetworkSegment = CoreNetworkSegment'
+  { -- | The Regions where the edges are located.
+    edgeLocations :: Prelude.Maybe [Prelude.Text],
+    -- | The name of a core network segment.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The shared segments of a core network.
+    sharedSegments :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CoreNetworkSegment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'edgeLocations', 'coreNetworkSegment_edgeLocations' - The Regions where the edges are located.
+--
+-- 'name', 'coreNetworkSegment_name' - The name of a core network segment.
+--
+-- 'sharedSegments', 'coreNetworkSegment_sharedSegments' - The shared segments of a core network.
+newCoreNetworkSegment ::
+  CoreNetworkSegment
+newCoreNetworkSegment =
+  CoreNetworkSegment'
+    { edgeLocations =
+        Prelude.Nothing,
+      name = Prelude.Nothing,
+      sharedSegments = Prelude.Nothing
+    }
+
+-- | The Regions where the edges are located.
+coreNetworkSegment_edgeLocations :: Lens.Lens' CoreNetworkSegment (Prelude.Maybe [Prelude.Text])
+coreNetworkSegment_edgeLocations = Lens.lens (\CoreNetworkSegment' {edgeLocations} -> edgeLocations) (\s@CoreNetworkSegment' {} a -> s {edgeLocations = a} :: CoreNetworkSegment) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of a core network segment.
+coreNetworkSegment_name :: Lens.Lens' CoreNetworkSegment (Prelude.Maybe Prelude.Text)
+coreNetworkSegment_name = Lens.lens (\CoreNetworkSegment' {name} -> name) (\s@CoreNetworkSegment' {} a -> s {name = a} :: CoreNetworkSegment)
+
+-- | The shared segments of a core network.
+coreNetworkSegment_sharedSegments :: Lens.Lens' CoreNetworkSegment (Prelude.Maybe [Prelude.Text])
+coreNetworkSegment_sharedSegments = Lens.lens (\CoreNetworkSegment' {sharedSegments} -> sharedSegments) (\s@CoreNetworkSegment' {} a -> s {sharedSegments = a} :: CoreNetworkSegment) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON CoreNetworkSegment where
+  parseJSON =
+    Data.withObject
+      "CoreNetworkSegment"
+      ( \x ->
+          CoreNetworkSegment'
+            Prelude.<$> (x Data..:? "EdgeLocations" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> ( x
+                            Data..:? "SharedSegments"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable CoreNetworkSegment where
+  hashWithSalt _salt CoreNetworkSegment' {..} =
+    _salt
+      `Prelude.hashWithSalt` edgeLocations
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` sharedSegments
+
+instance Prelude.NFData CoreNetworkSegment where
+  rnf CoreNetworkSegment' {..} =
+    Prelude.rnf edgeLocations
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf sharedSegments
diff --git a/gen/Amazonka/NetworkManager/Types/CoreNetworkSegmentEdgeIdentifier.hs b/gen/Amazonka/NetworkManager/Types/CoreNetworkSegmentEdgeIdentifier.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CoreNetworkSegmentEdgeIdentifier.hs
@@ -0,0 +1,118 @@
+{-# 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.NetworkManager.Types.CoreNetworkSegmentEdgeIdentifier
+-- 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.NetworkManager.Types.CoreNetworkSegmentEdgeIdentifier 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
+
+-- | Returns details about a core network edge.
+--
+-- /See:/ 'newCoreNetworkSegmentEdgeIdentifier' smart constructor.
+data CoreNetworkSegmentEdgeIdentifier = CoreNetworkSegmentEdgeIdentifier'
+  { -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The Region where the segment edge is located.
+    edgeLocation :: Prelude.Maybe Prelude.Text,
+    -- | The name of the segment edge.
+    segmentName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CoreNetworkSegmentEdgeIdentifier' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkId', 'coreNetworkSegmentEdgeIdentifier_coreNetworkId' - The ID of a core network.
+--
+-- 'edgeLocation', 'coreNetworkSegmentEdgeIdentifier_edgeLocation' - The Region where the segment edge is located.
+--
+-- 'segmentName', 'coreNetworkSegmentEdgeIdentifier_segmentName' - The name of the segment edge.
+newCoreNetworkSegmentEdgeIdentifier ::
+  CoreNetworkSegmentEdgeIdentifier
+newCoreNetworkSegmentEdgeIdentifier =
+  CoreNetworkSegmentEdgeIdentifier'
+    { coreNetworkId =
+        Prelude.Nothing,
+      edgeLocation = Prelude.Nothing,
+      segmentName = Prelude.Nothing
+    }
+
+-- | The ID of a core network.
+coreNetworkSegmentEdgeIdentifier_coreNetworkId :: Lens.Lens' CoreNetworkSegmentEdgeIdentifier (Prelude.Maybe Prelude.Text)
+coreNetworkSegmentEdgeIdentifier_coreNetworkId = Lens.lens (\CoreNetworkSegmentEdgeIdentifier' {coreNetworkId} -> coreNetworkId) (\s@CoreNetworkSegmentEdgeIdentifier' {} a -> s {coreNetworkId = a} :: CoreNetworkSegmentEdgeIdentifier)
+
+-- | The Region where the segment edge is located.
+coreNetworkSegmentEdgeIdentifier_edgeLocation :: Lens.Lens' CoreNetworkSegmentEdgeIdentifier (Prelude.Maybe Prelude.Text)
+coreNetworkSegmentEdgeIdentifier_edgeLocation = Lens.lens (\CoreNetworkSegmentEdgeIdentifier' {edgeLocation} -> edgeLocation) (\s@CoreNetworkSegmentEdgeIdentifier' {} a -> s {edgeLocation = a} :: CoreNetworkSegmentEdgeIdentifier)
+
+-- | The name of the segment edge.
+coreNetworkSegmentEdgeIdentifier_segmentName :: Lens.Lens' CoreNetworkSegmentEdgeIdentifier (Prelude.Maybe Prelude.Text)
+coreNetworkSegmentEdgeIdentifier_segmentName = Lens.lens (\CoreNetworkSegmentEdgeIdentifier' {segmentName} -> segmentName) (\s@CoreNetworkSegmentEdgeIdentifier' {} a -> s {segmentName = a} :: CoreNetworkSegmentEdgeIdentifier)
+
+instance
+  Data.FromJSON
+    CoreNetworkSegmentEdgeIdentifier
+  where
+  parseJSON =
+    Data.withObject
+      "CoreNetworkSegmentEdgeIdentifier"
+      ( \x ->
+          CoreNetworkSegmentEdgeIdentifier'
+            Prelude.<$> (x Data..:? "CoreNetworkId")
+            Prelude.<*> (x Data..:? "EdgeLocation")
+            Prelude.<*> (x Data..:? "SegmentName")
+      )
+
+instance
+  Prelude.Hashable
+    CoreNetworkSegmentEdgeIdentifier
+  where
+  hashWithSalt
+    _salt
+    CoreNetworkSegmentEdgeIdentifier' {..} =
+      _salt
+        `Prelude.hashWithSalt` coreNetworkId
+        `Prelude.hashWithSalt` edgeLocation
+        `Prelude.hashWithSalt` segmentName
+
+instance
+  Prelude.NFData
+    CoreNetworkSegmentEdgeIdentifier
+  where
+  rnf CoreNetworkSegmentEdgeIdentifier' {..} =
+    Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf edgeLocation
+      `Prelude.seq` Prelude.rnf segmentName
+
+instance Data.ToJSON CoreNetworkSegmentEdgeIdentifier where
+  toJSON CoreNetworkSegmentEdgeIdentifier' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CoreNetworkId" Data..=) Prelude.<$> coreNetworkId,
+            ("EdgeLocation" Data..=) Prelude.<$> edgeLocation,
+            ("SegmentName" Data..=) Prelude.<$> segmentName
+          ]
+      )
diff --git a/gen/Amazonka/NetworkManager/Types/CoreNetworkState.hs b/gen/Amazonka/NetworkManager/Types/CoreNetworkState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CoreNetworkState.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.NetworkManager.Types.CoreNetworkState
+-- 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.NetworkManager.Types.CoreNetworkState
+  ( CoreNetworkState
+      ( ..,
+        CoreNetworkState_AVAILABLE,
+        CoreNetworkState_CREATING,
+        CoreNetworkState_DELETING,
+        CoreNetworkState_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CoreNetworkState = CoreNetworkState'
+  { fromCoreNetworkState ::
+      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 CoreNetworkState_AVAILABLE :: CoreNetworkState
+pattern CoreNetworkState_AVAILABLE = CoreNetworkState' "AVAILABLE"
+
+pattern CoreNetworkState_CREATING :: CoreNetworkState
+pattern CoreNetworkState_CREATING = CoreNetworkState' "CREATING"
+
+pattern CoreNetworkState_DELETING :: CoreNetworkState
+pattern CoreNetworkState_DELETING = CoreNetworkState' "DELETING"
+
+pattern CoreNetworkState_UPDATING :: CoreNetworkState
+pattern CoreNetworkState_UPDATING = CoreNetworkState' "UPDATING"
+
+{-# COMPLETE
+  CoreNetworkState_AVAILABLE,
+  CoreNetworkState_CREATING,
+  CoreNetworkState_DELETING,
+  CoreNetworkState_UPDATING,
+  CoreNetworkState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/CoreNetworkSummary.hs b/gen/Amazonka/NetworkManager/Types/CoreNetworkSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CoreNetworkSummary.hs
@@ -0,0 +1,147 @@
+{-# 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.NetworkManager.Types.CoreNetworkSummary
+-- 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.NetworkManager.Types.CoreNetworkSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.CoreNetworkState
+import Amazonka.NetworkManager.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Returns summary information about a core network.
+--
+-- /See:/ 'newCoreNetworkSummary' smart constructor.
+data CoreNetworkSummary = CoreNetworkSummary'
+  { -- | a core network ARN.
+    coreNetworkArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The description of a core network.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The global network ID.
+    globalNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the account owner.
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The state of a core network.
+    state :: Prelude.Maybe CoreNetworkState,
+    -- | The key-value tags associated with a core network summary.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CoreNetworkSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkArn', 'coreNetworkSummary_coreNetworkArn' - a core network ARN.
+--
+-- 'coreNetworkId', 'coreNetworkSummary_coreNetworkId' - The ID of a core network.
+--
+-- 'description', 'coreNetworkSummary_description' - The description of a core network.
+--
+-- 'globalNetworkId', 'coreNetworkSummary_globalNetworkId' - The global network ID.
+--
+-- 'ownerAccountId', 'coreNetworkSummary_ownerAccountId' - The ID of the account owner.
+--
+-- 'state', 'coreNetworkSummary_state' - The state of a core network.
+--
+-- 'tags', 'coreNetworkSummary_tags' - The key-value tags associated with a core network summary.
+newCoreNetworkSummary ::
+  CoreNetworkSummary
+newCoreNetworkSummary =
+  CoreNetworkSummary'
+    { coreNetworkArn =
+        Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      description = Prelude.Nothing,
+      globalNetworkId = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | a core network ARN.
+coreNetworkSummary_coreNetworkArn :: Lens.Lens' CoreNetworkSummary (Prelude.Maybe Prelude.Text)
+coreNetworkSummary_coreNetworkArn = Lens.lens (\CoreNetworkSummary' {coreNetworkArn} -> coreNetworkArn) (\s@CoreNetworkSummary' {} a -> s {coreNetworkArn = a} :: CoreNetworkSummary)
+
+-- | The ID of a core network.
+coreNetworkSummary_coreNetworkId :: Lens.Lens' CoreNetworkSummary (Prelude.Maybe Prelude.Text)
+coreNetworkSummary_coreNetworkId = Lens.lens (\CoreNetworkSummary' {coreNetworkId} -> coreNetworkId) (\s@CoreNetworkSummary' {} a -> s {coreNetworkId = a} :: CoreNetworkSummary)
+
+-- | The description of a core network.
+coreNetworkSummary_description :: Lens.Lens' CoreNetworkSummary (Prelude.Maybe Prelude.Text)
+coreNetworkSummary_description = Lens.lens (\CoreNetworkSummary' {description} -> description) (\s@CoreNetworkSummary' {} a -> s {description = a} :: CoreNetworkSummary)
+
+-- | The global network ID.
+coreNetworkSummary_globalNetworkId :: Lens.Lens' CoreNetworkSummary (Prelude.Maybe Prelude.Text)
+coreNetworkSummary_globalNetworkId = Lens.lens (\CoreNetworkSummary' {globalNetworkId} -> globalNetworkId) (\s@CoreNetworkSummary' {} a -> s {globalNetworkId = a} :: CoreNetworkSummary)
+
+-- | The ID of the account owner.
+coreNetworkSummary_ownerAccountId :: Lens.Lens' CoreNetworkSummary (Prelude.Maybe Prelude.Text)
+coreNetworkSummary_ownerAccountId = Lens.lens (\CoreNetworkSummary' {ownerAccountId} -> ownerAccountId) (\s@CoreNetworkSummary' {} a -> s {ownerAccountId = a} :: CoreNetworkSummary)
+
+-- | The state of a core network.
+coreNetworkSummary_state :: Lens.Lens' CoreNetworkSummary (Prelude.Maybe CoreNetworkState)
+coreNetworkSummary_state = Lens.lens (\CoreNetworkSummary' {state} -> state) (\s@CoreNetworkSummary' {} a -> s {state = a} :: CoreNetworkSummary)
+
+-- | The key-value tags associated with a core network summary.
+coreNetworkSummary_tags :: Lens.Lens' CoreNetworkSummary (Prelude.Maybe [Tag])
+coreNetworkSummary_tags = Lens.lens (\CoreNetworkSummary' {tags} -> tags) (\s@CoreNetworkSummary' {} a -> s {tags = a} :: CoreNetworkSummary) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON CoreNetworkSummary where
+  parseJSON =
+    Data.withObject
+      "CoreNetworkSummary"
+      ( \x ->
+          CoreNetworkSummary'
+            Prelude.<$> (x Data..:? "CoreNetworkArn")
+            Prelude.<*> (x Data..:? "CoreNetworkId")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "GlobalNetworkId")
+            Prelude.<*> (x Data..:? "OwnerAccountId")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable CoreNetworkSummary where
+  hashWithSalt _salt CoreNetworkSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` coreNetworkArn
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` ownerAccountId
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData CoreNetworkSummary where
+  rnf CoreNetworkSummary' {..} =
+    Prelude.rnf coreNetworkArn
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/NetworkManager/Types/CustomerGatewayAssociation.hs b/gen/Amazonka/NetworkManager/Types/CustomerGatewayAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CustomerGatewayAssociation.hs
@@ -0,0 +1,123 @@
+{-# 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.NetworkManager.Types.CustomerGatewayAssociation
+-- 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.NetworkManager.Types.CustomerGatewayAssociation where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.CustomerGatewayAssociationState
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the association between a customer gateway, a device, and a
+-- link.
+--
+-- /See:/ 'newCustomerGatewayAssociation' smart constructor.
+data CustomerGatewayAssociation = CustomerGatewayAssociation'
+  { -- | The Amazon Resource Name (ARN) of the customer gateway.
+    customerGatewayArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the device.
+    deviceId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the link.
+    linkId :: Prelude.Maybe Prelude.Text,
+    -- | The association state.
+    state :: Prelude.Maybe CustomerGatewayAssociationState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomerGatewayAssociation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customerGatewayArn', 'customerGatewayAssociation_customerGatewayArn' - The Amazon Resource Name (ARN) of the customer gateway.
+--
+-- 'deviceId', 'customerGatewayAssociation_deviceId' - The ID of the device.
+--
+-- 'globalNetworkId', 'customerGatewayAssociation_globalNetworkId' - The ID of the global network.
+--
+-- 'linkId', 'customerGatewayAssociation_linkId' - The ID of the link.
+--
+-- 'state', 'customerGatewayAssociation_state' - The association state.
+newCustomerGatewayAssociation ::
+  CustomerGatewayAssociation
+newCustomerGatewayAssociation =
+  CustomerGatewayAssociation'
+    { customerGatewayArn =
+        Prelude.Nothing,
+      deviceId = Prelude.Nothing,
+      globalNetworkId = Prelude.Nothing,
+      linkId = Prelude.Nothing,
+      state = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the customer gateway.
+customerGatewayAssociation_customerGatewayArn :: Lens.Lens' CustomerGatewayAssociation (Prelude.Maybe Prelude.Text)
+customerGatewayAssociation_customerGatewayArn = Lens.lens (\CustomerGatewayAssociation' {customerGatewayArn} -> customerGatewayArn) (\s@CustomerGatewayAssociation' {} a -> s {customerGatewayArn = a} :: CustomerGatewayAssociation)
+
+-- | The ID of the device.
+customerGatewayAssociation_deviceId :: Lens.Lens' CustomerGatewayAssociation (Prelude.Maybe Prelude.Text)
+customerGatewayAssociation_deviceId = Lens.lens (\CustomerGatewayAssociation' {deviceId} -> deviceId) (\s@CustomerGatewayAssociation' {} a -> s {deviceId = a} :: CustomerGatewayAssociation)
+
+-- | The ID of the global network.
+customerGatewayAssociation_globalNetworkId :: Lens.Lens' CustomerGatewayAssociation (Prelude.Maybe Prelude.Text)
+customerGatewayAssociation_globalNetworkId = Lens.lens (\CustomerGatewayAssociation' {globalNetworkId} -> globalNetworkId) (\s@CustomerGatewayAssociation' {} a -> s {globalNetworkId = a} :: CustomerGatewayAssociation)
+
+-- | The ID of the link.
+customerGatewayAssociation_linkId :: Lens.Lens' CustomerGatewayAssociation (Prelude.Maybe Prelude.Text)
+customerGatewayAssociation_linkId = Lens.lens (\CustomerGatewayAssociation' {linkId} -> linkId) (\s@CustomerGatewayAssociation' {} a -> s {linkId = a} :: CustomerGatewayAssociation)
+
+-- | The association state.
+customerGatewayAssociation_state :: Lens.Lens' CustomerGatewayAssociation (Prelude.Maybe CustomerGatewayAssociationState)
+customerGatewayAssociation_state = Lens.lens (\CustomerGatewayAssociation' {state} -> state) (\s@CustomerGatewayAssociation' {} a -> s {state = a} :: CustomerGatewayAssociation)
+
+instance Data.FromJSON CustomerGatewayAssociation where
+  parseJSON =
+    Data.withObject
+      "CustomerGatewayAssociation"
+      ( \x ->
+          CustomerGatewayAssociation'
+            Prelude.<$> (x Data..:? "CustomerGatewayArn")
+            Prelude.<*> (x Data..:? "DeviceId")
+            Prelude.<*> (x Data..:? "GlobalNetworkId")
+            Prelude.<*> (x Data..:? "LinkId")
+            Prelude.<*> (x Data..:? "State")
+      )
+
+instance Prelude.Hashable CustomerGatewayAssociation where
+  hashWithSalt _salt CustomerGatewayAssociation' {..} =
+    _salt
+      `Prelude.hashWithSalt` customerGatewayArn
+      `Prelude.hashWithSalt` deviceId
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` linkId
+      `Prelude.hashWithSalt` state
+
+instance Prelude.NFData CustomerGatewayAssociation where
+  rnf CustomerGatewayAssociation' {..} =
+    Prelude.rnf customerGatewayArn
+      `Prelude.seq` Prelude.rnf deviceId
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf linkId
+      `Prelude.seq` Prelude.rnf state
diff --git a/gen/Amazonka/NetworkManager/Types/CustomerGatewayAssociationState.hs b/gen/Amazonka/NetworkManager/Types/CustomerGatewayAssociationState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/CustomerGatewayAssociationState.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.NetworkManager.Types.CustomerGatewayAssociationState
+-- 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.NetworkManager.Types.CustomerGatewayAssociationState
+  ( CustomerGatewayAssociationState
+      ( ..,
+        CustomerGatewayAssociationState_AVAILABLE,
+        CustomerGatewayAssociationState_DELETED,
+        CustomerGatewayAssociationState_DELETING,
+        CustomerGatewayAssociationState_PENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CustomerGatewayAssociationState = CustomerGatewayAssociationState'
+  { fromCustomerGatewayAssociationState ::
+      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 CustomerGatewayAssociationState_AVAILABLE :: CustomerGatewayAssociationState
+pattern CustomerGatewayAssociationState_AVAILABLE = CustomerGatewayAssociationState' "AVAILABLE"
+
+pattern CustomerGatewayAssociationState_DELETED :: CustomerGatewayAssociationState
+pattern CustomerGatewayAssociationState_DELETED = CustomerGatewayAssociationState' "DELETED"
+
+pattern CustomerGatewayAssociationState_DELETING :: CustomerGatewayAssociationState
+pattern CustomerGatewayAssociationState_DELETING = CustomerGatewayAssociationState' "DELETING"
+
+pattern CustomerGatewayAssociationState_PENDING :: CustomerGatewayAssociationState
+pattern CustomerGatewayAssociationState_PENDING = CustomerGatewayAssociationState' "PENDING"
+
+{-# COMPLETE
+  CustomerGatewayAssociationState_AVAILABLE,
+  CustomerGatewayAssociationState_DELETED,
+  CustomerGatewayAssociationState_DELETING,
+  CustomerGatewayAssociationState_PENDING,
+  CustomerGatewayAssociationState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/Device.hs b/gen/Amazonka/NetworkManager/Types/Device.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/Device.hs
@@ -0,0 +1,232 @@
+{-# 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.NetworkManager.Types.Device
+-- 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.NetworkManager.Types.Device where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.AWSLocation
+import Amazonka.NetworkManager.Types.DeviceState
+import Amazonka.NetworkManager.Types.Location
+import Amazonka.NetworkManager.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a device.
+--
+-- /See:/ 'newDevice' smart constructor.
+data Device = Device'
+  { -- | The Amazon Web Services location of the device.
+    aWSLocation :: Prelude.Maybe AWSLocation,
+    -- | The date and time that the site was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The description of the device.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the device.
+    deviceArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the device.
+    deviceId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The site location.
+    location :: Prelude.Maybe (Data.Sensitive Location),
+    -- | The device model.
+    model :: Prelude.Maybe Prelude.Text,
+    -- | The device serial number.
+    serialNumber :: Prelude.Maybe Prelude.Text,
+    -- | The site ID.
+    siteId :: Prelude.Maybe Prelude.Text,
+    -- | The device state.
+    state :: Prelude.Maybe DeviceState,
+    -- | The tags for the device.
+    tags :: Prelude.Maybe [Tag],
+    -- | The device type.
+    type' :: Prelude.Maybe Prelude.Text,
+    -- | The device vendor.
+    vendor :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Device' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aWSLocation', 'device_aWSLocation' - The Amazon Web Services location of the device.
+--
+-- 'createdAt', 'device_createdAt' - The date and time that the site was created.
+--
+-- 'description', 'device_description' - The description of the device.
+--
+-- 'deviceArn', 'device_deviceArn' - The Amazon Resource Name (ARN) of the device.
+--
+-- 'deviceId', 'device_deviceId' - The ID of the device.
+--
+-- 'globalNetworkId', 'device_globalNetworkId' - The ID of the global network.
+--
+-- 'location', 'device_location' - The site location.
+--
+-- 'model', 'device_model' - The device model.
+--
+-- 'serialNumber', 'device_serialNumber' - The device serial number.
+--
+-- 'siteId', 'device_siteId' - The site ID.
+--
+-- 'state', 'device_state' - The device state.
+--
+-- 'tags', 'device_tags' - The tags for the device.
+--
+-- 'type'', 'device_type' - The device type.
+--
+-- 'vendor', 'device_vendor' - The device vendor.
+newDevice ::
+  Device
+newDevice =
+  Device'
+    { aWSLocation = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      description = Prelude.Nothing,
+      deviceArn = Prelude.Nothing,
+      deviceId = Prelude.Nothing,
+      globalNetworkId = Prelude.Nothing,
+      location = Prelude.Nothing,
+      model = Prelude.Nothing,
+      serialNumber = Prelude.Nothing,
+      siteId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      vendor = Prelude.Nothing
+    }
+
+-- | The Amazon Web Services location of the device.
+device_aWSLocation :: Lens.Lens' Device (Prelude.Maybe AWSLocation)
+device_aWSLocation = Lens.lens (\Device' {aWSLocation} -> aWSLocation) (\s@Device' {} a -> s {aWSLocation = a} :: Device)
+
+-- | The date and time that the site was created.
+device_createdAt :: Lens.Lens' Device (Prelude.Maybe Prelude.UTCTime)
+device_createdAt = Lens.lens (\Device' {createdAt} -> createdAt) (\s@Device' {} a -> s {createdAt = a} :: Device) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the device.
+device_description :: Lens.Lens' Device (Prelude.Maybe Prelude.Text)
+device_description = Lens.lens (\Device' {description} -> description) (\s@Device' {} a -> s {description = a} :: Device)
+
+-- | The Amazon Resource Name (ARN) of the device.
+device_deviceArn :: Lens.Lens' Device (Prelude.Maybe Prelude.Text)
+device_deviceArn = Lens.lens (\Device' {deviceArn} -> deviceArn) (\s@Device' {} a -> s {deviceArn = a} :: Device)
+
+-- | The ID of the device.
+device_deviceId :: Lens.Lens' Device (Prelude.Maybe Prelude.Text)
+device_deviceId = Lens.lens (\Device' {deviceId} -> deviceId) (\s@Device' {} a -> s {deviceId = a} :: Device)
+
+-- | The ID of the global network.
+device_globalNetworkId :: Lens.Lens' Device (Prelude.Maybe Prelude.Text)
+device_globalNetworkId = Lens.lens (\Device' {globalNetworkId} -> globalNetworkId) (\s@Device' {} a -> s {globalNetworkId = a} :: Device)
+
+-- | The site location.
+device_location :: Lens.Lens' Device (Prelude.Maybe Location)
+device_location = Lens.lens (\Device' {location} -> location) (\s@Device' {} a -> s {location = a} :: Device) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The device model.
+device_model :: Lens.Lens' Device (Prelude.Maybe Prelude.Text)
+device_model = Lens.lens (\Device' {model} -> model) (\s@Device' {} a -> s {model = a} :: Device)
+
+-- | The device serial number.
+device_serialNumber :: Lens.Lens' Device (Prelude.Maybe Prelude.Text)
+device_serialNumber = Lens.lens (\Device' {serialNumber} -> serialNumber) (\s@Device' {} a -> s {serialNumber = a} :: Device)
+
+-- | The site ID.
+device_siteId :: Lens.Lens' Device (Prelude.Maybe Prelude.Text)
+device_siteId = Lens.lens (\Device' {siteId} -> siteId) (\s@Device' {} a -> s {siteId = a} :: Device)
+
+-- | The device state.
+device_state :: Lens.Lens' Device (Prelude.Maybe DeviceState)
+device_state = Lens.lens (\Device' {state} -> state) (\s@Device' {} a -> s {state = a} :: Device)
+
+-- | The tags for the device.
+device_tags :: Lens.Lens' Device (Prelude.Maybe [Tag])
+device_tags = Lens.lens (\Device' {tags} -> tags) (\s@Device' {} a -> s {tags = a} :: Device) Prelude.. Lens.mapping Lens.coerced
+
+-- | The device type.
+device_type :: Lens.Lens' Device (Prelude.Maybe Prelude.Text)
+device_type = Lens.lens (\Device' {type'} -> type') (\s@Device' {} a -> s {type' = a} :: Device)
+
+-- | The device vendor.
+device_vendor :: Lens.Lens' Device (Prelude.Maybe Prelude.Text)
+device_vendor = Lens.lens (\Device' {vendor} -> vendor) (\s@Device' {} a -> s {vendor = a} :: Device)
+
+instance Data.FromJSON Device where
+  parseJSON =
+    Data.withObject
+      "Device"
+      ( \x ->
+          Device'
+            Prelude.<$> (x Data..:? "AWSLocation")
+            Prelude.<*> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "DeviceArn")
+            Prelude.<*> (x Data..:? "DeviceId")
+            Prelude.<*> (x Data..:? "GlobalNetworkId")
+            Prelude.<*> (x Data..:? "Location")
+            Prelude.<*> (x Data..:? "Model")
+            Prelude.<*> (x Data..:? "SerialNumber")
+            Prelude.<*> (x Data..:? "SiteId")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> (x Data..:? "Vendor")
+      )
+
+instance Prelude.Hashable Device where
+  hashWithSalt _salt Device' {..} =
+    _salt
+      `Prelude.hashWithSalt` aWSLocation
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` deviceArn
+      `Prelude.hashWithSalt` deviceId
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` location
+      `Prelude.hashWithSalt` model
+      `Prelude.hashWithSalt` serialNumber
+      `Prelude.hashWithSalt` siteId
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` vendor
+
+instance Prelude.NFData Device where
+  rnf Device' {..} =
+    Prelude.rnf aWSLocation
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf deviceArn
+      `Prelude.seq` Prelude.rnf deviceId
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf location
+      `Prelude.seq` Prelude.rnf model
+      `Prelude.seq` Prelude.rnf serialNumber
+      `Prelude.seq` Prelude.rnf siteId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf vendor
diff --git a/gen/Amazonka/NetworkManager/Types/DeviceState.hs b/gen/Amazonka/NetworkManager/Types/DeviceState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/DeviceState.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.NetworkManager.Types.DeviceState
+-- 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.NetworkManager.Types.DeviceState
+  ( DeviceState
+      ( ..,
+        DeviceState_AVAILABLE,
+        DeviceState_DELETING,
+        DeviceState_PENDING,
+        DeviceState_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DeviceState = DeviceState'
+  { fromDeviceState ::
+      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 DeviceState_AVAILABLE :: DeviceState
+pattern DeviceState_AVAILABLE = DeviceState' "AVAILABLE"
+
+pattern DeviceState_DELETING :: DeviceState
+pattern DeviceState_DELETING = DeviceState' "DELETING"
+
+pattern DeviceState_PENDING :: DeviceState
+pattern DeviceState_PENDING = DeviceState' "PENDING"
+
+pattern DeviceState_UPDATING :: DeviceState
+pattern DeviceState_UPDATING = DeviceState' "UPDATING"
+
+{-# COMPLETE
+  DeviceState_AVAILABLE,
+  DeviceState_DELETING,
+  DeviceState_PENDING,
+  DeviceState_UPDATING,
+  DeviceState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/GlobalNetwork.hs b/gen/Amazonka/NetworkManager/Types/GlobalNetwork.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/GlobalNetwork.hs
@@ -0,0 +1,136 @@
+{-# 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.NetworkManager.Types.GlobalNetwork
+-- 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.NetworkManager.Types.GlobalNetwork where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.GlobalNetworkState
+import Amazonka.NetworkManager.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a global network. This is a single private network acting as a
+-- high-level container for your network objects, including an Amazon Web
+-- Services-managed Core Network.
+--
+-- /See:/ 'newGlobalNetwork' smart constructor.
+data GlobalNetwork = GlobalNetwork'
+  { -- | The date and time that the global network was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The description of the global network.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the global network.
+    globalNetworkArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The state of the global network.
+    state :: Prelude.Maybe GlobalNetworkState,
+    -- | The tags for the global network.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GlobalNetwork' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'globalNetwork_createdAt' - The date and time that the global network was created.
+--
+-- 'description', 'globalNetwork_description' - The description of the global network.
+--
+-- 'globalNetworkArn', 'globalNetwork_globalNetworkArn' - The Amazon Resource Name (ARN) of the global network.
+--
+-- 'globalNetworkId', 'globalNetwork_globalNetworkId' - The ID of the global network.
+--
+-- 'state', 'globalNetwork_state' - The state of the global network.
+--
+-- 'tags', 'globalNetwork_tags' - The tags for the global network.
+newGlobalNetwork ::
+  GlobalNetwork
+newGlobalNetwork =
+  GlobalNetwork'
+    { createdAt = Prelude.Nothing,
+      description = Prelude.Nothing,
+      globalNetworkArn = Prelude.Nothing,
+      globalNetworkId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The date and time that the global network was created.
+globalNetwork_createdAt :: Lens.Lens' GlobalNetwork (Prelude.Maybe Prelude.UTCTime)
+globalNetwork_createdAt = Lens.lens (\GlobalNetwork' {createdAt} -> createdAt) (\s@GlobalNetwork' {} a -> s {createdAt = a} :: GlobalNetwork) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the global network.
+globalNetwork_description :: Lens.Lens' GlobalNetwork (Prelude.Maybe Prelude.Text)
+globalNetwork_description = Lens.lens (\GlobalNetwork' {description} -> description) (\s@GlobalNetwork' {} a -> s {description = a} :: GlobalNetwork)
+
+-- | The Amazon Resource Name (ARN) of the global network.
+globalNetwork_globalNetworkArn :: Lens.Lens' GlobalNetwork (Prelude.Maybe Prelude.Text)
+globalNetwork_globalNetworkArn = Lens.lens (\GlobalNetwork' {globalNetworkArn} -> globalNetworkArn) (\s@GlobalNetwork' {} a -> s {globalNetworkArn = a} :: GlobalNetwork)
+
+-- | The ID of the global network.
+globalNetwork_globalNetworkId :: Lens.Lens' GlobalNetwork (Prelude.Maybe Prelude.Text)
+globalNetwork_globalNetworkId = Lens.lens (\GlobalNetwork' {globalNetworkId} -> globalNetworkId) (\s@GlobalNetwork' {} a -> s {globalNetworkId = a} :: GlobalNetwork)
+
+-- | The state of the global network.
+globalNetwork_state :: Lens.Lens' GlobalNetwork (Prelude.Maybe GlobalNetworkState)
+globalNetwork_state = Lens.lens (\GlobalNetwork' {state} -> state) (\s@GlobalNetwork' {} a -> s {state = a} :: GlobalNetwork)
+
+-- | The tags for the global network.
+globalNetwork_tags :: Lens.Lens' GlobalNetwork (Prelude.Maybe [Tag])
+globalNetwork_tags = Lens.lens (\GlobalNetwork' {tags} -> tags) (\s@GlobalNetwork' {} a -> s {tags = a} :: GlobalNetwork) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON GlobalNetwork where
+  parseJSON =
+    Data.withObject
+      "GlobalNetwork"
+      ( \x ->
+          GlobalNetwork'
+            Prelude.<$> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "GlobalNetworkArn")
+            Prelude.<*> (x Data..:? "GlobalNetworkId")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable GlobalNetwork where
+  hashWithSalt _salt GlobalNetwork' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` globalNetworkArn
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData GlobalNetwork where
+  rnf GlobalNetwork' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf globalNetworkArn
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/NetworkManager/Types/GlobalNetworkState.hs b/gen/Amazonka/NetworkManager/Types/GlobalNetworkState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/GlobalNetworkState.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.NetworkManager.Types.GlobalNetworkState
+-- 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.NetworkManager.Types.GlobalNetworkState
+  ( GlobalNetworkState
+      ( ..,
+        GlobalNetworkState_AVAILABLE,
+        GlobalNetworkState_DELETING,
+        GlobalNetworkState_PENDING,
+        GlobalNetworkState_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype GlobalNetworkState = GlobalNetworkState'
+  { fromGlobalNetworkState ::
+      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 GlobalNetworkState_AVAILABLE :: GlobalNetworkState
+pattern GlobalNetworkState_AVAILABLE = GlobalNetworkState' "AVAILABLE"
+
+pattern GlobalNetworkState_DELETING :: GlobalNetworkState
+pattern GlobalNetworkState_DELETING = GlobalNetworkState' "DELETING"
+
+pattern GlobalNetworkState_PENDING :: GlobalNetworkState
+pattern GlobalNetworkState_PENDING = GlobalNetworkState' "PENDING"
+
+pattern GlobalNetworkState_UPDATING :: GlobalNetworkState
+pattern GlobalNetworkState_UPDATING = GlobalNetworkState' "UPDATING"
+
+{-# COMPLETE
+  GlobalNetworkState_AVAILABLE,
+  GlobalNetworkState_DELETING,
+  GlobalNetworkState_PENDING,
+  GlobalNetworkState_UPDATING,
+  GlobalNetworkState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/Link.hs b/gen/Amazonka/NetworkManager/Types/Link.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/Link.hs
@@ -0,0 +1,195 @@
+{-# 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.NetworkManager.Types.Link
+-- 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.NetworkManager.Types.Link where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.Bandwidth
+import Amazonka.NetworkManager.Types.LinkState
+import Amazonka.NetworkManager.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a link.
+--
+-- /See:/ 'newLink' smart constructor.
+data Link = Link'
+  { -- | The bandwidth for the link.
+    bandwidth :: Prelude.Maybe Bandwidth,
+    -- | The date and time that the link was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The description of the link.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the link.
+    linkArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the link.
+    linkId :: Prelude.Maybe Prelude.Text,
+    -- | The provider of the link.
+    provider :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the site.
+    siteId :: Prelude.Maybe Prelude.Text,
+    -- | The state of the link.
+    state :: Prelude.Maybe LinkState,
+    -- | The tags for the link.
+    tags :: Prelude.Maybe [Tag],
+    -- | The type of the link.
+    type' :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Link' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bandwidth', 'link_bandwidth' - The bandwidth for the link.
+--
+-- 'createdAt', 'link_createdAt' - The date and time that the link was created.
+--
+-- 'description', 'link_description' - The description of the link.
+--
+-- 'globalNetworkId', 'link_globalNetworkId' - The ID of the global network.
+--
+-- 'linkArn', 'link_linkArn' - The Amazon Resource Name (ARN) of the link.
+--
+-- 'linkId', 'link_linkId' - The ID of the link.
+--
+-- 'provider', 'link_provider' - The provider of the link.
+--
+-- 'siteId', 'link_siteId' - The ID of the site.
+--
+-- 'state', 'link_state' - The state of the link.
+--
+-- 'tags', 'link_tags' - The tags for the link.
+--
+-- 'type'', 'link_type' - The type of the link.
+newLink ::
+  Link
+newLink =
+  Link'
+    { bandwidth = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      description = Prelude.Nothing,
+      globalNetworkId = Prelude.Nothing,
+      linkArn = Prelude.Nothing,
+      linkId = Prelude.Nothing,
+      provider = Prelude.Nothing,
+      siteId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The bandwidth for the link.
+link_bandwidth :: Lens.Lens' Link (Prelude.Maybe Bandwidth)
+link_bandwidth = Lens.lens (\Link' {bandwidth} -> bandwidth) (\s@Link' {} a -> s {bandwidth = a} :: Link)
+
+-- | The date and time that the link was created.
+link_createdAt :: Lens.Lens' Link (Prelude.Maybe Prelude.UTCTime)
+link_createdAt = Lens.lens (\Link' {createdAt} -> createdAt) (\s@Link' {} a -> s {createdAt = a} :: Link) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the link.
+link_description :: Lens.Lens' Link (Prelude.Maybe Prelude.Text)
+link_description = Lens.lens (\Link' {description} -> description) (\s@Link' {} a -> s {description = a} :: Link)
+
+-- | The ID of the global network.
+link_globalNetworkId :: Lens.Lens' Link (Prelude.Maybe Prelude.Text)
+link_globalNetworkId = Lens.lens (\Link' {globalNetworkId} -> globalNetworkId) (\s@Link' {} a -> s {globalNetworkId = a} :: Link)
+
+-- | The Amazon Resource Name (ARN) of the link.
+link_linkArn :: Lens.Lens' Link (Prelude.Maybe Prelude.Text)
+link_linkArn = Lens.lens (\Link' {linkArn} -> linkArn) (\s@Link' {} a -> s {linkArn = a} :: Link)
+
+-- | The ID of the link.
+link_linkId :: Lens.Lens' Link (Prelude.Maybe Prelude.Text)
+link_linkId = Lens.lens (\Link' {linkId} -> linkId) (\s@Link' {} a -> s {linkId = a} :: Link)
+
+-- | The provider of the link.
+link_provider :: Lens.Lens' Link (Prelude.Maybe Prelude.Text)
+link_provider = Lens.lens (\Link' {provider} -> provider) (\s@Link' {} a -> s {provider = a} :: Link)
+
+-- | The ID of the site.
+link_siteId :: Lens.Lens' Link (Prelude.Maybe Prelude.Text)
+link_siteId = Lens.lens (\Link' {siteId} -> siteId) (\s@Link' {} a -> s {siteId = a} :: Link)
+
+-- | The state of the link.
+link_state :: Lens.Lens' Link (Prelude.Maybe LinkState)
+link_state = Lens.lens (\Link' {state} -> state) (\s@Link' {} a -> s {state = a} :: Link)
+
+-- | The tags for the link.
+link_tags :: Lens.Lens' Link (Prelude.Maybe [Tag])
+link_tags = Lens.lens (\Link' {tags} -> tags) (\s@Link' {} a -> s {tags = a} :: Link) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of the link.
+link_type :: Lens.Lens' Link (Prelude.Maybe Prelude.Text)
+link_type = Lens.lens (\Link' {type'} -> type') (\s@Link' {} a -> s {type' = a} :: Link)
+
+instance Data.FromJSON Link where
+  parseJSON =
+    Data.withObject
+      "Link"
+      ( \x ->
+          Link'
+            Prelude.<$> (x Data..:? "Bandwidth")
+            Prelude.<*> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "GlobalNetworkId")
+            Prelude.<*> (x Data..:? "LinkArn")
+            Prelude.<*> (x Data..:? "LinkId")
+            Prelude.<*> (x Data..:? "Provider")
+            Prelude.<*> (x Data..:? "SiteId")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable Link where
+  hashWithSalt _salt Link' {..} =
+    _salt
+      `Prelude.hashWithSalt` bandwidth
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` linkArn
+      `Prelude.hashWithSalt` linkId
+      `Prelude.hashWithSalt` provider
+      `Prelude.hashWithSalt` siteId
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData Link where
+  rnf Link' {..} =
+    Prelude.rnf bandwidth
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf linkArn
+      `Prelude.seq` Prelude.rnf linkId
+      `Prelude.seq` Prelude.rnf provider
+      `Prelude.seq` Prelude.rnf siteId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/NetworkManager/Types/LinkAssociation.hs b/gen/Amazonka/NetworkManager/Types/LinkAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/LinkAssociation.hs
@@ -0,0 +1,109 @@
+{-# 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.NetworkManager.Types.LinkAssociation
+-- 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.NetworkManager.Types.LinkAssociation where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.LinkAssociationState
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the association between a device and a link.
+--
+-- /See:/ 'newLinkAssociation' smart constructor.
+data LinkAssociation = LinkAssociation'
+  { -- | The device ID for the link association.
+    deviceId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The state of the association.
+    linkAssociationState :: Prelude.Maybe LinkAssociationState,
+    -- | The ID of the link.
+    linkId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LinkAssociation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceId', 'linkAssociation_deviceId' - The device ID for the link association.
+--
+-- 'globalNetworkId', 'linkAssociation_globalNetworkId' - The ID of the global network.
+--
+-- 'linkAssociationState', 'linkAssociation_linkAssociationState' - The state of the association.
+--
+-- 'linkId', 'linkAssociation_linkId' - The ID of the link.
+newLinkAssociation ::
+  LinkAssociation
+newLinkAssociation =
+  LinkAssociation'
+    { deviceId = Prelude.Nothing,
+      globalNetworkId = Prelude.Nothing,
+      linkAssociationState = Prelude.Nothing,
+      linkId = Prelude.Nothing
+    }
+
+-- | The device ID for the link association.
+linkAssociation_deviceId :: Lens.Lens' LinkAssociation (Prelude.Maybe Prelude.Text)
+linkAssociation_deviceId = Lens.lens (\LinkAssociation' {deviceId} -> deviceId) (\s@LinkAssociation' {} a -> s {deviceId = a} :: LinkAssociation)
+
+-- | The ID of the global network.
+linkAssociation_globalNetworkId :: Lens.Lens' LinkAssociation (Prelude.Maybe Prelude.Text)
+linkAssociation_globalNetworkId = Lens.lens (\LinkAssociation' {globalNetworkId} -> globalNetworkId) (\s@LinkAssociation' {} a -> s {globalNetworkId = a} :: LinkAssociation)
+
+-- | The state of the association.
+linkAssociation_linkAssociationState :: Lens.Lens' LinkAssociation (Prelude.Maybe LinkAssociationState)
+linkAssociation_linkAssociationState = Lens.lens (\LinkAssociation' {linkAssociationState} -> linkAssociationState) (\s@LinkAssociation' {} a -> s {linkAssociationState = a} :: LinkAssociation)
+
+-- | The ID of the link.
+linkAssociation_linkId :: Lens.Lens' LinkAssociation (Prelude.Maybe Prelude.Text)
+linkAssociation_linkId = Lens.lens (\LinkAssociation' {linkId} -> linkId) (\s@LinkAssociation' {} a -> s {linkId = a} :: LinkAssociation)
+
+instance Data.FromJSON LinkAssociation where
+  parseJSON =
+    Data.withObject
+      "LinkAssociation"
+      ( \x ->
+          LinkAssociation'
+            Prelude.<$> (x Data..:? "DeviceId")
+            Prelude.<*> (x Data..:? "GlobalNetworkId")
+            Prelude.<*> (x Data..:? "LinkAssociationState")
+            Prelude.<*> (x Data..:? "LinkId")
+      )
+
+instance Prelude.Hashable LinkAssociation where
+  hashWithSalt _salt LinkAssociation' {..} =
+    _salt
+      `Prelude.hashWithSalt` deviceId
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` linkAssociationState
+      `Prelude.hashWithSalt` linkId
+
+instance Prelude.NFData LinkAssociation where
+  rnf LinkAssociation' {..} =
+    Prelude.rnf deviceId
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf linkAssociationState
+      `Prelude.seq` Prelude.rnf linkId
diff --git a/gen/Amazonka/NetworkManager/Types/LinkAssociationState.hs b/gen/Amazonka/NetworkManager/Types/LinkAssociationState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/LinkAssociationState.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.NetworkManager.Types.LinkAssociationState
+-- 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.NetworkManager.Types.LinkAssociationState
+  ( LinkAssociationState
+      ( ..,
+        LinkAssociationState_AVAILABLE,
+        LinkAssociationState_DELETED,
+        LinkAssociationState_DELETING,
+        LinkAssociationState_PENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LinkAssociationState = LinkAssociationState'
+  { fromLinkAssociationState ::
+      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 LinkAssociationState_AVAILABLE :: LinkAssociationState
+pattern LinkAssociationState_AVAILABLE = LinkAssociationState' "AVAILABLE"
+
+pattern LinkAssociationState_DELETED :: LinkAssociationState
+pattern LinkAssociationState_DELETED = LinkAssociationState' "DELETED"
+
+pattern LinkAssociationState_DELETING :: LinkAssociationState
+pattern LinkAssociationState_DELETING = LinkAssociationState' "DELETING"
+
+pattern LinkAssociationState_PENDING :: LinkAssociationState
+pattern LinkAssociationState_PENDING = LinkAssociationState' "PENDING"
+
+{-# COMPLETE
+  LinkAssociationState_AVAILABLE,
+  LinkAssociationState_DELETED,
+  LinkAssociationState_DELETING,
+  LinkAssociationState_PENDING,
+  LinkAssociationState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/LinkState.hs b/gen/Amazonka/NetworkManager/Types/LinkState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/LinkState.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.NetworkManager.Types.LinkState
+-- 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.NetworkManager.Types.LinkState
+  ( LinkState
+      ( ..,
+        LinkState_AVAILABLE,
+        LinkState_DELETING,
+        LinkState_PENDING,
+        LinkState_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LinkState = LinkState'
+  { fromLinkState ::
+      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 LinkState_AVAILABLE :: LinkState
+pattern LinkState_AVAILABLE = LinkState' "AVAILABLE"
+
+pattern LinkState_DELETING :: LinkState
+pattern LinkState_DELETING = LinkState' "DELETING"
+
+pattern LinkState_PENDING :: LinkState
+pattern LinkState_PENDING = LinkState' "PENDING"
+
+pattern LinkState_UPDATING :: LinkState
+pattern LinkState_UPDATING = LinkState' "UPDATING"
+
+{-# COMPLETE
+  LinkState_AVAILABLE,
+  LinkState_DELETING,
+  LinkState_PENDING,
+  LinkState_UPDATING,
+  LinkState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/Location.hs b/gen/Amazonka/NetworkManager/Types/Location.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/Location.hs
@@ -0,0 +1,106 @@
+{-# 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.NetworkManager.Types.Location
+-- 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.NetworkManager.Types.Location 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
+
+-- | Describes a location.
+--
+-- /See:/ 'newLocation' smart constructor.
+data Location = Location'
+  { -- | The physical address.
+    address :: Prelude.Maybe Prelude.Text,
+    -- | The latitude.
+    latitude :: Prelude.Maybe Prelude.Text,
+    -- | The longitude.
+    longitude :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Location' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'location_address' - The physical address.
+--
+-- 'latitude', 'location_latitude' - The latitude.
+--
+-- 'longitude', 'location_longitude' - The longitude.
+newLocation ::
+  Location
+newLocation =
+  Location'
+    { address = Prelude.Nothing,
+      latitude = Prelude.Nothing,
+      longitude = Prelude.Nothing
+    }
+
+-- | The physical address.
+location_address :: Lens.Lens' Location (Prelude.Maybe Prelude.Text)
+location_address = Lens.lens (\Location' {address} -> address) (\s@Location' {} a -> s {address = a} :: Location)
+
+-- | The latitude.
+location_latitude :: Lens.Lens' Location (Prelude.Maybe Prelude.Text)
+location_latitude = Lens.lens (\Location' {latitude} -> latitude) (\s@Location' {} a -> s {latitude = a} :: Location)
+
+-- | The longitude.
+location_longitude :: Lens.Lens' Location (Prelude.Maybe Prelude.Text)
+location_longitude = Lens.lens (\Location' {longitude} -> longitude) (\s@Location' {} a -> s {longitude = a} :: Location)
+
+instance Data.FromJSON Location where
+  parseJSON =
+    Data.withObject
+      "Location"
+      ( \x ->
+          Location'
+            Prelude.<$> (x Data..:? "Address")
+            Prelude.<*> (x Data..:? "Latitude")
+            Prelude.<*> (x Data..:? "Longitude")
+      )
+
+instance Prelude.Hashable Location where
+  hashWithSalt _salt Location' {..} =
+    _salt
+      `Prelude.hashWithSalt` address
+      `Prelude.hashWithSalt` latitude
+      `Prelude.hashWithSalt` longitude
+
+instance Prelude.NFData Location where
+  rnf Location' {..} =
+    Prelude.rnf address
+      `Prelude.seq` Prelude.rnf latitude
+      `Prelude.seq` Prelude.rnf longitude
+
+instance Data.ToJSON Location where
+  toJSON Location' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Address" Data..=) Prelude.<$> address,
+            ("Latitude" Data..=) Prelude.<$> latitude,
+            ("Longitude" Data..=) Prelude.<$> longitude
+          ]
+      )
diff --git a/gen/Amazonka/NetworkManager/Types/NetworkResource.hs b/gen/Amazonka/NetworkManager/Types/NetworkResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/NetworkResource.hs
@@ -0,0 +1,292 @@
+{-# 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.NetworkManager.Types.NetworkResource
+-- 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.NetworkManager.Types.NetworkResource where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a network resource.
+--
+-- /See:/ 'newNetworkResource' smart constructor.
+data NetworkResource = NetworkResource'
+  { -- | The Amazon Web Services account ID.
+    accountId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Region.
+    awsRegion :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | Information about the resource, in JSON format. Network Manager gets
+    -- this information by describing the resource using its Describe API call.
+    definition :: Prelude.Maybe Prelude.Text,
+    -- | The time that the resource definition was retrieved.
+    definitionTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The resource metadata.
+    metadata :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The ARN of the gateway.
+    registeredGatewayArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the resource.
+    resourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the resource.
+    resourceId :: Prelude.Maybe Prelude.Text,
+    -- | The resource type.
+    --
+    -- The following are the supported resource types for Direct Connect:
+    --
+    -- -   @dxcon@
+    --
+    -- -   @dx-gateway@
+    --
+    -- -   @dx-vif@
+    --
+    -- The following are the supported resource types for Network Manager:
+    --
+    -- -   @connection@
+    --
+    -- -   @device@
+    --
+    -- -   @link@
+    --
+    -- -   @site@
+    --
+    -- The following are the supported resource types for Amazon VPC:
+    --
+    -- -   @customer-gateway@
+    --
+    -- -   @transit-gateway@
+    --
+    -- -   @transit-gateway-attachment@
+    --
+    -- -   @transit-gateway-connect-peer@
+    --
+    -- -   @transit-gateway-route-table@
+    --
+    -- -   @vpn-connection@
+    resourceType :: Prelude.Maybe Prelude.Text,
+    -- | The tags.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NetworkResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'networkResource_accountId' - The Amazon Web Services account ID.
+--
+-- 'awsRegion', 'networkResource_awsRegion' - The Amazon Web Services Region.
+--
+-- 'coreNetworkId', 'networkResource_coreNetworkId' - The ID of a core network.
+--
+-- 'definition', 'networkResource_definition' - Information about the resource, in JSON format. Network Manager gets
+-- this information by describing the resource using its Describe API call.
+--
+-- 'definitionTimestamp', 'networkResource_definitionTimestamp' - The time that the resource definition was retrieved.
+--
+-- 'metadata', 'networkResource_metadata' - The resource metadata.
+--
+-- 'registeredGatewayArn', 'networkResource_registeredGatewayArn' - The ARN of the gateway.
+--
+-- 'resourceArn', 'networkResource_resourceArn' - The ARN of the resource.
+--
+-- 'resourceId', 'networkResource_resourceId' - The ID of the resource.
+--
+-- 'resourceType', 'networkResource_resourceType' - The resource type.
+--
+-- The following are the supported resource types for Direct Connect:
+--
+-- -   @dxcon@
+--
+-- -   @dx-gateway@
+--
+-- -   @dx-vif@
+--
+-- The following are the supported resource types for Network Manager:
+--
+-- -   @connection@
+--
+-- -   @device@
+--
+-- -   @link@
+--
+-- -   @site@
+--
+-- The following are the supported resource types for Amazon VPC:
+--
+-- -   @customer-gateway@
+--
+-- -   @transit-gateway@
+--
+-- -   @transit-gateway-attachment@
+--
+-- -   @transit-gateway-connect-peer@
+--
+-- -   @transit-gateway-route-table@
+--
+-- -   @vpn-connection@
+--
+-- 'tags', 'networkResource_tags' - The tags.
+newNetworkResource ::
+  NetworkResource
+newNetworkResource =
+  NetworkResource'
+    { accountId = Prelude.Nothing,
+      awsRegion = Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      definition = Prelude.Nothing,
+      definitionTimestamp = Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      registeredGatewayArn = Prelude.Nothing,
+      resourceArn = Prelude.Nothing,
+      resourceId = Prelude.Nothing,
+      resourceType = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The Amazon Web Services account ID.
+networkResource_accountId :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_accountId = Lens.lens (\NetworkResource' {accountId} -> accountId) (\s@NetworkResource' {} a -> s {accountId = a} :: NetworkResource)
+
+-- | The Amazon Web Services Region.
+networkResource_awsRegion :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_awsRegion = Lens.lens (\NetworkResource' {awsRegion} -> awsRegion) (\s@NetworkResource' {} a -> s {awsRegion = a} :: NetworkResource)
+
+-- | The ID of a core network.
+networkResource_coreNetworkId :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_coreNetworkId = Lens.lens (\NetworkResource' {coreNetworkId} -> coreNetworkId) (\s@NetworkResource' {} a -> s {coreNetworkId = a} :: NetworkResource)
+
+-- | Information about the resource, in JSON format. Network Manager gets
+-- this information by describing the resource using its Describe API call.
+networkResource_definition :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_definition = Lens.lens (\NetworkResource' {definition} -> definition) (\s@NetworkResource' {} a -> s {definition = a} :: NetworkResource)
+
+-- | The time that the resource definition was retrieved.
+networkResource_definitionTimestamp :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.UTCTime)
+networkResource_definitionTimestamp = Lens.lens (\NetworkResource' {definitionTimestamp} -> definitionTimestamp) (\s@NetworkResource' {} a -> s {definitionTimestamp = a} :: NetworkResource) Prelude.. Lens.mapping Data._Time
+
+-- | The resource metadata.
+networkResource_metadata :: Lens.Lens' NetworkResource (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+networkResource_metadata = Lens.lens (\NetworkResource' {metadata} -> metadata) (\s@NetworkResource' {} a -> s {metadata = a} :: NetworkResource) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN of the gateway.
+networkResource_registeredGatewayArn :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_registeredGatewayArn = Lens.lens (\NetworkResource' {registeredGatewayArn} -> registeredGatewayArn) (\s@NetworkResource' {} a -> s {registeredGatewayArn = a} :: NetworkResource)
+
+-- | The ARN of the resource.
+networkResource_resourceArn :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_resourceArn = Lens.lens (\NetworkResource' {resourceArn} -> resourceArn) (\s@NetworkResource' {} a -> s {resourceArn = a} :: NetworkResource)
+
+-- | The ID of the resource.
+networkResource_resourceId :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_resourceId = Lens.lens (\NetworkResource' {resourceId} -> resourceId) (\s@NetworkResource' {} a -> s {resourceId = a} :: NetworkResource)
+
+-- | The resource type.
+--
+-- The following are the supported resource types for Direct Connect:
+--
+-- -   @dxcon@
+--
+-- -   @dx-gateway@
+--
+-- -   @dx-vif@
+--
+-- The following are the supported resource types for Network Manager:
+--
+-- -   @connection@
+--
+-- -   @device@
+--
+-- -   @link@
+--
+-- -   @site@
+--
+-- The following are the supported resource types for Amazon VPC:
+--
+-- -   @customer-gateway@
+--
+-- -   @transit-gateway@
+--
+-- -   @transit-gateway-attachment@
+--
+-- -   @transit-gateway-connect-peer@
+--
+-- -   @transit-gateway-route-table@
+--
+-- -   @vpn-connection@
+networkResource_resourceType :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_resourceType = Lens.lens (\NetworkResource' {resourceType} -> resourceType) (\s@NetworkResource' {} a -> s {resourceType = a} :: NetworkResource)
+
+-- | The tags.
+networkResource_tags :: Lens.Lens' NetworkResource (Prelude.Maybe [Tag])
+networkResource_tags = Lens.lens (\NetworkResource' {tags} -> tags) (\s@NetworkResource' {} a -> s {tags = a} :: NetworkResource) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON NetworkResource where
+  parseJSON =
+    Data.withObject
+      "NetworkResource"
+      ( \x ->
+          NetworkResource'
+            Prelude.<$> (x Data..:? "AccountId")
+            Prelude.<*> (x Data..:? "AwsRegion")
+            Prelude.<*> (x Data..:? "CoreNetworkId")
+            Prelude.<*> (x Data..:? "Definition")
+            Prelude.<*> (x Data..:? "DefinitionTimestamp")
+            Prelude.<*> (x Data..:? "Metadata" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "RegisteredGatewayArn")
+            Prelude.<*> (x Data..:? "ResourceArn")
+            Prelude.<*> (x Data..:? "ResourceId")
+            Prelude.<*> (x Data..:? "ResourceType")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable NetworkResource where
+  hashWithSalt _salt NetworkResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` awsRegion
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` definition
+      `Prelude.hashWithSalt` definitionTimestamp
+      `Prelude.hashWithSalt` metadata
+      `Prelude.hashWithSalt` registeredGatewayArn
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` resourceId
+      `Prelude.hashWithSalt` resourceType
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData NetworkResource where
+  rnf NetworkResource' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf awsRegion
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf definition
+      `Prelude.seq` Prelude.rnf definitionTimestamp
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf registeredGatewayArn
+      `Prelude.seq` Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf resourceId
+      `Prelude.seq` Prelude.rnf resourceType
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/NetworkManager/Types/NetworkResourceCount.hs b/gen/Amazonka/NetworkManager/Types/NetworkResourceCount.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/NetworkResourceCount.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.NetworkManager.Types.NetworkResourceCount
+-- 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.NetworkManager.Types.NetworkResourceCount 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
+
+-- | Describes a resource count.
+--
+-- /See:/ 'newNetworkResourceCount' smart constructor.
+data NetworkResourceCount = NetworkResourceCount'
+  { -- | The resource count.
+    count :: Prelude.Maybe Prelude.Int,
+    -- | The resource type.
+    resourceType :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NetworkResourceCount' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'count', 'networkResourceCount_count' - The resource count.
+--
+-- 'resourceType', 'networkResourceCount_resourceType' - The resource type.
+newNetworkResourceCount ::
+  NetworkResourceCount
+newNetworkResourceCount =
+  NetworkResourceCount'
+    { count = Prelude.Nothing,
+      resourceType = Prelude.Nothing
+    }
+
+-- | The resource count.
+networkResourceCount_count :: Lens.Lens' NetworkResourceCount (Prelude.Maybe Prelude.Int)
+networkResourceCount_count = Lens.lens (\NetworkResourceCount' {count} -> count) (\s@NetworkResourceCount' {} a -> s {count = a} :: NetworkResourceCount)
+
+-- | The resource type.
+networkResourceCount_resourceType :: Lens.Lens' NetworkResourceCount (Prelude.Maybe Prelude.Text)
+networkResourceCount_resourceType = Lens.lens (\NetworkResourceCount' {resourceType} -> resourceType) (\s@NetworkResourceCount' {} a -> s {resourceType = a} :: NetworkResourceCount)
+
+instance Data.FromJSON NetworkResourceCount where
+  parseJSON =
+    Data.withObject
+      "NetworkResourceCount"
+      ( \x ->
+          NetworkResourceCount'
+            Prelude.<$> (x Data..:? "Count")
+            Prelude.<*> (x Data..:? "ResourceType")
+      )
+
+instance Prelude.Hashable NetworkResourceCount where
+  hashWithSalt _salt NetworkResourceCount' {..} =
+    _salt
+      `Prelude.hashWithSalt` count
+      `Prelude.hashWithSalt` resourceType
+
+instance Prelude.NFData NetworkResourceCount where
+  rnf NetworkResourceCount' {..} =
+    Prelude.rnf count
+      `Prelude.seq` Prelude.rnf resourceType
diff --git a/gen/Amazonka/NetworkManager/Types/NetworkResourceSummary.hs b/gen/Amazonka/NetworkManager/Types/NetworkResourceSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/NetworkResourceSummary.hs
@@ -0,0 +1,136 @@
+{-# 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.NetworkManager.Types.NetworkResourceSummary
+-- 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.NetworkManager.Types.NetworkResourceSummary 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
+
+-- | Describes a network resource.
+--
+-- /See:/ 'newNetworkResourceSummary' smart constructor.
+data NetworkResourceSummary = NetworkResourceSummary'
+  { -- | Information about the resource, in JSON format. Network Manager gets
+    -- this information by describing the resource using its Describe API call.
+    definition :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether this is a middlebox appliance.
+    isMiddlebox :: Prelude.Maybe Prelude.Bool,
+    -- | The value for the Name tag.
+    nameTag :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the gateway.
+    registeredGatewayArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the resource.
+    resourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The resource type.
+    resourceType :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NetworkResourceSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'definition', 'networkResourceSummary_definition' - Information about the resource, in JSON format. Network Manager gets
+-- this information by describing the resource using its Describe API call.
+--
+-- 'isMiddlebox', 'networkResourceSummary_isMiddlebox' - Indicates whether this is a middlebox appliance.
+--
+-- 'nameTag', 'networkResourceSummary_nameTag' - The value for the Name tag.
+--
+-- 'registeredGatewayArn', 'networkResourceSummary_registeredGatewayArn' - The ARN of the gateway.
+--
+-- 'resourceArn', 'networkResourceSummary_resourceArn' - The ARN of the resource.
+--
+-- 'resourceType', 'networkResourceSummary_resourceType' - The resource type.
+newNetworkResourceSummary ::
+  NetworkResourceSummary
+newNetworkResourceSummary =
+  NetworkResourceSummary'
+    { definition =
+        Prelude.Nothing,
+      isMiddlebox = Prelude.Nothing,
+      nameTag = Prelude.Nothing,
+      registeredGatewayArn = Prelude.Nothing,
+      resourceArn = Prelude.Nothing,
+      resourceType = Prelude.Nothing
+    }
+
+-- | Information about the resource, in JSON format. Network Manager gets
+-- this information by describing the resource using its Describe API call.
+networkResourceSummary_definition :: Lens.Lens' NetworkResourceSummary (Prelude.Maybe Prelude.Text)
+networkResourceSummary_definition = Lens.lens (\NetworkResourceSummary' {definition} -> definition) (\s@NetworkResourceSummary' {} a -> s {definition = a} :: NetworkResourceSummary)
+
+-- | Indicates whether this is a middlebox appliance.
+networkResourceSummary_isMiddlebox :: Lens.Lens' NetworkResourceSummary (Prelude.Maybe Prelude.Bool)
+networkResourceSummary_isMiddlebox = Lens.lens (\NetworkResourceSummary' {isMiddlebox} -> isMiddlebox) (\s@NetworkResourceSummary' {} a -> s {isMiddlebox = a} :: NetworkResourceSummary)
+
+-- | The value for the Name tag.
+networkResourceSummary_nameTag :: Lens.Lens' NetworkResourceSummary (Prelude.Maybe Prelude.Text)
+networkResourceSummary_nameTag = Lens.lens (\NetworkResourceSummary' {nameTag} -> nameTag) (\s@NetworkResourceSummary' {} a -> s {nameTag = a} :: NetworkResourceSummary)
+
+-- | The ARN of the gateway.
+networkResourceSummary_registeredGatewayArn :: Lens.Lens' NetworkResourceSummary (Prelude.Maybe Prelude.Text)
+networkResourceSummary_registeredGatewayArn = Lens.lens (\NetworkResourceSummary' {registeredGatewayArn} -> registeredGatewayArn) (\s@NetworkResourceSummary' {} a -> s {registeredGatewayArn = a} :: NetworkResourceSummary)
+
+-- | The ARN of the resource.
+networkResourceSummary_resourceArn :: Lens.Lens' NetworkResourceSummary (Prelude.Maybe Prelude.Text)
+networkResourceSummary_resourceArn = Lens.lens (\NetworkResourceSummary' {resourceArn} -> resourceArn) (\s@NetworkResourceSummary' {} a -> s {resourceArn = a} :: NetworkResourceSummary)
+
+-- | The resource type.
+networkResourceSummary_resourceType :: Lens.Lens' NetworkResourceSummary (Prelude.Maybe Prelude.Text)
+networkResourceSummary_resourceType = Lens.lens (\NetworkResourceSummary' {resourceType} -> resourceType) (\s@NetworkResourceSummary' {} a -> s {resourceType = a} :: NetworkResourceSummary)
+
+instance Data.FromJSON NetworkResourceSummary where
+  parseJSON =
+    Data.withObject
+      "NetworkResourceSummary"
+      ( \x ->
+          NetworkResourceSummary'
+            Prelude.<$> (x Data..:? "Definition")
+            Prelude.<*> (x Data..:? "IsMiddlebox")
+            Prelude.<*> (x Data..:? "NameTag")
+            Prelude.<*> (x Data..:? "RegisteredGatewayArn")
+            Prelude.<*> (x Data..:? "ResourceArn")
+            Prelude.<*> (x Data..:? "ResourceType")
+      )
+
+instance Prelude.Hashable NetworkResourceSummary where
+  hashWithSalt _salt NetworkResourceSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` definition
+      `Prelude.hashWithSalt` isMiddlebox
+      `Prelude.hashWithSalt` nameTag
+      `Prelude.hashWithSalt` registeredGatewayArn
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` resourceType
+
+instance Prelude.NFData NetworkResourceSummary where
+  rnf NetworkResourceSummary' {..} =
+    Prelude.rnf definition
+      `Prelude.seq` Prelude.rnf isMiddlebox
+      `Prelude.seq` Prelude.rnf nameTag
+      `Prelude.seq` Prelude.rnf registeredGatewayArn
+      `Prelude.seq` Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf resourceType
diff --git a/gen/Amazonka/NetworkManager/Types/NetworkRoute.hs b/gen/Amazonka/NetworkManager/Types/NetworkRoute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/NetworkRoute.hs
@@ -0,0 +1,124 @@
+{-# 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.NetworkManager.Types.NetworkRoute
+-- 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.NetworkManager.Types.NetworkRoute where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.NetworkRouteDestination
+import Amazonka.NetworkManager.Types.RouteState
+import Amazonka.NetworkManager.Types.RouteType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a network route.
+--
+-- /See:/ 'newNetworkRoute' smart constructor.
+data NetworkRoute = NetworkRoute'
+  { -- | A unique identifier for the route, such as a CIDR block.
+    destinationCidrBlock :: Prelude.Maybe Prelude.Text,
+    -- | The destinations.
+    destinations :: Prelude.Maybe [NetworkRouteDestination],
+    -- | The ID of the prefix list.
+    prefixListId :: Prelude.Maybe Prelude.Text,
+    -- | The route state. The possible values are @active@ and @blackhole@.
+    state :: Prelude.Maybe RouteState,
+    -- | The route type. The possible values are @propagated@ and @static@.
+    type' :: Prelude.Maybe RouteType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NetworkRoute' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'destinationCidrBlock', 'networkRoute_destinationCidrBlock' - A unique identifier for the route, such as a CIDR block.
+--
+-- 'destinations', 'networkRoute_destinations' - The destinations.
+--
+-- 'prefixListId', 'networkRoute_prefixListId' - The ID of the prefix list.
+--
+-- 'state', 'networkRoute_state' - The route state. The possible values are @active@ and @blackhole@.
+--
+-- 'type'', 'networkRoute_type' - The route type. The possible values are @propagated@ and @static@.
+newNetworkRoute ::
+  NetworkRoute
+newNetworkRoute =
+  NetworkRoute'
+    { destinationCidrBlock =
+        Prelude.Nothing,
+      destinations = Prelude.Nothing,
+      prefixListId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | A unique identifier for the route, such as a CIDR block.
+networkRoute_destinationCidrBlock :: Lens.Lens' NetworkRoute (Prelude.Maybe Prelude.Text)
+networkRoute_destinationCidrBlock = Lens.lens (\NetworkRoute' {destinationCidrBlock} -> destinationCidrBlock) (\s@NetworkRoute' {} a -> s {destinationCidrBlock = a} :: NetworkRoute)
+
+-- | The destinations.
+networkRoute_destinations :: Lens.Lens' NetworkRoute (Prelude.Maybe [NetworkRouteDestination])
+networkRoute_destinations = Lens.lens (\NetworkRoute' {destinations} -> destinations) (\s@NetworkRoute' {} a -> s {destinations = a} :: NetworkRoute) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the prefix list.
+networkRoute_prefixListId :: Lens.Lens' NetworkRoute (Prelude.Maybe Prelude.Text)
+networkRoute_prefixListId = Lens.lens (\NetworkRoute' {prefixListId} -> prefixListId) (\s@NetworkRoute' {} a -> s {prefixListId = a} :: NetworkRoute)
+
+-- | The route state. The possible values are @active@ and @blackhole@.
+networkRoute_state :: Lens.Lens' NetworkRoute (Prelude.Maybe RouteState)
+networkRoute_state = Lens.lens (\NetworkRoute' {state} -> state) (\s@NetworkRoute' {} a -> s {state = a} :: NetworkRoute)
+
+-- | The route type. The possible values are @propagated@ and @static@.
+networkRoute_type :: Lens.Lens' NetworkRoute (Prelude.Maybe RouteType)
+networkRoute_type = Lens.lens (\NetworkRoute' {type'} -> type') (\s@NetworkRoute' {} a -> s {type' = a} :: NetworkRoute)
+
+instance Data.FromJSON NetworkRoute where
+  parseJSON =
+    Data.withObject
+      "NetworkRoute"
+      ( \x ->
+          NetworkRoute'
+            Prelude.<$> (x Data..:? "DestinationCidrBlock")
+            Prelude.<*> (x Data..:? "Destinations" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "PrefixListId")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable NetworkRoute where
+  hashWithSalt _salt NetworkRoute' {..} =
+    _salt
+      `Prelude.hashWithSalt` destinationCidrBlock
+      `Prelude.hashWithSalt` destinations
+      `Prelude.hashWithSalt` prefixListId
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData NetworkRoute where
+  rnf NetworkRoute' {..} =
+    Prelude.rnf destinationCidrBlock
+      `Prelude.seq` Prelude.rnf destinations
+      `Prelude.seq` Prelude.rnf prefixListId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/NetworkManager/Types/NetworkRouteDestination.hs b/gen/Amazonka/NetworkManager/Types/NetworkRouteDestination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/NetworkRouteDestination.hs
@@ -0,0 +1,133 @@
+{-# 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.NetworkManager.Types.NetworkRouteDestination
+-- 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.NetworkManager.Types.NetworkRouteDestination 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
+
+-- | Describes the destination of a network route.
+--
+-- /See:/ 'newNetworkRouteDestination' smart constructor.
+data NetworkRouteDestination = NetworkRouteDestination'
+  { -- | The ID of a core network attachment.
+    coreNetworkAttachmentId :: Prelude.Maybe Prelude.Text,
+    -- | The edge location for the network destination.
+    edgeLocation :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the resource.
+    resourceId :: Prelude.Maybe Prelude.Text,
+    -- | The resource type.
+    resourceType :: Prelude.Maybe Prelude.Text,
+    -- | The name of the segment.
+    segmentName :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the transit gateway attachment.
+    transitGatewayAttachmentId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NetworkRouteDestination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkAttachmentId', 'networkRouteDestination_coreNetworkAttachmentId' - The ID of a core network attachment.
+--
+-- 'edgeLocation', 'networkRouteDestination_edgeLocation' - The edge location for the network destination.
+--
+-- 'resourceId', 'networkRouteDestination_resourceId' - The ID of the resource.
+--
+-- 'resourceType', 'networkRouteDestination_resourceType' - The resource type.
+--
+-- 'segmentName', 'networkRouteDestination_segmentName' - The name of the segment.
+--
+-- 'transitGatewayAttachmentId', 'networkRouteDestination_transitGatewayAttachmentId' - The ID of the transit gateway attachment.
+newNetworkRouteDestination ::
+  NetworkRouteDestination
+newNetworkRouteDestination =
+  NetworkRouteDestination'
+    { coreNetworkAttachmentId =
+        Prelude.Nothing,
+      edgeLocation = Prelude.Nothing,
+      resourceId = Prelude.Nothing,
+      resourceType = Prelude.Nothing,
+      segmentName = Prelude.Nothing,
+      transitGatewayAttachmentId = Prelude.Nothing
+    }
+
+-- | The ID of a core network attachment.
+networkRouteDestination_coreNetworkAttachmentId :: Lens.Lens' NetworkRouteDestination (Prelude.Maybe Prelude.Text)
+networkRouteDestination_coreNetworkAttachmentId = Lens.lens (\NetworkRouteDestination' {coreNetworkAttachmentId} -> coreNetworkAttachmentId) (\s@NetworkRouteDestination' {} a -> s {coreNetworkAttachmentId = a} :: NetworkRouteDestination)
+
+-- | The edge location for the network destination.
+networkRouteDestination_edgeLocation :: Lens.Lens' NetworkRouteDestination (Prelude.Maybe Prelude.Text)
+networkRouteDestination_edgeLocation = Lens.lens (\NetworkRouteDestination' {edgeLocation} -> edgeLocation) (\s@NetworkRouteDestination' {} a -> s {edgeLocation = a} :: NetworkRouteDestination)
+
+-- | The ID of the resource.
+networkRouteDestination_resourceId :: Lens.Lens' NetworkRouteDestination (Prelude.Maybe Prelude.Text)
+networkRouteDestination_resourceId = Lens.lens (\NetworkRouteDestination' {resourceId} -> resourceId) (\s@NetworkRouteDestination' {} a -> s {resourceId = a} :: NetworkRouteDestination)
+
+-- | The resource type.
+networkRouteDestination_resourceType :: Lens.Lens' NetworkRouteDestination (Prelude.Maybe Prelude.Text)
+networkRouteDestination_resourceType = Lens.lens (\NetworkRouteDestination' {resourceType} -> resourceType) (\s@NetworkRouteDestination' {} a -> s {resourceType = a} :: NetworkRouteDestination)
+
+-- | The name of the segment.
+networkRouteDestination_segmentName :: Lens.Lens' NetworkRouteDestination (Prelude.Maybe Prelude.Text)
+networkRouteDestination_segmentName = Lens.lens (\NetworkRouteDestination' {segmentName} -> segmentName) (\s@NetworkRouteDestination' {} a -> s {segmentName = a} :: NetworkRouteDestination)
+
+-- | The ID of the transit gateway attachment.
+networkRouteDestination_transitGatewayAttachmentId :: Lens.Lens' NetworkRouteDestination (Prelude.Maybe Prelude.Text)
+networkRouteDestination_transitGatewayAttachmentId = Lens.lens (\NetworkRouteDestination' {transitGatewayAttachmentId} -> transitGatewayAttachmentId) (\s@NetworkRouteDestination' {} a -> s {transitGatewayAttachmentId = a} :: NetworkRouteDestination)
+
+instance Data.FromJSON NetworkRouteDestination where
+  parseJSON =
+    Data.withObject
+      "NetworkRouteDestination"
+      ( \x ->
+          NetworkRouteDestination'
+            Prelude.<$> (x Data..:? "CoreNetworkAttachmentId")
+            Prelude.<*> (x Data..:? "EdgeLocation")
+            Prelude.<*> (x Data..:? "ResourceId")
+            Prelude.<*> (x Data..:? "ResourceType")
+            Prelude.<*> (x Data..:? "SegmentName")
+            Prelude.<*> (x Data..:? "TransitGatewayAttachmentId")
+      )
+
+instance Prelude.Hashable NetworkRouteDestination where
+  hashWithSalt _salt NetworkRouteDestination' {..} =
+    _salt
+      `Prelude.hashWithSalt` coreNetworkAttachmentId
+      `Prelude.hashWithSalt` edgeLocation
+      `Prelude.hashWithSalt` resourceId
+      `Prelude.hashWithSalt` resourceType
+      `Prelude.hashWithSalt` segmentName
+      `Prelude.hashWithSalt` transitGatewayAttachmentId
+
+instance Prelude.NFData NetworkRouteDestination where
+  rnf NetworkRouteDestination' {..} =
+    Prelude.rnf coreNetworkAttachmentId
+      `Prelude.seq` Prelude.rnf edgeLocation
+      `Prelude.seq` Prelude.rnf resourceId
+      `Prelude.seq` Prelude.rnf resourceType
+      `Prelude.seq` Prelude.rnf segmentName
+      `Prelude.seq` Prelude.rnf transitGatewayAttachmentId
diff --git a/gen/Amazonka/NetworkManager/Types/NetworkTelemetry.hs b/gen/Amazonka/NetworkManager/Types/NetworkTelemetry.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/NetworkTelemetry.hs
@@ -0,0 +1,169 @@
+{-# 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.NetworkManager.Types.NetworkTelemetry
+-- 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.NetworkManager.Types.NetworkTelemetry where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.ConnectionHealth
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the telemetry information for a resource.
+--
+-- /See:/ 'newNetworkTelemetry' smart constructor.
+data NetworkTelemetry = NetworkTelemetry'
+  { -- | The Amazon Web Services account ID.
+    accountId :: Prelude.Maybe Prelude.Text,
+    -- | The address.
+    address :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Region.
+    awsRegion :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The connection health.
+    health :: Prelude.Maybe ConnectionHealth,
+    -- | The ARN of the gateway.
+    registeredGatewayArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the resource.
+    resourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the resource.
+    resourceId :: Prelude.Maybe Prelude.Text,
+    -- | The resource type.
+    resourceType :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NetworkTelemetry' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'networkTelemetry_accountId' - The Amazon Web Services account ID.
+--
+-- 'address', 'networkTelemetry_address' - The address.
+--
+-- 'awsRegion', 'networkTelemetry_awsRegion' - The Amazon Web Services Region.
+--
+-- 'coreNetworkId', 'networkTelemetry_coreNetworkId' - The ID of a core network.
+--
+-- 'health', 'networkTelemetry_health' - The connection health.
+--
+-- 'registeredGatewayArn', 'networkTelemetry_registeredGatewayArn' - The ARN of the gateway.
+--
+-- 'resourceArn', 'networkTelemetry_resourceArn' - The ARN of the resource.
+--
+-- 'resourceId', 'networkTelemetry_resourceId' - The ID of the resource.
+--
+-- 'resourceType', 'networkTelemetry_resourceType' - The resource type.
+newNetworkTelemetry ::
+  NetworkTelemetry
+newNetworkTelemetry =
+  NetworkTelemetry'
+    { accountId = Prelude.Nothing,
+      address = Prelude.Nothing,
+      awsRegion = Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      health = Prelude.Nothing,
+      registeredGatewayArn = Prelude.Nothing,
+      resourceArn = Prelude.Nothing,
+      resourceId = Prelude.Nothing,
+      resourceType = Prelude.Nothing
+    }
+
+-- | The Amazon Web Services account ID.
+networkTelemetry_accountId :: Lens.Lens' NetworkTelemetry (Prelude.Maybe Prelude.Text)
+networkTelemetry_accountId = Lens.lens (\NetworkTelemetry' {accountId} -> accountId) (\s@NetworkTelemetry' {} a -> s {accountId = a} :: NetworkTelemetry)
+
+-- | The address.
+networkTelemetry_address :: Lens.Lens' NetworkTelemetry (Prelude.Maybe Prelude.Text)
+networkTelemetry_address = Lens.lens (\NetworkTelemetry' {address} -> address) (\s@NetworkTelemetry' {} a -> s {address = a} :: NetworkTelemetry)
+
+-- | The Amazon Web Services Region.
+networkTelemetry_awsRegion :: Lens.Lens' NetworkTelemetry (Prelude.Maybe Prelude.Text)
+networkTelemetry_awsRegion = Lens.lens (\NetworkTelemetry' {awsRegion} -> awsRegion) (\s@NetworkTelemetry' {} a -> s {awsRegion = a} :: NetworkTelemetry)
+
+-- | The ID of a core network.
+networkTelemetry_coreNetworkId :: Lens.Lens' NetworkTelemetry (Prelude.Maybe Prelude.Text)
+networkTelemetry_coreNetworkId = Lens.lens (\NetworkTelemetry' {coreNetworkId} -> coreNetworkId) (\s@NetworkTelemetry' {} a -> s {coreNetworkId = a} :: NetworkTelemetry)
+
+-- | The connection health.
+networkTelemetry_health :: Lens.Lens' NetworkTelemetry (Prelude.Maybe ConnectionHealth)
+networkTelemetry_health = Lens.lens (\NetworkTelemetry' {health} -> health) (\s@NetworkTelemetry' {} a -> s {health = a} :: NetworkTelemetry)
+
+-- | The ARN of the gateway.
+networkTelemetry_registeredGatewayArn :: Lens.Lens' NetworkTelemetry (Prelude.Maybe Prelude.Text)
+networkTelemetry_registeredGatewayArn = Lens.lens (\NetworkTelemetry' {registeredGatewayArn} -> registeredGatewayArn) (\s@NetworkTelemetry' {} a -> s {registeredGatewayArn = a} :: NetworkTelemetry)
+
+-- | The ARN of the resource.
+networkTelemetry_resourceArn :: Lens.Lens' NetworkTelemetry (Prelude.Maybe Prelude.Text)
+networkTelemetry_resourceArn = Lens.lens (\NetworkTelemetry' {resourceArn} -> resourceArn) (\s@NetworkTelemetry' {} a -> s {resourceArn = a} :: NetworkTelemetry)
+
+-- | The ID of the resource.
+networkTelemetry_resourceId :: Lens.Lens' NetworkTelemetry (Prelude.Maybe Prelude.Text)
+networkTelemetry_resourceId = Lens.lens (\NetworkTelemetry' {resourceId} -> resourceId) (\s@NetworkTelemetry' {} a -> s {resourceId = a} :: NetworkTelemetry)
+
+-- | The resource type.
+networkTelemetry_resourceType :: Lens.Lens' NetworkTelemetry (Prelude.Maybe Prelude.Text)
+networkTelemetry_resourceType = Lens.lens (\NetworkTelemetry' {resourceType} -> resourceType) (\s@NetworkTelemetry' {} a -> s {resourceType = a} :: NetworkTelemetry)
+
+instance Data.FromJSON NetworkTelemetry where
+  parseJSON =
+    Data.withObject
+      "NetworkTelemetry"
+      ( \x ->
+          NetworkTelemetry'
+            Prelude.<$> (x Data..:? "AccountId")
+            Prelude.<*> (x Data..:? "Address")
+            Prelude.<*> (x Data..:? "AwsRegion")
+            Prelude.<*> (x Data..:? "CoreNetworkId")
+            Prelude.<*> (x Data..:? "Health")
+            Prelude.<*> (x Data..:? "RegisteredGatewayArn")
+            Prelude.<*> (x Data..:? "ResourceArn")
+            Prelude.<*> (x Data..:? "ResourceId")
+            Prelude.<*> (x Data..:? "ResourceType")
+      )
+
+instance Prelude.Hashable NetworkTelemetry where
+  hashWithSalt _salt NetworkTelemetry' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` address
+      `Prelude.hashWithSalt` awsRegion
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` health
+      `Prelude.hashWithSalt` registeredGatewayArn
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` resourceId
+      `Prelude.hashWithSalt` resourceType
+
+instance Prelude.NFData NetworkTelemetry where
+  rnf NetworkTelemetry' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf address
+      `Prelude.seq` Prelude.rnf awsRegion
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf health
+      `Prelude.seq` Prelude.rnf registeredGatewayArn
+      `Prelude.seq` Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf resourceId
+      `Prelude.seq` Prelude.rnf resourceType
diff --git a/gen/Amazonka/NetworkManager/Types/OrganizationStatus.hs b/gen/Amazonka/NetworkManager/Types/OrganizationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/OrganizationStatus.hs
@@ -0,0 +1,126 @@
+{-# 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.NetworkManager.Types.OrganizationStatus
+-- 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.NetworkManager.Types.OrganizationStatus where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.AccountStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | The status of an Amazon Web Services Organization and the accounts
+-- within that organization.
+--
+-- /See:/ 'newOrganizationStatus' smart constructor.
+data OrganizationStatus = OrganizationStatus'
+  { -- | The current service-linked role (SLR) deployment status for an Amazon
+    -- Web Services Organization\'s accounts. This will be either @SUCCEEDED@
+    -- or @IN_PROGRESS@.
+    accountStatusList :: Prelude.Maybe [AccountStatus],
+    -- | The status of the organization\'s AWS service access. This will be
+    -- @ENABLED@ or @DISABLED@.
+    organizationAwsServiceAccessStatus :: Prelude.Maybe Prelude.Text,
+    -- | The ID of an Amazon Web Services Organization.
+    organizationId :: Prelude.Maybe Prelude.Text,
+    -- | The status of the SLR deployment for the account. This will be either
+    -- @SUCCEEDED@ or @IN_PROGRESS@.
+    sLRDeploymentStatus :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OrganizationStatus' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountStatusList', 'organizationStatus_accountStatusList' - The current service-linked role (SLR) deployment status for an Amazon
+-- Web Services Organization\'s accounts. This will be either @SUCCEEDED@
+-- or @IN_PROGRESS@.
+--
+-- 'organizationAwsServiceAccessStatus', 'organizationStatus_organizationAwsServiceAccessStatus' - The status of the organization\'s AWS service access. This will be
+-- @ENABLED@ or @DISABLED@.
+--
+-- 'organizationId', 'organizationStatus_organizationId' - The ID of an Amazon Web Services Organization.
+--
+-- 'sLRDeploymentStatus', 'organizationStatus_sLRDeploymentStatus' - The status of the SLR deployment for the account. This will be either
+-- @SUCCEEDED@ or @IN_PROGRESS@.
+newOrganizationStatus ::
+  OrganizationStatus
+newOrganizationStatus =
+  OrganizationStatus'
+    { accountStatusList =
+        Prelude.Nothing,
+      organizationAwsServiceAccessStatus = Prelude.Nothing,
+      organizationId = Prelude.Nothing,
+      sLRDeploymentStatus = Prelude.Nothing
+    }
+
+-- | The current service-linked role (SLR) deployment status for an Amazon
+-- Web Services Organization\'s accounts. This will be either @SUCCEEDED@
+-- or @IN_PROGRESS@.
+organizationStatus_accountStatusList :: Lens.Lens' OrganizationStatus (Prelude.Maybe [AccountStatus])
+organizationStatus_accountStatusList = Lens.lens (\OrganizationStatus' {accountStatusList} -> accountStatusList) (\s@OrganizationStatus' {} a -> s {accountStatusList = a} :: OrganizationStatus) Prelude.. Lens.mapping Lens.coerced
+
+-- | The status of the organization\'s AWS service access. This will be
+-- @ENABLED@ or @DISABLED@.
+organizationStatus_organizationAwsServiceAccessStatus :: Lens.Lens' OrganizationStatus (Prelude.Maybe Prelude.Text)
+organizationStatus_organizationAwsServiceAccessStatus = Lens.lens (\OrganizationStatus' {organizationAwsServiceAccessStatus} -> organizationAwsServiceAccessStatus) (\s@OrganizationStatus' {} a -> s {organizationAwsServiceAccessStatus = a} :: OrganizationStatus)
+
+-- | The ID of an Amazon Web Services Organization.
+organizationStatus_organizationId :: Lens.Lens' OrganizationStatus (Prelude.Maybe Prelude.Text)
+organizationStatus_organizationId = Lens.lens (\OrganizationStatus' {organizationId} -> organizationId) (\s@OrganizationStatus' {} a -> s {organizationId = a} :: OrganizationStatus)
+
+-- | The status of the SLR deployment for the account. This will be either
+-- @SUCCEEDED@ or @IN_PROGRESS@.
+organizationStatus_sLRDeploymentStatus :: Lens.Lens' OrganizationStatus (Prelude.Maybe Prelude.Text)
+organizationStatus_sLRDeploymentStatus = Lens.lens (\OrganizationStatus' {sLRDeploymentStatus} -> sLRDeploymentStatus) (\s@OrganizationStatus' {} a -> s {sLRDeploymentStatus = a} :: OrganizationStatus)
+
+instance Data.FromJSON OrganizationStatus where
+  parseJSON =
+    Data.withObject
+      "OrganizationStatus"
+      ( \x ->
+          OrganizationStatus'
+            Prelude.<$> ( x
+                            Data..:? "AccountStatusList"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "OrganizationAwsServiceAccessStatus")
+            Prelude.<*> (x Data..:? "OrganizationId")
+            Prelude.<*> (x Data..:? "SLRDeploymentStatus")
+      )
+
+instance Prelude.Hashable OrganizationStatus where
+  hashWithSalt _salt OrganizationStatus' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountStatusList
+      `Prelude.hashWithSalt` organizationAwsServiceAccessStatus
+      `Prelude.hashWithSalt` organizationId
+      `Prelude.hashWithSalt` sLRDeploymentStatus
+
+instance Prelude.NFData OrganizationStatus where
+  rnf OrganizationStatus' {..} =
+    Prelude.rnf accountStatusList
+      `Prelude.seq` Prelude.rnf organizationAwsServiceAccessStatus
+      `Prelude.seq` Prelude.rnf organizationId
+      `Prelude.seq` Prelude.rnf sLRDeploymentStatus
diff --git a/gen/Amazonka/NetworkManager/Types/PathComponent.hs b/gen/Amazonka/NetworkManager/Types/PathComponent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/PathComponent.hs
@@ -0,0 +1,98 @@
+{-# 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.NetworkManager.Types.PathComponent
+-- 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.NetworkManager.Types.PathComponent where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.NetworkResourceSummary
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a path component.
+--
+-- /See:/ 'newPathComponent' smart constructor.
+data PathComponent = PathComponent'
+  { -- | The destination CIDR block in the route table.
+    destinationCidrBlock :: Prelude.Maybe Prelude.Text,
+    -- | The resource.
+    resource :: Prelude.Maybe NetworkResourceSummary,
+    -- | The sequence number in the path. The destination is 0.
+    sequence :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PathComponent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'destinationCidrBlock', 'pathComponent_destinationCidrBlock' - The destination CIDR block in the route table.
+--
+-- 'resource', 'pathComponent_resource' - The resource.
+--
+-- 'sequence', 'pathComponent_sequence' - The sequence number in the path. The destination is 0.
+newPathComponent ::
+  PathComponent
+newPathComponent =
+  PathComponent'
+    { destinationCidrBlock =
+        Prelude.Nothing,
+      resource = Prelude.Nothing,
+      sequence = Prelude.Nothing
+    }
+
+-- | The destination CIDR block in the route table.
+pathComponent_destinationCidrBlock :: Lens.Lens' PathComponent (Prelude.Maybe Prelude.Text)
+pathComponent_destinationCidrBlock = Lens.lens (\PathComponent' {destinationCidrBlock} -> destinationCidrBlock) (\s@PathComponent' {} a -> s {destinationCidrBlock = a} :: PathComponent)
+
+-- | The resource.
+pathComponent_resource :: Lens.Lens' PathComponent (Prelude.Maybe NetworkResourceSummary)
+pathComponent_resource = Lens.lens (\PathComponent' {resource} -> resource) (\s@PathComponent' {} a -> s {resource = a} :: PathComponent)
+
+-- | The sequence number in the path. The destination is 0.
+pathComponent_sequence :: Lens.Lens' PathComponent (Prelude.Maybe Prelude.Int)
+pathComponent_sequence = Lens.lens (\PathComponent' {sequence} -> sequence) (\s@PathComponent' {} a -> s {sequence = a} :: PathComponent)
+
+instance Data.FromJSON PathComponent where
+  parseJSON =
+    Data.withObject
+      "PathComponent"
+      ( \x ->
+          PathComponent'
+            Prelude.<$> (x Data..:? "DestinationCidrBlock")
+            Prelude.<*> (x Data..:? "Resource")
+            Prelude.<*> (x Data..:? "Sequence")
+      )
+
+instance Prelude.Hashable PathComponent where
+  hashWithSalt _salt PathComponent' {..} =
+    _salt
+      `Prelude.hashWithSalt` destinationCidrBlock
+      `Prelude.hashWithSalt` resource
+      `Prelude.hashWithSalt` sequence
+
+instance Prelude.NFData PathComponent where
+  rnf PathComponent' {..} =
+    Prelude.rnf destinationCidrBlock
+      `Prelude.seq` Prelude.rnf resource
+      `Prelude.seq` Prelude.rnf sequence
diff --git a/gen/Amazonka/NetworkManager/Types/Peering.hs b/gen/Amazonka/NetworkManager/Types/Peering.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/Peering.hs
@@ -0,0 +1,183 @@
+{-# 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.NetworkManager.Types.Peering
+-- 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.NetworkManager.Types.Peering where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.PeeringState
+import Amazonka.NetworkManager.Types.PeeringType
+import Amazonka.NetworkManager.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a peering connection.
+--
+-- /See:/ 'newPeering' smart constructor.
+data Peering = Peering'
+  { -- | The ARN of a core network.
+    coreNetworkArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the core network for the peering request.
+    coreNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp when the attachment peer was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The edge location for the peer.
+    edgeLocation :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the account owner.
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the peering attachment.
+    peeringId :: Prelude.Maybe Prelude.Text,
+    -- | The type of peering. This will be @TRANSIT_GATEWAY@.
+    peeringType :: Prelude.Maybe PeeringType,
+    -- | The resource ARN of the peer.
+    resourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The current state of the peering connection.
+    state :: Prelude.Maybe PeeringState,
+    -- | The list of key-value tags associated with the peering.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Peering' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkArn', 'peering_coreNetworkArn' - The ARN of a core network.
+--
+-- 'coreNetworkId', 'peering_coreNetworkId' - The ID of the core network for the peering request.
+--
+-- 'createdAt', 'peering_createdAt' - The timestamp when the attachment peer was created.
+--
+-- 'edgeLocation', 'peering_edgeLocation' - The edge location for the peer.
+--
+-- 'ownerAccountId', 'peering_ownerAccountId' - The ID of the account owner.
+--
+-- 'peeringId', 'peering_peeringId' - The ID of the peering attachment.
+--
+-- 'peeringType', 'peering_peeringType' - The type of peering. This will be @TRANSIT_GATEWAY@.
+--
+-- 'resourceArn', 'peering_resourceArn' - The resource ARN of the peer.
+--
+-- 'state', 'peering_state' - The current state of the peering connection.
+--
+-- 'tags', 'peering_tags' - The list of key-value tags associated with the peering.
+newPeering ::
+  Peering
+newPeering =
+  Peering'
+    { coreNetworkArn = Prelude.Nothing,
+      coreNetworkId = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      edgeLocation = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      peeringId = Prelude.Nothing,
+      peeringType = Prelude.Nothing,
+      resourceArn = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The ARN of a core network.
+peering_coreNetworkArn :: Lens.Lens' Peering (Prelude.Maybe Prelude.Text)
+peering_coreNetworkArn = Lens.lens (\Peering' {coreNetworkArn} -> coreNetworkArn) (\s@Peering' {} a -> s {coreNetworkArn = a} :: Peering)
+
+-- | The ID of the core network for the peering request.
+peering_coreNetworkId :: Lens.Lens' Peering (Prelude.Maybe Prelude.Text)
+peering_coreNetworkId = Lens.lens (\Peering' {coreNetworkId} -> coreNetworkId) (\s@Peering' {} a -> s {coreNetworkId = a} :: Peering)
+
+-- | The timestamp when the attachment peer was created.
+peering_createdAt :: Lens.Lens' Peering (Prelude.Maybe Prelude.UTCTime)
+peering_createdAt = Lens.lens (\Peering' {createdAt} -> createdAt) (\s@Peering' {} a -> s {createdAt = a} :: Peering) Prelude.. Lens.mapping Data._Time
+
+-- | The edge location for the peer.
+peering_edgeLocation :: Lens.Lens' Peering (Prelude.Maybe Prelude.Text)
+peering_edgeLocation = Lens.lens (\Peering' {edgeLocation} -> edgeLocation) (\s@Peering' {} a -> s {edgeLocation = a} :: Peering)
+
+-- | The ID of the account owner.
+peering_ownerAccountId :: Lens.Lens' Peering (Prelude.Maybe Prelude.Text)
+peering_ownerAccountId = Lens.lens (\Peering' {ownerAccountId} -> ownerAccountId) (\s@Peering' {} a -> s {ownerAccountId = a} :: Peering)
+
+-- | The ID of the peering attachment.
+peering_peeringId :: Lens.Lens' Peering (Prelude.Maybe Prelude.Text)
+peering_peeringId = Lens.lens (\Peering' {peeringId} -> peeringId) (\s@Peering' {} a -> s {peeringId = a} :: Peering)
+
+-- | The type of peering. This will be @TRANSIT_GATEWAY@.
+peering_peeringType :: Lens.Lens' Peering (Prelude.Maybe PeeringType)
+peering_peeringType = Lens.lens (\Peering' {peeringType} -> peeringType) (\s@Peering' {} a -> s {peeringType = a} :: Peering)
+
+-- | The resource ARN of the peer.
+peering_resourceArn :: Lens.Lens' Peering (Prelude.Maybe Prelude.Text)
+peering_resourceArn = Lens.lens (\Peering' {resourceArn} -> resourceArn) (\s@Peering' {} a -> s {resourceArn = a} :: Peering)
+
+-- | The current state of the peering connection.
+peering_state :: Lens.Lens' Peering (Prelude.Maybe PeeringState)
+peering_state = Lens.lens (\Peering' {state} -> state) (\s@Peering' {} a -> s {state = a} :: Peering)
+
+-- | The list of key-value tags associated with the peering.
+peering_tags :: Lens.Lens' Peering (Prelude.Maybe [Tag])
+peering_tags = Lens.lens (\Peering' {tags} -> tags) (\s@Peering' {} a -> s {tags = a} :: Peering) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Peering where
+  parseJSON =
+    Data.withObject
+      "Peering"
+      ( \x ->
+          Peering'
+            Prelude.<$> (x Data..:? "CoreNetworkArn")
+            Prelude.<*> (x Data..:? "CoreNetworkId")
+            Prelude.<*> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "EdgeLocation")
+            Prelude.<*> (x Data..:? "OwnerAccountId")
+            Prelude.<*> (x Data..:? "PeeringId")
+            Prelude.<*> (x Data..:? "PeeringType")
+            Prelude.<*> (x Data..:? "ResourceArn")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable Peering where
+  hashWithSalt _salt Peering' {..} =
+    _salt
+      `Prelude.hashWithSalt` coreNetworkArn
+      `Prelude.hashWithSalt` coreNetworkId
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` edgeLocation
+      `Prelude.hashWithSalt` ownerAccountId
+      `Prelude.hashWithSalt` peeringId
+      `Prelude.hashWithSalt` peeringType
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData Peering where
+  rnf Peering' {..} =
+    Prelude.rnf coreNetworkArn
+      `Prelude.seq` Prelude.rnf coreNetworkId
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf edgeLocation
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf peeringId
+      `Prelude.seq` Prelude.rnf peeringType
+      `Prelude.seq` Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/NetworkManager/Types/PeeringState.hs b/gen/Amazonka/NetworkManager/Types/PeeringState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/PeeringState.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.NetworkManager.Types.PeeringState
+-- 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.NetworkManager.Types.PeeringState
+  ( PeeringState
+      ( ..,
+        PeeringState_AVAILABLE,
+        PeeringState_CREATING,
+        PeeringState_DELETING,
+        PeeringState_FAILED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PeeringState = PeeringState'
+  { fromPeeringState ::
+      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 PeeringState_AVAILABLE :: PeeringState
+pattern PeeringState_AVAILABLE = PeeringState' "AVAILABLE"
+
+pattern PeeringState_CREATING :: PeeringState
+pattern PeeringState_CREATING = PeeringState' "CREATING"
+
+pattern PeeringState_DELETING :: PeeringState
+pattern PeeringState_DELETING = PeeringState' "DELETING"
+
+pattern PeeringState_FAILED :: PeeringState
+pattern PeeringState_FAILED = PeeringState' "FAILED"
+
+{-# COMPLETE
+  PeeringState_AVAILABLE,
+  PeeringState_CREATING,
+  PeeringState_DELETING,
+  PeeringState_FAILED,
+  PeeringState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/PeeringType.hs b/gen/Amazonka/NetworkManager/Types/PeeringType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/PeeringType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.PeeringType
+-- 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.NetworkManager.Types.PeeringType
+  ( PeeringType
+      ( ..,
+        PeeringType_TRANSIT_GATEWAY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PeeringType = PeeringType'
+  { fromPeeringType ::
+      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 PeeringType_TRANSIT_GATEWAY :: PeeringType
+pattern PeeringType_TRANSIT_GATEWAY = PeeringType' "TRANSIT_GATEWAY"
+
+{-# COMPLETE
+  PeeringType_TRANSIT_GATEWAY,
+  PeeringType'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/ProposedSegmentChange.hs b/gen/Amazonka/NetworkManager/Types/ProposedSegmentChange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/ProposedSegmentChange.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.NetworkManager.Types.ProposedSegmentChange
+-- 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.NetworkManager.Types.ProposedSegmentChange where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a proposed segment change. In some cases, the segment change
+-- must first be evaluated and accepted.
+--
+-- /See:/ 'newProposedSegmentChange' smart constructor.
+data ProposedSegmentChange = ProposedSegmentChange'
+  { -- | The rule number in the policy document that applies to this change.
+    attachmentPolicyRuleNumber :: Prelude.Maybe Prelude.Int,
+    -- | The name of the segment to change.
+    segmentName :: Prelude.Maybe Prelude.Text,
+    -- | The list of key-value tags that changed for the segment.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProposedSegmentChange' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachmentPolicyRuleNumber', 'proposedSegmentChange_attachmentPolicyRuleNumber' - The rule number in the policy document that applies to this change.
+--
+-- 'segmentName', 'proposedSegmentChange_segmentName' - The name of the segment to change.
+--
+-- 'tags', 'proposedSegmentChange_tags' - The list of key-value tags that changed for the segment.
+newProposedSegmentChange ::
+  ProposedSegmentChange
+newProposedSegmentChange =
+  ProposedSegmentChange'
+    { attachmentPolicyRuleNumber =
+        Prelude.Nothing,
+      segmentName = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The rule number in the policy document that applies to this change.
+proposedSegmentChange_attachmentPolicyRuleNumber :: Lens.Lens' ProposedSegmentChange (Prelude.Maybe Prelude.Int)
+proposedSegmentChange_attachmentPolicyRuleNumber = Lens.lens (\ProposedSegmentChange' {attachmentPolicyRuleNumber} -> attachmentPolicyRuleNumber) (\s@ProposedSegmentChange' {} a -> s {attachmentPolicyRuleNumber = a} :: ProposedSegmentChange)
+
+-- | The name of the segment to change.
+proposedSegmentChange_segmentName :: Lens.Lens' ProposedSegmentChange (Prelude.Maybe Prelude.Text)
+proposedSegmentChange_segmentName = Lens.lens (\ProposedSegmentChange' {segmentName} -> segmentName) (\s@ProposedSegmentChange' {} a -> s {segmentName = a} :: ProposedSegmentChange)
+
+-- | The list of key-value tags that changed for the segment.
+proposedSegmentChange_tags :: Lens.Lens' ProposedSegmentChange (Prelude.Maybe [Tag])
+proposedSegmentChange_tags = Lens.lens (\ProposedSegmentChange' {tags} -> tags) (\s@ProposedSegmentChange' {} a -> s {tags = a} :: ProposedSegmentChange) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ProposedSegmentChange where
+  parseJSON =
+    Data.withObject
+      "ProposedSegmentChange"
+      ( \x ->
+          ProposedSegmentChange'
+            Prelude.<$> (x Data..:? "AttachmentPolicyRuleNumber")
+            Prelude.<*> (x Data..:? "SegmentName")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable ProposedSegmentChange where
+  hashWithSalt _salt ProposedSegmentChange' {..} =
+    _salt
+      `Prelude.hashWithSalt` attachmentPolicyRuleNumber
+      `Prelude.hashWithSalt` segmentName
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData ProposedSegmentChange where
+  rnf ProposedSegmentChange' {..} =
+    Prelude.rnf attachmentPolicyRuleNumber
+      `Prelude.seq` Prelude.rnf segmentName
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/NetworkManager/Types/Relationship.hs b/gen/Amazonka/NetworkManager/Types/Relationship.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/Relationship.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.Relationship
+-- 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.NetworkManager.Types.Relationship 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
+
+-- | Describes a resource relationship.
+--
+-- /See:/ 'newRelationship' smart constructor.
+data Relationship = Relationship'
+  { -- | The ARN of the resource.
+    from :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the resource.
+    to :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Relationship' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'from', 'relationship_from' - The ARN of the resource.
+--
+-- 'to', 'relationship_to' - The ARN of the resource.
+newRelationship ::
+  Relationship
+newRelationship =
+  Relationship'
+    { from = Prelude.Nothing,
+      to = Prelude.Nothing
+    }
+
+-- | The ARN of the resource.
+relationship_from :: Lens.Lens' Relationship (Prelude.Maybe Prelude.Text)
+relationship_from = Lens.lens (\Relationship' {from} -> from) (\s@Relationship' {} a -> s {from = a} :: Relationship)
+
+-- | The ARN of the resource.
+relationship_to :: Lens.Lens' Relationship (Prelude.Maybe Prelude.Text)
+relationship_to = Lens.lens (\Relationship' {to} -> to) (\s@Relationship' {} a -> s {to = a} :: Relationship)
+
+instance Data.FromJSON Relationship where
+  parseJSON =
+    Data.withObject
+      "Relationship"
+      ( \x ->
+          Relationship'
+            Prelude.<$> (x Data..:? "From")
+            Prelude.<*> (x Data..:? "To")
+      )
+
+instance Prelude.Hashable Relationship where
+  hashWithSalt _salt Relationship' {..} =
+    _salt
+      `Prelude.hashWithSalt` from
+      `Prelude.hashWithSalt` to
+
+instance Prelude.NFData Relationship where
+  rnf Relationship' {..} =
+    Prelude.rnf from `Prelude.seq` Prelude.rnf to
diff --git a/gen/Amazonka/NetworkManager/Types/RouteAnalysis.hs b/gen/Amazonka/NetworkManager/Types/RouteAnalysis.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/RouteAnalysis.hs
@@ -0,0 +1,201 @@
+{-# 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.NetworkManager.Types.RouteAnalysis
+-- 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.NetworkManager.Types.RouteAnalysis where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.RouteAnalysisEndpointOptions
+import Amazonka.NetworkManager.Types.RouteAnalysisPath
+import Amazonka.NetworkManager.Types.RouteAnalysisStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a route analysis.
+--
+-- /See:/ 'newRouteAnalysis' smart constructor.
+data RouteAnalysis = RouteAnalysis'
+  { -- | The destination.
+    destination :: Prelude.Maybe RouteAnalysisEndpointOptions,
+    -- | The forward path.
+    forwardPath :: Prelude.Maybe RouteAnalysisPath,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether to analyze the return path. The return path is not
+    -- analyzed if the forward path analysis does not succeed.
+    includeReturnPath :: Prelude.Maybe Prelude.Bool,
+    -- | The ID of the AWS account that created the route analysis.
+    ownerAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The return path.
+    returnPath :: Prelude.Maybe RouteAnalysisPath,
+    -- | The ID of the route analysis.
+    routeAnalysisId :: Prelude.Maybe Prelude.Text,
+    -- | The source.
+    source :: Prelude.Maybe RouteAnalysisEndpointOptions,
+    -- | The time that the analysis started.
+    startTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The status of the route analysis.
+    status :: Prelude.Maybe RouteAnalysisStatus,
+    -- | Indicates whether to include the location of middlebox appliances in the
+    -- route analysis.
+    useMiddleboxes :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RouteAnalysis' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'destination', 'routeAnalysis_destination' - The destination.
+--
+-- 'forwardPath', 'routeAnalysis_forwardPath' - The forward path.
+--
+-- 'globalNetworkId', 'routeAnalysis_globalNetworkId' - The ID of the global network.
+--
+-- 'includeReturnPath', 'routeAnalysis_includeReturnPath' - Indicates whether to analyze the return path. The return path is not
+-- analyzed if the forward path analysis does not succeed.
+--
+-- 'ownerAccountId', 'routeAnalysis_ownerAccountId' - The ID of the AWS account that created the route analysis.
+--
+-- 'returnPath', 'routeAnalysis_returnPath' - The return path.
+--
+-- 'routeAnalysisId', 'routeAnalysis_routeAnalysisId' - The ID of the route analysis.
+--
+-- 'source', 'routeAnalysis_source' - The source.
+--
+-- 'startTimestamp', 'routeAnalysis_startTimestamp' - The time that the analysis started.
+--
+-- 'status', 'routeAnalysis_status' - The status of the route analysis.
+--
+-- 'useMiddleboxes', 'routeAnalysis_useMiddleboxes' - Indicates whether to include the location of middlebox appliances in the
+-- route analysis.
+newRouteAnalysis ::
+  RouteAnalysis
+newRouteAnalysis =
+  RouteAnalysis'
+    { destination = Prelude.Nothing,
+      forwardPath = Prelude.Nothing,
+      globalNetworkId = Prelude.Nothing,
+      includeReturnPath = Prelude.Nothing,
+      ownerAccountId = Prelude.Nothing,
+      returnPath = Prelude.Nothing,
+      routeAnalysisId = Prelude.Nothing,
+      source = Prelude.Nothing,
+      startTimestamp = Prelude.Nothing,
+      status = Prelude.Nothing,
+      useMiddleboxes = Prelude.Nothing
+    }
+
+-- | The destination.
+routeAnalysis_destination :: Lens.Lens' RouteAnalysis (Prelude.Maybe RouteAnalysisEndpointOptions)
+routeAnalysis_destination = Lens.lens (\RouteAnalysis' {destination} -> destination) (\s@RouteAnalysis' {} a -> s {destination = a} :: RouteAnalysis)
+
+-- | The forward path.
+routeAnalysis_forwardPath :: Lens.Lens' RouteAnalysis (Prelude.Maybe RouteAnalysisPath)
+routeAnalysis_forwardPath = Lens.lens (\RouteAnalysis' {forwardPath} -> forwardPath) (\s@RouteAnalysis' {} a -> s {forwardPath = a} :: RouteAnalysis)
+
+-- | The ID of the global network.
+routeAnalysis_globalNetworkId :: Lens.Lens' RouteAnalysis (Prelude.Maybe Prelude.Text)
+routeAnalysis_globalNetworkId = Lens.lens (\RouteAnalysis' {globalNetworkId} -> globalNetworkId) (\s@RouteAnalysis' {} a -> s {globalNetworkId = a} :: RouteAnalysis)
+
+-- | Indicates whether to analyze the return path. The return path is not
+-- analyzed if the forward path analysis does not succeed.
+routeAnalysis_includeReturnPath :: Lens.Lens' RouteAnalysis (Prelude.Maybe Prelude.Bool)
+routeAnalysis_includeReturnPath = Lens.lens (\RouteAnalysis' {includeReturnPath} -> includeReturnPath) (\s@RouteAnalysis' {} a -> s {includeReturnPath = a} :: RouteAnalysis)
+
+-- | The ID of the AWS account that created the route analysis.
+routeAnalysis_ownerAccountId :: Lens.Lens' RouteAnalysis (Prelude.Maybe Prelude.Text)
+routeAnalysis_ownerAccountId = Lens.lens (\RouteAnalysis' {ownerAccountId} -> ownerAccountId) (\s@RouteAnalysis' {} a -> s {ownerAccountId = a} :: RouteAnalysis)
+
+-- | The return path.
+routeAnalysis_returnPath :: Lens.Lens' RouteAnalysis (Prelude.Maybe RouteAnalysisPath)
+routeAnalysis_returnPath = Lens.lens (\RouteAnalysis' {returnPath} -> returnPath) (\s@RouteAnalysis' {} a -> s {returnPath = a} :: RouteAnalysis)
+
+-- | The ID of the route analysis.
+routeAnalysis_routeAnalysisId :: Lens.Lens' RouteAnalysis (Prelude.Maybe Prelude.Text)
+routeAnalysis_routeAnalysisId = Lens.lens (\RouteAnalysis' {routeAnalysisId} -> routeAnalysisId) (\s@RouteAnalysis' {} a -> s {routeAnalysisId = a} :: RouteAnalysis)
+
+-- | The source.
+routeAnalysis_source :: Lens.Lens' RouteAnalysis (Prelude.Maybe RouteAnalysisEndpointOptions)
+routeAnalysis_source = Lens.lens (\RouteAnalysis' {source} -> source) (\s@RouteAnalysis' {} a -> s {source = a} :: RouteAnalysis)
+
+-- | The time that the analysis started.
+routeAnalysis_startTimestamp :: Lens.Lens' RouteAnalysis (Prelude.Maybe Prelude.UTCTime)
+routeAnalysis_startTimestamp = Lens.lens (\RouteAnalysis' {startTimestamp} -> startTimestamp) (\s@RouteAnalysis' {} a -> s {startTimestamp = a} :: RouteAnalysis) Prelude.. Lens.mapping Data._Time
+
+-- | The status of the route analysis.
+routeAnalysis_status :: Lens.Lens' RouteAnalysis (Prelude.Maybe RouteAnalysisStatus)
+routeAnalysis_status = Lens.lens (\RouteAnalysis' {status} -> status) (\s@RouteAnalysis' {} a -> s {status = a} :: RouteAnalysis)
+
+-- | Indicates whether to include the location of middlebox appliances in the
+-- route analysis.
+routeAnalysis_useMiddleboxes :: Lens.Lens' RouteAnalysis (Prelude.Maybe Prelude.Bool)
+routeAnalysis_useMiddleboxes = Lens.lens (\RouteAnalysis' {useMiddleboxes} -> useMiddleboxes) (\s@RouteAnalysis' {} a -> s {useMiddleboxes = a} :: RouteAnalysis)
+
+instance Data.FromJSON RouteAnalysis where
+  parseJSON =
+    Data.withObject
+      "RouteAnalysis"
+      ( \x ->
+          RouteAnalysis'
+            Prelude.<$> (x Data..:? "Destination")
+            Prelude.<*> (x Data..:? "ForwardPath")
+            Prelude.<*> (x Data..:? "GlobalNetworkId")
+            Prelude.<*> (x Data..:? "IncludeReturnPath")
+            Prelude.<*> (x Data..:? "OwnerAccountId")
+            Prelude.<*> (x Data..:? "ReturnPath")
+            Prelude.<*> (x Data..:? "RouteAnalysisId")
+            Prelude.<*> (x Data..:? "Source")
+            Prelude.<*> (x Data..:? "StartTimestamp")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "UseMiddleboxes")
+      )
+
+instance Prelude.Hashable RouteAnalysis where
+  hashWithSalt _salt RouteAnalysis' {..} =
+    _salt
+      `Prelude.hashWithSalt` destination
+      `Prelude.hashWithSalt` forwardPath
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` includeReturnPath
+      `Prelude.hashWithSalt` ownerAccountId
+      `Prelude.hashWithSalt` returnPath
+      `Prelude.hashWithSalt` routeAnalysisId
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` startTimestamp
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` useMiddleboxes
+
+instance Prelude.NFData RouteAnalysis where
+  rnf RouteAnalysis' {..} =
+    Prelude.rnf destination
+      `Prelude.seq` Prelude.rnf forwardPath
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf includeReturnPath
+      `Prelude.seq` Prelude.rnf ownerAccountId
+      `Prelude.seq` Prelude.rnf returnPath
+      `Prelude.seq` Prelude.rnf routeAnalysisId
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf startTimestamp
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf useMiddleboxes
diff --git a/gen/Amazonka/NetworkManager/Types/RouteAnalysisCompletion.hs b/gen/Amazonka/NetworkManager/Types/RouteAnalysisCompletion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/RouteAnalysisCompletion.hs
@@ -0,0 +1,183 @@
+{-# 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.NetworkManager.Types.RouteAnalysisCompletion
+-- 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.NetworkManager.Types.RouteAnalysisCompletion where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.RouteAnalysisCompletionReasonCode
+import Amazonka.NetworkManager.Types.RouteAnalysisCompletionResultCode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the status of an analysis at completion.
+--
+-- /See:/ 'newRouteAnalysisCompletion' smart constructor.
+data RouteAnalysisCompletion = RouteAnalysisCompletion'
+  { -- | The reason code. Available only if a connection is not found.
+    --
+    -- -   @BLACKHOLE_ROUTE_FOR_DESTINATION_FOUND@ - Found a black hole route
+    --     with the destination CIDR block.
+    --
+    -- -   @CYCLIC_PATH_DETECTED@ - Found the same resource multiple times
+    --     while traversing the path.
+    --
+    -- -   @INACTIVE_ROUTE_FOR_DESTINATION_FOUND@ - Found an inactive route
+    --     with the destination CIDR block.
+    --
+    -- -   @MAX_HOPS_EXCEEDED@ - Analysis exceeded 64 hops without finding the
+    --     destination.
+    --
+    -- -   @ROUTE_NOT_FOUND@ - Cannot find a route table with the destination
+    --     CIDR block.
+    --
+    -- -   @TGW_ATTACH_ARN_NO_MATCH@ - Found an attachment, but not with the
+    --     correct destination ARN.
+    --
+    -- -   @TGW_ATTACH_NOT_FOUND@ - Cannot find an attachment.
+    --
+    -- -   @TGW_ATTACH_NOT_IN_TGW@ - Found an attachment, but not to the
+    --     correct transit gateway.
+    --
+    -- -   @TGW_ATTACH_STABLE_ROUTE_TABLE_NOT_FOUND@ - The state of the route
+    --     table association is not associated.
+    reasonCode :: Prelude.Maybe RouteAnalysisCompletionReasonCode,
+    -- | Additional information about the path. Available only if a connection is
+    -- not found.
+    reasonContext :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The result of the analysis. If the status is @NOT_CONNECTED@, check the
+    -- reason code.
+    resultCode :: Prelude.Maybe RouteAnalysisCompletionResultCode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RouteAnalysisCompletion' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'reasonCode', 'routeAnalysisCompletion_reasonCode' - The reason code. Available only if a connection is not found.
+--
+-- -   @BLACKHOLE_ROUTE_FOR_DESTINATION_FOUND@ - Found a black hole route
+--     with the destination CIDR block.
+--
+-- -   @CYCLIC_PATH_DETECTED@ - Found the same resource multiple times
+--     while traversing the path.
+--
+-- -   @INACTIVE_ROUTE_FOR_DESTINATION_FOUND@ - Found an inactive route
+--     with the destination CIDR block.
+--
+-- -   @MAX_HOPS_EXCEEDED@ - Analysis exceeded 64 hops without finding the
+--     destination.
+--
+-- -   @ROUTE_NOT_FOUND@ - Cannot find a route table with the destination
+--     CIDR block.
+--
+-- -   @TGW_ATTACH_ARN_NO_MATCH@ - Found an attachment, but not with the
+--     correct destination ARN.
+--
+-- -   @TGW_ATTACH_NOT_FOUND@ - Cannot find an attachment.
+--
+-- -   @TGW_ATTACH_NOT_IN_TGW@ - Found an attachment, but not to the
+--     correct transit gateway.
+--
+-- -   @TGW_ATTACH_STABLE_ROUTE_TABLE_NOT_FOUND@ - The state of the route
+--     table association is not associated.
+--
+-- 'reasonContext', 'routeAnalysisCompletion_reasonContext' - Additional information about the path. Available only if a connection is
+-- not found.
+--
+-- 'resultCode', 'routeAnalysisCompletion_resultCode' - The result of the analysis. If the status is @NOT_CONNECTED@, check the
+-- reason code.
+newRouteAnalysisCompletion ::
+  RouteAnalysisCompletion
+newRouteAnalysisCompletion =
+  RouteAnalysisCompletion'
+    { reasonCode =
+        Prelude.Nothing,
+      reasonContext = Prelude.Nothing,
+      resultCode = Prelude.Nothing
+    }
+
+-- | The reason code. Available only if a connection is not found.
+--
+-- -   @BLACKHOLE_ROUTE_FOR_DESTINATION_FOUND@ - Found a black hole route
+--     with the destination CIDR block.
+--
+-- -   @CYCLIC_PATH_DETECTED@ - Found the same resource multiple times
+--     while traversing the path.
+--
+-- -   @INACTIVE_ROUTE_FOR_DESTINATION_FOUND@ - Found an inactive route
+--     with the destination CIDR block.
+--
+-- -   @MAX_HOPS_EXCEEDED@ - Analysis exceeded 64 hops without finding the
+--     destination.
+--
+-- -   @ROUTE_NOT_FOUND@ - Cannot find a route table with the destination
+--     CIDR block.
+--
+-- -   @TGW_ATTACH_ARN_NO_MATCH@ - Found an attachment, but not with the
+--     correct destination ARN.
+--
+-- -   @TGW_ATTACH_NOT_FOUND@ - Cannot find an attachment.
+--
+-- -   @TGW_ATTACH_NOT_IN_TGW@ - Found an attachment, but not to the
+--     correct transit gateway.
+--
+-- -   @TGW_ATTACH_STABLE_ROUTE_TABLE_NOT_FOUND@ - The state of the route
+--     table association is not associated.
+routeAnalysisCompletion_reasonCode :: Lens.Lens' RouteAnalysisCompletion (Prelude.Maybe RouteAnalysisCompletionReasonCode)
+routeAnalysisCompletion_reasonCode = Lens.lens (\RouteAnalysisCompletion' {reasonCode} -> reasonCode) (\s@RouteAnalysisCompletion' {} a -> s {reasonCode = a} :: RouteAnalysisCompletion)
+
+-- | Additional information about the path. Available only if a connection is
+-- not found.
+routeAnalysisCompletion_reasonContext :: Lens.Lens' RouteAnalysisCompletion (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+routeAnalysisCompletion_reasonContext = Lens.lens (\RouteAnalysisCompletion' {reasonContext} -> reasonContext) (\s@RouteAnalysisCompletion' {} a -> s {reasonContext = a} :: RouteAnalysisCompletion) Prelude.. Lens.mapping Lens.coerced
+
+-- | The result of the analysis. If the status is @NOT_CONNECTED@, check the
+-- reason code.
+routeAnalysisCompletion_resultCode :: Lens.Lens' RouteAnalysisCompletion (Prelude.Maybe RouteAnalysisCompletionResultCode)
+routeAnalysisCompletion_resultCode = Lens.lens (\RouteAnalysisCompletion' {resultCode} -> resultCode) (\s@RouteAnalysisCompletion' {} a -> s {resultCode = a} :: RouteAnalysisCompletion)
+
+instance Data.FromJSON RouteAnalysisCompletion where
+  parseJSON =
+    Data.withObject
+      "RouteAnalysisCompletion"
+      ( \x ->
+          RouteAnalysisCompletion'
+            Prelude.<$> (x Data..:? "ReasonCode")
+            Prelude.<*> (x Data..:? "ReasonContext" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ResultCode")
+      )
+
+instance Prelude.Hashable RouteAnalysisCompletion where
+  hashWithSalt _salt RouteAnalysisCompletion' {..} =
+    _salt
+      `Prelude.hashWithSalt` reasonCode
+      `Prelude.hashWithSalt` reasonContext
+      `Prelude.hashWithSalt` resultCode
+
+instance Prelude.NFData RouteAnalysisCompletion where
+  rnf RouteAnalysisCompletion' {..} =
+    Prelude.rnf reasonCode
+      `Prelude.seq` Prelude.rnf reasonContext
+      `Prelude.seq` Prelude.rnf resultCode
diff --git a/gen/Amazonka/NetworkManager/Types/RouteAnalysisCompletionReasonCode.hs b/gen/Amazonka/NetworkManager/Types/RouteAnalysisCompletionReasonCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/RouteAnalysisCompletionReasonCode.hs
@@ -0,0 +1,116 @@
+{-# 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.NetworkManager.Types.RouteAnalysisCompletionReasonCode
+-- 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.NetworkManager.Types.RouteAnalysisCompletionReasonCode
+  ( RouteAnalysisCompletionReasonCode
+      ( ..,
+        RouteAnalysisCompletionReasonCode_BLACKHOLE_ROUTE_FOR_DESTINATION_FOUND,
+        RouteAnalysisCompletionReasonCode_CYCLIC_PATH_DETECTED,
+        RouteAnalysisCompletionReasonCode_INACTIVE_ROUTE_FOR_DESTINATION_FOUND,
+        RouteAnalysisCompletionReasonCode_MAX_HOPS_EXCEEDED,
+        RouteAnalysisCompletionReasonCode_NO_DESTINATION_ARN_PROVIDED,
+        RouteAnalysisCompletionReasonCode_POSSIBLE_MIDDLEBOX,
+        RouteAnalysisCompletionReasonCode_ROUTE_NOT_FOUND,
+        RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_ATTACH_ARN_NO_MATCH,
+        RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_NOT_FOUND,
+        RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_NOT_IN_TRANSIT_GATEWAY,
+        RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_STABLE_ROUTE_TABLE_NOT_FOUND
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RouteAnalysisCompletionReasonCode = RouteAnalysisCompletionReasonCode'
+  { fromRouteAnalysisCompletionReasonCode ::
+      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 RouteAnalysisCompletionReasonCode_BLACKHOLE_ROUTE_FOR_DESTINATION_FOUND :: RouteAnalysisCompletionReasonCode
+pattern RouteAnalysisCompletionReasonCode_BLACKHOLE_ROUTE_FOR_DESTINATION_FOUND = RouteAnalysisCompletionReasonCode' "BLACKHOLE_ROUTE_FOR_DESTINATION_FOUND"
+
+pattern RouteAnalysisCompletionReasonCode_CYCLIC_PATH_DETECTED :: RouteAnalysisCompletionReasonCode
+pattern RouteAnalysisCompletionReasonCode_CYCLIC_PATH_DETECTED = RouteAnalysisCompletionReasonCode' "CYCLIC_PATH_DETECTED"
+
+pattern RouteAnalysisCompletionReasonCode_INACTIVE_ROUTE_FOR_DESTINATION_FOUND :: RouteAnalysisCompletionReasonCode
+pattern RouteAnalysisCompletionReasonCode_INACTIVE_ROUTE_FOR_DESTINATION_FOUND = RouteAnalysisCompletionReasonCode' "INACTIVE_ROUTE_FOR_DESTINATION_FOUND"
+
+pattern RouteAnalysisCompletionReasonCode_MAX_HOPS_EXCEEDED :: RouteAnalysisCompletionReasonCode
+pattern RouteAnalysisCompletionReasonCode_MAX_HOPS_EXCEEDED = RouteAnalysisCompletionReasonCode' "MAX_HOPS_EXCEEDED"
+
+pattern RouteAnalysisCompletionReasonCode_NO_DESTINATION_ARN_PROVIDED :: RouteAnalysisCompletionReasonCode
+pattern RouteAnalysisCompletionReasonCode_NO_DESTINATION_ARN_PROVIDED = RouteAnalysisCompletionReasonCode' "NO_DESTINATION_ARN_PROVIDED"
+
+pattern RouteAnalysisCompletionReasonCode_POSSIBLE_MIDDLEBOX :: RouteAnalysisCompletionReasonCode
+pattern RouteAnalysisCompletionReasonCode_POSSIBLE_MIDDLEBOX = RouteAnalysisCompletionReasonCode' "POSSIBLE_MIDDLEBOX"
+
+pattern RouteAnalysisCompletionReasonCode_ROUTE_NOT_FOUND :: RouteAnalysisCompletionReasonCode
+pattern RouteAnalysisCompletionReasonCode_ROUTE_NOT_FOUND = RouteAnalysisCompletionReasonCode' "ROUTE_NOT_FOUND"
+
+pattern RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_ATTACH_ARN_NO_MATCH :: RouteAnalysisCompletionReasonCode
+pattern RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_ATTACH_ARN_NO_MATCH = RouteAnalysisCompletionReasonCode' "TRANSIT_GATEWAY_ATTACHMENT_ATTACH_ARN_NO_MATCH"
+
+pattern RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_NOT_FOUND :: RouteAnalysisCompletionReasonCode
+pattern RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_NOT_FOUND = RouteAnalysisCompletionReasonCode' "TRANSIT_GATEWAY_ATTACHMENT_NOT_FOUND"
+
+pattern RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_NOT_IN_TRANSIT_GATEWAY :: RouteAnalysisCompletionReasonCode
+pattern RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_NOT_IN_TRANSIT_GATEWAY = RouteAnalysisCompletionReasonCode' "TRANSIT_GATEWAY_ATTACHMENT_NOT_IN_TRANSIT_GATEWAY"
+
+pattern RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_STABLE_ROUTE_TABLE_NOT_FOUND :: RouteAnalysisCompletionReasonCode
+pattern RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_STABLE_ROUTE_TABLE_NOT_FOUND = RouteAnalysisCompletionReasonCode' "TRANSIT_GATEWAY_ATTACHMENT_STABLE_ROUTE_TABLE_NOT_FOUND"
+
+{-# COMPLETE
+  RouteAnalysisCompletionReasonCode_BLACKHOLE_ROUTE_FOR_DESTINATION_FOUND,
+  RouteAnalysisCompletionReasonCode_CYCLIC_PATH_DETECTED,
+  RouteAnalysisCompletionReasonCode_INACTIVE_ROUTE_FOR_DESTINATION_FOUND,
+  RouteAnalysisCompletionReasonCode_MAX_HOPS_EXCEEDED,
+  RouteAnalysisCompletionReasonCode_NO_DESTINATION_ARN_PROVIDED,
+  RouteAnalysisCompletionReasonCode_POSSIBLE_MIDDLEBOX,
+  RouteAnalysisCompletionReasonCode_ROUTE_NOT_FOUND,
+  RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_ATTACH_ARN_NO_MATCH,
+  RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_NOT_FOUND,
+  RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_NOT_IN_TRANSIT_GATEWAY,
+  RouteAnalysisCompletionReasonCode_TRANSIT_GATEWAY_ATTACHMENT_STABLE_ROUTE_TABLE_NOT_FOUND,
+  RouteAnalysisCompletionReasonCode'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/RouteAnalysisCompletionResultCode.hs b/gen/Amazonka/NetworkManager/Types/RouteAnalysisCompletionResultCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/RouteAnalysisCompletionResultCode.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.RouteAnalysisCompletionResultCode
+-- 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.NetworkManager.Types.RouteAnalysisCompletionResultCode
+  ( RouteAnalysisCompletionResultCode
+      ( ..,
+        RouteAnalysisCompletionResultCode_CONNECTED,
+        RouteAnalysisCompletionResultCode_NOT_CONNECTED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RouteAnalysisCompletionResultCode = RouteAnalysisCompletionResultCode'
+  { fromRouteAnalysisCompletionResultCode ::
+      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 RouteAnalysisCompletionResultCode_CONNECTED :: RouteAnalysisCompletionResultCode
+pattern RouteAnalysisCompletionResultCode_CONNECTED = RouteAnalysisCompletionResultCode' "CONNECTED"
+
+pattern RouteAnalysisCompletionResultCode_NOT_CONNECTED :: RouteAnalysisCompletionResultCode
+pattern RouteAnalysisCompletionResultCode_NOT_CONNECTED = RouteAnalysisCompletionResultCode' "NOT_CONNECTED"
+
+{-# COMPLETE
+  RouteAnalysisCompletionResultCode_CONNECTED,
+  RouteAnalysisCompletionResultCode_NOT_CONNECTED,
+  RouteAnalysisCompletionResultCode'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/RouteAnalysisEndpointOptions.hs b/gen/Amazonka/NetworkManager/Types/RouteAnalysisEndpointOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/RouteAnalysisEndpointOptions.hs
@@ -0,0 +1,100 @@
+{-# 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.NetworkManager.Types.RouteAnalysisEndpointOptions
+-- 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.NetworkManager.Types.RouteAnalysisEndpointOptions 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
+
+-- | Describes a source or a destination.
+--
+-- /See:/ 'newRouteAnalysisEndpointOptions' smart constructor.
+data RouteAnalysisEndpointOptions = RouteAnalysisEndpointOptions'
+  { -- | The IP address.
+    ipAddress :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the transit gateway.
+    transitGatewayArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the transit gateway attachment.
+    transitGatewayAttachmentArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RouteAnalysisEndpointOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ipAddress', 'routeAnalysisEndpointOptions_ipAddress' - The IP address.
+--
+-- 'transitGatewayArn', 'routeAnalysisEndpointOptions_transitGatewayArn' - The ARN of the transit gateway.
+--
+-- 'transitGatewayAttachmentArn', 'routeAnalysisEndpointOptions_transitGatewayAttachmentArn' - The ARN of the transit gateway attachment.
+newRouteAnalysisEndpointOptions ::
+  RouteAnalysisEndpointOptions
+newRouteAnalysisEndpointOptions =
+  RouteAnalysisEndpointOptions'
+    { ipAddress =
+        Prelude.Nothing,
+      transitGatewayArn = Prelude.Nothing,
+      transitGatewayAttachmentArn = Prelude.Nothing
+    }
+
+-- | The IP address.
+routeAnalysisEndpointOptions_ipAddress :: Lens.Lens' RouteAnalysisEndpointOptions (Prelude.Maybe Prelude.Text)
+routeAnalysisEndpointOptions_ipAddress = Lens.lens (\RouteAnalysisEndpointOptions' {ipAddress} -> ipAddress) (\s@RouteAnalysisEndpointOptions' {} a -> s {ipAddress = a} :: RouteAnalysisEndpointOptions)
+
+-- | The ARN of the transit gateway.
+routeAnalysisEndpointOptions_transitGatewayArn :: Lens.Lens' RouteAnalysisEndpointOptions (Prelude.Maybe Prelude.Text)
+routeAnalysisEndpointOptions_transitGatewayArn = Lens.lens (\RouteAnalysisEndpointOptions' {transitGatewayArn} -> transitGatewayArn) (\s@RouteAnalysisEndpointOptions' {} a -> s {transitGatewayArn = a} :: RouteAnalysisEndpointOptions)
+
+-- | The ARN of the transit gateway attachment.
+routeAnalysisEndpointOptions_transitGatewayAttachmentArn :: Lens.Lens' RouteAnalysisEndpointOptions (Prelude.Maybe Prelude.Text)
+routeAnalysisEndpointOptions_transitGatewayAttachmentArn = Lens.lens (\RouteAnalysisEndpointOptions' {transitGatewayAttachmentArn} -> transitGatewayAttachmentArn) (\s@RouteAnalysisEndpointOptions' {} a -> s {transitGatewayAttachmentArn = a} :: RouteAnalysisEndpointOptions)
+
+instance Data.FromJSON RouteAnalysisEndpointOptions where
+  parseJSON =
+    Data.withObject
+      "RouteAnalysisEndpointOptions"
+      ( \x ->
+          RouteAnalysisEndpointOptions'
+            Prelude.<$> (x Data..:? "IpAddress")
+            Prelude.<*> (x Data..:? "TransitGatewayArn")
+            Prelude.<*> (x Data..:? "TransitGatewayAttachmentArn")
+      )
+
+instance
+  Prelude.Hashable
+    RouteAnalysisEndpointOptions
+  where
+  hashWithSalt _salt RouteAnalysisEndpointOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` ipAddress
+      `Prelude.hashWithSalt` transitGatewayArn
+      `Prelude.hashWithSalt` transitGatewayAttachmentArn
+
+instance Prelude.NFData RouteAnalysisEndpointOptions where
+  rnf RouteAnalysisEndpointOptions' {..} =
+    Prelude.rnf ipAddress
+      `Prelude.seq` Prelude.rnf transitGatewayArn
+      `Prelude.seq` Prelude.rnf transitGatewayAttachmentArn
diff --git a/gen/Amazonka/NetworkManager/Types/RouteAnalysisEndpointOptionsSpecification.hs b/gen/Amazonka/NetworkManager/Types/RouteAnalysisEndpointOptionsSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/RouteAnalysisEndpointOptionsSpecification.hs
@@ -0,0 +1,97 @@
+{-# 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.NetworkManager.Types.RouteAnalysisEndpointOptionsSpecification
+-- 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.NetworkManager.Types.RouteAnalysisEndpointOptionsSpecification 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
+
+-- | Describes a source or a destination.
+--
+-- /See:/ 'newRouteAnalysisEndpointOptionsSpecification' smart constructor.
+data RouteAnalysisEndpointOptionsSpecification = RouteAnalysisEndpointOptionsSpecification'
+  { -- | The IP address.
+    ipAddress :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the transit gateway attachment.
+    transitGatewayAttachmentArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RouteAnalysisEndpointOptionsSpecification' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ipAddress', 'routeAnalysisEndpointOptionsSpecification_ipAddress' - The IP address.
+--
+-- 'transitGatewayAttachmentArn', 'routeAnalysisEndpointOptionsSpecification_transitGatewayAttachmentArn' - The ARN of the transit gateway attachment.
+newRouteAnalysisEndpointOptionsSpecification ::
+  RouteAnalysisEndpointOptionsSpecification
+newRouteAnalysisEndpointOptionsSpecification =
+  RouteAnalysisEndpointOptionsSpecification'
+    { ipAddress =
+        Prelude.Nothing,
+      transitGatewayAttachmentArn =
+        Prelude.Nothing
+    }
+
+-- | The IP address.
+routeAnalysisEndpointOptionsSpecification_ipAddress :: Lens.Lens' RouteAnalysisEndpointOptionsSpecification (Prelude.Maybe Prelude.Text)
+routeAnalysisEndpointOptionsSpecification_ipAddress = Lens.lens (\RouteAnalysisEndpointOptionsSpecification' {ipAddress} -> ipAddress) (\s@RouteAnalysisEndpointOptionsSpecification' {} a -> s {ipAddress = a} :: RouteAnalysisEndpointOptionsSpecification)
+
+-- | The ARN of the transit gateway attachment.
+routeAnalysisEndpointOptionsSpecification_transitGatewayAttachmentArn :: Lens.Lens' RouteAnalysisEndpointOptionsSpecification (Prelude.Maybe Prelude.Text)
+routeAnalysisEndpointOptionsSpecification_transitGatewayAttachmentArn = Lens.lens (\RouteAnalysisEndpointOptionsSpecification' {transitGatewayAttachmentArn} -> transitGatewayAttachmentArn) (\s@RouteAnalysisEndpointOptionsSpecification' {} a -> s {transitGatewayAttachmentArn = a} :: RouteAnalysisEndpointOptionsSpecification)
+
+instance
+  Prelude.Hashable
+    RouteAnalysisEndpointOptionsSpecification
+  where
+  hashWithSalt
+    _salt
+    RouteAnalysisEndpointOptionsSpecification' {..} =
+      _salt
+        `Prelude.hashWithSalt` ipAddress
+        `Prelude.hashWithSalt` transitGatewayAttachmentArn
+
+instance
+  Prelude.NFData
+    RouteAnalysisEndpointOptionsSpecification
+  where
+  rnf RouteAnalysisEndpointOptionsSpecification' {..} =
+    Prelude.rnf ipAddress
+      `Prelude.seq` Prelude.rnf transitGatewayAttachmentArn
+
+instance
+  Data.ToJSON
+    RouteAnalysisEndpointOptionsSpecification
+  where
+  toJSON RouteAnalysisEndpointOptionsSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("IpAddress" Data..=) Prelude.<$> ipAddress,
+            ("TransitGatewayAttachmentArn" Data..=)
+              Prelude.<$> transitGatewayAttachmentArn
+          ]
+      )
diff --git a/gen/Amazonka/NetworkManager/Types/RouteAnalysisPath.hs b/gen/Amazonka/NetworkManager/Types/RouteAnalysisPath.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/RouteAnalysisPath.hs
@@ -0,0 +1,87 @@
+{-# 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.NetworkManager.Types.RouteAnalysisPath
+-- 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.NetworkManager.Types.RouteAnalysisPath where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.PathComponent
+import Amazonka.NetworkManager.Types.RouteAnalysisCompletion
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a route analysis path.
+--
+-- /See:/ 'newRouteAnalysisPath' smart constructor.
+data RouteAnalysisPath = RouteAnalysisPath'
+  { -- | The status of the analysis at completion.
+    completionStatus :: Prelude.Maybe RouteAnalysisCompletion,
+    -- | The route analysis path.
+    path :: Prelude.Maybe [PathComponent]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RouteAnalysisPath' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'completionStatus', 'routeAnalysisPath_completionStatus' - The status of the analysis at completion.
+--
+-- 'path', 'routeAnalysisPath_path' - The route analysis path.
+newRouteAnalysisPath ::
+  RouteAnalysisPath
+newRouteAnalysisPath =
+  RouteAnalysisPath'
+    { completionStatus =
+        Prelude.Nothing,
+      path = Prelude.Nothing
+    }
+
+-- | The status of the analysis at completion.
+routeAnalysisPath_completionStatus :: Lens.Lens' RouteAnalysisPath (Prelude.Maybe RouteAnalysisCompletion)
+routeAnalysisPath_completionStatus = Lens.lens (\RouteAnalysisPath' {completionStatus} -> completionStatus) (\s@RouteAnalysisPath' {} a -> s {completionStatus = a} :: RouteAnalysisPath)
+
+-- | The route analysis path.
+routeAnalysisPath_path :: Lens.Lens' RouteAnalysisPath (Prelude.Maybe [PathComponent])
+routeAnalysisPath_path = Lens.lens (\RouteAnalysisPath' {path} -> path) (\s@RouteAnalysisPath' {} a -> s {path = a} :: RouteAnalysisPath) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON RouteAnalysisPath where
+  parseJSON =
+    Data.withObject
+      "RouteAnalysisPath"
+      ( \x ->
+          RouteAnalysisPath'
+            Prelude.<$> (x Data..:? "CompletionStatus")
+            Prelude.<*> (x Data..:? "Path" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable RouteAnalysisPath where
+  hashWithSalt _salt RouteAnalysisPath' {..} =
+    _salt
+      `Prelude.hashWithSalt` completionStatus
+      `Prelude.hashWithSalt` path
+
+instance Prelude.NFData RouteAnalysisPath where
+  rnf RouteAnalysisPath' {..} =
+    Prelude.rnf completionStatus
+      `Prelude.seq` Prelude.rnf path
diff --git a/gen/Amazonka/NetworkManager/Types/RouteAnalysisStatus.hs b/gen/Amazonka/NetworkManager/Types/RouteAnalysisStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/RouteAnalysisStatus.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.NetworkManager.Types.RouteAnalysisStatus
+-- 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.NetworkManager.Types.RouteAnalysisStatus
+  ( RouteAnalysisStatus
+      ( ..,
+        RouteAnalysisStatus_COMPLETED,
+        RouteAnalysisStatus_FAILED,
+        RouteAnalysisStatus_RUNNING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RouteAnalysisStatus = RouteAnalysisStatus'
+  { fromRouteAnalysisStatus ::
+      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 RouteAnalysisStatus_COMPLETED :: RouteAnalysisStatus
+pattern RouteAnalysisStatus_COMPLETED = RouteAnalysisStatus' "COMPLETED"
+
+pattern RouteAnalysisStatus_FAILED :: RouteAnalysisStatus
+pattern RouteAnalysisStatus_FAILED = RouteAnalysisStatus' "FAILED"
+
+pattern RouteAnalysisStatus_RUNNING :: RouteAnalysisStatus
+pattern RouteAnalysisStatus_RUNNING = RouteAnalysisStatus' "RUNNING"
+
+{-# COMPLETE
+  RouteAnalysisStatus_COMPLETED,
+  RouteAnalysisStatus_FAILED,
+  RouteAnalysisStatus_RUNNING,
+  RouteAnalysisStatus'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/RouteState.hs b/gen/Amazonka/NetworkManager/Types/RouteState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/RouteState.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.RouteState
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.NetworkManager.Types.RouteState
+  ( RouteState
+      ( ..,
+        RouteState_ACTIVE,
+        RouteState_BLACKHOLE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RouteState = RouteState'
+  { fromRouteState ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RouteState_ACTIVE :: RouteState
+pattern RouteState_ACTIVE = RouteState' "ACTIVE"
+
+pattern RouteState_BLACKHOLE :: RouteState
+pattern RouteState_BLACKHOLE = RouteState' "BLACKHOLE"
+
+{-# COMPLETE
+  RouteState_ACTIVE,
+  RouteState_BLACKHOLE,
+  RouteState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/RouteTableIdentifier.hs b/gen/Amazonka/NetworkManager/Types/RouteTableIdentifier.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/RouteTableIdentifier.hs
@@ -0,0 +1,87 @@
+{-# 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.NetworkManager.Types.RouteTableIdentifier
+-- 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.NetworkManager.Types.RouteTableIdentifier where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.CoreNetworkSegmentEdgeIdentifier
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a route table.
+--
+-- /See:/ 'newRouteTableIdentifier' smart constructor.
+data RouteTableIdentifier = RouteTableIdentifier'
+  { -- | The segment edge in a core network.
+    coreNetworkSegmentEdge :: Prelude.Maybe CoreNetworkSegmentEdgeIdentifier,
+    -- | The ARN of the transit gateway route table.
+    transitGatewayRouteTableArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RouteTableIdentifier' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetworkSegmentEdge', 'routeTableIdentifier_coreNetworkSegmentEdge' - The segment edge in a core network.
+--
+-- 'transitGatewayRouteTableArn', 'routeTableIdentifier_transitGatewayRouteTableArn' - The ARN of the transit gateway route table.
+newRouteTableIdentifier ::
+  RouteTableIdentifier
+newRouteTableIdentifier =
+  RouteTableIdentifier'
+    { coreNetworkSegmentEdge =
+        Prelude.Nothing,
+      transitGatewayRouteTableArn = Prelude.Nothing
+    }
+
+-- | The segment edge in a core network.
+routeTableIdentifier_coreNetworkSegmentEdge :: Lens.Lens' RouteTableIdentifier (Prelude.Maybe CoreNetworkSegmentEdgeIdentifier)
+routeTableIdentifier_coreNetworkSegmentEdge = Lens.lens (\RouteTableIdentifier' {coreNetworkSegmentEdge} -> coreNetworkSegmentEdge) (\s@RouteTableIdentifier' {} a -> s {coreNetworkSegmentEdge = a} :: RouteTableIdentifier)
+
+-- | The ARN of the transit gateway route table.
+routeTableIdentifier_transitGatewayRouteTableArn :: Lens.Lens' RouteTableIdentifier (Prelude.Maybe Prelude.Text)
+routeTableIdentifier_transitGatewayRouteTableArn = Lens.lens (\RouteTableIdentifier' {transitGatewayRouteTableArn} -> transitGatewayRouteTableArn) (\s@RouteTableIdentifier' {} a -> s {transitGatewayRouteTableArn = a} :: RouteTableIdentifier)
+
+instance Prelude.Hashable RouteTableIdentifier where
+  hashWithSalt _salt RouteTableIdentifier' {..} =
+    _salt
+      `Prelude.hashWithSalt` coreNetworkSegmentEdge
+      `Prelude.hashWithSalt` transitGatewayRouteTableArn
+
+instance Prelude.NFData RouteTableIdentifier where
+  rnf RouteTableIdentifier' {..} =
+    Prelude.rnf coreNetworkSegmentEdge
+      `Prelude.seq` Prelude.rnf transitGatewayRouteTableArn
+
+instance Data.ToJSON RouteTableIdentifier where
+  toJSON RouteTableIdentifier' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CoreNetworkSegmentEdge" Data..=)
+              Prelude.<$> coreNetworkSegmentEdge,
+            ("TransitGatewayRouteTableArn" Data..=)
+              Prelude.<$> transitGatewayRouteTableArn
+          ]
+      )
diff --git a/gen/Amazonka/NetworkManager/Types/RouteTableType.hs b/gen/Amazonka/NetworkManager/Types/RouteTableType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/RouteTableType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.RouteTableType
+-- 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.NetworkManager.Types.RouteTableType
+  ( RouteTableType
+      ( ..,
+        RouteTableType_CORE_NETWORK_SEGMENT,
+        RouteTableType_TRANSIT_GATEWAY_ROUTE_TABLE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RouteTableType = RouteTableType'
+  { fromRouteTableType ::
+      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 RouteTableType_CORE_NETWORK_SEGMENT :: RouteTableType
+pattern RouteTableType_CORE_NETWORK_SEGMENT = RouteTableType' "CORE_NETWORK_SEGMENT"
+
+pattern RouteTableType_TRANSIT_GATEWAY_ROUTE_TABLE :: RouteTableType
+pattern RouteTableType_TRANSIT_GATEWAY_ROUTE_TABLE = RouteTableType' "TRANSIT_GATEWAY_ROUTE_TABLE"
+
+{-# COMPLETE
+  RouteTableType_CORE_NETWORK_SEGMENT,
+  RouteTableType_TRANSIT_GATEWAY_ROUTE_TABLE,
+  RouteTableType'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/RouteType.hs b/gen/Amazonka/NetworkManager/Types/RouteType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/RouteType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.RouteType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.NetworkManager.Types.RouteType
+  ( RouteType
+      ( ..,
+        RouteType_PROPAGATED,
+        RouteType_STATIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RouteType = RouteType'
+  { fromRouteType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern RouteType_PROPAGATED :: RouteType
+pattern RouteType_PROPAGATED = RouteType' "PROPAGATED"
+
+pattern RouteType_STATIC :: RouteType
+pattern RouteType_STATIC = RouteType' "STATIC"
+
+{-# COMPLETE
+  RouteType_PROPAGATED,
+  RouteType_STATIC,
+  RouteType'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/Site.hs b/gen/Amazonka/NetworkManager/Types/Site.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/Site.hs
@@ -0,0 +1,159 @@
+{-# 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.NetworkManager.Types.Site
+-- 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.NetworkManager.Types.Site where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.Location
+import Amazonka.NetworkManager.Types.SiteState
+import Amazonka.NetworkManager.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a site.
+--
+-- /See:/ 'newSite' smart constructor.
+data Site = Site'
+  { -- | The date and time that the site was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The description of the site.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The location of the site.
+    location :: Prelude.Maybe (Data.Sensitive Location),
+    -- | The Amazon Resource Name (ARN) of the site.
+    siteArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the site.
+    siteId :: Prelude.Maybe Prelude.Text,
+    -- | The state of the site.
+    state :: Prelude.Maybe SiteState,
+    -- | The tags for the site.
+    tags :: Prelude.Maybe [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Site' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'site_createdAt' - The date and time that the site was created.
+--
+-- 'description', 'site_description' - The description of the site.
+--
+-- 'globalNetworkId', 'site_globalNetworkId' - The ID of the global network.
+--
+-- 'location', 'site_location' - The location of the site.
+--
+-- 'siteArn', 'site_siteArn' - The Amazon Resource Name (ARN) of the site.
+--
+-- 'siteId', 'site_siteId' - The ID of the site.
+--
+-- 'state', 'site_state' - The state of the site.
+--
+-- 'tags', 'site_tags' - The tags for the site.
+newSite ::
+  Site
+newSite =
+  Site'
+    { createdAt = Prelude.Nothing,
+      description = Prelude.Nothing,
+      globalNetworkId = Prelude.Nothing,
+      location = Prelude.Nothing,
+      siteArn = Prelude.Nothing,
+      siteId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The date and time that the site was created.
+site_createdAt :: Lens.Lens' Site (Prelude.Maybe Prelude.UTCTime)
+site_createdAt = Lens.lens (\Site' {createdAt} -> createdAt) (\s@Site' {} a -> s {createdAt = a} :: Site) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the site.
+site_description :: Lens.Lens' Site (Prelude.Maybe Prelude.Text)
+site_description = Lens.lens (\Site' {description} -> description) (\s@Site' {} a -> s {description = a} :: Site)
+
+-- | The ID of the global network.
+site_globalNetworkId :: Lens.Lens' Site (Prelude.Maybe Prelude.Text)
+site_globalNetworkId = Lens.lens (\Site' {globalNetworkId} -> globalNetworkId) (\s@Site' {} a -> s {globalNetworkId = a} :: Site)
+
+-- | The location of the site.
+site_location :: Lens.Lens' Site (Prelude.Maybe Location)
+site_location = Lens.lens (\Site' {location} -> location) (\s@Site' {} a -> s {location = a} :: Site) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Amazon Resource Name (ARN) of the site.
+site_siteArn :: Lens.Lens' Site (Prelude.Maybe Prelude.Text)
+site_siteArn = Lens.lens (\Site' {siteArn} -> siteArn) (\s@Site' {} a -> s {siteArn = a} :: Site)
+
+-- | The ID of the site.
+site_siteId :: Lens.Lens' Site (Prelude.Maybe Prelude.Text)
+site_siteId = Lens.lens (\Site' {siteId} -> siteId) (\s@Site' {} a -> s {siteId = a} :: Site)
+
+-- | The state of the site.
+site_state :: Lens.Lens' Site (Prelude.Maybe SiteState)
+site_state = Lens.lens (\Site' {state} -> state) (\s@Site' {} a -> s {state = a} :: Site)
+
+-- | The tags for the site.
+site_tags :: Lens.Lens' Site (Prelude.Maybe [Tag])
+site_tags = Lens.lens (\Site' {tags} -> tags) (\s@Site' {} a -> s {tags = a} :: Site) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Site where
+  parseJSON =
+    Data.withObject
+      "Site"
+      ( \x ->
+          Site'
+            Prelude.<$> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "GlobalNetworkId")
+            Prelude.<*> (x Data..:? "Location")
+            Prelude.<*> (x Data..:? "SiteArn")
+            Prelude.<*> (x Data..:? "SiteId")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable Site where
+  hashWithSalt _salt Site' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` location
+      `Prelude.hashWithSalt` siteArn
+      `Prelude.hashWithSalt` siteId
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData Site where
+  rnf Site' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf location
+      `Prelude.seq` Prelude.rnf siteArn
+      `Prelude.seq` Prelude.rnf siteId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/NetworkManager/Types/SiteState.hs b/gen/Amazonka/NetworkManager/Types/SiteState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/SiteState.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.NetworkManager.Types.SiteState
+-- 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.NetworkManager.Types.SiteState
+  ( SiteState
+      ( ..,
+        SiteState_AVAILABLE,
+        SiteState_DELETING,
+        SiteState_PENDING,
+        SiteState_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SiteState = SiteState'
+  { fromSiteState ::
+      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 SiteState_AVAILABLE :: SiteState
+pattern SiteState_AVAILABLE = SiteState' "AVAILABLE"
+
+pattern SiteState_DELETING :: SiteState
+pattern SiteState_DELETING = SiteState' "DELETING"
+
+pattern SiteState_PENDING :: SiteState
+pattern SiteState_PENDING = SiteState' "PENDING"
+
+pattern SiteState_UPDATING :: SiteState
+pattern SiteState_UPDATING = SiteState' "UPDATING"
+
+{-# COMPLETE
+  SiteState_AVAILABLE,
+  SiteState_DELETING,
+  SiteState_PENDING,
+  SiteState_UPDATING,
+  SiteState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/SiteToSiteVpnAttachment.hs b/gen/Amazonka/NetworkManager/Types/SiteToSiteVpnAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/SiteToSiteVpnAttachment.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.NetworkManager.Types.SiteToSiteVpnAttachment
+-- 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.NetworkManager.Types.SiteToSiteVpnAttachment where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.Attachment
+import qualified Amazonka.Prelude as Prelude
+
+-- | Creates a site-to-site VPN attachment.
+--
+-- /See:/ 'newSiteToSiteVpnAttachment' smart constructor.
+data SiteToSiteVpnAttachment = SiteToSiteVpnAttachment'
+  { -- | Provides details about a site-to-site VPN attachment.
+    attachment :: Prelude.Maybe Attachment,
+    -- | The ARN of the site-to-site VPN attachment.
+    vpnConnectionArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SiteToSiteVpnAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachment', 'siteToSiteVpnAttachment_attachment' - Provides details about a site-to-site VPN attachment.
+--
+-- 'vpnConnectionArn', 'siteToSiteVpnAttachment_vpnConnectionArn' - The ARN of the site-to-site VPN attachment.
+newSiteToSiteVpnAttachment ::
+  SiteToSiteVpnAttachment
+newSiteToSiteVpnAttachment =
+  SiteToSiteVpnAttachment'
+    { attachment =
+        Prelude.Nothing,
+      vpnConnectionArn = Prelude.Nothing
+    }
+
+-- | Provides details about a site-to-site VPN attachment.
+siteToSiteVpnAttachment_attachment :: Lens.Lens' SiteToSiteVpnAttachment (Prelude.Maybe Attachment)
+siteToSiteVpnAttachment_attachment = Lens.lens (\SiteToSiteVpnAttachment' {attachment} -> attachment) (\s@SiteToSiteVpnAttachment' {} a -> s {attachment = a} :: SiteToSiteVpnAttachment)
+
+-- | The ARN of the site-to-site VPN attachment.
+siteToSiteVpnAttachment_vpnConnectionArn :: Lens.Lens' SiteToSiteVpnAttachment (Prelude.Maybe Prelude.Text)
+siteToSiteVpnAttachment_vpnConnectionArn = Lens.lens (\SiteToSiteVpnAttachment' {vpnConnectionArn} -> vpnConnectionArn) (\s@SiteToSiteVpnAttachment' {} a -> s {vpnConnectionArn = a} :: SiteToSiteVpnAttachment)
+
+instance Data.FromJSON SiteToSiteVpnAttachment where
+  parseJSON =
+    Data.withObject
+      "SiteToSiteVpnAttachment"
+      ( \x ->
+          SiteToSiteVpnAttachment'
+            Prelude.<$> (x Data..:? "Attachment")
+            Prelude.<*> (x Data..:? "VpnConnectionArn")
+      )
+
+instance Prelude.Hashable SiteToSiteVpnAttachment where
+  hashWithSalt _salt SiteToSiteVpnAttachment' {..} =
+    _salt
+      `Prelude.hashWithSalt` attachment
+      `Prelude.hashWithSalt` vpnConnectionArn
+
+instance Prelude.NFData SiteToSiteVpnAttachment where
+  rnf SiteToSiteVpnAttachment' {..} =
+    Prelude.rnf attachment
+      `Prelude.seq` Prelude.rnf vpnConnectionArn
diff --git a/gen/Amazonka/NetworkManager/Types/Tag.hs b/gen/Amazonka/NetworkManager/Types/Tag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/Tag.hs
@@ -0,0 +1,104 @@
+{-# 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.NetworkManager.Types.Tag
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.NetworkManager.Types.Tag where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a tag.
+--
+-- /See:/ 'newTag' smart constructor.
+data Tag = Tag'
+  { -- | The tag key.
+    --
+    -- Constraints: Maximum length of 128 characters.
+    key :: Prelude.Maybe Prelude.Text,
+    -- | The tag value.
+    --
+    -- Constraints: Maximum length of 256 characters.
+    value :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Tag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'key', 'tag_key' - The tag key.
+--
+-- Constraints: Maximum length of 128 characters.
+--
+-- 'value', 'tag_value' - The tag value.
+--
+-- Constraints: Maximum length of 256 characters.
+newTag ::
+  Tag
+newTag =
+  Tag'
+    { key = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The tag key.
+--
+-- Constraints: Maximum length of 128 characters.
+tag_key :: Lens.Lens' Tag (Prelude.Maybe Prelude.Text)
+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)
+
+-- | The tag value.
+--
+-- Constraints: Maximum length of 256 characters.
+tag_value :: Lens.Lens' Tag (Prelude.Maybe Prelude.Text)
+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)
+
+instance Data.FromJSON Tag where
+  parseJSON =
+    Data.withObject
+      "Tag"
+      ( \x ->
+          Tag'
+            Prelude.<$> (x Data..:? "Key")
+            Prelude.<*> (x Data..:? "Value")
+      )
+
+instance Prelude.Hashable Tag where
+  hashWithSalt _salt Tag' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Tag where
+  rnf Tag' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON Tag where
+  toJSON Tag' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Key" Data..=) Prelude.<$> key,
+            ("Value" Data..=) Prelude.<$> value
+          ]
+      )
diff --git a/gen/Amazonka/NetworkManager/Types/TransitGatewayConnectPeerAssociation.hs b/gen/Amazonka/NetworkManager/Types/TransitGatewayConnectPeerAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/TransitGatewayConnectPeerAssociation.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.TransitGatewayConnectPeerAssociation
+-- 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.NetworkManager.Types.TransitGatewayConnectPeerAssociation where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.TransitGatewayConnectPeerAssociationState
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a transit gateway Connect peer association.
+--
+-- /See:/ 'newTransitGatewayConnectPeerAssociation' smart constructor.
+data TransitGatewayConnectPeerAssociation = TransitGatewayConnectPeerAssociation'
+  { -- | The ID of the device.
+    deviceId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the link.
+    linkId :: Prelude.Maybe Prelude.Text,
+    -- | The state of the association.
+    state :: Prelude.Maybe TransitGatewayConnectPeerAssociationState,
+    -- | The Amazon Resource Name (ARN) of the transit gateway Connect peer.
+    transitGatewayConnectPeerArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransitGatewayConnectPeerAssociation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceId', 'transitGatewayConnectPeerAssociation_deviceId' - The ID of the device.
+--
+-- 'globalNetworkId', 'transitGatewayConnectPeerAssociation_globalNetworkId' - The ID of the global network.
+--
+-- 'linkId', 'transitGatewayConnectPeerAssociation_linkId' - The ID of the link.
+--
+-- 'state', 'transitGatewayConnectPeerAssociation_state' - The state of the association.
+--
+-- 'transitGatewayConnectPeerArn', 'transitGatewayConnectPeerAssociation_transitGatewayConnectPeerArn' - The Amazon Resource Name (ARN) of the transit gateway Connect peer.
+newTransitGatewayConnectPeerAssociation ::
+  TransitGatewayConnectPeerAssociation
+newTransitGatewayConnectPeerAssociation =
+  TransitGatewayConnectPeerAssociation'
+    { deviceId =
+        Prelude.Nothing,
+      globalNetworkId = Prelude.Nothing,
+      linkId = Prelude.Nothing,
+      state = Prelude.Nothing,
+      transitGatewayConnectPeerArn =
+        Prelude.Nothing
+    }
+
+-- | The ID of the device.
+transitGatewayConnectPeerAssociation_deviceId :: Lens.Lens' TransitGatewayConnectPeerAssociation (Prelude.Maybe Prelude.Text)
+transitGatewayConnectPeerAssociation_deviceId = Lens.lens (\TransitGatewayConnectPeerAssociation' {deviceId} -> deviceId) (\s@TransitGatewayConnectPeerAssociation' {} a -> s {deviceId = a} :: TransitGatewayConnectPeerAssociation)
+
+-- | The ID of the global network.
+transitGatewayConnectPeerAssociation_globalNetworkId :: Lens.Lens' TransitGatewayConnectPeerAssociation (Prelude.Maybe Prelude.Text)
+transitGatewayConnectPeerAssociation_globalNetworkId = Lens.lens (\TransitGatewayConnectPeerAssociation' {globalNetworkId} -> globalNetworkId) (\s@TransitGatewayConnectPeerAssociation' {} a -> s {globalNetworkId = a} :: TransitGatewayConnectPeerAssociation)
+
+-- | The ID of the link.
+transitGatewayConnectPeerAssociation_linkId :: Lens.Lens' TransitGatewayConnectPeerAssociation (Prelude.Maybe Prelude.Text)
+transitGatewayConnectPeerAssociation_linkId = Lens.lens (\TransitGatewayConnectPeerAssociation' {linkId} -> linkId) (\s@TransitGatewayConnectPeerAssociation' {} a -> s {linkId = a} :: TransitGatewayConnectPeerAssociation)
+
+-- | The state of the association.
+transitGatewayConnectPeerAssociation_state :: Lens.Lens' TransitGatewayConnectPeerAssociation (Prelude.Maybe TransitGatewayConnectPeerAssociationState)
+transitGatewayConnectPeerAssociation_state = Lens.lens (\TransitGatewayConnectPeerAssociation' {state} -> state) (\s@TransitGatewayConnectPeerAssociation' {} a -> s {state = a} :: TransitGatewayConnectPeerAssociation)
+
+-- | The Amazon Resource Name (ARN) of the transit gateway Connect peer.
+transitGatewayConnectPeerAssociation_transitGatewayConnectPeerArn :: Lens.Lens' TransitGatewayConnectPeerAssociation (Prelude.Maybe Prelude.Text)
+transitGatewayConnectPeerAssociation_transitGatewayConnectPeerArn = Lens.lens (\TransitGatewayConnectPeerAssociation' {transitGatewayConnectPeerArn} -> transitGatewayConnectPeerArn) (\s@TransitGatewayConnectPeerAssociation' {} a -> s {transitGatewayConnectPeerArn = a} :: TransitGatewayConnectPeerAssociation)
+
+instance
+  Data.FromJSON
+    TransitGatewayConnectPeerAssociation
+  where
+  parseJSON =
+    Data.withObject
+      "TransitGatewayConnectPeerAssociation"
+      ( \x ->
+          TransitGatewayConnectPeerAssociation'
+            Prelude.<$> (x Data..:? "DeviceId")
+            Prelude.<*> (x Data..:? "GlobalNetworkId")
+            Prelude.<*> (x Data..:? "LinkId")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "TransitGatewayConnectPeerArn")
+      )
+
+instance
+  Prelude.Hashable
+    TransitGatewayConnectPeerAssociation
+  where
+  hashWithSalt
+    _salt
+    TransitGatewayConnectPeerAssociation' {..} =
+      _salt
+        `Prelude.hashWithSalt` deviceId
+        `Prelude.hashWithSalt` globalNetworkId
+        `Prelude.hashWithSalt` linkId
+        `Prelude.hashWithSalt` state
+        `Prelude.hashWithSalt` transitGatewayConnectPeerArn
+
+instance
+  Prelude.NFData
+    TransitGatewayConnectPeerAssociation
+  where
+  rnf TransitGatewayConnectPeerAssociation' {..} =
+    Prelude.rnf deviceId
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf linkId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf transitGatewayConnectPeerArn
diff --git a/gen/Amazonka/NetworkManager/Types/TransitGatewayConnectPeerAssociationState.hs b/gen/Amazonka/NetworkManager/Types/TransitGatewayConnectPeerAssociationState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/TransitGatewayConnectPeerAssociationState.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.NetworkManager.Types.TransitGatewayConnectPeerAssociationState
+-- 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.NetworkManager.Types.TransitGatewayConnectPeerAssociationState
+  ( TransitGatewayConnectPeerAssociationState
+      ( ..,
+        TransitGatewayConnectPeerAssociationState_AVAILABLE,
+        TransitGatewayConnectPeerAssociationState_DELETED,
+        TransitGatewayConnectPeerAssociationState_DELETING,
+        TransitGatewayConnectPeerAssociationState_PENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TransitGatewayConnectPeerAssociationState = TransitGatewayConnectPeerAssociationState'
+  { fromTransitGatewayConnectPeerAssociationState ::
+      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 TransitGatewayConnectPeerAssociationState_AVAILABLE :: TransitGatewayConnectPeerAssociationState
+pattern TransitGatewayConnectPeerAssociationState_AVAILABLE = TransitGatewayConnectPeerAssociationState' "AVAILABLE"
+
+pattern TransitGatewayConnectPeerAssociationState_DELETED :: TransitGatewayConnectPeerAssociationState
+pattern TransitGatewayConnectPeerAssociationState_DELETED = TransitGatewayConnectPeerAssociationState' "DELETED"
+
+pattern TransitGatewayConnectPeerAssociationState_DELETING :: TransitGatewayConnectPeerAssociationState
+pattern TransitGatewayConnectPeerAssociationState_DELETING = TransitGatewayConnectPeerAssociationState' "DELETING"
+
+pattern TransitGatewayConnectPeerAssociationState_PENDING :: TransitGatewayConnectPeerAssociationState
+pattern TransitGatewayConnectPeerAssociationState_PENDING = TransitGatewayConnectPeerAssociationState' "PENDING"
+
+{-# COMPLETE
+  TransitGatewayConnectPeerAssociationState_AVAILABLE,
+  TransitGatewayConnectPeerAssociationState_DELETED,
+  TransitGatewayConnectPeerAssociationState_DELETING,
+  TransitGatewayConnectPeerAssociationState_PENDING,
+  TransitGatewayConnectPeerAssociationState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/TransitGatewayPeering.hs b/gen/Amazonka/NetworkManager/Types/TransitGatewayPeering.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/TransitGatewayPeering.hs
@@ -0,0 +1,97 @@
+{-# 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.NetworkManager.Types.TransitGatewayPeering
+-- 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.NetworkManager.Types.TransitGatewayPeering where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.Peering
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a transit gateway peering attachment.
+--
+-- /See:/ 'newTransitGatewayPeering' smart constructor.
+data TransitGatewayPeering = TransitGatewayPeering'
+  { -- | Describes a transit gateway peer connection.
+    peering :: Prelude.Maybe Peering,
+    -- | The ARN of the transit gateway.
+    transitGatewayArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the transit gateway peering attachment.
+    transitGatewayPeeringAttachmentId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransitGatewayPeering' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'peering', 'transitGatewayPeering_peering' - Describes a transit gateway peer connection.
+--
+-- 'transitGatewayArn', 'transitGatewayPeering_transitGatewayArn' - The ARN of the transit gateway.
+--
+-- 'transitGatewayPeeringAttachmentId', 'transitGatewayPeering_transitGatewayPeeringAttachmentId' - The ID of the transit gateway peering attachment.
+newTransitGatewayPeering ::
+  TransitGatewayPeering
+newTransitGatewayPeering =
+  TransitGatewayPeering'
+    { peering = Prelude.Nothing,
+      transitGatewayArn = Prelude.Nothing,
+      transitGatewayPeeringAttachmentId = Prelude.Nothing
+    }
+
+-- | Describes a transit gateway peer connection.
+transitGatewayPeering_peering :: Lens.Lens' TransitGatewayPeering (Prelude.Maybe Peering)
+transitGatewayPeering_peering = Lens.lens (\TransitGatewayPeering' {peering} -> peering) (\s@TransitGatewayPeering' {} a -> s {peering = a} :: TransitGatewayPeering)
+
+-- | The ARN of the transit gateway.
+transitGatewayPeering_transitGatewayArn :: Lens.Lens' TransitGatewayPeering (Prelude.Maybe Prelude.Text)
+transitGatewayPeering_transitGatewayArn = Lens.lens (\TransitGatewayPeering' {transitGatewayArn} -> transitGatewayArn) (\s@TransitGatewayPeering' {} a -> s {transitGatewayArn = a} :: TransitGatewayPeering)
+
+-- | The ID of the transit gateway peering attachment.
+transitGatewayPeering_transitGatewayPeeringAttachmentId :: Lens.Lens' TransitGatewayPeering (Prelude.Maybe Prelude.Text)
+transitGatewayPeering_transitGatewayPeeringAttachmentId = Lens.lens (\TransitGatewayPeering' {transitGatewayPeeringAttachmentId} -> transitGatewayPeeringAttachmentId) (\s@TransitGatewayPeering' {} a -> s {transitGatewayPeeringAttachmentId = a} :: TransitGatewayPeering)
+
+instance Data.FromJSON TransitGatewayPeering where
+  parseJSON =
+    Data.withObject
+      "TransitGatewayPeering"
+      ( \x ->
+          TransitGatewayPeering'
+            Prelude.<$> (x Data..:? "Peering")
+            Prelude.<*> (x Data..:? "TransitGatewayArn")
+            Prelude.<*> (x Data..:? "TransitGatewayPeeringAttachmentId")
+      )
+
+instance Prelude.Hashable TransitGatewayPeering where
+  hashWithSalt _salt TransitGatewayPeering' {..} =
+    _salt
+      `Prelude.hashWithSalt` peering
+      `Prelude.hashWithSalt` transitGatewayArn
+      `Prelude.hashWithSalt` transitGatewayPeeringAttachmentId
+
+instance Prelude.NFData TransitGatewayPeering where
+  rnf TransitGatewayPeering' {..} =
+    Prelude.rnf peering
+      `Prelude.seq` Prelude.rnf transitGatewayArn
+      `Prelude.seq` Prelude.rnf transitGatewayPeeringAttachmentId
diff --git a/gen/Amazonka/NetworkManager/Types/TransitGatewayRegistration.hs b/gen/Amazonka/NetworkManager/Types/TransitGatewayRegistration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/TransitGatewayRegistration.hs
@@ -0,0 +1,98 @@
+{-# 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.NetworkManager.Types.TransitGatewayRegistration
+-- 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.NetworkManager.Types.TransitGatewayRegistration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.TransitGatewayRegistrationStateReason
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the registration of a transit gateway to a global network.
+--
+-- /See:/ 'newTransitGatewayRegistration' smart constructor.
+data TransitGatewayRegistration = TransitGatewayRegistration'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Maybe Prelude.Text,
+    -- | The state of the transit gateway registration.
+    state :: Prelude.Maybe TransitGatewayRegistrationStateReason,
+    -- | The Amazon Resource Name (ARN) of the transit gateway.
+    transitGatewayArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransitGatewayRegistration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'transitGatewayRegistration_globalNetworkId' - The ID of the global network.
+--
+-- 'state', 'transitGatewayRegistration_state' - The state of the transit gateway registration.
+--
+-- 'transitGatewayArn', 'transitGatewayRegistration_transitGatewayArn' - The Amazon Resource Name (ARN) of the transit gateway.
+newTransitGatewayRegistration ::
+  TransitGatewayRegistration
+newTransitGatewayRegistration =
+  TransitGatewayRegistration'
+    { globalNetworkId =
+        Prelude.Nothing,
+      state = Prelude.Nothing,
+      transitGatewayArn = Prelude.Nothing
+    }
+
+-- | The ID of the global network.
+transitGatewayRegistration_globalNetworkId :: Lens.Lens' TransitGatewayRegistration (Prelude.Maybe Prelude.Text)
+transitGatewayRegistration_globalNetworkId = Lens.lens (\TransitGatewayRegistration' {globalNetworkId} -> globalNetworkId) (\s@TransitGatewayRegistration' {} a -> s {globalNetworkId = a} :: TransitGatewayRegistration)
+
+-- | The state of the transit gateway registration.
+transitGatewayRegistration_state :: Lens.Lens' TransitGatewayRegistration (Prelude.Maybe TransitGatewayRegistrationStateReason)
+transitGatewayRegistration_state = Lens.lens (\TransitGatewayRegistration' {state} -> state) (\s@TransitGatewayRegistration' {} a -> s {state = a} :: TransitGatewayRegistration)
+
+-- | The Amazon Resource Name (ARN) of the transit gateway.
+transitGatewayRegistration_transitGatewayArn :: Lens.Lens' TransitGatewayRegistration (Prelude.Maybe Prelude.Text)
+transitGatewayRegistration_transitGatewayArn = Lens.lens (\TransitGatewayRegistration' {transitGatewayArn} -> transitGatewayArn) (\s@TransitGatewayRegistration' {} a -> s {transitGatewayArn = a} :: TransitGatewayRegistration)
+
+instance Data.FromJSON TransitGatewayRegistration where
+  parseJSON =
+    Data.withObject
+      "TransitGatewayRegistration"
+      ( \x ->
+          TransitGatewayRegistration'
+            Prelude.<$> (x Data..:? "GlobalNetworkId")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "TransitGatewayArn")
+      )
+
+instance Prelude.Hashable TransitGatewayRegistration where
+  hashWithSalt _salt TransitGatewayRegistration' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` transitGatewayArn
+
+instance Prelude.NFData TransitGatewayRegistration where
+  rnf TransitGatewayRegistration' {..} =
+    Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf transitGatewayArn
diff --git a/gen/Amazonka/NetworkManager/Types/TransitGatewayRegistrationState.hs b/gen/Amazonka/NetworkManager/Types/TransitGatewayRegistrationState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/TransitGatewayRegistrationState.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.NetworkManager.Types.TransitGatewayRegistrationState
+-- 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.NetworkManager.Types.TransitGatewayRegistrationState
+  ( TransitGatewayRegistrationState
+      ( ..,
+        TransitGatewayRegistrationState_AVAILABLE,
+        TransitGatewayRegistrationState_DELETED,
+        TransitGatewayRegistrationState_DELETING,
+        TransitGatewayRegistrationState_FAILED,
+        TransitGatewayRegistrationState_PENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TransitGatewayRegistrationState = TransitGatewayRegistrationState'
+  { fromTransitGatewayRegistrationState ::
+      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 TransitGatewayRegistrationState_AVAILABLE :: TransitGatewayRegistrationState
+pattern TransitGatewayRegistrationState_AVAILABLE = TransitGatewayRegistrationState' "AVAILABLE"
+
+pattern TransitGatewayRegistrationState_DELETED :: TransitGatewayRegistrationState
+pattern TransitGatewayRegistrationState_DELETED = TransitGatewayRegistrationState' "DELETED"
+
+pattern TransitGatewayRegistrationState_DELETING :: TransitGatewayRegistrationState
+pattern TransitGatewayRegistrationState_DELETING = TransitGatewayRegistrationState' "DELETING"
+
+pattern TransitGatewayRegistrationState_FAILED :: TransitGatewayRegistrationState
+pattern TransitGatewayRegistrationState_FAILED = TransitGatewayRegistrationState' "FAILED"
+
+pattern TransitGatewayRegistrationState_PENDING :: TransitGatewayRegistrationState
+pattern TransitGatewayRegistrationState_PENDING = TransitGatewayRegistrationState' "PENDING"
+
+{-# COMPLETE
+  TransitGatewayRegistrationState_AVAILABLE,
+  TransitGatewayRegistrationState_DELETED,
+  TransitGatewayRegistrationState_DELETING,
+  TransitGatewayRegistrationState_FAILED,
+  TransitGatewayRegistrationState_PENDING,
+  TransitGatewayRegistrationState'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/TransitGatewayRegistrationStateReason.hs b/gen/Amazonka/NetworkManager/Types/TransitGatewayRegistrationStateReason.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/TransitGatewayRegistrationStateReason.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.NetworkManager.Types.TransitGatewayRegistrationStateReason
+-- 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.NetworkManager.Types.TransitGatewayRegistrationStateReason where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.TransitGatewayRegistrationState
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the status of a transit gateway registration.
+--
+-- /See:/ 'newTransitGatewayRegistrationStateReason' smart constructor.
+data TransitGatewayRegistrationStateReason = TransitGatewayRegistrationStateReason'
+  { -- | The code for the state reason.
+    code :: Prelude.Maybe TransitGatewayRegistrationState,
+    -- | The message for the state reason.
+    message :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransitGatewayRegistrationStateReason' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'code', 'transitGatewayRegistrationStateReason_code' - The code for the state reason.
+--
+-- 'message', 'transitGatewayRegistrationStateReason_message' - The message for the state reason.
+newTransitGatewayRegistrationStateReason ::
+  TransitGatewayRegistrationStateReason
+newTransitGatewayRegistrationStateReason =
+  TransitGatewayRegistrationStateReason'
+    { code =
+        Prelude.Nothing,
+      message = Prelude.Nothing
+    }
+
+-- | The code for the state reason.
+transitGatewayRegistrationStateReason_code :: Lens.Lens' TransitGatewayRegistrationStateReason (Prelude.Maybe TransitGatewayRegistrationState)
+transitGatewayRegistrationStateReason_code = Lens.lens (\TransitGatewayRegistrationStateReason' {code} -> code) (\s@TransitGatewayRegistrationStateReason' {} a -> s {code = a} :: TransitGatewayRegistrationStateReason)
+
+-- | The message for the state reason.
+transitGatewayRegistrationStateReason_message :: Lens.Lens' TransitGatewayRegistrationStateReason (Prelude.Maybe Prelude.Text)
+transitGatewayRegistrationStateReason_message = Lens.lens (\TransitGatewayRegistrationStateReason' {message} -> message) (\s@TransitGatewayRegistrationStateReason' {} a -> s {message = a} :: TransitGatewayRegistrationStateReason)
+
+instance
+  Data.FromJSON
+    TransitGatewayRegistrationStateReason
+  where
+  parseJSON =
+    Data.withObject
+      "TransitGatewayRegistrationStateReason"
+      ( \x ->
+          TransitGatewayRegistrationStateReason'
+            Prelude.<$> (x Data..:? "Code")
+            Prelude.<*> (x Data..:? "Message")
+      )
+
+instance
+  Prelude.Hashable
+    TransitGatewayRegistrationStateReason
+  where
+  hashWithSalt
+    _salt
+    TransitGatewayRegistrationStateReason' {..} =
+      _salt
+        `Prelude.hashWithSalt` code
+        `Prelude.hashWithSalt` message
+
+instance
+  Prelude.NFData
+    TransitGatewayRegistrationStateReason
+  where
+  rnf TransitGatewayRegistrationStateReason' {..} =
+    Prelude.rnf code `Prelude.seq` Prelude.rnf message
diff --git a/gen/Amazonka/NetworkManager/Types/TransitGatewayRouteTableAttachment.hs b/gen/Amazonka/NetworkManager/Types/TransitGatewayRouteTableAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/TransitGatewayRouteTableAttachment.hs
@@ -0,0 +1,109 @@
+{-# 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.NetworkManager.Types.TransitGatewayRouteTableAttachment
+-- 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.NetworkManager.Types.TransitGatewayRouteTableAttachment where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.Attachment
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a transit gateway route table attachment.
+--
+-- /See:/ 'newTransitGatewayRouteTableAttachment' smart constructor.
+data TransitGatewayRouteTableAttachment = TransitGatewayRouteTableAttachment'
+  { attachment :: Prelude.Maybe Attachment,
+    -- | The ID of the peering attachment.
+    peeringId :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the transit gateway attachment route table.
+    transitGatewayRouteTableArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TransitGatewayRouteTableAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachment', 'transitGatewayRouteTableAttachment_attachment' - Undocumented member.
+--
+-- 'peeringId', 'transitGatewayRouteTableAttachment_peeringId' - The ID of the peering attachment.
+--
+-- 'transitGatewayRouteTableArn', 'transitGatewayRouteTableAttachment_transitGatewayRouteTableArn' - The ARN of the transit gateway attachment route table.
+newTransitGatewayRouteTableAttachment ::
+  TransitGatewayRouteTableAttachment
+newTransitGatewayRouteTableAttachment =
+  TransitGatewayRouteTableAttachment'
+    { attachment =
+        Prelude.Nothing,
+      peeringId = Prelude.Nothing,
+      transitGatewayRouteTableArn =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+transitGatewayRouteTableAttachment_attachment :: Lens.Lens' TransitGatewayRouteTableAttachment (Prelude.Maybe Attachment)
+transitGatewayRouteTableAttachment_attachment = Lens.lens (\TransitGatewayRouteTableAttachment' {attachment} -> attachment) (\s@TransitGatewayRouteTableAttachment' {} a -> s {attachment = a} :: TransitGatewayRouteTableAttachment)
+
+-- | The ID of the peering attachment.
+transitGatewayRouteTableAttachment_peeringId :: Lens.Lens' TransitGatewayRouteTableAttachment (Prelude.Maybe Prelude.Text)
+transitGatewayRouteTableAttachment_peeringId = Lens.lens (\TransitGatewayRouteTableAttachment' {peeringId} -> peeringId) (\s@TransitGatewayRouteTableAttachment' {} a -> s {peeringId = a} :: TransitGatewayRouteTableAttachment)
+
+-- | The ARN of the transit gateway attachment route table.
+transitGatewayRouteTableAttachment_transitGatewayRouteTableArn :: Lens.Lens' TransitGatewayRouteTableAttachment (Prelude.Maybe Prelude.Text)
+transitGatewayRouteTableAttachment_transitGatewayRouteTableArn = Lens.lens (\TransitGatewayRouteTableAttachment' {transitGatewayRouteTableArn} -> transitGatewayRouteTableArn) (\s@TransitGatewayRouteTableAttachment' {} a -> s {transitGatewayRouteTableArn = a} :: TransitGatewayRouteTableAttachment)
+
+instance
+  Data.FromJSON
+    TransitGatewayRouteTableAttachment
+  where
+  parseJSON =
+    Data.withObject
+      "TransitGatewayRouteTableAttachment"
+      ( \x ->
+          TransitGatewayRouteTableAttachment'
+            Prelude.<$> (x Data..:? "Attachment")
+            Prelude.<*> (x Data..:? "PeeringId")
+            Prelude.<*> (x Data..:? "TransitGatewayRouteTableArn")
+      )
+
+instance
+  Prelude.Hashable
+    TransitGatewayRouteTableAttachment
+  where
+  hashWithSalt
+    _salt
+    TransitGatewayRouteTableAttachment' {..} =
+      _salt
+        `Prelude.hashWithSalt` attachment
+        `Prelude.hashWithSalt` peeringId
+        `Prelude.hashWithSalt` transitGatewayRouteTableArn
+
+instance
+  Prelude.NFData
+    TransitGatewayRouteTableAttachment
+  where
+  rnf TransitGatewayRouteTableAttachment' {..} =
+    Prelude.rnf attachment
+      `Prelude.seq` Prelude.rnf peeringId
+      `Prelude.seq` Prelude.rnf transitGatewayRouteTableArn
diff --git a/gen/Amazonka/NetworkManager/Types/TunnelProtocol.hs b/gen/Amazonka/NetworkManager/Types/TunnelProtocol.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/TunnelProtocol.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.TunnelProtocol
+-- 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.NetworkManager.Types.TunnelProtocol
+  ( TunnelProtocol
+      ( ..,
+        TunnelProtocol_GRE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TunnelProtocol = TunnelProtocol'
+  { fromTunnelProtocol ::
+      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 TunnelProtocol_GRE :: TunnelProtocol
+pattern TunnelProtocol_GRE = TunnelProtocol' "GRE"
+
+{-# COMPLETE
+  TunnelProtocol_GRE,
+  TunnelProtocol'
+  #-}
diff --git a/gen/Amazonka/NetworkManager/Types/VpcAttachment.hs b/gen/Amazonka/NetworkManager/Types/VpcAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/VpcAttachment.hs
@@ -0,0 +1,98 @@
+{-# 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.NetworkManager.Types.VpcAttachment
+-- 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.NetworkManager.Types.VpcAttachment where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types.Attachment
+import Amazonka.NetworkManager.Types.VpcOptions
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes a VPC attachment.
+--
+-- /See:/ 'newVpcAttachment' smart constructor.
+data VpcAttachment = VpcAttachment'
+  { -- | Provides details about the VPC attachment.
+    attachment :: Prelude.Maybe Attachment,
+    -- | Provides details about the VPC attachment.
+    options :: Prelude.Maybe VpcOptions,
+    -- | The subnet ARNs.
+    subnetArns :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VpcAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attachment', 'vpcAttachment_attachment' - Provides details about the VPC attachment.
+--
+-- 'options', 'vpcAttachment_options' - Provides details about the VPC attachment.
+--
+-- 'subnetArns', 'vpcAttachment_subnetArns' - The subnet ARNs.
+newVpcAttachment ::
+  VpcAttachment
+newVpcAttachment =
+  VpcAttachment'
+    { attachment = Prelude.Nothing,
+      options = Prelude.Nothing,
+      subnetArns = Prelude.Nothing
+    }
+
+-- | Provides details about the VPC attachment.
+vpcAttachment_attachment :: Lens.Lens' VpcAttachment (Prelude.Maybe Attachment)
+vpcAttachment_attachment = Lens.lens (\VpcAttachment' {attachment} -> attachment) (\s@VpcAttachment' {} a -> s {attachment = a} :: VpcAttachment)
+
+-- | Provides details about the VPC attachment.
+vpcAttachment_options :: Lens.Lens' VpcAttachment (Prelude.Maybe VpcOptions)
+vpcAttachment_options = Lens.lens (\VpcAttachment' {options} -> options) (\s@VpcAttachment' {} a -> s {options = a} :: VpcAttachment)
+
+-- | The subnet ARNs.
+vpcAttachment_subnetArns :: Lens.Lens' VpcAttachment (Prelude.Maybe [Prelude.Text])
+vpcAttachment_subnetArns = Lens.lens (\VpcAttachment' {subnetArns} -> subnetArns) (\s@VpcAttachment' {} a -> s {subnetArns = a} :: VpcAttachment) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON VpcAttachment where
+  parseJSON =
+    Data.withObject
+      "VpcAttachment"
+      ( \x ->
+          VpcAttachment'
+            Prelude.<$> (x Data..:? "Attachment")
+            Prelude.<*> (x Data..:? "Options")
+            Prelude.<*> (x Data..:? "SubnetArns" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable VpcAttachment where
+  hashWithSalt _salt VpcAttachment' {..} =
+    _salt
+      `Prelude.hashWithSalt` attachment
+      `Prelude.hashWithSalt` options
+      `Prelude.hashWithSalt` subnetArns
+
+instance Prelude.NFData VpcAttachment where
+  rnf VpcAttachment' {..} =
+    Prelude.rnf attachment
+      `Prelude.seq` Prelude.rnf options
+      `Prelude.seq` Prelude.rnf subnetArns
diff --git a/gen/Amazonka/NetworkManager/Types/VpcOptions.hs b/gen/Amazonka/NetworkManager/Types/VpcOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/Types/VpcOptions.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.Types.VpcOptions
+-- 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.NetworkManager.Types.VpcOptions 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
+
+-- | Describes the VPC options.
+--
+-- /See:/ 'newVpcOptions' smart constructor.
+data VpcOptions = VpcOptions'
+  { -- | Indicates whether appliance mode is supported. If enabled, traffic flow
+    -- between a source and destination use the same Availability Zone for the
+    -- VPC attachment for the lifetime of that flow. The default value is
+    -- @false@.
+    applianceModeSupport :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether IPv6 is supported.
+    ipv6Support :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VpcOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applianceModeSupport', 'vpcOptions_applianceModeSupport' - Indicates whether appliance mode is supported. If enabled, traffic flow
+-- between a source and destination use the same Availability Zone for the
+-- VPC attachment for the lifetime of that flow. The default value is
+-- @false@.
+--
+-- 'ipv6Support', 'vpcOptions_ipv6Support' - Indicates whether IPv6 is supported.
+newVpcOptions ::
+  VpcOptions
+newVpcOptions =
+  VpcOptions'
+    { applianceModeSupport = Prelude.Nothing,
+      ipv6Support = Prelude.Nothing
+    }
+
+-- | Indicates whether appliance mode is supported. If enabled, traffic flow
+-- between a source and destination use the same Availability Zone for the
+-- VPC attachment for the lifetime of that flow. The default value is
+-- @false@.
+vpcOptions_applianceModeSupport :: Lens.Lens' VpcOptions (Prelude.Maybe Prelude.Bool)
+vpcOptions_applianceModeSupport = Lens.lens (\VpcOptions' {applianceModeSupport} -> applianceModeSupport) (\s@VpcOptions' {} a -> s {applianceModeSupport = a} :: VpcOptions)
+
+-- | Indicates whether IPv6 is supported.
+vpcOptions_ipv6Support :: Lens.Lens' VpcOptions (Prelude.Maybe Prelude.Bool)
+vpcOptions_ipv6Support = Lens.lens (\VpcOptions' {ipv6Support} -> ipv6Support) (\s@VpcOptions' {} a -> s {ipv6Support = a} :: VpcOptions)
+
+instance Data.FromJSON VpcOptions where
+  parseJSON =
+    Data.withObject
+      "VpcOptions"
+      ( \x ->
+          VpcOptions'
+            Prelude.<$> (x Data..:? "ApplianceModeSupport")
+            Prelude.<*> (x Data..:? "Ipv6Support")
+      )
+
+instance Prelude.Hashable VpcOptions where
+  hashWithSalt _salt VpcOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` applianceModeSupport
+      `Prelude.hashWithSalt` ipv6Support
+
+instance Prelude.NFData VpcOptions where
+  rnf VpcOptions' {..} =
+    Prelude.rnf applianceModeSupport
+      `Prelude.seq` Prelude.rnf ipv6Support
+
+instance Data.ToJSON VpcOptions where
+  toJSON VpcOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ApplianceModeSupport" Data..=)
+              Prelude.<$> applianceModeSupport,
+            ("Ipv6Support" Data..=) Prelude.<$> ipv6Support
+          ]
+      )
diff --git a/gen/Amazonka/NetworkManager/UntagResource.hs b/gen/Amazonka/NetworkManager/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/UntagResource.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.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 specified resource.
+module Amazonka.NetworkManager.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    resourceArn :: Prelude.Text,
+    -- | The tag keys to remove from the specified resource.
+    tagKeys :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The tag keys to remove from the specified resource.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+-- | The tag keys to remove from the specified resource.
+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery UntagResource where
+  toQuery UntagResource' {..} =
+    Prelude.mconcat
+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/UpdateConnection.hs b/gen/Amazonka/NetworkManager/UpdateConnection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/UpdateConnection.hs
@@ -0,0 +1,236 @@
+{-# 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.NetworkManager.UpdateConnection
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the information for an existing connection. To remove
+-- information for any of the parameters, specify an empty string.
+module Amazonka.NetworkManager.UpdateConnection
+  ( -- * Creating a Request
+    UpdateConnection (..),
+    newUpdateConnection,
+
+    -- * Request Lenses
+    updateConnection_connectedLinkId,
+    updateConnection_description,
+    updateConnection_linkId,
+    updateConnection_globalNetworkId,
+    updateConnection_connectionId,
+
+    -- * Destructuring the Response
+    UpdateConnectionResponse (..),
+    newUpdateConnectionResponse,
+
+    -- * Response Lenses
+    updateConnectionResponse_connection,
+    updateConnectionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateConnection' smart constructor.
+data UpdateConnection = UpdateConnection'
+  { -- | The ID of the link for the second device in the connection.
+    connectedLinkId :: Prelude.Maybe Prelude.Text,
+    -- | A description of the connection.
+    --
+    -- Length Constraints: Maximum length of 256 characters.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the link for the first device in the connection.
+    linkId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the connection.
+    connectionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateConnection' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectedLinkId', 'updateConnection_connectedLinkId' - The ID of the link for the second device in the connection.
+--
+-- 'description', 'updateConnection_description' - A description of the connection.
+--
+-- Length Constraints: Maximum length of 256 characters.
+--
+-- 'linkId', 'updateConnection_linkId' - The ID of the link for the first device in the connection.
+--
+-- 'globalNetworkId', 'updateConnection_globalNetworkId' - The ID of the global network.
+--
+-- 'connectionId', 'updateConnection_connectionId' - The ID of the connection.
+newUpdateConnection ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'connectionId'
+  Prelude.Text ->
+  UpdateConnection
+newUpdateConnection pGlobalNetworkId_ pConnectionId_ =
+  UpdateConnection'
+    { connectedLinkId =
+        Prelude.Nothing,
+      description = Prelude.Nothing,
+      linkId = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_,
+      connectionId = pConnectionId_
+    }
+
+-- | The ID of the link for the second device in the connection.
+updateConnection_connectedLinkId :: Lens.Lens' UpdateConnection (Prelude.Maybe Prelude.Text)
+updateConnection_connectedLinkId = Lens.lens (\UpdateConnection' {connectedLinkId} -> connectedLinkId) (\s@UpdateConnection' {} a -> s {connectedLinkId = a} :: UpdateConnection)
+
+-- | A description of the connection.
+--
+-- Length Constraints: Maximum length of 256 characters.
+updateConnection_description :: Lens.Lens' UpdateConnection (Prelude.Maybe Prelude.Text)
+updateConnection_description = Lens.lens (\UpdateConnection' {description} -> description) (\s@UpdateConnection' {} a -> s {description = a} :: UpdateConnection)
+
+-- | The ID of the link for the first device in the connection.
+updateConnection_linkId :: Lens.Lens' UpdateConnection (Prelude.Maybe Prelude.Text)
+updateConnection_linkId = Lens.lens (\UpdateConnection' {linkId} -> linkId) (\s@UpdateConnection' {} a -> s {linkId = a} :: UpdateConnection)
+
+-- | The ID of the global network.
+updateConnection_globalNetworkId :: Lens.Lens' UpdateConnection Prelude.Text
+updateConnection_globalNetworkId = Lens.lens (\UpdateConnection' {globalNetworkId} -> globalNetworkId) (\s@UpdateConnection' {} a -> s {globalNetworkId = a} :: UpdateConnection)
+
+-- | The ID of the connection.
+updateConnection_connectionId :: Lens.Lens' UpdateConnection Prelude.Text
+updateConnection_connectionId = Lens.lens (\UpdateConnection' {connectionId} -> connectionId) (\s@UpdateConnection' {} a -> s {connectionId = a} :: UpdateConnection)
+
+instance Core.AWSRequest UpdateConnection where
+  type
+    AWSResponse UpdateConnection =
+      UpdateConnectionResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateConnectionResponse'
+            Prelude.<$> (x Data..?> "Connection")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateConnection where
+  hashWithSalt _salt UpdateConnection' {..} =
+    _salt
+      `Prelude.hashWithSalt` connectedLinkId
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` linkId
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` connectionId
+
+instance Prelude.NFData UpdateConnection where
+  rnf UpdateConnection' {..} =
+    Prelude.rnf connectedLinkId
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf linkId
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf connectionId
+
+instance Data.ToHeaders UpdateConnection where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateConnection where
+  toJSON UpdateConnection' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ConnectedLinkId" Data..=)
+              Prelude.<$> connectedLinkId,
+            ("Description" Data..=) Prelude.<$> description,
+            ("LinkId" Data..=) Prelude.<$> linkId
+          ]
+      )
+
+instance Data.ToPath UpdateConnection where
+  toPath UpdateConnection' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/connections/",
+        Data.toBS connectionId
+      ]
+
+instance Data.ToQuery UpdateConnection where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateConnectionResponse' smart constructor.
+data UpdateConnectionResponse = UpdateConnectionResponse'
+  { -- | Information about the connection.
+    connection :: Prelude.Maybe Connection,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateConnectionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connection', 'updateConnectionResponse_connection' - Information about the connection.
+--
+-- 'httpStatus', 'updateConnectionResponse_httpStatus' - The response's http status code.
+newUpdateConnectionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateConnectionResponse
+newUpdateConnectionResponse pHttpStatus_ =
+  UpdateConnectionResponse'
+    { connection =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the connection.
+updateConnectionResponse_connection :: Lens.Lens' UpdateConnectionResponse (Prelude.Maybe Connection)
+updateConnectionResponse_connection = Lens.lens (\UpdateConnectionResponse' {connection} -> connection) (\s@UpdateConnectionResponse' {} a -> s {connection = a} :: UpdateConnectionResponse)
+
+-- | The response's http status code.
+updateConnectionResponse_httpStatus :: Lens.Lens' UpdateConnectionResponse Prelude.Int
+updateConnectionResponse_httpStatus = Lens.lens (\UpdateConnectionResponse' {httpStatus} -> httpStatus) (\s@UpdateConnectionResponse' {} a -> s {httpStatus = a} :: UpdateConnectionResponse)
+
+instance Prelude.NFData UpdateConnectionResponse where
+  rnf UpdateConnectionResponse' {..} =
+    Prelude.rnf connection
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/UpdateCoreNetwork.hs b/gen/Amazonka/NetworkManager/UpdateCoreNetwork.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/UpdateCoreNetwork.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.NetworkManager.UpdateCoreNetwork
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the description of a core network.
+module Amazonka.NetworkManager.UpdateCoreNetwork
+  ( -- * Creating a Request
+    UpdateCoreNetwork (..),
+    newUpdateCoreNetwork,
+
+    -- * Request Lenses
+    updateCoreNetwork_description,
+    updateCoreNetwork_coreNetworkId,
+
+    -- * Destructuring the Response
+    UpdateCoreNetworkResponse (..),
+    newUpdateCoreNetworkResponse,
+
+    -- * Response Lenses
+    updateCoreNetworkResponse_coreNetwork,
+    updateCoreNetworkResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateCoreNetwork' smart constructor.
+data UpdateCoreNetwork = UpdateCoreNetwork'
+  { -- | The description of the update.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a core network.
+    coreNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateCoreNetwork' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateCoreNetwork_description' - The description of the update.
+--
+-- 'coreNetworkId', 'updateCoreNetwork_coreNetworkId' - The ID of a core network.
+newUpdateCoreNetwork ::
+  -- | 'coreNetworkId'
+  Prelude.Text ->
+  UpdateCoreNetwork
+newUpdateCoreNetwork pCoreNetworkId_ =
+  UpdateCoreNetwork'
+    { description = Prelude.Nothing,
+      coreNetworkId = pCoreNetworkId_
+    }
+
+-- | The description of the update.
+updateCoreNetwork_description :: Lens.Lens' UpdateCoreNetwork (Prelude.Maybe Prelude.Text)
+updateCoreNetwork_description = Lens.lens (\UpdateCoreNetwork' {description} -> description) (\s@UpdateCoreNetwork' {} a -> s {description = a} :: UpdateCoreNetwork)
+
+-- | The ID of a core network.
+updateCoreNetwork_coreNetworkId :: Lens.Lens' UpdateCoreNetwork Prelude.Text
+updateCoreNetwork_coreNetworkId = Lens.lens (\UpdateCoreNetwork' {coreNetworkId} -> coreNetworkId) (\s@UpdateCoreNetwork' {} a -> s {coreNetworkId = a} :: UpdateCoreNetwork)
+
+instance Core.AWSRequest UpdateCoreNetwork where
+  type
+    AWSResponse UpdateCoreNetwork =
+      UpdateCoreNetworkResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateCoreNetworkResponse'
+            Prelude.<$> (x Data..?> "CoreNetwork")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateCoreNetwork where
+  hashWithSalt _salt UpdateCoreNetwork' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` coreNetworkId
+
+instance Prelude.NFData UpdateCoreNetwork where
+  rnf UpdateCoreNetwork' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf coreNetworkId
+
+instance Data.ToHeaders UpdateCoreNetwork where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateCoreNetwork where
+  toJSON UpdateCoreNetwork' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Description" Data..=) Prelude.<$> description]
+      )
+
+instance Data.ToPath UpdateCoreNetwork where
+  toPath UpdateCoreNetwork' {..} =
+    Prelude.mconcat
+      ["/core-networks/", Data.toBS coreNetworkId]
+
+instance Data.ToQuery UpdateCoreNetwork where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateCoreNetworkResponse' smart constructor.
+data UpdateCoreNetworkResponse = UpdateCoreNetworkResponse'
+  { -- | Returns information about a core network update.
+    coreNetwork :: Prelude.Maybe CoreNetwork,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateCoreNetworkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coreNetwork', 'updateCoreNetworkResponse_coreNetwork' - Returns information about a core network update.
+--
+-- 'httpStatus', 'updateCoreNetworkResponse_httpStatus' - The response's http status code.
+newUpdateCoreNetworkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateCoreNetworkResponse
+newUpdateCoreNetworkResponse pHttpStatus_ =
+  UpdateCoreNetworkResponse'
+    { coreNetwork =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returns information about a core network update.
+updateCoreNetworkResponse_coreNetwork :: Lens.Lens' UpdateCoreNetworkResponse (Prelude.Maybe CoreNetwork)
+updateCoreNetworkResponse_coreNetwork = Lens.lens (\UpdateCoreNetworkResponse' {coreNetwork} -> coreNetwork) (\s@UpdateCoreNetworkResponse' {} a -> s {coreNetwork = a} :: UpdateCoreNetworkResponse)
+
+-- | The response's http status code.
+updateCoreNetworkResponse_httpStatus :: Lens.Lens' UpdateCoreNetworkResponse Prelude.Int
+updateCoreNetworkResponse_httpStatus = Lens.lens (\UpdateCoreNetworkResponse' {httpStatus} -> httpStatus) (\s@UpdateCoreNetworkResponse' {} a -> s {httpStatus = a} :: UpdateCoreNetworkResponse)
+
+instance Prelude.NFData UpdateCoreNetworkResponse where
+  rnf UpdateCoreNetworkResponse' {..} =
+    Prelude.rnf coreNetwork
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/UpdateDevice.hs b/gen/Amazonka/NetworkManager/UpdateDevice.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/UpdateDevice.hs
@@ -0,0 +1,316 @@
+{-# 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.NetworkManager.UpdateDevice
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the details for an existing device. To remove information for
+-- any of the parameters, specify an empty string.
+module Amazonka.NetworkManager.UpdateDevice
+  ( -- * Creating a Request
+    UpdateDevice (..),
+    newUpdateDevice,
+
+    -- * Request Lenses
+    updateDevice_aWSLocation,
+    updateDevice_description,
+    updateDevice_location,
+    updateDevice_model,
+    updateDevice_serialNumber,
+    updateDevice_siteId,
+    updateDevice_type,
+    updateDevice_vendor,
+    updateDevice_globalNetworkId,
+    updateDevice_deviceId,
+
+    -- * Destructuring the Response
+    UpdateDeviceResponse (..),
+    newUpdateDeviceResponse,
+
+    -- * Response Lenses
+    updateDeviceResponse_device,
+    updateDeviceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateDevice' smart constructor.
+data UpdateDevice = UpdateDevice'
+  { -- | The Amazon Web Services location of the device, if applicable. For an
+    -- on-premises device, you can omit this parameter.
+    aWSLocation :: Prelude.Maybe AWSLocation,
+    -- | A description of the device.
+    --
+    -- Constraints: Maximum length of 256 characters.
+    description :: Prelude.Maybe Prelude.Text,
+    location :: Prelude.Maybe (Data.Sensitive Location),
+    -- | The model of the device.
+    --
+    -- Constraints: Maximum length of 128 characters.
+    model :: Prelude.Maybe Prelude.Text,
+    -- | The serial number of the device.
+    --
+    -- Constraints: Maximum length of 128 characters.
+    serialNumber :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the site.
+    siteId :: Prelude.Maybe Prelude.Text,
+    -- | The type of the device.
+    type' :: Prelude.Maybe Prelude.Text,
+    -- | The vendor of the device.
+    --
+    -- Constraints: Maximum length of 128 characters.
+    vendor :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the device.
+    deviceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDevice' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'aWSLocation', 'updateDevice_aWSLocation' - The Amazon Web Services location of the device, if applicable. For an
+-- on-premises device, you can omit this parameter.
+--
+-- 'description', 'updateDevice_description' - A description of the device.
+--
+-- Constraints: Maximum length of 256 characters.
+--
+-- 'location', 'updateDevice_location' - Undocumented member.
+--
+-- 'model', 'updateDevice_model' - The model of the device.
+--
+-- Constraints: Maximum length of 128 characters.
+--
+-- 'serialNumber', 'updateDevice_serialNumber' - The serial number of the device.
+--
+-- Constraints: Maximum length of 128 characters.
+--
+-- 'siteId', 'updateDevice_siteId' - The ID of the site.
+--
+-- 'type'', 'updateDevice_type' - The type of the device.
+--
+-- 'vendor', 'updateDevice_vendor' - The vendor of the device.
+--
+-- Constraints: Maximum length of 128 characters.
+--
+-- 'globalNetworkId', 'updateDevice_globalNetworkId' - The ID of the global network.
+--
+-- 'deviceId', 'updateDevice_deviceId' - The ID of the device.
+newUpdateDevice ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'deviceId'
+  Prelude.Text ->
+  UpdateDevice
+newUpdateDevice pGlobalNetworkId_ pDeviceId_ =
+  UpdateDevice'
+    { aWSLocation = Prelude.Nothing,
+      description = Prelude.Nothing,
+      location = Prelude.Nothing,
+      model = Prelude.Nothing,
+      serialNumber = Prelude.Nothing,
+      siteId = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      vendor = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_,
+      deviceId = pDeviceId_
+    }
+
+-- | The Amazon Web Services location of the device, if applicable. For an
+-- on-premises device, you can omit this parameter.
+updateDevice_aWSLocation :: Lens.Lens' UpdateDevice (Prelude.Maybe AWSLocation)
+updateDevice_aWSLocation = Lens.lens (\UpdateDevice' {aWSLocation} -> aWSLocation) (\s@UpdateDevice' {} a -> s {aWSLocation = a} :: UpdateDevice)
+
+-- | A description of the device.
+--
+-- Constraints: Maximum length of 256 characters.
+updateDevice_description :: Lens.Lens' UpdateDevice (Prelude.Maybe Prelude.Text)
+updateDevice_description = Lens.lens (\UpdateDevice' {description} -> description) (\s@UpdateDevice' {} a -> s {description = a} :: UpdateDevice)
+
+-- | Undocumented member.
+updateDevice_location :: Lens.Lens' UpdateDevice (Prelude.Maybe Location)
+updateDevice_location = Lens.lens (\UpdateDevice' {location} -> location) (\s@UpdateDevice' {} a -> s {location = a} :: UpdateDevice) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The model of the device.
+--
+-- Constraints: Maximum length of 128 characters.
+updateDevice_model :: Lens.Lens' UpdateDevice (Prelude.Maybe Prelude.Text)
+updateDevice_model = Lens.lens (\UpdateDevice' {model} -> model) (\s@UpdateDevice' {} a -> s {model = a} :: UpdateDevice)
+
+-- | The serial number of the device.
+--
+-- Constraints: Maximum length of 128 characters.
+updateDevice_serialNumber :: Lens.Lens' UpdateDevice (Prelude.Maybe Prelude.Text)
+updateDevice_serialNumber = Lens.lens (\UpdateDevice' {serialNumber} -> serialNumber) (\s@UpdateDevice' {} a -> s {serialNumber = a} :: UpdateDevice)
+
+-- | The ID of the site.
+updateDevice_siteId :: Lens.Lens' UpdateDevice (Prelude.Maybe Prelude.Text)
+updateDevice_siteId = Lens.lens (\UpdateDevice' {siteId} -> siteId) (\s@UpdateDevice' {} a -> s {siteId = a} :: UpdateDevice)
+
+-- | The type of the device.
+updateDevice_type :: Lens.Lens' UpdateDevice (Prelude.Maybe Prelude.Text)
+updateDevice_type = Lens.lens (\UpdateDevice' {type'} -> type') (\s@UpdateDevice' {} a -> s {type' = a} :: UpdateDevice)
+
+-- | The vendor of the device.
+--
+-- Constraints: Maximum length of 128 characters.
+updateDevice_vendor :: Lens.Lens' UpdateDevice (Prelude.Maybe Prelude.Text)
+updateDevice_vendor = Lens.lens (\UpdateDevice' {vendor} -> vendor) (\s@UpdateDevice' {} a -> s {vendor = a} :: UpdateDevice)
+
+-- | The ID of the global network.
+updateDevice_globalNetworkId :: Lens.Lens' UpdateDevice Prelude.Text
+updateDevice_globalNetworkId = Lens.lens (\UpdateDevice' {globalNetworkId} -> globalNetworkId) (\s@UpdateDevice' {} a -> s {globalNetworkId = a} :: UpdateDevice)
+
+-- | The ID of the device.
+updateDevice_deviceId :: Lens.Lens' UpdateDevice Prelude.Text
+updateDevice_deviceId = Lens.lens (\UpdateDevice' {deviceId} -> deviceId) (\s@UpdateDevice' {} a -> s {deviceId = a} :: UpdateDevice)
+
+instance Core.AWSRequest UpdateDevice where
+  type AWSResponse UpdateDevice = UpdateDeviceResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateDeviceResponse'
+            Prelude.<$> (x Data..?> "Device")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateDevice where
+  hashWithSalt _salt UpdateDevice' {..} =
+    _salt
+      `Prelude.hashWithSalt` aWSLocation
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` location
+      `Prelude.hashWithSalt` model
+      `Prelude.hashWithSalt` serialNumber
+      `Prelude.hashWithSalt` siteId
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` vendor
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` deviceId
+
+instance Prelude.NFData UpdateDevice where
+  rnf UpdateDevice' {..} =
+    Prelude.rnf aWSLocation
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf location
+      `Prelude.seq` Prelude.rnf model
+      `Prelude.seq` Prelude.rnf serialNumber
+      `Prelude.seq` Prelude.rnf siteId
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf vendor
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf deviceId
+
+instance Data.ToHeaders UpdateDevice where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateDevice where
+  toJSON UpdateDevice' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AWSLocation" Data..=) Prelude.<$> aWSLocation,
+            ("Description" Data..=) Prelude.<$> description,
+            ("Location" Data..=) Prelude.<$> location,
+            ("Model" Data..=) Prelude.<$> model,
+            ("SerialNumber" Data..=) Prelude.<$> serialNumber,
+            ("SiteId" Data..=) Prelude.<$> siteId,
+            ("Type" Data..=) Prelude.<$> type',
+            ("Vendor" Data..=) Prelude.<$> vendor
+          ]
+      )
+
+instance Data.ToPath UpdateDevice where
+  toPath UpdateDevice' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/devices/",
+        Data.toBS deviceId
+      ]
+
+instance Data.ToQuery UpdateDevice where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDeviceResponse' smart constructor.
+data UpdateDeviceResponse = UpdateDeviceResponse'
+  { -- | Information about the device.
+    device :: Prelude.Maybe Device,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDeviceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'device', 'updateDeviceResponse_device' - Information about the device.
+--
+-- 'httpStatus', 'updateDeviceResponse_httpStatus' - The response's http status code.
+newUpdateDeviceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateDeviceResponse
+newUpdateDeviceResponse pHttpStatus_ =
+  UpdateDeviceResponse'
+    { device = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the device.
+updateDeviceResponse_device :: Lens.Lens' UpdateDeviceResponse (Prelude.Maybe Device)
+updateDeviceResponse_device = Lens.lens (\UpdateDeviceResponse' {device} -> device) (\s@UpdateDeviceResponse' {} a -> s {device = a} :: UpdateDeviceResponse)
+
+-- | The response's http status code.
+updateDeviceResponse_httpStatus :: Lens.Lens' UpdateDeviceResponse Prelude.Int
+updateDeviceResponse_httpStatus = Lens.lens (\UpdateDeviceResponse' {httpStatus} -> httpStatus) (\s@UpdateDeviceResponse' {} a -> s {httpStatus = a} :: UpdateDeviceResponse)
+
+instance Prelude.NFData UpdateDeviceResponse where
+  rnf UpdateDeviceResponse' {..} =
+    Prelude.rnf device
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/UpdateGlobalNetwork.hs b/gen/Amazonka/NetworkManager/UpdateGlobalNetwork.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/UpdateGlobalNetwork.hs
@@ -0,0 +1,189 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.UpdateGlobalNetwork
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing global network. To remove information for any of the
+-- parameters, specify an empty string.
+module Amazonka.NetworkManager.UpdateGlobalNetwork
+  ( -- * Creating a Request
+    UpdateGlobalNetwork (..),
+    newUpdateGlobalNetwork,
+
+    -- * Request Lenses
+    updateGlobalNetwork_description,
+    updateGlobalNetwork_globalNetworkId,
+
+    -- * Destructuring the Response
+    UpdateGlobalNetworkResponse (..),
+    newUpdateGlobalNetworkResponse,
+
+    -- * Response Lenses
+    updateGlobalNetworkResponse_globalNetwork,
+    updateGlobalNetworkResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateGlobalNetwork' smart constructor.
+data UpdateGlobalNetwork = UpdateGlobalNetwork'
+  { -- | A description of the global network.
+    --
+    -- Constraints: Maximum length of 256 characters.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ID of your global network.
+    globalNetworkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateGlobalNetwork' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateGlobalNetwork_description' - A description of the global network.
+--
+-- Constraints: Maximum length of 256 characters.
+--
+-- 'globalNetworkId', 'updateGlobalNetwork_globalNetworkId' - The ID of your global network.
+newUpdateGlobalNetwork ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  UpdateGlobalNetwork
+newUpdateGlobalNetwork pGlobalNetworkId_ =
+  UpdateGlobalNetwork'
+    { description = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_
+    }
+
+-- | A description of the global network.
+--
+-- Constraints: Maximum length of 256 characters.
+updateGlobalNetwork_description :: Lens.Lens' UpdateGlobalNetwork (Prelude.Maybe Prelude.Text)
+updateGlobalNetwork_description = Lens.lens (\UpdateGlobalNetwork' {description} -> description) (\s@UpdateGlobalNetwork' {} a -> s {description = a} :: UpdateGlobalNetwork)
+
+-- | The ID of your global network.
+updateGlobalNetwork_globalNetworkId :: Lens.Lens' UpdateGlobalNetwork Prelude.Text
+updateGlobalNetwork_globalNetworkId = Lens.lens (\UpdateGlobalNetwork' {globalNetworkId} -> globalNetworkId) (\s@UpdateGlobalNetwork' {} a -> s {globalNetworkId = a} :: UpdateGlobalNetwork)
+
+instance Core.AWSRequest UpdateGlobalNetwork where
+  type
+    AWSResponse UpdateGlobalNetwork =
+      UpdateGlobalNetworkResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateGlobalNetworkResponse'
+            Prelude.<$> (x Data..?> "GlobalNetwork")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateGlobalNetwork where
+  hashWithSalt _salt UpdateGlobalNetwork' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` globalNetworkId
+
+instance Prelude.NFData UpdateGlobalNetwork where
+  rnf UpdateGlobalNetwork' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf globalNetworkId
+
+instance Data.ToHeaders UpdateGlobalNetwork where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateGlobalNetwork where
+  toJSON UpdateGlobalNetwork' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Description" Data..=) Prelude.<$> description]
+      )
+
+instance Data.ToPath UpdateGlobalNetwork where
+  toPath UpdateGlobalNetwork' {..} =
+    Prelude.mconcat
+      ["/global-networks/", Data.toBS globalNetworkId]
+
+instance Data.ToQuery UpdateGlobalNetwork where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateGlobalNetworkResponse' smart constructor.
+data UpdateGlobalNetworkResponse = UpdateGlobalNetworkResponse'
+  { -- | Information about the global network object.
+    globalNetwork :: Prelude.Maybe GlobalNetwork,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateGlobalNetworkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetwork', 'updateGlobalNetworkResponse_globalNetwork' - Information about the global network object.
+--
+-- 'httpStatus', 'updateGlobalNetworkResponse_httpStatus' - The response's http status code.
+newUpdateGlobalNetworkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateGlobalNetworkResponse
+newUpdateGlobalNetworkResponse pHttpStatus_ =
+  UpdateGlobalNetworkResponse'
+    { globalNetwork =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the global network object.
+updateGlobalNetworkResponse_globalNetwork :: Lens.Lens' UpdateGlobalNetworkResponse (Prelude.Maybe GlobalNetwork)
+updateGlobalNetworkResponse_globalNetwork = Lens.lens (\UpdateGlobalNetworkResponse' {globalNetwork} -> globalNetwork) (\s@UpdateGlobalNetworkResponse' {} a -> s {globalNetwork = a} :: UpdateGlobalNetworkResponse)
+
+-- | The response's http status code.
+updateGlobalNetworkResponse_httpStatus :: Lens.Lens' UpdateGlobalNetworkResponse Prelude.Int
+updateGlobalNetworkResponse_httpStatus = Lens.lens (\UpdateGlobalNetworkResponse' {httpStatus} -> httpStatus) (\s@UpdateGlobalNetworkResponse' {} a -> s {httpStatus = a} :: UpdateGlobalNetworkResponse)
+
+instance Prelude.NFData UpdateGlobalNetworkResponse where
+  rnf UpdateGlobalNetworkResponse' {..} =
+    Prelude.rnf globalNetwork
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/UpdateLink.hs b/gen/Amazonka/NetworkManager/UpdateLink.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/UpdateLink.hs
@@ -0,0 +1,256 @@
+{-# 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.NetworkManager.UpdateLink
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the details for an existing link. To remove information for any
+-- of the parameters, specify an empty string.
+module Amazonka.NetworkManager.UpdateLink
+  ( -- * Creating a Request
+    UpdateLink (..),
+    newUpdateLink,
+
+    -- * Request Lenses
+    updateLink_bandwidth,
+    updateLink_description,
+    updateLink_provider,
+    updateLink_type,
+    updateLink_globalNetworkId,
+    updateLink_linkId,
+
+    -- * Destructuring the Response
+    UpdateLinkResponse (..),
+    newUpdateLinkResponse,
+
+    -- * Response Lenses
+    updateLinkResponse_link,
+    updateLinkResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateLink' smart constructor.
+data UpdateLink = UpdateLink'
+  { -- | The upload and download speed in Mbps.
+    bandwidth :: Prelude.Maybe Bandwidth,
+    -- | A description of the link.
+    --
+    -- Constraints: Maximum length of 256 characters.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The provider of the link.
+    --
+    -- Constraints: Maximum length of 128 characters.
+    provider :: Prelude.Maybe Prelude.Text,
+    -- | The type of the link.
+    --
+    -- Constraints: Maximum length of 128 characters.
+    type' :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of the link.
+    linkId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateLink' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bandwidth', 'updateLink_bandwidth' - The upload and download speed in Mbps.
+--
+-- 'description', 'updateLink_description' - A description of the link.
+--
+-- Constraints: Maximum length of 256 characters.
+--
+-- 'provider', 'updateLink_provider' - The provider of the link.
+--
+-- Constraints: Maximum length of 128 characters.
+--
+-- 'type'', 'updateLink_type' - The type of the link.
+--
+-- Constraints: Maximum length of 128 characters.
+--
+-- 'globalNetworkId', 'updateLink_globalNetworkId' - The ID of the global network.
+--
+-- 'linkId', 'updateLink_linkId' - The ID of the link.
+newUpdateLink ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'linkId'
+  Prelude.Text ->
+  UpdateLink
+newUpdateLink pGlobalNetworkId_ pLinkId_ =
+  UpdateLink'
+    { bandwidth = Prelude.Nothing,
+      description = Prelude.Nothing,
+      provider = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_,
+      linkId = pLinkId_
+    }
+
+-- | The upload and download speed in Mbps.
+updateLink_bandwidth :: Lens.Lens' UpdateLink (Prelude.Maybe Bandwidth)
+updateLink_bandwidth = Lens.lens (\UpdateLink' {bandwidth} -> bandwidth) (\s@UpdateLink' {} a -> s {bandwidth = a} :: UpdateLink)
+
+-- | A description of the link.
+--
+-- Constraints: Maximum length of 256 characters.
+updateLink_description :: Lens.Lens' UpdateLink (Prelude.Maybe Prelude.Text)
+updateLink_description = Lens.lens (\UpdateLink' {description} -> description) (\s@UpdateLink' {} a -> s {description = a} :: UpdateLink)
+
+-- | The provider of the link.
+--
+-- Constraints: Maximum length of 128 characters.
+updateLink_provider :: Lens.Lens' UpdateLink (Prelude.Maybe Prelude.Text)
+updateLink_provider = Lens.lens (\UpdateLink' {provider} -> provider) (\s@UpdateLink' {} a -> s {provider = a} :: UpdateLink)
+
+-- | The type of the link.
+--
+-- Constraints: Maximum length of 128 characters.
+updateLink_type :: Lens.Lens' UpdateLink (Prelude.Maybe Prelude.Text)
+updateLink_type = Lens.lens (\UpdateLink' {type'} -> type') (\s@UpdateLink' {} a -> s {type' = a} :: UpdateLink)
+
+-- | The ID of the global network.
+updateLink_globalNetworkId :: Lens.Lens' UpdateLink Prelude.Text
+updateLink_globalNetworkId = Lens.lens (\UpdateLink' {globalNetworkId} -> globalNetworkId) (\s@UpdateLink' {} a -> s {globalNetworkId = a} :: UpdateLink)
+
+-- | The ID of the link.
+updateLink_linkId :: Lens.Lens' UpdateLink Prelude.Text
+updateLink_linkId = Lens.lens (\UpdateLink' {linkId} -> linkId) (\s@UpdateLink' {} a -> s {linkId = a} :: UpdateLink)
+
+instance Core.AWSRequest UpdateLink where
+  type AWSResponse UpdateLink = UpdateLinkResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateLinkResponse'
+            Prelude.<$> (x Data..?> "Link")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateLink where
+  hashWithSalt _salt UpdateLink' {..} =
+    _salt
+      `Prelude.hashWithSalt` bandwidth
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` provider
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` linkId
+
+instance Prelude.NFData UpdateLink where
+  rnf UpdateLink' {..} =
+    Prelude.rnf bandwidth
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf provider
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf linkId
+
+instance Data.ToHeaders UpdateLink where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateLink where
+  toJSON UpdateLink' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Bandwidth" Data..=) Prelude.<$> bandwidth,
+            ("Description" Data..=) Prelude.<$> description,
+            ("Provider" Data..=) Prelude.<$> provider,
+            ("Type" Data..=) Prelude.<$> type'
+          ]
+      )
+
+instance Data.ToPath UpdateLink where
+  toPath UpdateLink' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/links/",
+        Data.toBS linkId
+      ]
+
+instance Data.ToQuery UpdateLink where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateLinkResponse' smart constructor.
+data UpdateLinkResponse = UpdateLinkResponse'
+  { -- | Information about the link.
+    link :: Prelude.Maybe Link,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateLinkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'link', 'updateLinkResponse_link' - Information about the link.
+--
+-- 'httpStatus', 'updateLinkResponse_httpStatus' - The response's http status code.
+newUpdateLinkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateLinkResponse
+newUpdateLinkResponse pHttpStatus_ =
+  UpdateLinkResponse'
+    { link = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the link.
+updateLinkResponse_link :: Lens.Lens' UpdateLinkResponse (Prelude.Maybe Link)
+updateLinkResponse_link = Lens.lens (\UpdateLinkResponse' {link} -> link) (\s@UpdateLinkResponse' {} a -> s {link = a} :: UpdateLinkResponse)
+
+-- | The response's http status code.
+updateLinkResponse_httpStatus :: Lens.Lens' UpdateLinkResponse Prelude.Int
+updateLinkResponse_httpStatus = Lens.lens (\UpdateLinkResponse' {httpStatus} -> httpStatus) (\s@UpdateLinkResponse' {} a -> s {httpStatus = a} :: UpdateLinkResponse)
+
+instance Prelude.NFData UpdateLinkResponse where
+  rnf UpdateLinkResponse' {..} =
+    Prelude.rnf link
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/UpdateNetworkResourceMetadata.hs b/gen/Amazonka/NetworkManager/UpdateNetworkResourceMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/UpdateNetworkResourceMetadata.hs
@@ -0,0 +1,225 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.NetworkManager.UpdateNetworkResourceMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the resource metadata for the specified global network.
+module Amazonka.NetworkManager.UpdateNetworkResourceMetadata
+  ( -- * Creating a Request
+    UpdateNetworkResourceMetadata (..),
+    newUpdateNetworkResourceMetadata,
+
+    -- * Request Lenses
+    updateNetworkResourceMetadata_globalNetworkId,
+    updateNetworkResourceMetadata_resourceArn,
+    updateNetworkResourceMetadata_metadata,
+
+    -- * Destructuring the Response
+    UpdateNetworkResourceMetadataResponse (..),
+    newUpdateNetworkResourceMetadataResponse,
+
+    -- * Response Lenses
+    updateNetworkResourceMetadataResponse_metadata,
+    updateNetworkResourceMetadataResponse_resourceArn,
+    updateNetworkResourceMetadataResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateNetworkResourceMetadata' smart constructor.
+data UpdateNetworkResourceMetadata = UpdateNetworkResourceMetadata'
+  { -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ARN of the resource.
+    resourceArn :: Prelude.Text,
+    -- | The resource metadata.
+    metadata :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateNetworkResourceMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'globalNetworkId', 'updateNetworkResourceMetadata_globalNetworkId' - The ID of the global network.
+--
+-- 'resourceArn', 'updateNetworkResourceMetadata_resourceArn' - The ARN of the resource.
+--
+-- 'metadata', 'updateNetworkResourceMetadata_metadata' - The resource metadata.
+newUpdateNetworkResourceMetadata ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'resourceArn'
+  Prelude.Text ->
+  UpdateNetworkResourceMetadata
+newUpdateNetworkResourceMetadata
+  pGlobalNetworkId_
+  pResourceArn_ =
+    UpdateNetworkResourceMetadata'
+      { globalNetworkId =
+          pGlobalNetworkId_,
+        resourceArn = pResourceArn_,
+        metadata = Prelude.mempty
+      }
+
+-- | The ID of the global network.
+updateNetworkResourceMetadata_globalNetworkId :: Lens.Lens' UpdateNetworkResourceMetadata Prelude.Text
+updateNetworkResourceMetadata_globalNetworkId = Lens.lens (\UpdateNetworkResourceMetadata' {globalNetworkId} -> globalNetworkId) (\s@UpdateNetworkResourceMetadata' {} a -> s {globalNetworkId = a} :: UpdateNetworkResourceMetadata)
+
+-- | The ARN of the resource.
+updateNetworkResourceMetadata_resourceArn :: Lens.Lens' UpdateNetworkResourceMetadata Prelude.Text
+updateNetworkResourceMetadata_resourceArn = Lens.lens (\UpdateNetworkResourceMetadata' {resourceArn} -> resourceArn) (\s@UpdateNetworkResourceMetadata' {} a -> s {resourceArn = a} :: UpdateNetworkResourceMetadata)
+
+-- | The resource metadata.
+updateNetworkResourceMetadata_metadata :: Lens.Lens' UpdateNetworkResourceMetadata (Prelude.HashMap Prelude.Text Prelude.Text)
+updateNetworkResourceMetadata_metadata = Lens.lens (\UpdateNetworkResourceMetadata' {metadata} -> metadata) (\s@UpdateNetworkResourceMetadata' {} a -> s {metadata = a} :: UpdateNetworkResourceMetadata) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    UpdateNetworkResourceMetadata
+  where
+  type
+    AWSResponse UpdateNetworkResourceMetadata =
+      UpdateNetworkResourceMetadataResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateNetworkResourceMetadataResponse'
+            Prelude.<$> (x Data..?> "Metadata" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "ResourceArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    UpdateNetworkResourceMetadata
+  where
+  hashWithSalt _salt UpdateNetworkResourceMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` metadata
+
+instance Prelude.NFData UpdateNetworkResourceMetadata where
+  rnf UpdateNetworkResourceMetadata' {..} =
+    Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf metadata
+
+instance Data.ToHeaders UpdateNetworkResourceMetadata where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateNetworkResourceMetadata where
+  toJSON UpdateNetworkResourceMetadata' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Metadata" Data..= metadata)]
+      )
+
+instance Data.ToPath UpdateNetworkResourceMetadata where
+  toPath UpdateNetworkResourceMetadata' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/network-resources/",
+        Data.toBS resourceArn,
+        "/metadata"
+      ]
+
+instance Data.ToQuery UpdateNetworkResourceMetadata where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateNetworkResourceMetadataResponse' smart constructor.
+data UpdateNetworkResourceMetadataResponse = UpdateNetworkResourceMetadataResponse'
+  { -- | The updated resource metadata.
+    metadata :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The ARN of the resource.
+    resourceArn :: 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 'UpdateNetworkResourceMetadataResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'metadata', 'updateNetworkResourceMetadataResponse_metadata' - The updated resource metadata.
+--
+-- 'resourceArn', 'updateNetworkResourceMetadataResponse_resourceArn' - The ARN of the resource.
+--
+-- 'httpStatus', 'updateNetworkResourceMetadataResponse_httpStatus' - The response's http status code.
+newUpdateNetworkResourceMetadataResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateNetworkResourceMetadataResponse
+newUpdateNetworkResourceMetadataResponse pHttpStatus_ =
+  UpdateNetworkResourceMetadataResponse'
+    { metadata =
+        Prelude.Nothing,
+      resourceArn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The updated resource metadata.
+updateNetworkResourceMetadataResponse_metadata :: Lens.Lens' UpdateNetworkResourceMetadataResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+updateNetworkResourceMetadataResponse_metadata = Lens.lens (\UpdateNetworkResourceMetadataResponse' {metadata} -> metadata) (\s@UpdateNetworkResourceMetadataResponse' {} a -> s {metadata = a} :: UpdateNetworkResourceMetadataResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN of the resource.
+updateNetworkResourceMetadataResponse_resourceArn :: Lens.Lens' UpdateNetworkResourceMetadataResponse (Prelude.Maybe Prelude.Text)
+updateNetworkResourceMetadataResponse_resourceArn = Lens.lens (\UpdateNetworkResourceMetadataResponse' {resourceArn} -> resourceArn) (\s@UpdateNetworkResourceMetadataResponse' {} a -> s {resourceArn = a} :: UpdateNetworkResourceMetadataResponse)
+
+-- | The response's http status code.
+updateNetworkResourceMetadataResponse_httpStatus :: Lens.Lens' UpdateNetworkResourceMetadataResponse Prelude.Int
+updateNetworkResourceMetadataResponse_httpStatus = Lens.lens (\UpdateNetworkResourceMetadataResponse' {httpStatus} -> httpStatus) (\s@UpdateNetworkResourceMetadataResponse' {} a -> s {httpStatus = a} :: UpdateNetworkResourceMetadataResponse)
+
+instance
+  Prelude.NFData
+    UpdateNetworkResourceMetadataResponse
+  where
+  rnf UpdateNetworkResourceMetadataResponse' {..} =
+    Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/UpdateSite.hs b/gen/Amazonka/NetworkManager/UpdateSite.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/UpdateSite.hs
@@ -0,0 +1,236 @@
+{-# 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.NetworkManager.UpdateSite
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the information for an existing site. To remove information for
+-- any of the parameters, specify an empty string.
+module Amazonka.NetworkManager.UpdateSite
+  ( -- * Creating a Request
+    UpdateSite (..),
+    newUpdateSite,
+
+    -- * Request Lenses
+    updateSite_description,
+    updateSite_location,
+    updateSite_globalNetworkId,
+    updateSite_siteId,
+
+    -- * Destructuring the Response
+    UpdateSiteResponse (..),
+    newUpdateSiteResponse,
+
+    -- * Response Lenses
+    updateSiteResponse_site,
+    updateSiteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateSite' smart constructor.
+data UpdateSite = UpdateSite'
+  { -- | A description of your site.
+    --
+    -- Constraints: Maximum length of 256 characters.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The site location:
+    --
+    -- -   @Address@: The physical address of the site.
+    --
+    -- -   @Latitude@: The latitude of the site.
+    --
+    -- -   @Longitude@: The longitude of the site.
+    location :: Prelude.Maybe (Data.Sensitive Location),
+    -- | The ID of the global network.
+    globalNetworkId :: Prelude.Text,
+    -- | The ID of your site.
+    siteId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSite' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateSite_description' - A description of your site.
+--
+-- Constraints: Maximum length of 256 characters.
+--
+-- 'location', 'updateSite_location' - The site location:
+--
+-- -   @Address@: The physical address of the site.
+--
+-- -   @Latitude@: The latitude of the site.
+--
+-- -   @Longitude@: The longitude of the site.
+--
+-- 'globalNetworkId', 'updateSite_globalNetworkId' - The ID of the global network.
+--
+-- 'siteId', 'updateSite_siteId' - The ID of your site.
+newUpdateSite ::
+  -- | 'globalNetworkId'
+  Prelude.Text ->
+  -- | 'siteId'
+  Prelude.Text ->
+  UpdateSite
+newUpdateSite pGlobalNetworkId_ pSiteId_ =
+  UpdateSite'
+    { description = Prelude.Nothing,
+      location = Prelude.Nothing,
+      globalNetworkId = pGlobalNetworkId_,
+      siteId = pSiteId_
+    }
+
+-- | A description of your site.
+--
+-- Constraints: Maximum length of 256 characters.
+updateSite_description :: Lens.Lens' UpdateSite (Prelude.Maybe Prelude.Text)
+updateSite_description = Lens.lens (\UpdateSite' {description} -> description) (\s@UpdateSite' {} a -> s {description = a} :: UpdateSite)
+
+-- | The site location:
+--
+-- -   @Address@: The physical address of the site.
+--
+-- -   @Latitude@: The latitude of the site.
+--
+-- -   @Longitude@: The longitude of the site.
+updateSite_location :: Lens.Lens' UpdateSite (Prelude.Maybe Location)
+updateSite_location = Lens.lens (\UpdateSite' {location} -> location) (\s@UpdateSite' {} a -> s {location = a} :: UpdateSite) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the global network.
+updateSite_globalNetworkId :: Lens.Lens' UpdateSite Prelude.Text
+updateSite_globalNetworkId = Lens.lens (\UpdateSite' {globalNetworkId} -> globalNetworkId) (\s@UpdateSite' {} a -> s {globalNetworkId = a} :: UpdateSite)
+
+-- | The ID of your site.
+updateSite_siteId :: Lens.Lens' UpdateSite Prelude.Text
+updateSite_siteId = Lens.lens (\UpdateSite' {siteId} -> siteId) (\s@UpdateSite' {} a -> s {siteId = a} :: UpdateSite)
+
+instance Core.AWSRequest UpdateSite where
+  type AWSResponse UpdateSite = UpdateSiteResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateSiteResponse'
+            Prelude.<$> (x Data..?> "Site")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateSite where
+  hashWithSalt _salt UpdateSite' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` location
+      `Prelude.hashWithSalt` globalNetworkId
+      `Prelude.hashWithSalt` siteId
+
+instance Prelude.NFData UpdateSite where
+  rnf UpdateSite' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf location
+      `Prelude.seq` Prelude.rnf globalNetworkId
+      `Prelude.seq` Prelude.rnf siteId
+
+instance Data.ToHeaders UpdateSite where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateSite where
+  toJSON UpdateSite' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("Location" Data..=) Prelude.<$> location
+          ]
+      )
+
+instance Data.ToPath UpdateSite where
+  toPath UpdateSite' {..} =
+    Prelude.mconcat
+      [ "/global-networks/",
+        Data.toBS globalNetworkId,
+        "/sites/",
+        Data.toBS siteId
+      ]
+
+instance Data.ToQuery UpdateSite where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateSiteResponse' smart constructor.
+data UpdateSiteResponse = UpdateSiteResponse'
+  { -- | Information about the site.
+    site :: Prelude.Maybe Site,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSiteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'site', 'updateSiteResponse_site' - Information about the site.
+--
+-- 'httpStatus', 'updateSiteResponse_httpStatus' - The response's http status code.
+newUpdateSiteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateSiteResponse
+newUpdateSiteResponse pHttpStatus_ =
+  UpdateSiteResponse'
+    { site = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the site.
+updateSiteResponse_site :: Lens.Lens' UpdateSiteResponse (Prelude.Maybe Site)
+updateSiteResponse_site = Lens.lens (\UpdateSiteResponse' {site} -> site) (\s@UpdateSiteResponse' {} a -> s {site = a} :: UpdateSiteResponse)
+
+-- | The response's http status code.
+updateSiteResponse_httpStatus :: Lens.Lens' UpdateSiteResponse Prelude.Int
+updateSiteResponse_httpStatus = Lens.lens (\UpdateSiteResponse' {httpStatus} -> httpStatus) (\s@UpdateSiteResponse' {} a -> s {httpStatus = a} :: UpdateSiteResponse)
+
+instance Prelude.NFData UpdateSiteResponse where
+  rnf UpdateSiteResponse' {..} =
+    Prelude.rnf site
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/UpdateVpcAttachment.hs b/gen/Amazonka/NetworkManager/UpdateVpcAttachment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/UpdateVpcAttachment.hs
@@ -0,0 +1,211 @@
+{-# 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.NetworkManager.UpdateVpcAttachment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a VPC attachment.
+module Amazonka.NetworkManager.UpdateVpcAttachment
+  ( -- * Creating a Request
+    UpdateVpcAttachment (..),
+    newUpdateVpcAttachment,
+
+    -- * Request Lenses
+    updateVpcAttachment_addSubnetArns,
+    updateVpcAttachment_options,
+    updateVpcAttachment_removeSubnetArns,
+    updateVpcAttachment_attachmentId,
+
+    -- * Destructuring the Response
+    UpdateVpcAttachmentResponse (..),
+    newUpdateVpcAttachmentResponse,
+
+    -- * Response Lenses
+    updateVpcAttachmentResponse_vpcAttachment,
+    updateVpcAttachmentResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateVpcAttachment' smart constructor.
+data UpdateVpcAttachment = UpdateVpcAttachment'
+  { -- | Adds a subnet ARN to the VPC attachment.
+    addSubnetArns :: Prelude.Maybe [Prelude.Text],
+    -- | Additional options for updating the VPC attachment.
+    options :: Prelude.Maybe VpcOptions,
+    -- | Removes a subnet ARN from the attachment.
+    removeSubnetArns :: Prelude.Maybe [Prelude.Text],
+    -- | The ID of the attachment.
+    attachmentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateVpcAttachment' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'addSubnetArns', 'updateVpcAttachment_addSubnetArns' - Adds a subnet ARN to the VPC attachment.
+--
+-- 'options', 'updateVpcAttachment_options' - Additional options for updating the VPC attachment.
+--
+-- 'removeSubnetArns', 'updateVpcAttachment_removeSubnetArns' - Removes a subnet ARN from the attachment.
+--
+-- 'attachmentId', 'updateVpcAttachment_attachmentId' - The ID of the attachment.
+newUpdateVpcAttachment ::
+  -- | 'attachmentId'
+  Prelude.Text ->
+  UpdateVpcAttachment
+newUpdateVpcAttachment pAttachmentId_ =
+  UpdateVpcAttachment'
+    { addSubnetArns =
+        Prelude.Nothing,
+      options = Prelude.Nothing,
+      removeSubnetArns = Prelude.Nothing,
+      attachmentId = pAttachmentId_
+    }
+
+-- | Adds a subnet ARN to the VPC attachment.
+updateVpcAttachment_addSubnetArns :: Lens.Lens' UpdateVpcAttachment (Prelude.Maybe [Prelude.Text])
+updateVpcAttachment_addSubnetArns = Lens.lens (\UpdateVpcAttachment' {addSubnetArns} -> addSubnetArns) (\s@UpdateVpcAttachment' {} a -> s {addSubnetArns = a} :: UpdateVpcAttachment) Prelude.. Lens.mapping Lens.coerced
+
+-- | Additional options for updating the VPC attachment.
+updateVpcAttachment_options :: Lens.Lens' UpdateVpcAttachment (Prelude.Maybe VpcOptions)
+updateVpcAttachment_options = Lens.lens (\UpdateVpcAttachment' {options} -> options) (\s@UpdateVpcAttachment' {} a -> s {options = a} :: UpdateVpcAttachment)
+
+-- | Removes a subnet ARN from the attachment.
+updateVpcAttachment_removeSubnetArns :: Lens.Lens' UpdateVpcAttachment (Prelude.Maybe [Prelude.Text])
+updateVpcAttachment_removeSubnetArns = Lens.lens (\UpdateVpcAttachment' {removeSubnetArns} -> removeSubnetArns) (\s@UpdateVpcAttachment' {} a -> s {removeSubnetArns = a} :: UpdateVpcAttachment) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the attachment.
+updateVpcAttachment_attachmentId :: Lens.Lens' UpdateVpcAttachment Prelude.Text
+updateVpcAttachment_attachmentId = Lens.lens (\UpdateVpcAttachment' {attachmentId} -> attachmentId) (\s@UpdateVpcAttachment' {} a -> s {attachmentId = a} :: UpdateVpcAttachment)
+
+instance Core.AWSRequest UpdateVpcAttachment where
+  type
+    AWSResponse UpdateVpcAttachment =
+      UpdateVpcAttachmentResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateVpcAttachmentResponse'
+            Prelude.<$> (x Data..?> "VpcAttachment")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateVpcAttachment where
+  hashWithSalt _salt UpdateVpcAttachment' {..} =
+    _salt
+      `Prelude.hashWithSalt` addSubnetArns
+      `Prelude.hashWithSalt` options
+      `Prelude.hashWithSalt` removeSubnetArns
+      `Prelude.hashWithSalt` attachmentId
+
+instance Prelude.NFData UpdateVpcAttachment where
+  rnf UpdateVpcAttachment' {..} =
+    Prelude.rnf addSubnetArns
+      `Prelude.seq` Prelude.rnf options
+      `Prelude.seq` Prelude.rnf removeSubnetArns
+      `Prelude.seq` Prelude.rnf attachmentId
+
+instance Data.ToHeaders UpdateVpcAttachment where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateVpcAttachment where
+  toJSON UpdateVpcAttachment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AddSubnetArns" Data..=) Prelude.<$> addSubnetArns,
+            ("Options" Data..=) Prelude.<$> options,
+            ("RemoveSubnetArns" Data..=)
+              Prelude.<$> removeSubnetArns
+          ]
+      )
+
+instance Data.ToPath UpdateVpcAttachment where
+  toPath UpdateVpcAttachment' {..} =
+    Prelude.mconcat
+      ["/vpc-attachments/", Data.toBS attachmentId]
+
+instance Data.ToQuery UpdateVpcAttachment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateVpcAttachmentResponse' smart constructor.
+data UpdateVpcAttachmentResponse = UpdateVpcAttachmentResponse'
+  { -- | Describes the updated VPC attachment.
+    vpcAttachment :: Prelude.Maybe VpcAttachment,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateVpcAttachmentResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'vpcAttachment', 'updateVpcAttachmentResponse_vpcAttachment' - Describes the updated VPC attachment.
+--
+-- 'httpStatus', 'updateVpcAttachmentResponse_httpStatus' - The response's http status code.
+newUpdateVpcAttachmentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateVpcAttachmentResponse
+newUpdateVpcAttachmentResponse pHttpStatus_ =
+  UpdateVpcAttachmentResponse'
+    { vpcAttachment =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Describes the updated VPC attachment.
+updateVpcAttachmentResponse_vpcAttachment :: Lens.Lens' UpdateVpcAttachmentResponse (Prelude.Maybe VpcAttachment)
+updateVpcAttachmentResponse_vpcAttachment = Lens.lens (\UpdateVpcAttachmentResponse' {vpcAttachment} -> vpcAttachment) (\s@UpdateVpcAttachmentResponse' {} a -> s {vpcAttachment = a} :: UpdateVpcAttachmentResponse)
+
+-- | The response's http status code.
+updateVpcAttachmentResponse_httpStatus :: Lens.Lens' UpdateVpcAttachmentResponse Prelude.Int
+updateVpcAttachmentResponse_httpStatus = Lens.lens (\UpdateVpcAttachmentResponse' {httpStatus} -> httpStatus) (\s@UpdateVpcAttachmentResponse' {} a -> s {httpStatus = a} :: UpdateVpcAttachmentResponse)
+
+instance Prelude.NFData UpdateVpcAttachmentResponse where
+  rnf UpdateVpcAttachmentResponse' {..} =
+    Prelude.rnf vpcAttachment
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/NetworkManager/Waiters.hs b/gen/Amazonka/NetworkManager/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/NetworkManager/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.NetworkManager.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.NetworkManager.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.NetworkManager.Lens
+import Amazonka.NetworkManager.Types
+import qualified Amazonka.Prelude as Prelude
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Main (main) where
+
+import Test.Amazonka.NetworkManager
+import Test.Amazonka.NetworkManager.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "NetworkManager"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/NetworkManager.hs b/test/Test/Amazonka/Gen/NetworkManager.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/NetworkManager.hs
@@ -0,0 +1,1738 @@
+{-# 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.NetworkManager
+-- 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.NetworkManager where
+
+import Amazonka.NetworkManager
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.NetworkManager.Internal
+import Test.Amazonka.Prelude
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestAcceptAttachment $
+--             newAcceptAttachment
+--
+--         , requestAssociateConnectPeer $
+--             newAssociateConnectPeer
+--
+--         , requestAssociateCustomerGateway $
+--             newAssociateCustomerGateway
+--
+--         , requestAssociateLink $
+--             newAssociateLink
+--
+--         , requestAssociateTransitGatewayConnectPeer $
+--             newAssociateTransitGatewayConnectPeer
+--
+--         , requestCreateConnectAttachment $
+--             newCreateConnectAttachment
+--
+--         , requestCreateConnectPeer $
+--             newCreateConnectPeer
+--
+--         , requestCreateConnection $
+--             newCreateConnection
+--
+--         , requestCreateCoreNetwork $
+--             newCreateCoreNetwork
+--
+--         , requestCreateDevice $
+--             newCreateDevice
+--
+--         , requestCreateGlobalNetwork $
+--             newCreateGlobalNetwork
+--
+--         , requestCreateLink $
+--             newCreateLink
+--
+--         , requestCreateSite $
+--             newCreateSite
+--
+--         , requestCreateSiteToSiteVpnAttachment $
+--             newCreateSiteToSiteVpnAttachment
+--
+--         , requestCreateTransitGatewayPeering $
+--             newCreateTransitGatewayPeering
+--
+--         , requestCreateTransitGatewayRouteTableAttachment $
+--             newCreateTransitGatewayRouteTableAttachment
+--
+--         , requestCreateVpcAttachment $
+--             newCreateVpcAttachment
+--
+--         , requestDeleteAttachment $
+--             newDeleteAttachment
+--
+--         , requestDeleteConnectPeer $
+--             newDeleteConnectPeer
+--
+--         , requestDeleteConnection $
+--             newDeleteConnection
+--
+--         , requestDeleteCoreNetwork $
+--             newDeleteCoreNetwork
+--
+--         , requestDeleteCoreNetworkPolicyVersion $
+--             newDeleteCoreNetworkPolicyVersion
+--
+--         , requestDeleteDevice $
+--             newDeleteDevice
+--
+--         , requestDeleteGlobalNetwork $
+--             newDeleteGlobalNetwork
+--
+--         , requestDeleteLink $
+--             newDeleteLink
+--
+--         , requestDeletePeering $
+--             newDeletePeering
+--
+--         , requestDeleteResourcePolicy $
+--             newDeleteResourcePolicy
+--
+--         , requestDeleteSite $
+--             newDeleteSite
+--
+--         , requestDeregisterTransitGateway $
+--             newDeregisterTransitGateway
+--
+--         , requestDescribeGlobalNetworks $
+--             newDescribeGlobalNetworks
+--
+--         , requestDisassociateConnectPeer $
+--             newDisassociateConnectPeer
+--
+--         , requestDisassociateCustomerGateway $
+--             newDisassociateCustomerGateway
+--
+--         , requestDisassociateLink $
+--             newDisassociateLink
+--
+--         , requestDisassociateTransitGatewayConnectPeer $
+--             newDisassociateTransitGatewayConnectPeer
+--
+--         , requestExecuteCoreNetworkChangeSet $
+--             newExecuteCoreNetworkChangeSet
+--
+--         , requestGetConnectAttachment $
+--             newGetConnectAttachment
+--
+--         , requestGetConnectPeer $
+--             newGetConnectPeer
+--
+--         , requestGetConnectPeerAssociations $
+--             newGetConnectPeerAssociations
+--
+--         , requestGetConnections $
+--             newGetConnections
+--
+--         , requestGetCoreNetwork $
+--             newGetCoreNetwork
+--
+--         , requestGetCoreNetworkChangeEvents $
+--             newGetCoreNetworkChangeEvents
+--
+--         , requestGetCoreNetworkChangeSet $
+--             newGetCoreNetworkChangeSet
+--
+--         , requestGetCoreNetworkPolicy $
+--             newGetCoreNetworkPolicy
+--
+--         , requestGetCustomerGatewayAssociations $
+--             newGetCustomerGatewayAssociations
+--
+--         , requestGetDevices $
+--             newGetDevices
+--
+--         , requestGetLinkAssociations $
+--             newGetLinkAssociations
+--
+--         , requestGetLinks $
+--             newGetLinks
+--
+--         , requestGetNetworkResourceCounts $
+--             newGetNetworkResourceCounts
+--
+--         , requestGetNetworkResourceRelationships $
+--             newGetNetworkResourceRelationships
+--
+--         , requestGetNetworkResources $
+--             newGetNetworkResources
+--
+--         , requestGetNetworkRoutes $
+--             newGetNetworkRoutes
+--
+--         , requestGetNetworkTelemetry $
+--             newGetNetworkTelemetry
+--
+--         , requestGetResourcePolicy $
+--             newGetResourcePolicy
+--
+--         , requestGetRouteAnalysis $
+--             newGetRouteAnalysis
+--
+--         , requestGetSiteToSiteVpnAttachment $
+--             newGetSiteToSiteVpnAttachment
+--
+--         , requestGetSites $
+--             newGetSites
+--
+--         , requestGetTransitGatewayConnectPeerAssociations $
+--             newGetTransitGatewayConnectPeerAssociations
+--
+--         , requestGetTransitGatewayPeering $
+--             newGetTransitGatewayPeering
+--
+--         , requestGetTransitGatewayRegistrations $
+--             newGetTransitGatewayRegistrations
+--
+--         , requestGetTransitGatewayRouteTableAttachment $
+--             newGetTransitGatewayRouteTableAttachment
+--
+--         , requestGetVpcAttachment $
+--             newGetVpcAttachment
+--
+--         , requestListAttachments $
+--             newListAttachments
+--
+--         , requestListConnectPeers $
+--             newListConnectPeers
+--
+--         , requestListCoreNetworkPolicyVersions $
+--             newListCoreNetworkPolicyVersions
+--
+--         , requestListCoreNetworks $
+--             newListCoreNetworks
+--
+--         , requestListOrganizationServiceAccessStatus $
+--             newListOrganizationServiceAccessStatus
+--
+--         , requestListPeerings $
+--             newListPeerings
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestPutCoreNetworkPolicy $
+--             newPutCoreNetworkPolicy
+--
+--         , requestPutResourcePolicy $
+--             newPutResourcePolicy
+--
+--         , requestRegisterTransitGateway $
+--             newRegisterTransitGateway
+--
+--         , requestRejectAttachment $
+--             newRejectAttachment
+--
+--         , requestRestoreCoreNetworkPolicyVersion $
+--             newRestoreCoreNetworkPolicyVersion
+--
+--         , requestStartOrganizationServiceAccessUpdate $
+--             newStartOrganizationServiceAccessUpdate
+--
+--         , requestStartRouteAnalysis $
+--             newStartRouteAnalysis
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateConnection $
+--             newUpdateConnection
+--
+--         , requestUpdateCoreNetwork $
+--             newUpdateCoreNetwork
+--
+--         , requestUpdateDevice $
+--             newUpdateDevice
+--
+--         , requestUpdateGlobalNetwork $
+--             newUpdateGlobalNetwork
+--
+--         , requestUpdateLink $
+--             newUpdateLink
+--
+--         , requestUpdateNetworkResourceMetadata $
+--             newUpdateNetworkResourceMetadata
+--
+--         , requestUpdateSite $
+--             newUpdateSite
+--
+--         , requestUpdateVpcAttachment $
+--             newUpdateVpcAttachment
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAcceptAttachment $
+--             newAcceptAttachmentResponse
+--
+--         , responseAssociateConnectPeer $
+--             newAssociateConnectPeerResponse
+--
+--         , responseAssociateCustomerGateway $
+--             newAssociateCustomerGatewayResponse
+--
+--         , responseAssociateLink $
+--             newAssociateLinkResponse
+--
+--         , responseAssociateTransitGatewayConnectPeer $
+--             newAssociateTransitGatewayConnectPeerResponse
+--
+--         , responseCreateConnectAttachment $
+--             newCreateConnectAttachmentResponse
+--
+--         , responseCreateConnectPeer $
+--             newCreateConnectPeerResponse
+--
+--         , responseCreateConnection $
+--             newCreateConnectionResponse
+--
+--         , responseCreateCoreNetwork $
+--             newCreateCoreNetworkResponse
+--
+--         , responseCreateDevice $
+--             newCreateDeviceResponse
+--
+--         , responseCreateGlobalNetwork $
+--             newCreateGlobalNetworkResponse
+--
+--         , responseCreateLink $
+--             newCreateLinkResponse
+--
+--         , responseCreateSite $
+--             newCreateSiteResponse
+--
+--         , responseCreateSiteToSiteVpnAttachment $
+--             newCreateSiteToSiteVpnAttachmentResponse
+--
+--         , responseCreateTransitGatewayPeering $
+--             newCreateTransitGatewayPeeringResponse
+--
+--         , responseCreateTransitGatewayRouteTableAttachment $
+--             newCreateTransitGatewayRouteTableAttachmentResponse
+--
+--         , responseCreateVpcAttachment $
+--             newCreateVpcAttachmentResponse
+--
+--         , responseDeleteAttachment $
+--             newDeleteAttachmentResponse
+--
+--         , responseDeleteConnectPeer $
+--             newDeleteConnectPeerResponse
+--
+--         , responseDeleteConnection $
+--             newDeleteConnectionResponse
+--
+--         , responseDeleteCoreNetwork $
+--             newDeleteCoreNetworkResponse
+--
+--         , responseDeleteCoreNetworkPolicyVersion $
+--             newDeleteCoreNetworkPolicyVersionResponse
+--
+--         , responseDeleteDevice $
+--             newDeleteDeviceResponse
+--
+--         , responseDeleteGlobalNetwork $
+--             newDeleteGlobalNetworkResponse
+--
+--         , responseDeleteLink $
+--             newDeleteLinkResponse
+--
+--         , responseDeletePeering $
+--             newDeletePeeringResponse
+--
+--         , responseDeleteResourcePolicy $
+--             newDeleteResourcePolicyResponse
+--
+--         , responseDeleteSite $
+--             newDeleteSiteResponse
+--
+--         , responseDeregisterTransitGateway $
+--             newDeregisterTransitGatewayResponse
+--
+--         , responseDescribeGlobalNetworks $
+--             newDescribeGlobalNetworksResponse
+--
+--         , responseDisassociateConnectPeer $
+--             newDisassociateConnectPeerResponse
+--
+--         , responseDisassociateCustomerGateway $
+--             newDisassociateCustomerGatewayResponse
+--
+--         , responseDisassociateLink $
+--             newDisassociateLinkResponse
+--
+--         , responseDisassociateTransitGatewayConnectPeer $
+--             newDisassociateTransitGatewayConnectPeerResponse
+--
+--         , responseExecuteCoreNetworkChangeSet $
+--             newExecuteCoreNetworkChangeSetResponse
+--
+--         , responseGetConnectAttachment $
+--             newGetConnectAttachmentResponse
+--
+--         , responseGetConnectPeer $
+--             newGetConnectPeerResponse
+--
+--         , responseGetConnectPeerAssociations $
+--             newGetConnectPeerAssociationsResponse
+--
+--         , responseGetConnections $
+--             newGetConnectionsResponse
+--
+--         , responseGetCoreNetwork $
+--             newGetCoreNetworkResponse
+--
+--         , responseGetCoreNetworkChangeEvents $
+--             newGetCoreNetworkChangeEventsResponse
+--
+--         , responseGetCoreNetworkChangeSet $
+--             newGetCoreNetworkChangeSetResponse
+--
+--         , responseGetCoreNetworkPolicy $
+--             newGetCoreNetworkPolicyResponse
+--
+--         , responseGetCustomerGatewayAssociations $
+--             newGetCustomerGatewayAssociationsResponse
+--
+--         , responseGetDevices $
+--             newGetDevicesResponse
+--
+--         , responseGetLinkAssociations $
+--             newGetLinkAssociationsResponse
+--
+--         , responseGetLinks $
+--             newGetLinksResponse
+--
+--         , responseGetNetworkResourceCounts $
+--             newGetNetworkResourceCountsResponse
+--
+--         , responseGetNetworkResourceRelationships $
+--             newGetNetworkResourceRelationshipsResponse
+--
+--         , responseGetNetworkResources $
+--             newGetNetworkResourcesResponse
+--
+--         , responseGetNetworkRoutes $
+--             newGetNetworkRoutesResponse
+--
+--         , responseGetNetworkTelemetry $
+--             newGetNetworkTelemetryResponse
+--
+--         , responseGetResourcePolicy $
+--             newGetResourcePolicyResponse
+--
+--         , responseGetRouteAnalysis $
+--             newGetRouteAnalysisResponse
+--
+--         , responseGetSiteToSiteVpnAttachment $
+--             newGetSiteToSiteVpnAttachmentResponse
+--
+--         , responseGetSites $
+--             newGetSitesResponse
+--
+--         , responseGetTransitGatewayConnectPeerAssociations $
+--             newGetTransitGatewayConnectPeerAssociationsResponse
+--
+--         , responseGetTransitGatewayPeering $
+--             newGetTransitGatewayPeeringResponse
+--
+--         , responseGetTransitGatewayRegistrations $
+--             newGetTransitGatewayRegistrationsResponse
+--
+--         , responseGetTransitGatewayRouteTableAttachment $
+--             newGetTransitGatewayRouteTableAttachmentResponse
+--
+--         , responseGetVpcAttachment $
+--             newGetVpcAttachmentResponse
+--
+--         , responseListAttachments $
+--             newListAttachmentsResponse
+--
+--         , responseListConnectPeers $
+--             newListConnectPeersResponse
+--
+--         , responseListCoreNetworkPolicyVersions $
+--             newListCoreNetworkPolicyVersionsResponse
+--
+--         , responseListCoreNetworks $
+--             newListCoreNetworksResponse
+--
+--         , responseListOrganizationServiceAccessStatus $
+--             newListOrganizationServiceAccessStatusResponse
+--
+--         , responseListPeerings $
+--             newListPeeringsResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responsePutCoreNetworkPolicy $
+--             newPutCoreNetworkPolicyResponse
+--
+--         , responsePutResourcePolicy $
+--             newPutResourcePolicyResponse
+--
+--         , responseRegisterTransitGateway $
+--             newRegisterTransitGatewayResponse
+--
+--         , responseRejectAttachment $
+--             newRejectAttachmentResponse
+--
+--         , responseRestoreCoreNetworkPolicyVersion $
+--             newRestoreCoreNetworkPolicyVersionResponse
+--
+--         , responseStartOrganizationServiceAccessUpdate $
+--             newStartOrganizationServiceAccessUpdateResponse
+--
+--         , responseStartRouteAnalysis $
+--             newStartRouteAnalysisResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateConnection $
+--             newUpdateConnectionResponse
+--
+--         , responseUpdateCoreNetwork $
+--             newUpdateCoreNetworkResponse
+--
+--         , responseUpdateDevice $
+--             newUpdateDeviceResponse
+--
+--         , responseUpdateGlobalNetwork $
+--             newUpdateGlobalNetworkResponse
+--
+--         , responseUpdateLink $
+--             newUpdateLinkResponse
+--
+--         , responseUpdateNetworkResourceMetadata $
+--             newUpdateNetworkResourceMetadataResponse
+--
+--         , responseUpdateSite $
+--             newUpdateSiteResponse
+--
+--         , responseUpdateVpcAttachment $
+--             newUpdateVpcAttachmentResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAcceptAttachment :: AcceptAttachment -> TestTree
+requestAcceptAttachment =
+  req
+    "AcceptAttachment"
+    "fixture/AcceptAttachment.yaml"
+
+requestAssociateConnectPeer :: AssociateConnectPeer -> TestTree
+requestAssociateConnectPeer =
+  req
+    "AssociateConnectPeer"
+    "fixture/AssociateConnectPeer.yaml"
+
+requestAssociateCustomerGateway :: AssociateCustomerGateway -> TestTree
+requestAssociateCustomerGateway =
+  req
+    "AssociateCustomerGateway"
+    "fixture/AssociateCustomerGateway.yaml"
+
+requestAssociateLink :: AssociateLink -> TestTree
+requestAssociateLink =
+  req
+    "AssociateLink"
+    "fixture/AssociateLink.yaml"
+
+requestAssociateTransitGatewayConnectPeer :: AssociateTransitGatewayConnectPeer -> TestTree
+requestAssociateTransitGatewayConnectPeer =
+  req
+    "AssociateTransitGatewayConnectPeer"
+    "fixture/AssociateTransitGatewayConnectPeer.yaml"
+
+requestCreateConnectAttachment :: CreateConnectAttachment -> TestTree
+requestCreateConnectAttachment =
+  req
+    "CreateConnectAttachment"
+    "fixture/CreateConnectAttachment.yaml"
+
+requestCreateConnectPeer :: CreateConnectPeer -> TestTree
+requestCreateConnectPeer =
+  req
+    "CreateConnectPeer"
+    "fixture/CreateConnectPeer.yaml"
+
+requestCreateConnection :: CreateConnection -> TestTree
+requestCreateConnection =
+  req
+    "CreateConnection"
+    "fixture/CreateConnection.yaml"
+
+requestCreateCoreNetwork :: CreateCoreNetwork -> TestTree
+requestCreateCoreNetwork =
+  req
+    "CreateCoreNetwork"
+    "fixture/CreateCoreNetwork.yaml"
+
+requestCreateDevice :: CreateDevice -> TestTree
+requestCreateDevice =
+  req
+    "CreateDevice"
+    "fixture/CreateDevice.yaml"
+
+requestCreateGlobalNetwork :: CreateGlobalNetwork -> TestTree
+requestCreateGlobalNetwork =
+  req
+    "CreateGlobalNetwork"
+    "fixture/CreateGlobalNetwork.yaml"
+
+requestCreateLink :: CreateLink -> TestTree
+requestCreateLink =
+  req
+    "CreateLink"
+    "fixture/CreateLink.yaml"
+
+requestCreateSite :: CreateSite -> TestTree
+requestCreateSite =
+  req
+    "CreateSite"
+    "fixture/CreateSite.yaml"
+
+requestCreateSiteToSiteVpnAttachment :: CreateSiteToSiteVpnAttachment -> TestTree
+requestCreateSiteToSiteVpnAttachment =
+  req
+    "CreateSiteToSiteVpnAttachment"
+    "fixture/CreateSiteToSiteVpnAttachment.yaml"
+
+requestCreateTransitGatewayPeering :: CreateTransitGatewayPeering -> TestTree
+requestCreateTransitGatewayPeering =
+  req
+    "CreateTransitGatewayPeering"
+    "fixture/CreateTransitGatewayPeering.yaml"
+
+requestCreateTransitGatewayRouteTableAttachment :: CreateTransitGatewayRouteTableAttachment -> TestTree
+requestCreateTransitGatewayRouteTableAttachment =
+  req
+    "CreateTransitGatewayRouteTableAttachment"
+    "fixture/CreateTransitGatewayRouteTableAttachment.yaml"
+
+requestCreateVpcAttachment :: CreateVpcAttachment -> TestTree
+requestCreateVpcAttachment =
+  req
+    "CreateVpcAttachment"
+    "fixture/CreateVpcAttachment.yaml"
+
+requestDeleteAttachment :: DeleteAttachment -> TestTree
+requestDeleteAttachment =
+  req
+    "DeleteAttachment"
+    "fixture/DeleteAttachment.yaml"
+
+requestDeleteConnectPeer :: DeleteConnectPeer -> TestTree
+requestDeleteConnectPeer =
+  req
+    "DeleteConnectPeer"
+    "fixture/DeleteConnectPeer.yaml"
+
+requestDeleteConnection :: DeleteConnection -> TestTree
+requestDeleteConnection =
+  req
+    "DeleteConnection"
+    "fixture/DeleteConnection.yaml"
+
+requestDeleteCoreNetwork :: DeleteCoreNetwork -> TestTree
+requestDeleteCoreNetwork =
+  req
+    "DeleteCoreNetwork"
+    "fixture/DeleteCoreNetwork.yaml"
+
+requestDeleteCoreNetworkPolicyVersion :: DeleteCoreNetworkPolicyVersion -> TestTree
+requestDeleteCoreNetworkPolicyVersion =
+  req
+    "DeleteCoreNetworkPolicyVersion"
+    "fixture/DeleteCoreNetworkPolicyVersion.yaml"
+
+requestDeleteDevice :: DeleteDevice -> TestTree
+requestDeleteDevice =
+  req
+    "DeleteDevice"
+    "fixture/DeleteDevice.yaml"
+
+requestDeleteGlobalNetwork :: DeleteGlobalNetwork -> TestTree
+requestDeleteGlobalNetwork =
+  req
+    "DeleteGlobalNetwork"
+    "fixture/DeleteGlobalNetwork.yaml"
+
+requestDeleteLink :: DeleteLink -> TestTree
+requestDeleteLink =
+  req
+    "DeleteLink"
+    "fixture/DeleteLink.yaml"
+
+requestDeletePeering :: DeletePeering -> TestTree
+requestDeletePeering =
+  req
+    "DeletePeering"
+    "fixture/DeletePeering.yaml"
+
+requestDeleteResourcePolicy :: DeleteResourcePolicy -> TestTree
+requestDeleteResourcePolicy =
+  req
+    "DeleteResourcePolicy"
+    "fixture/DeleteResourcePolicy.yaml"
+
+requestDeleteSite :: DeleteSite -> TestTree
+requestDeleteSite =
+  req
+    "DeleteSite"
+    "fixture/DeleteSite.yaml"
+
+requestDeregisterTransitGateway :: DeregisterTransitGateway -> TestTree
+requestDeregisterTransitGateway =
+  req
+    "DeregisterTransitGateway"
+    "fixture/DeregisterTransitGateway.yaml"
+
+requestDescribeGlobalNetworks :: DescribeGlobalNetworks -> TestTree
+requestDescribeGlobalNetworks =
+  req
+    "DescribeGlobalNetworks"
+    "fixture/DescribeGlobalNetworks.yaml"
+
+requestDisassociateConnectPeer :: DisassociateConnectPeer -> TestTree
+requestDisassociateConnectPeer =
+  req
+    "DisassociateConnectPeer"
+    "fixture/DisassociateConnectPeer.yaml"
+
+requestDisassociateCustomerGateway :: DisassociateCustomerGateway -> TestTree
+requestDisassociateCustomerGateway =
+  req
+    "DisassociateCustomerGateway"
+    "fixture/DisassociateCustomerGateway.yaml"
+
+requestDisassociateLink :: DisassociateLink -> TestTree
+requestDisassociateLink =
+  req
+    "DisassociateLink"
+    "fixture/DisassociateLink.yaml"
+
+requestDisassociateTransitGatewayConnectPeer :: DisassociateTransitGatewayConnectPeer -> TestTree
+requestDisassociateTransitGatewayConnectPeer =
+  req
+    "DisassociateTransitGatewayConnectPeer"
+    "fixture/DisassociateTransitGatewayConnectPeer.yaml"
+
+requestExecuteCoreNetworkChangeSet :: ExecuteCoreNetworkChangeSet -> TestTree
+requestExecuteCoreNetworkChangeSet =
+  req
+    "ExecuteCoreNetworkChangeSet"
+    "fixture/ExecuteCoreNetworkChangeSet.yaml"
+
+requestGetConnectAttachment :: GetConnectAttachment -> TestTree
+requestGetConnectAttachment =
+  req
+    "GetConnectAttachment"
+    "fixture/GetConnectAttachment.yaml"
+
+requestGetConnectPeer :: GetConnectPeer -> TestTree
+requestGetConnectPeer =
+  req
+    "GetConnectPeer"
+    "fixture/GetConnectPeer.yaml"
+
+requestGetConnectPeerAssociations :: GetConnectPeerAssociations -> TestTree
+requestGetConnectPeerAssociations =
+  req
+    "GetConnectPeerAssociations"
+    "fixture/GetConnectPeerAssociations.yaml"
+
+requestGetConnections :: GetConnections -> TestTree
+requestGetConnections =
+  req
+    "GetConnections"
+    "fixture/GetConnections.yaml"
+
+requestGetCoreNetwork :: GetCoreNetwork -> TestTree
+requestGetCoreNetwork =
+  req
+    "GetCoreNetwork"
+    "fixture/GetCoreNetwork.yaml"
+
+requestGetCoreNetworkChangeEvents :: GetCoreNetworkChangeEvents -> TestTree
+requestGetCoreNetworkChangeEvents =
+  req
+    "GetCoreNetworkChangeEvents"
+    "fixture/GetCoreNetworkChangeEvents.yaml"
+
+requestGetCoreNetworkChangeSet :: GetCoreNetworkChangeSet -> TestTree
+requestGetCoreNetworkChangeSet =
+  req
+    "GetCoreNetworkChangeSet"
+    "fixture/GetCoreNetworkChangeSet.yaml"
+
+requestGetCoreNetworkPolicy :: GetCoreNetworkPolicy -> TestTree
+requestGetCoreNetworkPolicy =
+  req
+    "GetCoreNetworkPolicy"
+    "fixture/GetCoreNetworkPolicy.yaml"
+
+requestGetCustomerGatewayAssociations :: GetCustomerGatewayAssociations -> TestTree
+requestGetCustomerGatewayAssociations =
+  req
+    "GetCustomerGatewayAssociations"
+    "fixture/GetCustomerGatewayAssociations.yaml"
+
+requestGetDevices :: GetDevices -> TestTree
+requestGetDevices =
+  req
+    "GetDevices"
+    "fixture/GetDevices.yaml"
+
+requestGetLinkAssociations :: GetLinkAssociations -> TestTree
+requestGetLinkAssociations =
+  req
+    "GetLinkAssociations"
+    "fixture/GetLinkAssociations.yaml"
+
+requestGetLinks :: GetLinks -> TestTree
+requestGetLinks =
+  req
+    "GetLinks"
+    "fixture/GetLinks.yaml"
+
+requestGetNetworkResourceCounts :: GetNetworkResourceCounts -> TestTree
+requestGetNetworkResourceCounts =
+  req
+    "GetNetworkResourceCounts"
+    "fixture/GetNetworkResourceCounts.yaml"
+
+requestGetNetworkResourceRelationships :: GetNetworkResourceRelationships -> TestTree
+requestGetNetworkResourceRelationships =
+  req
+    "GetNetworkResourceRelationships"
+    "fixture/GetNetworkResourceRelationships.yaml"
+
+requestGetNetworkResources :: GetNetworkResources -> TestTree
+requestGetNetworkResources =
+  req
+    "GetNetworkResources"
+    "fixture/GetNetworkResources.yaml"
+
+requestGetNetworkRoutes :: GetNetworkRoutes -> TestTree
+requestGetNetworkRoutes =
+  req
+    "GetNetworkRoutes"
+    "fixture/GetNetworkRoutes.yaml"
+
+requestGetNetworkTelemetry :: GetNetworkTelemetry -> TestTree
+requestGetNetworkTelemetry =
+  req
+    "GetNetworkTelemetry"
+    "fixture/GetNetworkTelemetry.yaml"
+
+requestGetResourcePolicy :: GetResourcePolicy -> TestTree
+requestGetResourcePolicy =
+  req
+    "GetResourcePolicy"
+    "fixture/GetResourcePolicy.yaml"
+
+requestGetRouteAnalysis :: GetRouteAnalysis -> TestTree
+requestGetRouteAnalysis =
+  req
+    "GetRouteAnalysis"
+    "fixture/GetRouteAnalysis.yaml"
+
+requestGetSiteToSiteVpnAttachment :: GetSiteToSiteVpnAttachment -> TestTree
+requestGetSiteToSiteVpnAttachment =
+  req
+    "GetSiteToSiteVpnAttachment"
+    "fixture/GetSiteToSiteVpnAttachment.yaml"
+
+requestGetSites :: GetSites -> TestTree
+requestGetSites =
+  req
+    "GetSites"
+    "fixture/GetSites.yaml"
+
+requestGetTransitGatewayConnectPeerAssociations :: GetTransitGatewayConnectPeerAssociations -> TestTree
+requestGetTransitGatewayConnectPeerAssociations =
+  req
+    "GetTransitGatewayConnectPeerAssociations"
+    "fixture/GetTransitGatewayConnectPeerAssociations.yaml"
+
+requestGetTransitGatewayPeering :: GetTransitGatewayPeering -> TestTree
+requestGetTransitGatewayPeering =
+  req
+    "GetTransitGatewayPeering"
+    "fixture/GetTransitGatewayPeering.yaml"
+
+requestGetTransitGatewayRegistrations :: GetTransitGatewayRegistrations -> TestTree
+requestGetTransitGatewayRegistrations =
+  req
+    "GetTransitGatewayRegistrations"
+    "fixture/GetTransitGatewayRegistrations.yaml"
+
+requestGetTransitGatewayRouteTableAttachment :: GetTransitGatewayRouteTableAttachment -> TestTree
+requestGetTransitGatewayRouteTableAttachment =
+  req
+    "GetTransitGatewayRouteTableAttachment"
+    "fixture/GetTransitGatewayRouteTableAttachment.yaml"
+
+requestGetVpcAttachment :: GetVpcAttachment -> TestTree
+requestGetVpcAttachment =
+  req
+    "GetVpcAttachment"
+    "fixture/GetVpcAttachment.yaml"
+
+requestListAttachments :: ListAttachments -> TestTree
+requestListAttachments =
+  req
+    "ListAttachments"
+    "fixture/ListAttachments.yaml"
+
+requestListConnectPeers :: ListConnectPeers -> TestTree
+requestListConnectPeers =
+  req
+    "ListConnectPeers"
+    "fixture/ListConnectPeers.yaml"
+
+requestListCoreNetworkPolicyVersions :: ListCoreNetworkPolicyVersions -> TestTree
+requestListCoreNetworkPolicyVersions =
+  req
+    "ListCoreNetworkPolicyVersions"
+    "fixture/ListCoreNetworkPolicyVersions.yaml"
+
+requestListCoreNetworks :: ListCoreNetworks -> TestTree
+requestListCoreNetworks =
+  req
+    "ListCoreNetworks"
+    "fixture/ListCoreNetworks.yaml"
+
+requestListOrganizationServiceAccessStatus :: ListOrganizationServiceAccessStatus -> TestTree
+requestListOrganizationServiceAccessStatus =
+  req
+    "ListOrganizationServiceAccessStatus"
+    "fixture/ListOrganizationServiceAccessStatus.yaml"
+
+requestListPeerings :: ListPeerings -> TestTree
+requestListPeerings =
+  req
+    "ListPeerings"
+    "fixture/ListPeerings.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestPutCoreNetworkPolicy :: PutCoreNetworkPolicy -> TestTree
+requestPutCoreNetworkPolicy =
+  req
+    "PutCoreNetworkPolicy"
+    "fixture/PutCoreNetworkPolicy.yaml"
+
+requestPutResourcePolicy :: PutResourcePolicy -> TestTree
+requestPutResourcePolicy =
+  req
+    "PutResourcePolicy"
+    "fixture/PutResourcePolicy.yaml"
+
+requestRegisterTransitGateway :: RegisterTransitGateway -> TestTree
+requestRegisterTransitGateway =
+  req
+    "RegisterTransitGateway"
+    "fixture/RegisterTransitGateway.yaml"
+
+requestRejectAttachment :: RejectAttachment -> TestTree
+requestRejectAttachment =
+  req
+    "RejectAttachment"
+    "fixture/RejectAttachment.yaml"
+
+requestRestoreCoreNetworkPolicyVersion :: RestoreCoreNetworkPolicyVersion -> TestTree
+requestRestoreCoreNetworkPolicyVersion =
+  req
+    "RestoreCoreNetworkPolicyVersion"
+    "fixture/RestoreCoreNetworkPolicyVersion.yaml"
+
+requestStartOrganizationServiceAccessUpdate :: StartOrganizationServiceAccessUpdate -> TestTree
+requestStartOrganizationServiceAccessUpdate =
+  req
+    "StartOrganizationServiceAccessUpdate"
+    "fixture/StartOrganizationServiceAccessUpdate.yaml"
+
+requestStartRouteAnalysis :: StartRouteAnalysis -> TestTree
+requestStartRouteAnalysis =
+  req
+    "StartRouteAnalysis"
+    "fixture/StartRouteAnalysis.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateConnection :: UpdateConnection -> TestTree
+requestUpdateConnection =
+  req
+    "UpdateConnection"
+    "fixture/UpdateConnection.yaml"
+
+requestUpdateCoreNetwork :: UpdateCoreNetwork -> TestTree
+requestUpdateCoreNetwork =
+  req
+    "UpdateCoreNetwork"
+    "fixture/UpdateCoreNetwork.yaml"
+
+requestUpdateDevice :: UpdateDevice -> TestTree
+requestUpdateDevice =
+  req
+    "UpdateDevice"
+    "fixture/UpdateDevice.yaml"
+
+requestUpdateGlobalNetwork :: UpdateGlobalNetwork -> TestTree
+requestUpdateGlobalNetwork =
+  req
+    "UpdateGlobalNetwork"
+    "fixture/UpdateGlobalNetwork.yaml"
+
+requestUpdateLink :: UpdateLink -> TestTree
+requestUpdateLink =
+  req
+    "UpdateLink"
+    "fixture/UpdateLink.yaml"
+
+requestUpdateNetworkResourceMetadata :: UpdateNetworkResourceMetadata -> TestTree
+requestUpdateNetworkResourceMetadata =
+  req
+    "UpdateNetworkResourceMetadata"
+    "fixture/UpdateNetworkResourceMetadata.yaml"
+
+requestUpdateSite :: UpdateSite -> TestTree
+requestUpdateSite =
+  req
+    "UpdateSite"
+    "fixture/UpdateSite.yaml"
+
+requestUpdateVpcAttachment :: UpdateVpcAttachment -> TestTree
+requestUpdateVpcAttachment =
+  req
+    "UpdateVpcAttachment"
+    "fixture/UpdateVpcAttachment.yaml"
+
+-- Responses
+
+responseAcceptAttachment :: AcceptAttachmentResponse -> TestTree
+responseAcceptAttachment =
+  res
+    "AcceptAttachmentResponse"
+    "fixture/AcceptAttachmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AcceptAttachment)
+
+responseAssociateConnectPeer :: AssociateConnectPeerResponse -> TestTree
+responseAssociateConnectPeer =
+  res
+    "AssociateConnectPeerResponse"
+    "fixture/AssociateConnectPeerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateConnectPeer)
+
+responseAssociateCustomerGateway :: AssociateCustomerGatewayResponse -> TestTree
+responseAssociateCustomerGateway =
+  res
+    "AssociateCustomerGatewayResponse"
+    "fixture/AssociateCustomerGatewayResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateCustomerGateway)
+
+responseAssociateLink :: AssociateLinkResponse -> TestTree
+responseAssociateLink =
+  res
+    "AssociateLinkResponse"
+    "fixture/AssociateLinkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateLink)
+
+responseAssociateTransitGatewayConnectPeer :: AssociateTransitGatewayConnectPeerResponse -> TestTree
+responseAssociateTransitGatewayConnectPeer =
+  res
+    "AssociateTransitGatewayConnectPeerResponse"
+    "fixture/AssociateTransitGatewayConnectPeerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateTransitGatewayConnectPeer)
+
+responseCreateConnectAttachment :: CreateConnectAttachmentResponse -> TestTree
+responseCreateConnectAttachment =
+  res
+    "CreateConnectAttachmentResponse"
+    "fixture/CreateConnectAttachmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateConnectAttachment)
+
+responseCreateConnectPeer :: CreateConnectPeerResponse -> TestTree
+responseCreateConnectPeer =
+  res
+    "CreateConnectPeerResponse"
+    "fixture/CreateConnectPeerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateConnectPeer)
+
+responseCreateConnection :: CreateConnectionResponse -> TestTree
+responseCreateConnection =
+  res
+    "CreateConnectionResponse"
+    "fixture/CreateConnectionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateConnection)
+
+responseCreateCoreNetwork :: CreateCoreNetworkResponse -> TestTree
+responseCreateCoreNetwork =
+  res
+    "CreateCoreNetworkResponse"
+    "fixture/CreateCoreNetworkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateCoreNetwork)
+
+responseCreateDevice :: CreateDeviceResponse -> TestTree
+responseCreateDevice =
+  res
+    "CreateDeviceResponse"
+    "fixture/CreateDeviceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDevice)
+
+responseCreateGlobalNetwork :: CreateGlobalNetworkResponse -> TestTree
+responseCreateGlobalNetwork =
+  res
+    "CreateGlobalNetworkResponse"
+    "fixture/CreateGlobalNetworkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateGlobalNetwork)
+
+responseCreateLink :: CreateLinkResponse -> TestTree
+responseCreateLink =
+  res
+    "CreateLinkResponse"
+    "fixture/CreateLinkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateLink)
+
+responseCreateSite :: CreateSiteResponse -> TestTree
+responseCreateSite =
+  res
+    "CreateSiteResponse"
+    "fixture/CreateSiteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateSite)
+
+responseCreateSiteToSiteVpnAttachment :: CreateSiteToSiteVpnAttachmentResponse -> TestTree
+responseCreateSiteToSiteVpnAttachment =
+  res
+    "CreateSiteToSiteVpnAttachmentResponse"
+    "fixture/CreateSiteToSiteVpnAttachmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateSiteToSiteVpnAttachment)
+
+responseCreateTransitGatewayPeering :: CreateTransitGatewayPeeringResponse -> TestTree
+responseCreateTransitGatewayPeering =
+  res
+    "CreateTransitGatewayPeeringResponse"
+    "fixture/CreateTransitGatewayPeeringResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateTransitGatewayPeering)
+
+responseCreateTransitGatewayRouteTableAttachment :: CreateTransitGatewayRouteTableAttachmentResponse -> TestTree
+responseCreateTransitGatewayRouteTableAttachment =
+  res
+    "CreateTransitGatewayRouteTableAttachmentResponse"
+    "fixture/CreateTransitGatewayRouteTableAttachmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateTransitGatewayRouteTableAttachment)
+
+responseCreateVpcAttachment :: CreateVpcAttachmentResponse -> TestTree
+responseCreateVpcAttachment =
+  res
+    "CreateVpcAttachmentResponse"
+    "fixture/CreateVpcAttachmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateVpcAttachment)
+
+responseDeleteAttachment :: DeleteAttachmentResponse -> TestTree
+responseDeleteAttachment =
+  res
+    "DeleteAttachmentResponse"
+    "fixture/DeleteAttachmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteAttachment)
+
+responseDeleteConnectPeer :: DeleteConnectPeerResponse -> TestTree
+responseDeleteConnectPeer =
+  res
+    "DeleteConnectPeerResponse"
+    "fixture/DeleteConnectPeerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteConnectPeer)
+
+responseDeleteConnection :: DeleteConnectionResponse -> TestTree
+responseDeleteConnection =
+  res
+    "DeleteConnectionResponse"
+    "fixture/DeleteConnectionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteConnection)
+
+responseDeleteCoreNetwork :: DeleteCoreNetworkResponse -> TestTree
+responseDeleteCoreNetwork =
+  res
+    "DeleteCoreNetworkResponse"
+    "fixture/DeleteCoreNetworkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteCoreNetwork)
+
+responseDeleteCoreNetworkPolicyVersion :: DeleteCoreNetworkPolicyVersionResponse -> TestTree
+responseDeleteCoreNetworkPolicyVersion =
+  res
+    "DeleteCoreNetworkPolicyVersionResponse"
+    "fixture/DeleteCoreNetworkPolicyVersionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteCoreNetworkPolicyVersion)
+
+responseDeleteDevice :: DeleteDeviceResponse -> TestTree
+responseDeleteDevice =
+  res
+    "DeleteDeviceResponse"
+    "fixture/DeleteDeviceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDevice)
+
+responseDeleteGlobalNetwork :: DeleteGlobalNetworkResponse -> TestTree
+responseDeleteGlobalNetwork =
+  res
+    "DeleteGlobalNetworkResponse"
+    "fixture/DeleteGlobalNetworkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteGlobalNetwork)
+
+responseDeleteLink :: DeleteLinkResponse -> TestTree
+responseDeleteLink =
+  res
+    "DeleteLinkResponse"
+    "fixture/DeleteLinkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteLink)
+
+responseDeletePeering :: DeletePeeringResponse -> TestTree
+responseDeletePeering =
+  res
+    "DeletePeeringResponse"
+    "fixture/DeletePeeringResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeletePeering)
+
+responseDeleteResourcePolicy :: DeleteResourcePolicyResponse -> TestTree
+responseDeleteResourcePolicy =
+  res
+    "DeleteResourcePolicyResponse"
+    "fixture/DeleteResourcePolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteResourcePolicy)
+
+responseDeleteSite :: DeleteSiteResponse -> TestTree
+responseDeleteSite =
+  res
+    "DeleteSiteResponse"
+    "fixture/DeleteSiteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteSite)
+
+responseDeregisterTransitGateway :: DeregisterTransitGatewayResponse -> TestTree
+responseDeregisterTransitGateway =
+  res
+    "DeregisterTransitGatewayResponse"
+    "fixture/DeregisterTransitGatewayResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeregisterTransitGateway)
+
+responseDescribeGlobalNetworks :: DescribeGlobalNetworksResponse -> TestTree
+responseDescribeGlobalNetworks =
+  res
+    "DescribeGlobalNetworksResponse"
+    "fixture/DescribeGlobalNetworksResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeGlobalNetworks)
+
+responseDisassociateConnectPeer :: DisassociateConnectPeerResponse -> TestTree
+responseDisassociateConnectPeer =
+  res
+    "DisassociateConnectPeerResponse"
+    "fixture/DisassociateConnectPeerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateConnectPeer)
+
+responseDisassociateCustomerGateway :: DisassociateCustomerGatewayResponse -> TestTree
+responseDisassociateCustomerGateway =
+  res
+    "DisassociateCustomerGatewayResponse"
+    "fixture/DisassociateCustomerGatewayResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateCustomerGateway)
+
+responseDisassociateLink :: DisassociateLinkResponse -> TestTree
+responseDisassociateLink =
+  res
+    "DisassociateLinkResponse"
+    "fixture/DisassociateLinkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateLink)
+
+responseDisassociateTransitGatewayConnectPeer :: DisassociateTransitGatewayConnectPeerResponse -> TestTree
+responseDisassociateTransitGatewayConnectPeer =
+  res
+    "DisassociateTransitGatewayConnectPeerResponse"
+    "fixture/DisassociateTransitGatewayConnectPeerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateTransitGatewayConnectPeer)
+
+responseExecuteCoreNetworkChangeSet :: ExecuteCoreNetworkChangeSetResponse -> TestTree
+responseExecuteCoreNetworkChangeSet =
+  res
+    "ExecuteCoreNetworkChangeSetResponse"
+    "fixture/ExecuteCoreNetworkChangeSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ExecuteCoreNetworkChangeSet)
+
+responseGetConnectAttachment :: GetConnectAttachmentResponse -> TestTree
+responseGetConnectAttachment =
+  res
+    "GetConnectAttachmentResponse"
+    "fixture/GetConnectAttachmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetConnectAttachment)
+
+responseGetConnectPeer :: GetConnectPeerResponse -> TestTree
+responseGetConnectPeer =
+  res
+    "GetConnectPeerResponse"
+    "fixture/GetConnectPeerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetConnectPeer)
+
+responseGetConnectPeerAssociations :: GetConnectPeerAssociationsResponse -> TestTree
+responseGetConnectPeerAssociations =
+  res
+    "GetConnectPeerAssociationsResponse"
+    "fixture/GetConnectPeerAssociationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetConnectPeerAssociations)
+
+responseGetConnections :: GetConnectionsResponse -> TestTree
+responseGetConnections =
+  res
+    "GetConnectionsResponse"
+    "fixture/GetConnectionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetConnections)
+
+responseGetCoreNetwork :: GetCoreNetworkResponse -> TestTree
+responseGetCoreNetwork =
+  res
+    "GetCoreNetworkResponse"
+    "fixture/GetCoreNetworkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetCoreNetwork)
+
+responseGetCoreNetworkChangeEvents :: GetCoreNetworkChangeEventsResponse -> TestTree
+responseGetCoreNetworkChangeEvents =
+  res
+    "GetCoreNetworkChangeEventsResponse"
+    "fixture/GetCoreNetworkChangeEventsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetCoreNetworkChangeEvents)
+
+responseGetCoreNetworkChangeSet :: GetCoreNetworkChangeSetResponse -> TestTree
+responseGetCoreNetworkChangeSet =
+  res
+    "GetCoreNetworkChangeSetResponse"
+    "fixture/GetCoreNetworkChangeSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetCoreNetworkChangeSet)
+
+responseGetCoreNetworkPolicy :: GetCoreNetworkPolicyResponse -> TestTree
+responseGetCoreNetworkPolicy =
+  res
+    "GetCoreNetworkPolicyResponse"
+    "fixture/GetCoreNetworkPolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetCoreNetworkPolicy)
+
+responseGetCustomerGatewayAssociations :: GetCustomerGatewayAssociationsResponse -> TestTree
+responseGetCustomerGatewayAssociations =
+  res
+    "GetCustomerGatewayAssociationsResponse"
+    "fixture/GetCustomerGatewayAssociationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetCustomerGatewayAssociations)
+
+responseGetDevices :: GetDevicesResponse -> TestTree
+responseGetDevices =
+  res
+    "GetDevicesResponse"
+    "fixture/GetDevicesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetDevices)
+
+responseGetLinkAssociations :: GetLinkAssociationsResponse -> TestTree
+responseGetLinkAssociations =
+  res
+    "GetLinkAssociationsResponse"
+    "fixture/GetLinkAssociationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetLinkAssociations)
+
+responseGetLinks :: GetLinksResponse -> TestTree
+responseGetLinks =
+  res
+    "GetLinksResponse"
+    "fixture/GetLinksResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetLinks)
+
+responseGetNetworkResourceCounts :: GetNetworkResourceCountsResponse -> TestTree
+responseGetNetworkResourceCounts =
+  res
+    "GetNetworkResourceCountsResponse"
+    "fixture/GetNetworkResourceCountsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetNetworkResourceCounts)
+
+responseGetNetworkResourceRelationships :: GetNetworkResourceRelationshipsResponse -> TestTree
+responseGetNetworkResourceRelationships =
+  res
+    "GetNetworkResourceRelationshipsResponse"
+    "fixture/GetNetworkResourceRelationshipsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetNetworkResourceRelationships)
+
+responseGetNetworkResources :: GetNetworkResourcesResponse -> TestTree
+responseGetNetworkResources =
+  res
+    "GetNetworkResourcesResponse"
+    "fixture/GetNetworkResourcesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetNetworkResources)
+
+responseGetNetworkRoutes :: GetNetworkRoutesResponse -> TestTree
+responseGetNetworkRoutes =
+  res
+    "GetNetworkRoutesResponse"
+    "fixture/GetNetworkRoutesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetNetworkRoutes)
+
+responseGetNetworkTelemetry :: GetNetworkTelemetryResponse -> TestTree
+responseGetNetworkTelemetry =
+  res
+    "GetNetworkTelemetryResponse"
+    "fixture/GetNetworkTelemetryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetNetworkTelemetry)
+
+responseGetResourcePolicy :: GetResourcePolicyResponse -> TestTree
+responseGetResourcePolicy =
+  res
+    "GetResourcePolicyResponse"
+    "fixture/GetResourcePolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetResourcePolicy)
+
+responseGetRouteAnalysis :: GetRouteAnalysisResponse -> TestTree
+responseGetRouteAnalysis =
+  res
+    "GetRouteAnalysisResponse"
+    "fixture/GetRouteAnalysisResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetRouteAnalysis)
+
+responseGetSiteToSiteVpnAttachment :: GetSiteToSiteVpnAttachmentResponse -> TestTree
+responseGetSiteToSiteVpnAttachment =
+  res
+    "GetSiteToSiteVpnAttachmentResponse"
+    "fixture/GetSiteToSiteVpnAttachmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetSiteToSiteVpnAttachment)
+
+responseGetSites :: GetSitesResponse -> TestTree
+responseGetSites =
+  res
+    "GetSitesResponse"
+    "fixture/GetSitesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetSites)
+
+responseGetTransitGatewayConnectPeerAssociations :: GetTransitGatewayConnectPeerAssociationsResponse -> TestTree
+responseGetTransitGatewayConnectPeerAssociations =
+  res
+    "GetTransitGatewayConnectPeerAssociationsResponse"
+    "fixture/GetTransitGatewayConnectPeerAssociationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetTransitGatewayConnectPeerAssociations)
+
+responseGetTransitGatewayPeering :: GetTransitGatewayPeeringResponse -> TestTree
+responseGetTransitGatewayPeering =
+  res
+    "GetTransitGatewayPeeringResponse"
+    "fixture/GetTransitGatewayPeeringResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetTransitGatewayPeering)
+
+responseGetTransitGatewayRegistrations :: GetTransitGatewayRegistrationsResponse -> TestTree
+responseGetTransitGatewayRegistrations =
+  res
+    "GetTransitGatewayRegistrationsResponse"
+    "fixture/GetTransitGatewayRegistrationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetTransitGatewayRegistrations)
+
+responseGetTransitGatewayRouteTableAttachment :: GetTransitGatewayRouteTableAttachmentResponse -> TestTree
+responseGetTransitGatewayRouteTableAttachment =
+  res
+    "GetTransitGatewayRouteTableAttachmentResponse"
+    "fixture/GetTransitGatewayRouteTableAttachmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetTransitGatewayRouteTableAttachment)
+
+responseGetVpcAttachment :: GetVpcAttachmentResponse -> TestTree
+responseGetVpcAttachment =
+  res
+    "GetVpcAttachmentResponse"
+    "fixture/GetVpcAttachmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetVpcAttachment)
+
+responseListAttachments :: ListAttachmentsResponse -> TestTree
+responseListAttachments =
+  res
+    "ListAttachmentsResponse"
+    "fixture/ListAttachmentsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAttachments)
+
+responseListConnectPeers :: ListConnectPeersResponse -> TestTree
+responseListConnectPeers =
+  res
+    "ListConnectPeersResponse"
+    "fixture/ListConnectPeersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListConnectPeers)
+
+responseListCoreNetworkPolicyVersions :: ListCoreNetworkPolicyVersionsResponse -> TestTree
+responseListCoreNetworkPolicyVersions =
+  res
+    "ListCoreNetworkPolicyVersionsResponse"
+    "fixture/ListCoreNetworkPolicyVersionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListCoreNetworkPolicyVersions)
+
+responseListCoreNetworks :: ListCoreNetworksResponse -> TestTree
+responseListCoreNetworks =
+  res
+    "ListCoreNetworksResponse"
+    "fixture/ListCoreNetworksResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListCoreNetworks)
+
+responseListOrganizationServiceAccessStatus :: ListOrganizationServiceAccessStatusResponse -> TestTree
+responseListOrganizationServiceAccessStatus =
+  res
+    "ListOrganizationServiceAccessStatusResponse"
+    "fixture/ListOrganizationServiceAccessStatusResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListOrganizationServiceAccessStatus)
+
+responseListPeerings :: ListPeeringsResponse -> TestTree
+responseListPeerings =
+  res
+    "ListPeeringsResponse"
+    "fixture/ListPeeringsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListPeerings)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responsePutCoreNetworkPolicy :: PutCoreNetworkPolicyResponse -> TestTree
+responsePutCoreNetworkPolicy =
+  res
+    "PutCoreNetworkPolicyResponse"
+    "fixture/PutCoreNetworkPolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutCoreNetworkPolicy)
+
+responsePutResourcePolicy :: PutResourcePolicyResponse -> TestTree
+responsePutResourcePolicy =
+  res
+    "PutResourcePolicyResponse"
+    "fixture/PutResourcePolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutResourcePolicy)
+
+responseRegisterTransitGateway :: RegisterTransitGatewayResponse -> TestTree
+responseRegisterTransitGateway =
+  res
+    "RegisterTransitGatewayResponse"
+    "fixture/RegisterTransitGatewayResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RegisterTransitGateway)
+
+responseRejectAttachment :: RejectAttachmentResponse -> TestTree
+responseRejectAttachment =
+  res
+    "RejectAttachmentResponse"
+    "fixture/RejectAttachmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RejectAttachment)
+
+responseRestoreCoreNetworkPolicyVersion :: RestoreCoreNetworkPolicyVersionResponse -> TestTree
+responseRestoreCoreNetworkPolicyVersion =
+  res
+    "RestoreCoreNetworkPolicyVersionResponse"
+    "fixture/RestoreCoreNetworkPolicyVersionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RestoreCoreNetworkPolicyVersion)
+
+responseStartOrganizationServiceAccessUpdate :: StartOrganizationServiceAccessUpdateResponse -> TestTree
+responseStartOrganizationServiceAccessUpdate =
+  res
+    "StartOrganizationServiceAccessUpdateResponse"
+    "fixture/StartOrganizationServiceAccessUpdateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartOrganizationServiceAccessUpdate)
+
+responseStartRouteAnalysis :: StartRouteAnalysisResponse -> TestTree
+responseStartRouteAnalysis =
+  res
+    "StartRouteAnalysisResponse"
+    "fixture/StartRouteAnalysisResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartRouteAnalysis)
+
+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)
+
+responseUpdateConnection :: UpdateConnectionResponse -> TestTree
+responseUpdateConnection =
+  res
+    "UpdateConnectionResponse"
+    "fixture/UpdateConnectionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateConnection)
+
+responseUpdateCoreNetwork :: UpdateCoreNetworkResponse -> TestTree
+responseUpdateCoreNetwork =
+  res
+    "UpdateCoreNetworkResponse"
+    "fixture/UpdateCoreNetworkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateCoreNetwork)
+
+responseUpdateDevice :: UpdateDeviceResponse -> TestTree
+responseUpdateDevice =
+  res
+    "UpdateDeviceResponse"
+    "fixture/UpdateDeviceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDevice)
+
+responseUpdateGlobalNetwork :: UpdateGlobalNetworkResponse -> TestTree
+responseUpdateGlobalNetwork =
+  res
+    "UpdateGlobalNetworkResponse"
+    "fixture/UpdateGlobalNetworkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateGlobalNetwork)
+
+responseUpdateLink :: UpdateLinkResponse -> TestTree
+responseUpdateLink =
+  res
+    "UpdateLinkResponse"
+    "fixture/UpdateLinkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateLink)
+
+responseUpdateNetworkResourceMetadata :: UpdateNetworkResourceMetadataResponse -> TestTree
+responseUpdateNetworkResourceMetadata =
+  res
+    "UpdateNetworkResourceMetadataResponse"
+    "fixture/UpdateNetworkResourceMetadataResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateNetworkResourceMetadata)
+
+responseUpdateSite :: UpdateSiteResponse -> TestTree
+responseUpdateSite =
+  res
+    "UpdateSiteResponse"
+    "fixture/UpdateSiteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateSite)
+
+responseUpdateVpcAttachment :: UpdateVpcAttachmentResponse -> TestTree
+responseUpdateVpcAttachment =
+  res
+    "UpdateVpcAttachmentResponse"
+    "fixture/UpdateVpcAttachmentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateVpcAttachment)
diff --git a/test/Test/Amazonka/NetworkManager.hs b/test/Test/Amazonka/NetworkManager.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/NetworkManager.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.NetworkManager
+-- 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.NetworkManager
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/NetworkManager/Internal.hs b/test/Test/Amazonka/NetworkManager/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/NetworkManager/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.NetworkManager.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.NetworkManager.Internal where
