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 Private 5G SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2021-12-03@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-privatenetworks)
+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.PrivateNetworks](http://hackage.haskell.org/package/amazonka-privatenetworks/docs/Amazonka-PrivateNetworks.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-privatenetworks` 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-privatenetworks.cabal b/amazonka-privatenetworks.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-privatenetworks.cabal
@@ -0,0 +1,135 @@
+cabal-version:      2.2
+name:               amazonka-privatenetworks
+version:            2.0
+synopsis:           Amazon Private 5G SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
+description:
+  Derived from API version @2021-12-03@ 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.PrivateNetworks.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.PrivateNetworks" 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-privatenetworks
+
+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.PrivateNetworks
+    Amazonka.PrivateNetworks.AcknowledgeOrderReceipt
+    Amazonka.PrivateNetworks.ActivateDeviceIdentifier
+    Amazonka.PrivateNetworks.ActivateNetworkSite
+    Amazonka.PrivateNetworks.ConfigureAccessPoint
+    Amazonka.PrivateNetworks.CreateNetwork
+    Amazonka.PrivateNetworks.CreateNetworkSite
+    Amazonka.PrivateNetworks.DeactivateDeviceIdentifier
+    Amazonka.PrivateNetworks.DeleteNetwork
+    Amazonka.PrivateNetworks.DeleteNetworkSite
+    Amazonka.PrivateNetworks.GetDeviceIdentifier
+    Amazonka.PrivateNetworks.GetNetwork
+    Amazonka.PrivateNetworks.GetNetworkResource
+    Amazonka.PrivateNetworks.GetNetworkSite
+    Amazonka.PrivateNetworks.GetOrder
+    Amazonka.PrivateNetworks.Lens
+    Amazonka.PrivateNetworks.ListDeviceIdentifiers
+    Amazonka.PrivateNetworks.ListNetworkResources
+    Amazonka.PrivateNetworks.ListNetworks
+    Amazonka.PrivateNetworks.ListNetworkSites
+    Amazonka.PrivateNetworks.ListOrders
+    Amazonka.PrivateNetworks.ListTagsForResource
+    Amazonka.PrivateNetworks.Ping
+    Amazonka.PrivateNetworks.TagResource
+    Amazonka.PrivateNetworks.Types
+    Amazonka.PrivateNetworks.Types.AcknowledgmentStatus
+    Amazonka.PrivateNetworks.Types.Address
+    Amazonka.PrivateNetworks.Types.DeviceIdentifier
+    Amazonka.PrivateNetworks.Types.DeviceIdentifierFilterKeys
+    Amazonka.PrivateNetworks.Types.DeviceIdentifierStatus
+    Amazonka.PrivateNetworks.Types.ElevationReference
+    Amazonka.PrivateNetworks.Types.ElevationUnit
+    Amazonka.PrivateNetworks.Types.HealthStatus
+    Amazonka.PrivateNetworks.Types.NameValuePair
+    Amazonka.PrivateNetworks.Types.Network
+    Amazonka.PrivateNetworks.Types.NetworkFilterKeys
+    Amazonka.PrivateNetworks.Types.NetworkResource
+    Amazonka.PrivateNetworks.Types.NetworkResourceDefinition
+    Amazonka.PrivateNetworks.Types.NetworkResourceDefinitionType
+    Amazonka.PrivateNetworks.Types.NetworkResourceFilterKeys
+    Amazonka.PrivateNetworks.Types.NetworkResourceStatus
+    Amazonka.PrivateNetworks.Types.NetworkResourceType
+    Amazonka.PrivateNetworks.Types.NetworkSite
+    Amazonka.PrivateNetworks.Types.NetworkSiteFilterKeys
+    Amazonka.PrivateNetworks.Types.NetworkSiteStatus
+    Amazonka.PrivateNetworks.Types.NetworkStatus
+    Amazonka.PrivateNetworks.Types.Order
+    Amazonka.PrivateNetworks.Types.OrderFilterKeys
+    Amazonka.PrivateNetworks.Types.Position
+    Amazonka.PrivateNetworks.Types.SitePlan
+    Amazonka.PrivateNetworks.Types.TrackingInformation
+    Amazonka.PrivateNetworks.Types.UpdateNetworkSiteResponse
+    Amazonka.PrivateNetworks.UntagResource
+    Amazonka.PrivateNetworks.UpdateNetworkSite
+    Amazonka.PrivateNetworks.UpdateNetworkSitePlan
+    Amazonka.PrivateNetworks.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-privatenetworks-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.PrivateNetworks
+    Test.Amazonka.PrivateNetworks
+    Test.Amazonka.PrivateNetworks.Internal
+
+  build-depends:
+    , amazonka-core             >=2.0 && <2.1
+    , amazonka-privatenetworks
+    , amazonka-test             >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/AcknowledgeOrderReceipt.yaml b/fixture/AcknowledgeOrderReceipt.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AcknowledgeOrderReceipt.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/AcknowledgeOrderReceiptResponse.proto b/fixture/AcknowledgeOrderReceiptResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AcknowledgeOrderReceiptResponse.proto
diff --git a/fixture/ActivateDeviceIdentifier.yaml b/fixture/ActivateDeviceIdentifier.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ActivateDeviceIdentifier.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/ActivateDeviceIdentifierResponse.proto b/fixture/ActivateDeviceIdentifierResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ActivateDeviceIdentifierResponse.proto
diff --git a/fixture/ActivateNetworkSite.yaml b/fixture/ActivateNetworkSite.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ActivateNetworkSite.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/ActivateNetworkSiteResponse.proto b/fixture/ActivateNetworkSiteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ActivateNetworkSiteResponse.proto
diff --git a/fixture/ConfigureAccessPoint.yaml b/fixture/ConfigureAccessPoint.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ConfigureAccessPoint.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/ConfigureAccessPointResponse.proto b/fixture/ConfigureAccessPointResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ConfigureAccessPointResponse.proto
diff --git a/fixture/CreateNetwork.yaml b/fixture/CreateNetwork.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateNetwork.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/CreateNetworkResponse.proto b/fixture/CreateNetworkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateNetworkResponse.proto
diff --git a/fixture/CreateNetworkSite.yaml b/fixture/CreateNetworkSite.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateNetworkSite.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/CreateNetworkSiteResponse.proto b/fixture/CreateNetworkSiteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateNetworkSiteResponse.proto
diff --git a/fixture/DeactivateDeviceIdentifier.yaml b/fixture/DeactivateDeviceIdentifier.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeactivateDeviceIdentifier.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/DeactivateDeviceIdentifierResponse.proto b/fixture/DeactivateDeviceIdentifierResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeactivateDeviceIdentifierResponse.proto
diff --git a/fixture/DeleteNetwork.yaml b/fixture/DeleteNetwork.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteNetwork.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/DeleteNetworkResponse.proto b/fixture/DeleteNetworkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteNetworkResponse.proto
diff --git a/fixture/DeleteNetworkSite.yaml b/fixture/DeleteNetworkSite.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteNetworkSite.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/DeleteNetworkSiteResponse.proto b/fixture/DeleteNetworkSiteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteNetworkSiteResponse.proto
diff --git a/fixture/GetDeviceIdentifier.yaml b/fixture/GetDeviceIdentifier.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetDeviceIdentifier.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/GetDeviceIdentifierResponse.proto b/fixture/GetDeviceIdentifierResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetDeviceIdentifierResponse.proto
diff --git a/fixture/GetNetwork.yaml b/fixture/GetNetwork.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetwork.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/GetNetworkResource.yaml b/fixture/GetNetworkResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkResource.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/GetNetworkResourceResponse.proto b/fixture/GetNetworkResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkResourceResponse.proto
diff --git a/fixture/GetNetworkResponse.proto b/fixture/GetNetworkResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkResponse.proto
diff --git a/fixture/GetNetworkSite.yaml b/fixture/GetNetworkSite.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkSite.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/GetNetworkSiteResponse.proto b/fixture/GetNetworkSiteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetNetworkSiteResponse.proto
diff --git a/fixture/GetOrder.yaml b/fixture/GetOrder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetOrder.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/GetOrderResponse.proto b/fixture/GetOrderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetOrderResponse.proto
diff --git a/fixture/ListDeviceIdentifiers.yaml b/fixture/ListDeviceIdentifiers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListDeviceIdentifiers.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/ListDeviceIdentifiersResponse.proto b/fixture/ListDeviceIdentifiersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListDeviceIdentifiersResponse.proto
diff --git a/fixture/ListNetworkResources.yaml b/fixture/ListNetworkResources.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListNetworkResources.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/ListNetworkResourcesResponse.proto b/fixture/ListNetworkResourcesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListNetworkResourcesResponse.proto
diff --git a/fixture/ListNetworkSites.yaml b/fixture/ListNetworkSites.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListNetworkSites.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/ListNetworkSitesResponse.proto b/fixture/ListNetworkSitesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListNetworkSitesResponse.proto
diff --git a/fixture/ListNetworks.yaml b/fixture/ListNetworks.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListNetworks.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/ListNetworksResponse.proto b/fixture/ListNetworksResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListNetworksResponse.proto
diff --git a/fixture/ListOrders.yaml b/fixture/ListOrders.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListOrders.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/ListOrdersResponse.proto b/fixture/ListOrdersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListOrdersResponse.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/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/Ping.yaml b/fixture/Ping.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/Ping.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/PingResponse.proto b/fixture/PingResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PingResponse.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/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/UpdateNetworkSite.yaml b/fixture/UpdateNetworkSite.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateNetworkSite.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/UpdateNetworkSitePlan.yaml b/fixture/UpdateNetworkSitePlan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateNetworkSitePlan.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/private-networks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  private-networks.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/UpdateNetworkSitePlanResponse.proto b/fixture/UpdateNetworkSitePlanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateNetworkSitePlanResponse.proto
diff --git a/fixture/UpdateNetworkSiteResponse.proto b/fixture/UpdateNetworkSiteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateNetworkSiteResponse.proto
diff --git a/gen/Amazonka/PrivateNetworks.hs b/gen/Amazonka/PrivateNetworks.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks.hs
@@ -0,0 +1,351 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.PrivateNetworks
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2021-12-03@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon Web Services Private 5G is a managed service that makes it easy
+-- to deploy, operate, and scale your own private mobile network at your
+-- on-premises location. Private 5G provides the pre-configured hardware
+-- and software for mobile networks, helps automate setup, and scales
+-- capacity on demand to support additional devices as needed.
+module Amazonka.PrivateNetworks
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** LimitExceededException
+    _LimitExceededException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AcknowledgeOrderReceipt
+    AcknowledgeOrderReceipt (AcknowledgeOrderReceipt'),
+    newAcknowledgeOrderReceipt,
+    AcknowledgeOrderReceiptResponse (AcknowledgeOrderReceiptResponse'),
+    newAcknowledgeOrderReceiptResponse,
+
+    -- ** ActivateDeviceIdentifier
+    ActivateDeviceIdentifier (ActivateDeviceIdentifier'),
+    newActivateDeviceIdentifier,
+    ActivateDeviceIdentifierResponse (ActivateDeviceIdentifierResponse'),
+    newActivateDeviceIdentifierResponse,
+
+    -- ** ActivateNetworkSite
+    ActivateNetworkSite (ActivateNetworkSite'),
+    newActivateNetworkSite,
+    ActivateNetworkSiteResponse (ActivateNetworkSiteResponse'),
+    newActivateNetworkSiteResponse,
+
+    -- ** ConfigureAccessPoint
+    ConfigureAccessPoint (ConfigureAccessPoint'),
+    newConfigureAccessPoint,
+    ConfigureAccessPointResponse (ConfigureAccessPointResponse'),
+    newConfigureAccessPointResponse,
+
+    -- ** CreateNetwork
+    CreateNetwork (CreateNetwork'),
+    newCreateNetwork,
+    CreateNetworkResponse (CreateNetworkResponse'),
+    newCreateNetworkResponse,
+
+    -- ** CreateNetworkSite
+    CreateNetworkSite (CreateNetworkSite'),
+    newCreateNetworkSite,
+    CreateNetworkSiteResponse (CreateNetworkSiteResponse'),
+    newCreateNetworkSiteResponse,
+
+    -- ** DeactivateDeviceIdentifier
+    DeactivateDeviceIdentifier (DeactivateDeviceIdentifier'),
+    newDeactivateDeviceIdentifier,
+    DeactivateDeviceIdentifierResponse (DeactivateDeviceIdentifierResponse'),
+    newDeactivateDeviceIdentifierResponse,
+
+    -- ** DeleteNetwork
+    DeleteNetwork (DeleteNetwork'),
+    newDeleteNetwork,
+    DeleteNetworkResponse (DeleteNetworkResponse'),
+    newDeleteNetworkResponse,
+
+    -- ** DeleteNetworkSite
+    DeleteNetworkSite (DeleteNetworkSite'),
+    newDeleteNetworkSite,
+    DeleteNetworkSiteResponse (DeleteNetworkSiteResponse'),
+    newDeleteNetworkSiteResponse,
+
+    -- ** GetDeviceIdentifier
+    GetDeviceIdentifier (GetDeviceIdentifier'),
+    newGetDeviceIdentifier,
+    GetDeviceIdentifierResponse (GetDeviceIdentifierResponse'),
+    newGetDeviceIdentifierResponse,
+
+    -- ** GetNetwork
+    GetNetwork (GetNetwork'),
+    newGetNetwork,
+    GetNetworkResponse (GetNetworkResponse'),
+    newGetNetworkResponse,
+
+    -- ** GetNetworkResource
+    GetNetworkResource (GetNetworkResource'),
+    newGetNetworkResource,
+    GetNetworkResourceResponse (GetNetworkResourceResponse'),
+    newGetNetworkResourceResponse,
+
+    -- ** GetNetworkSite
+    GetNetworkSite (GetNetworkSite'),
+    newGetNetworkSite,
+    GetNetworkSiteResponse (GetNetworkSiteResponse'),
+    newGetNetworkSiteResponse,
+
+    -- ** GetOrder
+    GetOrder (GetOrder'),
+    newGetOrder,
+    GetOrderResponse (GetOrderResponse'),
+    newGetOrderResponse,
+
+    -- ** ListDeviceIdentifiers (Paginated)
+    ListDeviceIdentifiers (ListDeviceIdentifiers'),
+    newListDeviceIdentifiers,
+    ListDeviceIdentifiersResponse (ListDeviceIdentifiersResponse'),
+    newListDeviceIdentifiersResponse,
+
+    -- ** ListNetworkResources (Paginated)
+    ListNetworkResources (ListNetworkResources'),
+    newListNetworkResources,
+    ListNetworkResourcesResponse (ListNetworkResourcesResponse'),
+    newListNetworkResourcesResponse,
+
+    -- ** ListNetworkSites (Paginated)
+    ListNetworkSites (ListNetworkSites'),
+    newListNetworkSites,
+    ListNetworkSitesResponse (ListNetworkSitesResponse'),
+    newListNetworkSitesResponse,
+
+    -- ** ListNetworks (Paginated)
+    ListNetworks (ListNetworks'),
+    newListNetworks,
+    ListNetworksResponse (ListNetworksResponse'),
+    newListNetworksResponse,
+
+    -- ** ListOrders (Paginated)
+    ListOrders (ListOrders'),
+    newListOrders,
+    ListOrdersResponse (ListOrdersResponse'),
+    newListOrdersResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** Ping
+    Ping (Ping'),
+    newPing,
+    PingResponse (PingResponse'),
+    newPingResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateNetworkSite
+    UpdateNetworkSite (UpdateNetworkSite'),
+    newUpdateNetworkSite,
+    UpdateNetworkSiteResponse (UpdateNetworkSiteResponse'),
+    newUpdateNetworkSiteResponse,
+
+    -- ** UpdateNetworkSitePlan
+    UpdateNetworkSitePlan (UpdateNetworkSitePlan'),
+    newUpdateNetworkSitePlan,
+    UpdateNetworkSiteResponse (UpdateNetworkSiteResponse'),
+    newUpdateNetworkSiteResponse,
+
+    -- * Types
+
+    -- ** AcknowledgmentStatus
+    AcknowledgmentStatus (..),
+
+    -- ** DeviceIdentifierFilterKeys
+    DeviceIdentifierFilterKeys (..),
+
+    -- ** DeviceIdentifierStatus
+    DeviceIdentifierStatus (..),
+
+    -- ** ElevationReference
+    ElevationReference (..),
+
+    -- ** ElevationUnit
+    ElevationUnit (..),
+
+    -- ** HealthStatus
+    HealthStatus (..),
+
+    -- ** NetworkFilterKeys
+    NetworkFilterKeys (..),
+
+    -- ** NetworkResourceDefinitionType
+    NetworkResourceDefinitionType (..),
+
+    -- ** NetworkResourceFilterKeys
+    NetworkResourceFilterKeys (..),
+
+    -- ** NetworkResourceStatus
+    NetworkResourceStatus (..),
+
+    -- ** NetworkResourceType
+    NetworkResourceType (..),
+
+    -- ** NetworkSiteFilterKeys
+    NetworkSiteFilterKeys (..),
+
+    -- ** NetworkSiteStatus
+    NetworkSiteStatus (..),
+
+    -- ** NetworkStatus
+    NetworkStatus (..),
+
+    -- ** OrderFilterKeys
+    OrderFilterKeys (..),
+
+    -- ** Address
+    Address (Address'),
+    newAddress,
+
+    -- ** DeviceIdentifier
+    DeviceIdentifier (DeviceIdentifier'),
+    newDeviceIdentifier,
+
+    -- ** NameValuePair
+    NameValuePair (NameValuePair'),
+    newNameValuePair,
+
+    -- ** Network
+    Network (Network'),
+    newNetwork,
+
+    -- ** NetworkResource
+    NetworkResource (NetworkResource'),
+    newNetworkResource,
+
+    -- ** NetworkResourceDefinition
+    NetworkResourceDefinition (NetworkResourceDefinition'),
+    newNetworkResourceDefinition,
+
+    -- ** NetworkSite
+    NetworkSite (NetworkSite'),
+    newNetworkSite,
+
+    -- ** Order
+    Order (Order'),
+    newOrder,
+
+    -- ** Position
+    Position (Position'),
+    newPosition,
+
+    -- ** SitePlan
+    SitePlan (SitePlan'),
+    newSitePlan,
+
+    -- ** TrackingInformation
+    TrackingInformation (TrackingInformation'),
+    newTrackingInformation,
+
+    -- ** UpdateNetworkSiteResponse
+    UpdateNetworkSiteResponse (UpdateNetworkSiteResponse'),
+    newUpdateNetworkSiteResponse,
+  )
+where
+
+import Amazonka.PrivateNetworks.AcknowledgeOrderReceipt
+import Amazonka.PrivateNetworks.ActivateDeviceIdentifier
+import Amazonka.PrivateNetworks.ActivateNetworkSite
+import Amazonka.PrivateNetworks.ConfigureAccessPoint
+import Amazonka.PrivateNetworks.CreateNetwork
+import Amazonka.PrivateNetworks.CreateNetworkSite
+import Amazonka.PrivateNetworks.DeactivateDeviceIdentifier
+import Amazonka.PrivateNetworks.DeleteNetwork
+import Amazonka.PrivateNetworks.DeleteNetworkSite
+import Amazonka.PrivateNetworks.GetDeviceIdentifier
+import Amazonka.PrivateNetworks.GetNetwork
+import Amazonka.PrivateNetworks.GetNetworkResource
+import Amazonka.PrivateNetworks.GetNetworkSite
+import Amazonka.PrivateNetworks.GetOrder
+import Amazonka.PrivateNetworks.Lens
+import Amazonka.PrivateNetworks.ListDeviceIdentifiers
+import Amazonka.PrivateNetworks.ListNetworkResources
+import Amazonka.PrivateNetworks.ListNetworkSites
+import Amazonka.PrivateNetworks.ListNetworks
+import Amazonka.PrivateNetworks.ListOrders
+import Amazonka.PrivateNetworks.ListTagsForResource
+import Amazonka.PrivateNetworks.Ping
+import Amazonka.PrivateNetworks.TagResource
+import Amazonka.PrivateNetworks.Types
+import Amazonka.PrivateNetworks.UntagResource
+import Amazonka.PrivateNetworks.UpdateNetworkSite
+import Amazonka.PrivateNetworks.UpdateNetworkSitePlan
+import Amazonka.PrivateNetworks.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 'PrivateNetworks'.
+
+-- $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/PrivateNetworks/AcknowledgeOrderReceipt.hs b/gen/Amazonka/PrivateNetworks/AcknowledgeOrderReceipt.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/AcknowledgeOrderReceipt.hs
@@ -0,0 +1,172 @@
+{-# 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.PrivateNetworks.AcknowledgeOrderReceipt
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Acknowledges that the specified network order was received.
+module Amazonka.PrivateNetworks.AcknowledgeOrderReceipt
+  ( -- * Creating a Request
+    AcknowledgeOrderReceipt (..),
+    newAcknowledgeOrderReceipt,
+
+    -- * Request Lenses
+    acknowledgeOrderReceipt_orderArn,
+
+    -- * Destructuring the Response
+    AcknowledgeOrderReceiptResponse (..),
+    newAcknowledgeOrderReceiptResponse,
+
+    -- * Response Lenses
+    acknowledgeOrderReceiptResponse_httpStatus,
+    acknowledgeOrderReceiptResponse_order,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAcknowledgeOrderReceipt' smart constructor.
+data AcknowledgeOrderReceipt = AcknowledgeOrderReceipt'
+  { -- | The Amazon Resource Name (ARN) of the order.
+    orderArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AcknowledgeOrderReceipt' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'orderArn', 'acknowledgeOrderReceipt_orderArn' - The Amazon Resource Name (ARN) of the order.
+newAcknowledgeOrderReceipt ::
+  -- | 'orderArn'
+  Prelude.Text ->
+  AcknowledgeOrderReceipt
+newAcknowledgeOrderReceipt pOrderArn_ =
+  AcknowledgeOrderReceipt' {orderArn = pOrderArn_}
+
+-- | The Amazon Resource Name (ARN) of the order.
+acknowledgeOrderReceipt_orderArn :: Lens.Lens' AcknowledgeOrderReceipt Prelude.Text
+acknowledgeOrderReceipt_orderArn = Lens.lens (\AcknowledgeOrderReceipt' {orderArn} -> orderArn) (\s@AcknowledgeOrderReceipt' {} a -> s {orderArn = a} :: AcknowledgeOrderReceipt)
+
+instance Core.AWSRequest AcknowledgeOrderReceipt where
+  type
+    AWSResponse AcknowledgeOrderReceipt =
+      AcknowledgeOrderReceiptResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AcknowledgeOrderReceiptResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "order")
+      )
+
+instance Prelude.Hashable AcknowledgeOrderReceipt where
+  hashWithSalt _salt AcknowledgeOrderReceipt' {..} =
+    _salt `Prelude.hashWithSalt` orderArn
+
+instance Prelude.NFData AcknowledgeOrderReceipt where
+  rnf AcknowledgeOrderReceipt' {..} =
+    Prelude.rnf orderArn
+
+instance Data.ToHeaders AcknowledgeOrderReceipt where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AcknowledgeOrderReceipt where
+  toJSON AcknowledgeOrderReceipt' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("orderArn" Data..= orderArn)]
+      )
+
+instance Data.ToPath AcknowledgeOrderReceipt where
+  toPath = Prelude.const "/v1/orders/acknowledge"
+
+instance Data.ToQuery AcknowledgeOrderReceipt where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAcknowledgeOrderReceiptResponse' smart constructor.
+data AcknowledgeOrderReceiptResponse = AcknowledgeOrderReceiptResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Information about the order.
+    order :: Order
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AcknowledgeOrderReceiptResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'acknowledgeOrderReceiptResponse_httpStatus' - The response's http status code.
+--
+-- 'order', 'acknowledgeOrderReceiptResponse_order' - Information about the order.
+newAcknowledgeOrderReceiptResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'order'
+  Order ->
+  AcknowledgeOrderReceiptResponse
+newAcknowledgeOrderReceiptResponse
+  pHttpStatus_
+  pOrder_ =
+    AcknowledgeOrderReceiptResponse'
+      { httpStatus =
+          pHttpStatus_,
+        order = pOrder_
+      }
+
+-- | The response's http status code.
+acknowledgeOrderReceiptResponse_httpStatus :: Lens.Lens' AcknowledgeOrderReceiptResponse Prelude.Int
+acknowledgeOrderReceiptResponse_httpStatus = Lens.lens (\AcknowledgeOrderReceiptResponse' {httpStatus} -> httpStatus) (\s@AcknowledgeOrderReceiptResponse' {} a -> s {httpStatus = a} :: AcknowledgeOrderReceiptResponse)
+
+-- | Information about the order.
+acknowledgeOrderReceiptResponse_order :: Lens.Lens' AcknowledgeOrderReceiptResponse Order
+acknowledgeOrderReceiptResponse_order = Lens.lens (\AcknowledgeOrderReceiptResponse' {order} -> order) (\s@AcknowledgeOrderReceiptResponse' {} a -> s {order = a} :: AcknowledgeOrderReceiptResponse)
+
+instance
+  Prelude.NFData
+    AcknowledgeOrderReceiptResponse
+  where
+  rnf AcknowledgeOrderReceiptResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf order
diff --git a/gen/Amazonka/PrivateNetworks/ActivateDeviceIdentifier.hs b/gen/Amazonka/PrivateNetworks/ActivateDeviceIdentifier.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/ActivateDeviceIdentifier.hs
@@ -0,0 +1,210 @@
+{-# 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.PrivateNetworks.ActivateDeviceIdentifier
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Activates the specified device identifier.
+module Amazonka.PrivateNetworks.ActivateDeviceIdentifier
+  ( -- * Creating a Request
+    ActivateDeviceIdentifier (..),
+    newActivateDeviceIdentifier,
+
+    -- * Request Lenses
+    activateDeviceIdentifier_clientToken,
+    activateDeviceIdentifier_deviceIdentifierArn,
+
+    -- * Destructuring the Response
+    ActivateDeviceIdentifierResponse (..),
+    newActivateDeviceIdentifierResponse,
+
+    -- * Response Lenses
+    activateDeviceIdentifierResponse_tags,
+    activateDeviceIdentifierResponse_httpStatus,
+    activateDeviceIdentifierResponse_deviceIdentifier,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newActivateDeviceIdentifier' smart constructor.
+data ActivateDeviceIdentifier = ActivateDeviceIdentifier'
+  { -- | Unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the request. For more information, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the device identifier.
+    deviceIdentifierArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ActivateDeviceIdentifier' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'activateDeviceIdentifier_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+--
+-- 'deviceIdentifierArn', 'activateDeviceIdentifier_deviceIdentifierArn' - The Amazon Resource Name (ARN) of the device identifier.
+newActivateDeviceIdentifier ::
+  -- | 'deviceIdentifierArn'
+  Prelude.Text ->
+  ActivateDeviceIdentifier
+newActivateDeviceIdentifier pDeviceIdentifierArn_ =
+  ActivateDeviceIdentifier'
+    { clientToken =
+        Prelude.Nothing,
+      deviceIdentifierArn = pDeviceIdentifierArn_
+    }
+
+-- | Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+activateDeviceIdentifier_clientToken :: Lens.Lens' ActivateDeviceIdentifier (Prelude.Maybe Prelude.Text)
+activateDeviceIdentifier_clientToken = Lens.lens (\ActivateDeviceIdentifier' {clientToken} -> clientToken) (\s@ActivateDeviceIdentifier' {} a -> s {clientToken = a} :: ActivateDeviceIdentifier)
+
+-- | The Amazon Resource Name (ARN) of the device identifier.
+activateDeviceIdentifier_deviceIdentifierArn :: Lens.Lens' ActivateDeviceIdentifier Prelude.Text
+activateDeviceIdentifier_deviceIdentifierArn = Lens.lens (\ActivateDeviceIdentifier' {deviceIdentifierArn} -> deviceIdentifierArn) (\s@ActivateDeviceIdentifier' {} a -> s {deviceIdentifierArn = a} :: ActivateDeviceIdentifier)
+
+instance Core.AWSRequest ActivateDeviceIdentifier where
+  type
+    AWSResponse ActivateDeviceIdentifier =
+      ActivateDeviceIdentifierResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ActivateDeviceIdentifierResponse'
+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "deviceIdentifier")
+      )
+
+instance Prelude.Hashable ActivateDeviceIdentifier where
+  hashWithSalt _salt ActivateDeviceIdentifier' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` deviceIdentifierArn
+
+instance Prelude.NFData ActivateDeviceIdentifier where
+  rnf ActivateDeviceIdentifier' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf deviceIdentifierArn
+
+instance Data.ToHeaders ActivateDeviceIdentifier where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ActivateDeviceIdentifier where
+  toJSON ActivateDeviceIdentifier' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clientToken" Data..=) Prelude.<$> clientToken,
+            Prelude.Just
+              ("deviceIdentifierArn" Data..= deviceIdentifierArn)
+          ]
+      )
+
+instance Data.ToPath ActivateDeviceIdentifier where
+  toPath =
+    Prelude.const "/v1/device-identifiers/activate"
+
+instance Data.ToQuery ActivateDeviceIdentifier where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newActivateDeviceIdentifierResponse' smart constructor.
+data ActivateDeviceIdentifierResponse = ActivateDeviceIdentifierResponse'
+  { -- | The tags on the device identifier.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Information about the device identifier.
+    deviceIdentifier :: DeviceIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ActivateDeviceIdentifierResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'activateDeviceIdentifierResponse_tags' - The tags on the device identifier.
+--
+-- 'httpStatus', 'activateDeviceIdentifierResponse_httpStatus' - The response's http status code.
+--
+-- 'deviceIdentifier', 'activateDeviceIdentifierResponse_deviceIdentifier' - Information about the device identifier.
+newActivateDeviceIdentifierResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'deviceIdentifier'
+  DeviceIdentifier ->
+  ActivateDeviceIdentifierResponse
+newActivateDeviceIdentifierResponse
+  pHttpStatus_
+  pDeviceIdentifier_ =
+    ActivateDeviceIdentifierResponse'
+      { tags =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        deviceIdentifier = pDeviceIdentifier_
+      }
+
+-- | The tags on the device identifier.
+activateDeviceIdentifierResponse_tags :: Lens.Lens' ActivateDeviceIdentifierResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+activateDeviceIdentifierResponse_tags = Lens.lens (\ActivateDeviceIdentifierResponse' {tags} -> tags) (\s@ActivateDeviceIdentifierResponse' {} a -> s {tags = a} :: ActivateDeviceIdentifierResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The response's http status code.
+activateDeviceIdentifierResponse_httpStatus :: Lens.Lens' ActivateDeviceIdentifierResponse Prelude.Int
+activateDeviceIdentifierResponse_httpStatus = Lens.lens (\ActivateDeviceIdentifierResponse' {httpStatus} -> httpStatus) (\s@ActivateDeviceIdentifierResponse' {} a -> s {httpStatus = a} :: ActivateDeviceIdentifierResponse)
+
+-- | Information about the device identifier.
+activateDeviceIdentifierResponse_deviceIdentifier :: Lens.Lens' ActivateDeviceIdentifierResponse DeviceIdentifier
+activateDeviceIdentifierResponse_deviceIdentifier = Lens.lens (\ActivateDeviceIdentifierResponse' {deviceIdentifier} -> deviceIdentifier) (\s@ActivateDeviceIdentifierResponse' {} a -> s {deviceIdentifier = a} :: ActivateDeviceIdentifierResponse)
+
+instance
+  Prelude.NFData
+    ActivateDeviceIdentifierResponse
+  where
+  rnf ActivateDeviceIdentifierResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf deviceIdentifier
diff --git a/gen/Amazonka/PrivateNetworks/ActivateNetworkSite.hs b/gen/Amazonka/PrivateNetworks/ActivateNetworkSite.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/ActivateNetworkSite.hs
@@ -0,0 +1,207 @@
+{-# 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.PrivateNetworks.ActivateNetworkSite
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Activates the specified network site.
+module Amazonka.PrivateNetworks.ActivateNetworkSite
+  ( -- * Creating a Request
+    ActivateNetworkSite (..),
+    newActivateNetworkSite,
+
+    -- * Request Lenses
+    activateNetworkSite_clientToken,
+    activateNetworkSite_networkSiteArn,
+    activateNetworkSite_shippingAddress,
+
+    -- * Destructuring the Response
+    ActivateNetworkSiteResponse (..),
+    newActivateNetworkSiteResponse,
+
+    -- * Response Lenses
+    activateNetworkSiteResponse_networkSite,
+    activateNetworkSiteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newActivateNetworkSite' smart constructor.
+data ActivateNetworkSite = ActivateNetworkSite'
+  { -- | Unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the request. For more information, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network site.
+    networkSiteArn :: Prelude.Text,
+    -- | The shipping address of the network site.
+    shippingAddress :: Address
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ActivateNetworkSite' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'activateNetworkSite_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+--
+-- 'networkSiteArn', 'activateNetworkSite_networkSiteArn' - The Amazon Resource Name (ARN) of the network site.
+--
+-- 'shippingAddress', 'activateNetworkSite_shippingAddress' - The shipping address of the network site.
+newActivateNetworkSite ::
+  -- | 'networkSiteArn'
+  Prelude.Text ->
+  -- | 'shippingAddress'
+  Address ->
+  ActivateNetworkSite
+newActivateNetworkSite
+  pNetworkSiteArn_
+  pShippingAddress_ =
+    ActivateNetworkSite'
+      { clientToken = Prelude.Nothing,
+        networkSiteArn = pNetworkSiteArn_,
+        shippingAddress = pShippingAddress_
+      }
+
+-- | Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+activateNetworkSite_clientToken :: Lens.Lens' ActivateNetworkSite (Prelude.Maybe Prelude.Text)
+activateNetworkSite_clientToken = Lens.lens (\ActivateNetworkSite' {clientToken} -> clientToken) (\s@ActivateNetworkSite' {} a -> s {clientToken = a} :: ActivateNetworkSite)
+
+-- | The Amazon Resource Name (ARN) of the network site.
+activateNetworkSite_networkSiteArn :: Lens.Lens' ActivateNetworkSite Prelude.Text
+activateNetworkSite_networkSiteArn = Lens.lens (\ActivateNetworkSite' {networkSiteArn} -> networkSiteArn) (\s@ActivateNetworkSite' {} a -> s {networkSiteArn = a} :: ActivateNetworkSite)
+
+-- | The shipping address of the network site.
+activateNetworkSite_shippingAddress :: Lens.Lens' ActivateNetworkSite Address
+activateNetworkSite_shippingAddress = Lens.lens (\ActivateNetworkSite' {shippingAddress} -> shippingAddress) (\s@ActivateNetworkSite' {} a -> s {shippingAddress = a} :: ActivateNetworkSite)
+
+instance Core.AWSRequest ActivateNetworkSite where
+  type
+    AWSResponse ActivateNetworkSite =
+      ActivateNetworkSiteResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ActivateNetworkSiteResponse'
+            Prelude.<$> (x Data..?> "networkSite")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ActivateNetworkSite where
+  hashWithSalt _salt ActivateNetworkSite' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` networkSiteArn
+      `Prelude.hashWithSalt` shippingAddress
+
+instance Prelude.NFData ActivateNetworkSite where
+  rnf ActivateNetworkSite' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf networkSiteArn
+      `Prelude.seq` Prelude.rnf shippingAddress
+
+instance Data.ToHeaders ActivateNetworkSite where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ActivateNetworkSite where
+  toJSON ActivateNetworkSite' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clientToken" Data..=) Prelude.<$> clientToken,
+            Prelude.Just
+              ("networkSiteArn" Data..= networkSiteArn),
+            Prelude.Just
+              ("shippingAddress" Data..= shippingAddress)
+          ]
+      )
+
+instance Data.ToPath ActivateNetworkSite where
+  toPath = Prelude.const "/v1/network-sites/activate"
+
+instance Data.ToQuery ActivateNetworkSite where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newActivateNetworkSiteResponse' smart constructor.
+data ActivateNetworkSiteResponse = ActivateNetworkSiteResponse'
+  { -- | Information about the network site.
+    networkSite :: Prelude.Maybe NetworkSite,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ActivateNetworkSiteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'networkSite', 'activateNetworkSiteResponse_networkSite' - Information about the network site.
+--
+-- 'httpStatus', 'activateNetworkSiteResponse_httpStatus' - The response's http status code.
+newActivateNetworkSiteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ActivateNetworkSiteResponse
+newActivateNetworkSiteResponse pHttpStatus_ =
+  ActivateNetworkSiteResponse'
+    { networkSite =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the network site.
+activateNetworkSiteResponse_networkSite :: Lens.Lens' ActivateNetworkSiteResponse (Prelude.Maybe NetworkSite)
+activateNetworkSiteResponse_networkSite = Lens.lens (\ActivateNetworkSiteResponse' {networkSite} -> networkSite) (\s@ActivateNetworkSiteResponse' {} a -> s {networkSite = a} :: ActivateNetworkSiteResponse)
+
+-- | The response's http status code.
+activateNetworkSiteResponse_httpStatus :: Lens.Lens' ActivateNetworkSiteResponse Prelude.Int
+activateNetworkSiteResponse_httpStatus = Lens.lens (\ActivateNetworkSiteResponse' {httpStatus} -> httpStatus) (\s@ActivateNetworkSiteResponse' {} a -> s {httpStatus = a} :: ActivateNetworkSiteResponse)
+
+instance Prelude.NFData ActivateNetworkSiteResponse where
+  rnf ActivateNetworkSiteResponse' {..} =
+    Prelude.rnf networkSite
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/PrivateNetworks/ConfigureAccessPoint.hs b/gen/Amazonka/PrivateNetworks/ConfigureAccessPoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/ConfigureAccessPoint.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.PrivateNetworks.ConfigureAccessPoint
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Configures the specified network resource.
+--
+-- Use this action to specify the geographic position of the hardware. You
+-- must provide Certified Professional Installer (CPI) credentials in the
+-- request so that we can obtain spectrum grants. For more information, see
+-- <https://docs.aws.amazon.com/private-networks/latest/userguide/radio-units.html Radio units>
+-- in the /Amazon Web Services Private 5G User Guide/.
+module Amazonka.PrivateNetworks.ConfigureAccessPoint
+  ( -- * Creating a Request
+    ConfigureAccessPoint (..),
+    newConfigureAccessPoint,
+
+    -- * Request Lenses
+    configureAccessPoint_cpiSecretKey,
+    configureAccessPoint_cpiUserId,
+    configureAccessPoint_cpiUserPassword,
+    configureAccessPoint_cpiUsername,
+    configureAccessPoint_position,
+    configureAccessPoint_accessPointArn,
+
+    -- * Destructuring the Response
+    ConfigureAccessPointResponse (..),
+    newConfigureAccessPointResponse,
+
+    -- * Response Lenses
+    configureAccessPointResponse_httpStatus,
+    configureAccessPointResponse_accessPoint,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newConfigureAccessPoint' smart constructor.
+data ConfigureAccessPoint = ConfigureAccessPoint'
+  { -- | A Base64 encoded string of the CPI certificate associated with the CPI
+    -- user who is certifying the coordinates of the network resource.
+    cpiSecretKey :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The CPI user ID of the CPI user who is certifying the coordinates of the
+    -- network resource.
+    cpiUserId :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The CPI password associated with the CPI certificate in @cpiSecretKey@.
+    cpiUserPassword :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The CPI user name of the CPI user who is certifying the coordinates of
+    -- the radio unit.
+    cpiUsername :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The position of the network resource.
+    position :: Prelude.Maybe Position,
+    -- | The Amazon Resource Name (ARN) of the network resource.
+    accessPointArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConfigureAccessPoint' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cpiSecretKey', 'configureAccessPoint_cpiSecretKey' - A Base64 encoded string of the CPI certificate associated with the CPI
+-- user who is certifying the coordinates of the network resource.
+--
+-- 'cpiUserId', 'configureAccessPoint_cpiUserId' - The CPI user ID of the CPI user who is certifying the coordinates of the
+-- network resource.
+--
+-- 'cpiUserPassword', 'configureAccessPoint_cpiUserPassword' - The CPI password associated with the CPI certificate in @cpiSecretKey@.
+--
+-- 'cpiUsername', 'configureAccessPoint_cpiUsername' - The CPI user name of the CPI user who is certifying the coordinates of
+-- the radio unit.
+--
+-- 'position', 'configureAccessPoint_position' - The position of the network resource.
+--
+-- 'accessPointArn', 'configureAccessPoint_accessPointArn' - The Amazon Resource Name (ARN) of the network resource.
+newConfigureAccessPoint ::
+  -- | 'accessPointArn'
+  Prelude.Text ->
+  ConfigureAccessPoint
+newConfigureAccessPoint pAccessPointArn_ =
+  ConfigureAccessPoint'
+    { cpiSecretKey =
+        Prelude.Nothing,
+      cpiUserId = Prelude.Nothing,
+      cpiUserPassword = Prelude.Nothing,
+      cpiUsername = Prelude.Nothing,
+      position = Prelude.Nothing,
+      accessPointArn = pAccessPointArn_
+    }
+
+-- | A Base64 encoded string of the CPI certificate associated with the CPI
+-- user who is certifying the coordinates of the network resource.
+configureAccessPoint_cpiSecretKey :: Lens.Lens' ConfigureAccessPoint (Prelude.Maybe Prelude.Text)
+configureAccessPoint_cpiSecretKey = Lens.lens (\ConfigureAccessPoint' {cpiSecretKey} -> cpiSecretKey) (\s@ConfigureAccessPoint' {} a -> s {cpiSecretKey = a} :: ConfigureAccessPoint) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The CPI user ID of the CPI user who is certifying the coordinates of the
+-- network resource.
+configureAccessPoint_cpiUserId :: Lens.Lens' ConfigureAccessPoint (Prelude.Maybe Prelude.Text)
+configureAccessPoint_cpiUserId = Lens.lens (\ConfigureAccessPoint' {cpiUserId} -> cpiUserId) (\s@ConfigureAccessPoint' {} a -> s {cpiUserId = a} :: ConfigureAccessPoint) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The CPI password associated with the CPI certificate in @cpiSecretKey@.
+configureAccessPoint_cpiUserPassword :: Lens.Lens' ConfigureAccessPoint (Prelude.Maybe Prelude.Text)
+configureAccessPoint_cpiUserPassword = Lens.lens (\ConfigureAccessPoint' {cpiUserPassword} -> cpiUserPassword) (\s@ConfigureAccessPoint' {} a -> s {cpiUserPassword = a} :: ConfigureAccessPoint) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The CPI user name of the CPI user who is certifying the coordinates of
+-- the radio unit.
+configureAccessPoint_cpiUsername :: Lens.Lens' ConfigureAccessPoint (Prelude.Maybe Prelude.Text)
+configureAccessPoint_cpiUsername = Lens.lens (\ConfigureAccessPoint' {cpiUsername} -> cpiUsername) (\s@ConfigureAccessPoint' {} a -> s {cpiUsername = a} :: ConfigureAccessPoint) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The position of the network resource.
+configureAccessPoint_position :: Lens.Lens' ConfigureAccessPoint (Prelude.Maybe Position)
+configureAccessPoint_position = Lens.lens (\ConfigureAccessPoint' {position} -> position) (\s@ConfigureAccessPoint' {} a -> s {position = a} :: ConfigureAccessPoint)
+
+-- | The Amazon Resource Name (ARN) of the network resource.
+configureAccessPoint_accessPointArn :: Lens.Lens' ConfigureAccessPoint Prelude.Text
+configureAccessPoint_accessPointArn = Lens.lens (\ConfigureAccessPoint' {accessPointArn} -> accessPointArn) (\s@ConfigureAccessPoint' {} a -> s {accessPointArn = a} :: ConfigureAccessPoint)
+
+instance Core.AWSRequest ConfigureAccessPoint where
+  type
+    AWSResponse ConfigureAccessPoint =
+      ConfigureAccessPointResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ConfigureAccessPointResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "accessPoint")
+      )
+
+instance Prelude.Hashable ConfigureAccessPoint where
+  hashWithSalt _salt ConfigureAccessPoint' {..} =
+    _salt
+      `Prelude.hashWithSalt` cpiSecretKey
+      `Prelude.hashWithSalt` cpiUserId
+      `Prelude.hashWithSalt` cpiUserPassword
+      `Prelude.hashWithSalt` cpiUsername
+      `Prelude.hashWithSalt` position
+      `Prelude.hashWithSalt` accessPointArn
+
+instance Prelude.NFData ConfigureAccessPoint where
+  rnf ConfigureAccessPoint' {..} =
+    Prelude.rnf cpiSecretKey
+      `Prelude.seq` Prelude.rnf cpiUserId
+      `Prelude.seq` Prelude.rnf cpiUserPassword
+      `Prelude.seq` Prelude.rnf cpiUsername
+      `Prelude.seq` Prelude.rnf position
+      `Prelude.seq` Prelude.rnf accessPointArn
+
+instance Data.ToHeaders ConfigureAccessPoint where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ConfigureAccessPoint where
+  toJSON ConfigureAccessPoint' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("cpiSecretKey" Data..=) Prelude.<$> cpiSecretKey,
+            ("cpiUserId" Data..=) Prelude.<$> cpiUserId,
+            ("cpiUserPassword" Data..=)
+              Prelude.<$> cpiUserPassword,
+            ("cpiUsername" Data..=) Prelude.<$> cpiUsername,
+            ("position" Data..=) Prelude.<$> position,
+            Prelude.Just
+              ("accessPointArn" Data..= accessPointArn)
+          ]
+      )
+
+instance Data.ToPath ConfigureAccessPoint where
+  toPath =
+    Prelude.const "/v1/network-resources/configure"
+
+instance Data.ToQuery ConfigureAccessPoint where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newConfigureAccessPointResponse' smart constructor.
+data ConfigureAccessPointResponse = ConfigureAccessPointResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Information about the network resource.
+    accessPoint :: NetworkResource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConfigureAccessPointResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'configureAccessPointResponse_httpStatus' - The response's http status code.
+--
+-- 'accessPoint', 'configureAccessPointResponse_accessPoint' - Information about the network resource.
+newConfigureAccessPointResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'accessPoint'
+  NetworkResource ->
+  ConfigureAccessPointResponse
+newConfigureAccessPointResponse
+  pHttpStatus_
+  pAccessPoint_ =
+    ConfigureAccessPointResponse'
+      { httpStatus =
+          pHttpStatus_,
+        accessPoint = pAccessPoint_
+      }
+
+-- | The response's http status code.
+configureAccessPointResponse_httpStatus :: Lens.Lens' ConfigureAccessPointResponse Prelude.Int
+configureAccessPointResponse_httpStatus = Lens.lens (\ConfigureAccessPointResponse' {httpStatus} -> httpStatus) (\s@ConfigureAccessPointResponse' {} a -> s {httpStatus = a} :: ConfigureAccessPointResponse)
+
+-- | Information about the network resource.
+configureAccessPointResponse_accessPoint :: Lens.Lens' ConfigureAccessPointResponse NetworkResource
+configureAccessPointResponse_accessPoint = Lens.lens (\ConfigureAccessPointResponse' {accessPoint} -> accessPoint) (\s@ConfigureAccessPointResponse' {} a -> s {accessPoint = a} :: ConfigureAccessPointResponse)
+
+instance Prelude.NFData ConfigureAccessPointResponse where
+  rnf ConfigureAccessPointResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf accessPoint
diff --git a/gen/Amazonka/PrivateNetworks/CreateNetwork.hs b/gen/Amazonka/PrivateNetworks/CreateNetwork.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/CreateNetwork.hs
@@ -0,0 +1,230 @@
+{-# 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.PrivateNetworks.CreateNetwork
+-- 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 network.
+module Amazonka.PrivateNetworks.CreateNetwork
+  ( -- * Creating a Request
+    CreateNetwork (..),
+    newCreateNetwork,
+
+    -- * Request Lenses
+    createNetwork_clientToken,
+    createNetwork_description,
+    createNetwork_tags,
+    createNetwork_networkName,
+
+    -- * Destructuring the Response
+    CreateNetworkResponse (..),
+    newCreateNetworkResponse,
+
+    -- * Response Lenses
+    createNetworkResponse_tags,
+    createNetworkResponse_httpStatus,
+    createNetworkResponse_network,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateNetwork' smart constructor.
+data CreateNetwork = CreateNetwork'
+  { -- | Unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the request. For more information, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The description of the network.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The tags to apply to the network.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The name of the network. You can\'t change the name after you create the
+    -- network.
+    networkName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateNetwork' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createNetwork_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+--
+-- 'description', 'createNetwork_description' - The description of the network.
+--
+-- 'tags', 'createNetwork_tags' - The tags to apply to the network.
+--
+-- 'networkName', 'createNetwork_networkName' - The name of the network. You can\'t change the name after you create the
+-- network.
+newCreateNetwork ::
+  -- | 'networkName'
+  Prelude.Text ->
+  CreateNetwork
+newCreateNetwork pNetworkName_ =
+  CreateNetwork'
+    { clientToken = Prelude.Nothing,
+      description = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      networkName = pNetworkName_
+    }
+
+-- | Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+createNetwork_clientToken :: Lens.Lens' CreateNetwork (Prelude.Maybe Prelude.Text)
+createNetwork_clientToken = Lens.lens (\CreateNetwork' {clientToken} -> clientToken) (\s@CreateNetwork' {} a -> s {clientToken = a} :: CreateNetwork)
+
+-- | The description of the network.
+createNetwork_description :: Lens.Lens' CreateNetwork (Prelude.Maybe Prelude.Text)
+createNetwork_description = Lens.lens (\CreateNetwork' {description} -> description) (\s@CreateNetwork' {} a -> s {description = a} :: CreateNetwork)
+
+-- | The tags to apply to the network.
+createNetwork_tags :: Lens.Lens' CreateNetwork (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createNetwork_tags = Lens.lens (\CreateNetwork' {tags} -> tags) (\s@CreateNetwork' {} a -> s {tags = a} :: CreateNetwork) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The name of the network. You can\'t change the name after you create the
+-- network.
+createNetwork_networkName :: Lens.Lens' CreateNetwork Prelude.Text
+createNetwork_networkName = Lens.lens (\CreateNetwork' {networkName} -> networkName) (\s@CreateNetwork' {} a -> s {networkName = a} :: CreateNetwork)
+
+instance Core.AWSRequest CreateNetwork where
+  type
+    AWSResponse CreateNetwork =
+      CreateNetworkResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateNetworkResponse'
+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "network")
+      )
+
+instance Prelude.Hashable CreateNetwork where
+  hashWithSalt _salt CreateNetwork' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` networkName
+
+instance Prelude.NFData CreateNetwork where
+  rnf CreateNetwork' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf networkName
+
+instance Data.ToHeaders CreateNetwork where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateNetwork where
+  toJSON CreateNetwork' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clientToken" Data..=) Prelude.<$> clientToken,
+            ("description" Data..=) Prelude.<$> description,
+            ("tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("networkName" Data..= networkName)
+          ]
+      )
+
+instance Data.ToPath CreateNetwork where
+  toPath = Prelude.const "/v1/networks"
+
+instance Data.ToQuery CreateNetwork where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateNetworkResponse' smart constructor.
+data CreateNetworkResponse = CreateNetworkResponse'
+  { -- | The network tags.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Information about the network.
+    network :: Network
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateNetworkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'createNetworkResponse_tags' - The network tags.
+--
+-- 'httpStatus', 'createNetworkResponse_httpStatus' - The response's http status code.
+--
+-- 'network', 'createNetworkResponse_network' - Information about the network.
+newCreateNetworkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'network'
+  Network ->
+  CreateNetworkResponse
+newCreateNetworkResponse pHttpStatus_ pNetwork_ =
+  CreateNetworkResponse'
+    { tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      network = pNetwork_
+    }
+
+-- | The network tags.
+createNetworkResponse_tags :: Lens.Lens' CreateNetworkResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createNetworkResponse_tags = Lens.lens (\CreateNetworkResponse' {tags} -> tags) (\s@CreateNetworkResponse' {} a -> s {tags = a} :: CreateNetworkResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The response's http status code.
+createNetworkResponse_httpStatus :: Lens.Lens' CreateNetworkResponse Prelude.Int
+createNetworkResponse_httpStatus = Lens.lens (\CreateNetworkResponse' {httpStatus} -> httpStatus) (\s@CreateNetworkResponse' {} a -> s {httpStatus = a} :: CreateNetworkResponse)
+
+-- | Information about the network.
+createNetworkResponse_network :: Lens.Lens' CreateNetworkResponse Network
+createNetworkResponse_network = Lens.lens (\CreateNetworkResponse' {network} -> network) (\s@CreateNetworkResponse' {} a -> s {network = a} :: CreateNetworkResponse)
+
+instance Prelude.NFData CreateNetworkResponse where
+  rnf CreateNetworkResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf network
diff --git a/gen/Amazonka/PrivateNetworks/CreateNetworkSite.hs b/gen/Amazonka/PrivateNetworks/CreateNetworkSite.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/CreateNetworkSite.hs
@@ -0,0 +1,293 @@
+{-# 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.PrivateNetworks.CreateNetworkSite
+-- 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 network site.
+module Amazonka.PrivateNetworks.CreateNetworkSite
+  ( -- * Creating a Request
+    CreateNetworkSite (..),
+    newCreateNetworkSite,
+
+    -- * Request Lenses
+    createNetworkSite_availabilityZone,
+    createNetworkSite_availabilityZoneId,
+    createNetworkSite_clientToken,
+    createNetworkSite_description,
+    createNetworkSite_pendingPlan,
+    createNetworkSite_tags,
+    createNetworkSite_networkArn,
+    createNetworkSite_networkSiteName,
+
+    -- * Destructuring the Response
+    CreateNetworkSiteResponse (..),
+    newCreateNetworkSiteResponse,
+
+    -- * Response Lenses
+    createNetworkSiteResponse_networkSite,
+    createNetworkSiteResponse_tags,
+    createNetworkSiteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateNetworkSite' smart constructor.
+data CreateNetworkSite = CreateNetworkSite'
+  { -- | The Availability Zone that is the parent of this site. You can\'t change
+    -- the Availability Zone after you create the site.
+    availabilityZone :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Availability Zone that is the parent of this site. You
+    -- can\'t change the Availability Zone after you create the site.
+    availabilityZoneId :: Prelude.Maybe Prelude.Text,
+    -- | Unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the request. For more information, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The description of the site.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Information about the pending plan for this site.
+    pendingPlan :: Prelude.Maybe SitePlan,
+    -- | The tags to apply to the network site.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The Amazon Resource Name (ARN) of the network.
+    networkArn :: Prelude.Text,
+    -- | The name of the site. You can\'t change the name after you create the
+    -- site.
+    networkSiteName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateNetworkSite' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'availabilityZone', 'createNetworkSite_availabilityZone' - The Availability Zone that is the parent of this site. You can\'t change
+-- the Availability Zone after you create the site.
+--
+-- 'availabilityZoneId', 'createNetworkSite_availabilityZoneId' - The ID of the Availability Zone that is the parent of this site. You
+-- can\'t change the Availability Zone after you create the site.
+--
+-- 'clientToken', 'createNetworkSite_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+--
+-- 'description', 'createNetworkSite_description' - The description of the site.
+--
+-- 'pendingPlan', 'createNetworkSite_pendingPlan' - Information about the pending plan for this site.
+--
+-- 'tags', 'createNetworkSite_tags' - The tags to apply to the network site.
+--
+-- 'networkArn', 'createNetworkSite_networkArn' - The Amazon Resource Name (ARN) of the network.
+--
+-- 'networkSiteName', 'createNetworkSite_networkSiteName' - The name of the site. You can\'t change the name after you create the
+-- site.
+newCreateNetworkSite ::
+  -- | 'networkArn'
+  Prelude.Text ->
+  -- | 'networkSiteName'
+  Prelude.Text ->
+  CreateNetworkSite
+newCreateNetworkSite pNetworkArn_ pNetworkSiteName_ =
+  CreateNetworkSite'
+    { availabilityZone =
+        Prelude.Nothing,
+      availabilityZoneId = Prelude.Nothing,
+      clientToken = Prelude.Nothing,
+      description = Prelude.Nothing,
+      pendingPlan = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      networkArn = pNetworkArn_,
+      networkSiteName = pNetworkSiteName_
+    }
+
+-- | The Availability Zone that is the parent of this site. You can\'t change
+-- the Availability Zone after you create the site.
+createNetworkSite_availabilityZone :: Lens.Lens' CreateNetworkSite (Prelude.Maybe Prelude.Text)
+createNetworkSite_availabilityZone = Lens.lens (\CreateNetworkSite' {availabilityZone} -> availabilityZone) (\s@CreateNetworkSite' {} a -> s {availabilityZone = a} :: CreateNetworkSite)
+
+-- | The ID of the Availability Zone that is the parent of this site. You
+-- can\'t change the Availability Zone after you create the site.
+createNetworkSite_availabilityZoneId :: Lens.Lens' CreateNetworkSite (Prelude.Maybe Prelude.Text)
+createNetworkSite_availabilityZoneId = Lens.lens (\CreateNetworkSite' {availabilityZoneId} -> availabilityZoneId) (\s@CreateNetworkSite' {} a -> s {availabilityZoneId = a} :: CreateNetworkSite)
+
+-- | Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+createNetworkSite_clientToken :: Lens.Lens' CreateNetworkSite (Prelude.Maybe Prelude.Text)
+createNetworkSite_clientToken = Lens.lens (\CreateNetworkSite' {clientToken} -> clientToken) (\s@CreateNetworkSite' {} a -> s {clientToken = a} :: CreateNetworkSite)
+
+-- | The description of the site.
+createNetworkSite_description :: Lens.Lens' CreateNetworkSite (Prelude.Maybe Prelude.Text)
+createNetworkSite_description = Lens.lens (\CreateNetworkSite' {description} -> description) (\s@CreateNetworkSite' {} a -> s {description = a} :: CreateNetworkSite)
+
+-- | Information about the pending plan for this site.
+createNetworkSite_pendingPlan :: Lens.Lens' CreateNetworkSite (Prelude.Maybe SitePlan)
+createNetworkSite_pendingPlan = Lens.lens (\CreateNetworkSite' {pendingPlan} -> pendingPlan) (\s@CreateNetworkSite' {} a -> s {pendingPlan = a} :: CreateNetworkSite)
+
+-- | The tags to apply to the network site.
+createNetworkSite_tags :: Lens.Lens' CreateNetworkSite (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createNetworkSite_tags = Lens.lens (\CreateNetworkSite' {tags} -> tags) (\s@CreateNetworkSite' {} a -> s {tags = a} :: CreateNetworkSite) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The Amazon Resource Name (ARN) of the network.
+createNetworkSite_networkArn :: Lens.Lens' CreateNetworkSite Prelude.Text
+createNetworkSite_networkArn = Lens.lens (\CreateNetworkSite' {networkArn} -> networkArn) (\s@CreateNetworkSite' {} a -> s {networkArn = a} :: CreateNetworkSite)
+
+-- | The name of the site. You can\'t change the name after you create the
+-- site.
+createNetworkSite_networkSiteName :: Lens.Lens' CreateNetworkSite Prelude.Text
+createNetworkSite_networkSiteName = Lens.lens (\CreateNetworkSite' {networkSiteName} -> networkSiteName) (\s@CreateNetworkSite' {} a -> s {networkSiteName = a} :: CreateNetworkSite)
+
+instance Core.AWSRequest CreateNetworkSite where
+  type
+    AWSResponse CreateNetworkSite =
+      CreateNetworkSiteResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateNetworkSiteResponse'
+            Prelude.<$> (x Data..?> "networkSite")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateNetworkSite where
+  hashWithSalt _salt CreateNetworkSite' {..} =
+    _salt
+      `Prelude.hashWithSalt` availabilityZone
+      `Prelude.hashWithSalt` availabilityZoneId
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` pendingPlan
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` networkArn
+      `Prelude.hashWithSalt` networkSiteName
+
+instance Prelude.NFData CreateNetworkSite where
+  rnf CreateNetworkSite' {..} =
+    Prelude.rnf availabilityZone
+      `Prelude.seq` Prelude.rnf availabilityZoneId
+      `Prelude.seq` Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf pendingPlan
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf networkArn
+      `Prelude.seq` Prelude.rnf networkSiteName
+
+instance Data.ToHeaders CreateNetworkSite where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateNetworkSite where
+  toJSON CreateNetworkSite' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("availabilityZone" Data..=)
+              Prelude.<$> availabilityZone,
+            ("availabilityZoneId" Data..=)
+              Prelude.<$> availabilityZoneId,
+            ("clientToken" Data..=) Prelude.<$> clientToken,
+            ("description" Data..=) Prelude.<$> description,
+            ("pendingPlan" Data..=) Prelude.<$> pendingPlan,
+            ("tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("networkArn" Data..= networkArn),
+            Prelude.Just
+              ("networkSiteName" Data..= networkSiteName)
+          ]
+      )
+
+instance Data.ToPath CreateNetworkSite where
+  toPath = Prelude.const "/v1/network-sites"
+
+instance Data.ToQuery CreateNetworkSite where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateNetworkSiteResponse' smart constructor.
+data CreateNetworkSiteResponse = CreateNetworkSiteResponse'
+  { -- | Information about the network site.
+    networkSite :: Prelude.Maybe NetworkSite,
+    -- | The network site tags.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateNetworkSiteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'networkSite', 'createNetworkSiteResponse_networkSite' - Information about the network site.
+--
+-- 'tags', 'createNetworkSiteResponse_tags' - The network site tags.
+--
+-- 'httpStatus', 'createNetworkSiteResponse_httpStatus' - The response's http status code.
+newCreateNetworkSiteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateNetworkSiteResponse
+newCreateNetworkSiteResponse pHttpStatus_ =
+  CreateNetworkSiteResponse'
+    { networkSite =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the network site.
+createNetworkSiteResponse_networkSite :: Lens.Lens' CreateNetworkSiteResponse (Prelude.Maybe NetworkSite)
+createNetworkSiteResponse_networkSite = Lens.lens (\CreateNetworkSiteResponse' {networkSite} -> networkSite) (\s@CreateNetworkSiteResponse' {} a -> s {networkSite = a} :: CreateNetworkSiteResponse)
+
+-- | The network site tags.
+createNetworkSiteResponse_tags :: Lens.Lens' CreateNetworkSiteResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createNetworkSiteResponse_tags = Lens.lens (\CreateNetworkSiteResponse' {tags} -> tags) (\s@CreateNetworkSiteResponse' {} a -> s {tags = a} :: CreateNetworkSiteResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The response's http status code.
+createNetworkSiteResponse_httpStatus :: Lens.Lens' CreateNetworkSiteResponse Prelude.Int
+createNetworkSiteResponse_httpStatus = Lens.lens (\CreateNetworkSiteResponse' {httpStatus} -> httpStatus) (\s@CreateNetworkSiteResponse' {} a -> s {httpStatus = a} :: CreateNetworkSiteResponse)
+
+instance Prelude.NFData CreateNetworkSiteResponse where
+  rnf CreateNetworkSiteResponse' {..} =
+    Prelude.rnf networkSite
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/PrivateNetworks/DeactivateDeviceIdentifier.hs b/gen/Amazonka/PrivateNetworks/DeactivateDeviceIdentifier.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/DeactivateDeviceIdentifier.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.PrivateNetworks.DeactivateDeviceIdentifier
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deactivates the specified device identifier.
+module Amazonka.PrivateNetworks.DeactivateDeviceIdentifier
+  ( -- * Creating a Request
+    DeactivateDeviceIdentifier (..),
+    newDeactivateDeviceIdentifier,
+
+    -- * Request Lenses
+    deactivateDeviceIdentifier_clientToken,
+    deactivateDeviceIdentifier_deviceIdentifierArn,
+
+    -- * Destructuring the Response
+    DeactivateDeviceIdentifierResponse (..),
+    newDeactivateDeviceIdentifierResponse,
+
+    -- * Response Lenses
+    deactivateDeviceIdentifierResponse_httpStatus,
+    deactivateDeviceIdentifierResponse_deviceIdentifier,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeactivateDeviceIdentifier' smart constructor.
+data DeactivateDeviceIdentifier = DeactivateDeviceIdentifier'
+  { -- | Unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the request. For more information, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the device identifier.
+    deviceIdentifierArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeactivateDeviceIdentifier' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deactivateDeviceIdentifier_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+--
+-- 'deviceIdentifierArn', 'deactivateDeviceIdentifier_deviceIdentifierArn' - The Amazon Resource Name (ARN) of the device identifier.
+newDeactivateDeviceIdentifier ::
+  -- | 'deviceIdentifierArn'
+  Prelude.Text ->
+  DeactivateDeviceIdentifier
+newDeactivateDeviceIdentifier pDeviceIdentifierArn_ =
+  DeactivateDeviceIdentifier'
+    { clientToken =
+        Prelude.Nothing,
+      deviceIdentifierArn = pDeviceIdentifierArn_
+    }
+
+-- | Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+deactivateDeviceIdentifier_clientToken :: Lens.Lens' DeactivateDeviceIdentifier (Prelude.Maybe Prelude.Text)
+deactivateDeviceIdentifier_clientToken = Lens.lens (\DeactivateDeviceIdentifier' {clientToken} -> clientToken) (\s@DeactivateDeviceIdentifier' {} a -> s {clientToken = a} :: DeactivateDeviceIdentifier)
+
+-- | The Amazon Resource Name (ARN) of the device identifier.
+deactivateDeviceIdentifier_deviceIdentifierArn :: Lens.Lens' DeactivateDeviceIdentifier Prelude.Text
+deactivateDeviceIdentifier_deviceIdentifierArn = Lens.lens (\DeactivateDeviceIdentifier' {deviceIdentifierArn} -> deviceIdentifierArn) (\s@DeactivateDeviceIdentifier' {} a -> s {deviceIdentifierArn = a} :: DeactivateDeviceIdentifier)
+
+instance Core.AWSRequest DeactivateDeviceIdentifier where
+  type
+    AWSResponse DeactivateDeviceIdentifier =
+      DeactivateDeviceIdentifierResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeactivateDeviceIdentifierResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "deviceIdentifier")
+      )
+
+instance Prelude.Hashable DeactivateDeviceIdentifier where
+  hashWithSalt _salt DeactivateDeviceIdentifier' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` deviceIdentifierArn
+
+instance Prelude.NFData DeactivateDeviceIdentifier where
+  rnf DeactivateDeviceIdentifier' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf deviceIdentifierArn
+
+instance Data.ToHeaders DeactivateDeviceIdentifier where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeactivateDeviceIdentifier where
+  toJSON DeactivateDeviceIdentifier' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clientToken" Data..=) Prelude.<$> clientToken,
+            Prelude.Just
+              ("deviceIdentifierArn" Data..= deviceIdentifierArn)
+          ]
+      )
+
+instance Data.ToPath DeactivateDeviceIdentifier where
+  toPath =
+    Prelude.const "/v1/device-identifiers/deactivate"
+
+instance Data.ToQuery DeactivateDeviceIdentifier where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeactivateDeviceIdentifierResponse' smart constructor.
+data DeactivateDeviceIdentifierResponse = DeactivateDeviceIdentifierResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Information about the device identifier.
+    deviceIdentifier :: DeviceIdentifier
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeactivateDeviceIdentifierResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deactivateDeviceIdentifierResponse_httpStatus' - The response's http status code.
+--
+-- 'deviceIdentifier', 'deactivateDeviceIdentifierResponse_deviceIdentifier' - Information about the device identifier.
+newDeactivateDeviceIdentifierResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'deviceIdentifier'
+  DeviceIdentifier ->
+  DeactivateDeviceIdentifierResponse
+newDeactivateDeviceIdentifierResponse
+  pHttpStatus_
+  pDeviceIdentifier_ =
+    DeactivateDeviceIdentifierResponse'
+      { httpStatus =
+          pHttpStatus_,
+        deviceIdentifier = pDeviceIdentifier_
+      }
+
+-- | The response's http status code.
+deactivateDeviceIdentifierResponse_httpStatus :: Lens.Lens' DeactivateDeviceIdentifierResponse Prelude.Int
+deactivateDeviceIdentifierResponse_httpStatus = Lens.lens (\DeactivateDeviceIdentifierResponse' {httpStatus} -> httpStatus) (\s@DeactivateDeviceIdentifierResponse' {} a -> s {httpStatus = a} :: DeactivateDeviceIdentifierResponse)
+
+-- | Information about the device identifier.
+deactivateDeviceIdentifierResponse_deviceIdentifier :: Lens.Lens' DeactivateDeviceIdentifierResponse DeviceIdentifier
+deactivateDeviceIdentifierResponse_deviceIdentifier = Lens.lens (\DeactivateDeviceIdentifierResponse' {deviceIdentifier} -> deviceIdentifier) (\s@DeactivateDeviceIdentifierResponse' {} a -> s {deviceIdentifier = a} :: DeactivateDeviceIdentifierResponse)
+
+instance
+  Prelude.NFData
+    DeactivateDeviceIdentifierResponse
+  where
+  rnf DeactivateDeviceIdentifierResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf deviceIdentifier
diff --git a/gen/Amazonka/PrivateNetworks/DeleteNetwork.hs b/gen/Amazonka/PrivateNetworks/DeleteNetwork.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/DeleteNetwork.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.PrivateNetworks.DeleteNetwork
+-- 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 network. You must delete network sites before you
+-- delete the network. For more information, see
+-- <https://docs.aws.amazon.com/private-networks/latest/APIReference/API_DeleteNetworkSite.html DeleteNetworkSite>
+-- in the /API Reference for Amazon Web Services Private 5G/.
+module Amazonka.PrivateNetworks.DeleteNetwork
+  ( -- * Creating a Request
+    DeleteNetwork (..),
+    newDeleteNetwork,
+
+    -- * Request Lenses
+    deleteNetwork_clientToken,
+    deleteNetwork_networkArn,
+
+    -- * Destructuring the Response
+    DeleteNetworkResponse (..),
+    newDeleteNetworkResponse,
+
+    -- * Response Lenses
+    deleteNetworkResponse_httpStatus,
+    deleteNetworkResponse_network,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteNetwork' smart constructor.
+data DeleteNetwork = DeleteNetwork'
+  { -- | Unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the request. For more information, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network.
+    networkArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteNetwork' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteNetwork_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+--
+-- 'networkArn', 'deleteNetwork_networkArn' - The Amazon Resource Name (ARN) of the network.
+newDeleteNetwork ::
+  -- | 'networkArn'
+  Prelude.Text ->
+  DeleteNetwork
+newDeleteNetwork pNetworkArn_ =
+  DeleteNetwork'
+    { clientToken = Prelude.Nothing,
+      networkArn = pNetworkArn_
+    }
+
+-- | Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+deleteNetwork_clientToken :: Lens.Lens' DeleteNetwork (Prelude.Maybe Prelude.Text)
+deleteNetwork_clientToken = Lens.lens (\DeleteNetwork' {clientToken} -> clientToken) (\s@DeleteNetwork' {} a -> s {clientToken = a} :: DeleteNetwork)
+
+-- | The Amazon Resource Name (ARN) of the network.
+deleteNetwork_networkArn :: Lens.Lens' DeleteNetwork Prelude.Text
+deleteNetwork_networkArn = Lens.lens (\DeleteNetwork' {networkArn} -> networkArn) (\s@DeleteNetwork' {} a -> s {networkArn = a} :: DeleteNetwork)
+
+instance Core.AWSRequest DeleteNetwork where
+  type
+    AWSResponse DeleteNetwork =
+      DeleteNetworkResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteNetworkResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "network")
+      )
+
+instance Prelude.Hashable DeleteNetwork where
+  hashWithSalt _salt DeleteNetwork' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` networkArn
+
+instance Prelude.NFData DeleteNetwork where
+  rnf DeleteNetwork' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf networkArn
+
+instance Data.ToHeaders DeleteNetwork where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteNetwork where
+  toPath DeleteNetwork' {..} =
+    Prelude.mconcat
+      ["/v1/networks/", Data.toBS networkArn]
+
+instance Data.ToQuery DeleteNetwork where
+  toQuery DeleteNetwork' {..} =
+    Prelude.mconcat ["clientToken" Data.=: clientToken]
+
+-- | /See:/ 'newDeleteNetworkResponse' smart constructor.
+data DeleteNetworkResponse = DeleteNetworkResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Information about the network.
+    network :: Network
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteNetworkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteNetworkResponse_httpStatus' - The response's http status code.
+--
+-- 'network', 'deleteNetworkResponse_network' - Information about the network.
+newDeleteNetworkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'network'
+  Network ->
+  DeleteNetworkResponse
+newDeleteNetworkResponse pHttpStatus_ pNetwork_ =
+  DeleteNetworkResponse'
+    { httpStatus = pHttpStatus_,
+      network = pNetwork_
+    }
+
+-- | The response's http status code.
+deleteNetworkResponse_httpStatus :: Lens.Lens' DeleteNetworkResponse Prelude.Int
+deleteNetworkResponse_httpStatus = Lens.lens (\DeleteNetworkResponse' {httpStatus} -> httpStatus) (\s@DeleteNetworkResponse' {} a -> s {httpStatus = a} :: DeleteNetworkResponse)
+
+-- | Information about the network.
+deleteNetworkResponse_network :: Lens.Lens' DeleteNetworkResponse Network
+deleteNetworkResponse_network = Lens.lens (\DeleteNetworkResponse' {network} -> network) (\s@DeleteNetworkResponse' {} a -> s {network = a} :: DeleteNetworkResponse)
+
+instance Prelude.NFData DeleteNetworkResponse where
+  rnf DeleteNetworkResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf network
diff --git a/gen/Amazonka/PrivateNetworks/DeleteNetworkSite.hs b/gen/Amazonka/PrivateNetworks/DeleteNetworkSite.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/DeleteNetworkSite.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.PrivateNetworks.DeleteNetworkSite
+-- 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 network site. Return the hardware after you delete
+-- the network site. You are responsible for minimum charges. For more
+-- information, see
+-- <https://docs.aws.amazon.com/private-networks/latest/userguide/hardware-maintenance.html Hardware returns>
+-- in the /Amazon Web Services Private 5G User Guide/.
+module Amazonka.PrivateNetworks.DeleteNetworkSite
+  ( -- * Creating a Request
+    DeleteNetworkSite (..),
+    newDeleteNetworkSite,
+
+    -- * Request Lenses
+    deleteNetworkSite_clientToken,
+    deleteNetworkSite_networkSiteArn,
+
+    -- * Destructuring the Response
+    DeleteNetworkSiteResponse (..),
+    newDeleteNetworkSiteResponse,
+
+    -- * Response Lenses
+    deleteNetworkSiteResponse_networkSite,
+    deleteNetworkSiteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteNetworkSite' smart constructor.
+data DeleteNetworkSite = DeleteNetworkSite'
+  { -- | Unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the request. For more information, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network site.
+    networkSiteArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteNetworkSite' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteNetworkSite_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+--
+-- 'networkSiteArn', 'deleteNetworkSite_networkSiteArn' - The Amazon Resource Name (ARN) of the network site.
+newDeleteNetworkSite ::
+  -- | 'networkSiteArn'
+  Prelude.Text ->
+  DeleteNetworkSite
+newDeleteNetworkSite pNetworkSiteArn_ =
+  DeleteNetworkSite'
+    { clientToken = Prelude.Nothing,
+      networkSiteArn = pNetworkSiteArn_
+    }
+
+-- | Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+deleteNetworkSite_clientToken :: Lens.Lens' DeleteNetworkSite (Prelude.Maybe Prelude.Text)
+deleteNetworkSite_clientToken = Lens.lens (\DeleteNetworkSite' {clientToken} -> clientToken) (\s@DeleteNetworkSite' {} a -> s {clientToken = a} :: DeleteNetworkSite)
+
+-- | The Amazon Resource Name (ARN) of the network site.
+deleteNetworkSite_networkSiteArn :: Lens.Lens' DeleteNetworkSite Prelude.Text
+deleteNetworkSite_networkSiteArn = Lens.lens (\DeleteNetworkSite' {networkSiteArn} -> networkSiteArn) (\s@DeleteNetworkSite' {} a -> s {networkSiteArn = a} :: DeleteNetworkSite)
+
+instance Core.AWSRequest DeleteNetworkSite where
+  type
+    AWSResponse DeleteNetworkSite =
+      DeleteNetworkSiteResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteNetworkSiteResponse'
+            Prelude.<$> (x Data..?> "networkSite")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteNetworkSite where
+  hashWithSalt _salt DeleteNetworkSite' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` networkSiteArn
+
+instance Prelude.NFData DeleteNetworkSite where
+  rnf DeleteNetworkSite' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf networkSiteArn
+
+instance Data.ToHeaders DeleteNetworkSite where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteNetworkSite where
+  toPath DeleteNetworkSite' {..} =
+    Prelude.mconcat
+      ["/v1/network-sites/", Data.toBS networkSiteArn]
+
+instance Data.ToQuery DeleteNetworkSite where
+  toQuery DeleteNetworkSite' {..} =
+    Prelude.mconcat ["clientToken" Data.=: clientToken]
+
+-- | /See:/ 'newDeleteNetworkSiteResponse' smart constructor.
+data DeleteNetworkSiteResponse = DeleteNetworkSiteResponse'
+  { -- | Information about the network site.
+    networkSite :: Prelude.Maybe NetworkSite,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteNetworkSiteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'networkSite', 'deleteNetworkSiteResponse_networkSite' - Information about the network site.
+--
+-- 'httpStatus', 'deleteNetworkSiteResponse_httpStatus' - The response's http status code.
+newDeleteNetworkSiteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteNetworkSiteResponse
+newDeleteNetworkSiteResponse pHttpStatus_ =
+  DeleteNetworkSiteResponse'
+    { networkSite =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the network site.
+deleteNetworkSiteResponse_networkSite :: Lens.Lens' DeleteNetworkSiteResponse (Prelude.Maybe NetworkSite)
+deleteNetworkSiteResponse_networkSite = Lens.lens (\DeleteNetworkSiteResponse' {networkSite} -> networkSite) (\s@DeleteNetworkSiteResponse' {} a -> s {networkSite = a} :: DeleteNetworkSiteResponse)
+
+-- | The response's http status code.
+deleteNetworkSiteResponse_httpStatus :: Lens.Lens' DeleteNetworkSiteResponse Prelude.Int
+deleteNetworkSiteResponse_httpStatus = Lens.lens (\DeleteNetworkSiteResponse' {httpStatus} -> httpStatus) (\s@DeleteNetworkSiteResponse' {} a -> s {httpStatus = a} :: DeleteNetworkSiteResponse)
+
+instance Prelude.NFData DeleteNetworkSiteResponse where
+  rnf DeleteNetworkSiteResponse' {..} =
+    Prelude.rnf networkSite
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/PrivateNetworks/GetDeviceIdentifier.hs b/gen/Amazonka/PrivateNetworks/GetDeviceIdentifier.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/GetDeviceIdentifier.hs
@@ -0,0 +1,177 @@
+{-# 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.PrivateNetworks.GetDeviceIdentifier
+-- 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 specified device identifier.
+module Amazonka.PrivateNetworks.GetDeviceIdentifier
+  ( -- * Creating a Request
+    GetDeviceIdentifier (..),
+    newGetDeviceIdentifier,
+
+    -- * Request Lenses
+    getDeviceIdentifier_deviceIdentifierArn,
+
+    -- * Destructuring the Response
+    GetDeviceIdentifierResponse (..),
+    newGetDeviceIdentifierResponse,
+
+    -- * Response Lenses
+    getDeviceIdentifierResponse_deviceIdentifier,
+    getDeviceIdentifierResponse_tags,
+    getDeviceIdentifierResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetDeviceIdentifier' smart constructor.
+data GetDeviceIdentifier = GetDeviceIdentifier'
+  { -- | The Amazon Resource Name (ARN) of the device identifier.
+    deviceIdentifierArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDeviceIdentifier' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceIdentifierArn', 'getDeviceIdentifier_deviceIdentifierArn' - The Amazon Resource Name (ARN) of the device identifier.
+newGetDeviceIdentifier ::
+  -- | 'deviceIdentifierArn'
+  Prelude.Text ->
+  GetDeviceIdentifier
+newGetDeviceIdentifier pDeviceIdentifierArn_ =
+  GetDeviceIdentifier'
+    { deviceIdentifierArn =
+        pDeviceIdentifierArn_
+    }
+
+-- | The Amazon Resource Name (ARN) of the device identifier.
+getDeviceIdentifier_deviceIdentifierArn :: Lens.Lens' GetDeviceIdentifier Prelude.Text
+getDeviceIdentifier_deviceIdentifierArn = Lens.lens (\GetDeviceIdentifier' {deviceIdentifierArn} -> deviceIdentifierArn) (\s@GetDeviceIdentifier' {} a -> s {deviceIdentifierArn = a} :: GetDeviceIdentifier)
+
+instance Core.AWSRequest GetDeviceIdentifier where
+  type
+    AWSResponse GetDeviceIdentifier =
+      GetDeviceIdentifierResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetDeviceIdentifierResponse'
+            Prelude.<$> (x Data..?> "deviceIdentifier")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetDeviceIdentifier where
+  hashWithSalt _salt GetDeviceIdentifier' {..} =
+    _salt `Prelude.hashWithSalt` deviceIdentifierArn
+
+instance Prelude.NFData GetDeviceIdentifier where
+  rnf GetDeviceIdentifier' {..} =
+    Prelude.rnf deviceIdentifierArn
+
+instance Data.ToHeaders GetDeviceIdentifier where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetDeviceIdentifier where
+  toPath GetDeviceIdentifier' {..} =
+    Prelude.mconcat
+      [ "/v1/device-identifiers/",
+        Data.toBS deviceIdentifierArn
+      ]
+
+instance Data.ToQuery GetDeviceIdentifier where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetDeviceIdentifierResponse' smart constructor.
+data GetDeviceIdentifierResponse = GetDeviceIdentifierResponse'
+  { -- | Information about the device identifier.
+    deviceIdentifier :: Prelude.Maybe DeviceIdentifier,
+    -- | The device identifier tags.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDeviceIdentifierResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceIdentifier', 'getDeviceIdentifierResponse_deviceIdentifier' - Information about the device identifier.
+--
+-- 'tags', 'getDeviceIdentifierResponse_tags' - The device identifier tags.
+--
+-- 'httpStatus', 'getDeviceIdentifierResponse_httpStatus' - The response's http status code.
+newGetDeviceIdentifierResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetDeviceIdentifierResponse
+newGetDeviceIdentifierResponse pHttpStatus_ =
+  GetDeviceIdentifierResponse'
+    { deviceIdentifier =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the device identifier.
+getDeviceIdentifierResponse_deviceIdentifier :: Lens.Lens' GetDeviceIdentifierResponse (Prelude.Maybe DeviceIdentifier)
+getDeviceIdentifierResponse_deviceIdentifier = Lens.lens (\GetDeviceIdentifierResponse' {deviceIdentifier} -> deviceIdentifier) (\s@GetDeviceIdentifierResponse' {} a -> s {deviceIdentifier = a} :: GetDeviceIdentifierResponse)
+
+-- | The device identifier tags.
+getDeviceIdentifierResponse_tags :: Lens.Lens' GetDeviceIdentifierResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getDeviceIdentifierResponse_tags = Lens.lens (\GetDeviceIdentifierResponse' {tags} -> tags) (\s@GetDeviceIdentifierResponse' {} a -> s {tags = a} :: GetDeviceIdentifierResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The response's http status code.
+getDeviceIdentifierResponse_httpStatus :: Lens.Lens' GetDeviceIdentifierResponse Prelude.Int
+getDeviceIdentifierResponse_httpStatus = Lens.lens (\GetDeviceIdentifierResponse' {httpStatus} -> httpStatus) (\s@GetDeviceIdentifierResponse' {} a -> s {httpStatus = a} :: GetDeviceIdentifierResponse)
+
+instance Prelude.NFData GetDeviceIdentifierResponse where
+  rnf GetDeviceIdentifierResponse' {..} =
+    Prelude.rnf deviceIdentifier
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/PrivateNetworks/GetNetwork.hs b/gen/Amazonka/PrivateNetworks/GetNetwork.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/GetNetwork.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.PrivateNetworks.GetNetwork
+-- 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 specified network.
+module Amazonka.PrivateNetworks.GetNetwork
+  ( -- * Creating a Request
+    GetNetwork (..),
+    newGetNetwork,
+
+    -- * Request Lenses
+    getNetwork_networkArn,
+
+    -- * Destructuring the Response
+    GetNetworkResponse (..),
+    newGetNetworkResponse,
+
+    -- * Response Lenses
+    getNetworkResponse_tags,
+    getNetworkResponse_httpStatus,
+    getNetworkResponse_network,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetNetwork' smart constructor.
+data GetNetwork = GetNetwork'
+  { -- | The Amazon Resource Name (ARN) of the network.
+    networkArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetwork' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'networkArn', 'getNetwork_networkArn' - The Amazon Resource Name (ARN) of the network.
+newGetNetwork ::
+  -- | 'networkArn'
+  Prelude.Text ->
+  GetNetwork
+newGetNetwork pNetworkArn_ =
+  GetNetwork' {networkArn = pNetworkArn_}
+
+-- | The Amazon Resource Name (ARN) of the network.
+getNetwork_networkArn :: Lens.Lens' GetNetwork Prelude.Text
+getNetwork_networkArn = Lens.lens (\GetNetwork' {networkArn} -> networkArn) (\s@GetNetwork' {} a -> s {networkArn = a} :: GetNetwork)
+
+instance Core.AWSRequest GetNetwork where
+  type AWSResponse GetNetwork = GetNetworkResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetNetworkResponse'
+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "network")
+      )
+
+instance Prelude.Hashable GetNetwork where
+  hashWithSalt _salt GetNetwork' {..} =
+    _salt `Prelude.hashWithSalt` networkArn
+
+instance Prelude.NFData GetNetwork where
+  rnf GetNetwork' {..} = Prelude.rnf networkArn
+
+instance Data.ToHeaders GetNetwork where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetNetwork where
+  toPath GetNetwork' {..} =
+    Prelude.mconcat
+      ["/v1/networks/", Data.toBS networkArn]
+
+instance Data.ToQuery GetNetwork where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetNetworkResponse' smart constructor.
+data GetNetworkResponse = GetNetworkResponse'
+  { -- | The network tags.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Information about the network.
+    network :: Network
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'getNetworkResponse_tags' - The network tags.
+--
+-- 'httpStatus', 'getNetworkResponse_httpStatus' - The response's http status code.
+--
+-- 'network', 'getNetworkResponse_network' - Information about the network.
+newGetNetworkResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'network'
+  Network ->
+  GetNetworkResponse
+newGetNetworkResponse pHttpStatus_ pNetwork_ =
+  GetNetworkResponse'
+    { tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      network = pNetwork_
+    }
+
+-- | The network tags.
+getNetworkResponse_tags :: Lens.Lens' GetNetworkResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getNetworkResponse_tags = Lens.lens (\GetNetworkResponse' {tags} -> tags) (\s@GetNetworkResponse' {} a -> s {tags = a} :: GetNetworkResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The response's http status code.
+getNetworkResponse_httpStatus :: Lens.Lens' GetNetworkResponse Prelude.Int
+getNetworkResponse_httpStatus = Lens.lens (\GetNetworkResponse' {httpStatus} -> httpStatus) (\s@GetNetworkResponse' {} a -> s {httpStatus = a} :: GetNetworkResponse)
+
+-- | Information about the network.
+getNetworkResponse_network :: Lens.Lens' GetNetworkResponse Network
+getNetworkResponse_network = Lens.lens (\GetNetworkResponse' {network} -> network) (\s@GetNetworkResponse' {} a -> s {network = a} :: GetNetworkResponse)
+
+instance Prelude.NFData GetNetworkResponse where
+  rnf GetNetworkResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf network
diff --git a/gen/Amazonka/PrivateNetworks/GetNetworkResource.hs b/gen/Amazonka/PrivateNetworks/GetNetworkResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/GetNetworkResource.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.PrivateNetworks.GetNetworkResource
+-- 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 specified network resource.
+module Amazonka.PrivateNetworks.GetNetworkResource
+  ( -- * Creating a Request
+    GetNetworkResource (..),
+    newGetNetworkResource,
+
+    -- * Request Lenses
+    getNetworkResource_networkResourceArn,
+
+    -- * Destructuring the Response
+    GetNetworkResourceResponse (..),
+    newGetNetworkResourceResponse,
+
+    -- * Response Lenses
+    getNetworkResourceResponse_tags,
+    getNetworkResourceResponse_httpStatus,
+    getNetworkResourceResponse_networkResource,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetNetworkResource' smart constructor.
+data GetNetworkResource = GetNetworkResource'
+  { -- | The Amazon Resource Name (ARN) of the network resource.
+    networkResourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'networkResourceArn', 'getNetworkResource_networkResourceArn' - The Amazon Resource Name (ARN) of the network resource.
+newGetNetworkResource ::
+  -- | 'networkResourceArn'
+  Prelude.Text ->
+  GetNetworkResource
+newGetNetworkResource pNetworkResourceArn_ =
+  GetNetworkResource'
+    { networkResourceArn =
+        pNetworkResourceArn_
+    }
+
+-- | The Amazon Resource Name (ARN) of the network resource.
+getNetworkResource_networkResourceArn :: Lens.Lens' GetNetworkResource Prelude.Text
+getNetworkResource_networkResourceArn = Lens.lens (\GetNetworkResource' {networkResourceArn} -> networkResourceArn) (\s@GetNetworkResource' {} a -> s {networkResourceArn = a} :: GetNetworkResource)
+
+instance Core.AWSRequest GetNetworkResource where
+  type
+    AWSResponse GetNetworkResource =
+      GetNetworkResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetNetworkResourceResponse'
+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "networkResource")
+      )
+
+instance Prelude.Hashable GetNetworkResource where
+  hashWithSalt _salt GetNetworkResource' {..} =
+    _salt `Prelude.hashWithSalt` networkResourceArn
+
+instance Prelude.NFData GetNetworkResource where
+  rnf GetNetworkResource' {..} =
+    Prelude.rnf networkResourceArn
+
+instance Data.ToHeaders GetNetworkResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetNetworkResource where
+  toPath GetNetworkResource' {..} =
+    Prelude.mconcat
+      [ "/v1/network-resources/",
+        Data.toBS networkResourceArn
+      ]
+
+instance Data.ToQuery GetNetworkResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetNetworkResourceResponse' smart constructor.
+data GetNetworkResourceResponse = GetNetworkResourceResponse'
+  { -- | The network resource tags.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Information about the network resource.
+    networkResource :: NetworkResource
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'getNetworkResourceResponse_tags' - The network resource tags.
+--
+-- 'httpStatus', 'getNetworkResourceResponse_httpStatus' - The response's http status code.
+--
+-- 'networkResource', 'getNetworkResourceResponse_networkResource' - Information about the network resource.
+newGetNetworkResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'networkResource'
+  NetworkResource ->
+  GetNetworkResourceResponse
+newGetNetworkResourceResponse
+  pHttpStatus_
+  pNetworkResource_ =
+    GetNetworkResourceResponse'
+      { tags = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        networkResource = pNetworkResource_
+      }
+
+-- | The network resource tags.
+getNetworkResourceResponse_tags :: Lens.Lens' GetNetworkResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getNetworkResourceResponse_tags = Lens.lens (\GetNetworkResourceResponse' {tags} -> tags) (\s@GetNetworkResourceResponse' {} a -> s {tags = a} :: GetNetworkResourceResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The response's http status code.
+getNetworkResourceResponse_httpStatus :: Lens.Lens' GetNetworkResourceResponse Prelude.Int
+getNetworkResourceResponse_httpStatus = Lens.lens (\GetNetworkResourceResponse' {httpStatus} -> httpStatus) (\s@GetNetworkResourceResponse' {} a -> s {httpStatus = a} :: GetNetworkResourceResponse)
+
+-- | Information about the network resource.
+getNetworkResourceResponse_networkResource :: Lens.Lens' GetNetworkResourceResponse NetworkResource
+getNetworkResourceResponse_networkResource = Lens.lens (\GetNetworkResourceResponse' {networkResource} -> networkResource) (\s@GetNetworkResourceResponse' {} a -> s {networkResource = a} :: GetNetworkResourceResponse)
+
+instance Prelude.NFData GetNetworkResourceResponse where
+  rnf GetNetworkResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf networkResource
diff --git a/gen/Amazonka/PrivateNetworks/GetNetworkSite.hs b/gen/Amazonka/PrivateNetworks/GetNetworkSite.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/GetNetworkSite.hs
@@ -0,0 +1,171 @@
+{-# 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.PrivateNetworks.GetNetworkSite
+-- 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 specified network site.
+module Amazonka.PrivateNetworks.GetNetworkSite
+  ( -- * Creating a Request
+    GetNetworkSite (..),
+    newGetNetworkSite,
+
+    -- * Request Lenses
+    getNetworkSite_networkSiteArn,
+
+    -- * Destructuring the Response
+    GetNetworkSiteResponse (..),
+    newGetNetworkSiteResponse,
+
+    -- * Response Lenses
+    getNetworkSiteResponse_networkSite,
+    getNetworkSiteResponse_tags,
+    getNetworkSiteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetNetworkSite' smart constructor.
+data GetNetworkSite = GetNetworkSite'
+  { -- | The Amazon Resource Name (ARN) of the network site.
+    networkSiteArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkSite' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'networkSiteArn', 'getNetworkSite_networkSiteArn' - The Amazon Resource Name (ARN) of the network site.
+newGetNetworkSite ::
+  -- | 'networkSiteArn'
+  Prelude.Text ->
+  GetNetworkSite
+newGetNetworkSite pNetworkSiteArn_ =
+  GetNetworkSite' {networkSiteArn = pNetworkSiteArn_}
+
+-- | The Amazon Resource Name (ARN) of the network site.
+getNetworkSite_networkSiteArn :: Lens.Lens' GetNetworkSite Prelude.Text
+getNetworkSite_networkSiteArn = Lens.lens (\GetNetworkSite' {networkSiteArn} -> networkSiteArn) (\s@GetNetworkSite' {} a -> s {networkSiteArn = a} :: GetNetworkSite)
+
+instance Core.AWSRequest GetNetworkSite where
+  type
+    AWSResponse GetNetworkSite =
+      GetNetworkSiteResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetNetworkSiteResponse'
+            Prelude.<$> (x Data..?> "networkSite")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetNetworkSite where
+  hashWithSalt _salt GetNetworkSite' {..} =
+    _salt `Prelude.hashWithSalt` networkSiteArn
+
+instance Prelude.NFData GetNetworkSite where
+  rnf GetNetworkSite' {..} = Prelude.rnf networkSiteArn
+
+instance Data.ToHeaders GetNetworkSite where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetNetworkSite where
+  toPath GetNetworkSite' {..} =
+    Prelude.mconcat
+      ["/v1/network-sites/", Data.toBS networkSiteArn]
+
+instance Data.ToQuery GetNetworkSite where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetNetworkSiteResponse' smart constructor.
+data GetNetworkSiteResponse = GetNetworkSiteResponse'
+  { -- | Information about the network site.
+    networkSite :: Prelude.Maybe NetworkSite,
+    -- | The network site tags.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetNetworkSiteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'networkSite', 'getNetworkSiteResponse_networkSite' - Information about the network site.
+--
+-- 'tags', 'getNetworkSiteResponse_tags' - The network site tags.
+--
+-- 'httpStatus', 'getNetworkSiteResponse_httpStatus' - The response's http status code.
+newGetNetworkSiteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetNetworkSiteResponse
+newGetNetworkSiteResponse pHttpStatus_ =
+  GetNetworkSiteResponse'
+    { networkSite =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the network site.
+getNetworkSiteResponse_networkSite :: Lens.Lens' GetNetworkSiteResponse (Prelude.Maybe NetworkSite)
+getNetworkSiteResponse_networkSite = Lens.lens (\GetNetworkSiteResponse' {networkSite} -> networkSite) (\s@GetNetworkSiteResponse' {} a -> s {networkSite = a} :: GetNetworkSiteResponse)
+
+-- | The network site tags.
+getNetworkSiteResponse_tags :: Lens.Lens' GetNetworkSiteResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getNetworkSiteResponse_tags = Lens.lens (\GetNetworkSiteResponse' {tags} -> tags) (\s@GetNetworkSiteResponse' {} a -> s {tags = a} :: GetNetworkSiteResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The response's http status code.
+getNetworkSiteResponse_httpStatus :: Lens.Lens' GetNetworkSiteResponse Prelude.Int
+getNetworkSiteResponse_httpStatus = Lens.lens (\GetNetworkSiteResponse' {httpStatus} -> httpStatus) (\s@GetNetworkSiteResponse' {} a -> s {httpStatus = a} :: GetNetworkSiteResponse)
+
+instance Prelude.NFData GetNetworkSiteResponse where
+  rnf GetNetworkSiteResponse' {..} =
+    Prelude.rnf networkSite
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/PrivateNetworks/GetOrder.hs b/gen/Amazonka/PrivateNetworks/GetOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/GetOrder.hs
@@ -0,0 +1,169 @@
+{-# 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.PrivateNetworks.GetOrder
+-- 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 specified order.
+module Amazonka.PrivateNetworks.GetOrder
+  ( -- * Creating a Request
+    GetOrder (..),
+    newGetOrder,
+
+    -- * Request Lenses
+    getOrder_orderArn,
+
+    -- * Destructuring the Response
+    GetOrderResponse (..),
+    newGetOrderResponse,
+
+    -- * Response Lenses
+    getOrderResponse_tags,
+    getOrderResponse_httpStatus,
+    getOrderResponse_order,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetOrder' smart constructor.
+data GetOrder = GetOrder'
+  { -- | The Amazon Resource Name (ARN) of the order.
+    orderArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetOrder' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'orderArn', 'getOrder_orderArn' - The Amazon Resource Name (ARN) of the order.
+newGetOrder ::
+  -- | 'orderArn'
+  Prelude.Text ->
+  GetOrder
+newGetOrder pOrderArn_ =
+  GetOrder' {orderArn = pOrderArn_}
+
+-- | The Amazon Resource Name (ARN) of the order.
+getOrder_orderArn :: Lens.Lens' GetOrder Prelude.Text
+getOrder_orderArn = Lens.lens (\GetOrder' {orderArn} -> orderArn) (\s@GetOrder' {} a -> s {orderArn = a} :: GetOrder)
+
+instance Core.AWSRequest GetOrder where
+  type AWSResponse GetOrder = GetOrderResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetOrderResponse'
+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "order")
+      )
+
+instance Prelude.Hashable GetOrder where
+  hashWithSalt _salt GetOrder' {..} =
+    _salt `Prelude.hashWithSalt` orderArn
+
+instance Prelude.NFData GetOrder where
+  rnf GetOrder' {..} = Prelude.rnf orderArn
+
+instance Data.ToHeaders GetOrder where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetOrder where
+  toPath GetOrder' {..} =
+    Prelude.mconcat ["/v1/orders/", Data.toBS orderArn]
+
+instance Data.ToQuery GetOrder where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetOrderResponse' smart constructor.
+data GetOrderResponse = GetOrderResponse'
+  { -- | The order tags.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Information about the order.
+    order :: Order
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetOrderResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'getOrderResponse_tags' - The order tags.
+--
+-- 'httpStatus', 'getOrderResponse_httpStatus' - The response's http status code.
+--
+-- 'order', 'getOrderResponse_order' - Information about the order.
+newGetOrderResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'order'
+  Order ->
+  GetOrderResponse
+newGetOrderResponse pHttpStatus_ pOrder_ =
+  GetOrderResponse'
+    { tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      order = pOrder_
+    }
+
+-- | The order tags.
+getOrderResponse_tags :: Lens.Lens' GetOrderResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getOrderResponse_tags = Lens.lens (\GetOrderResponse' {tags} -> tags) (\s@GetOrderResponse' {} a -> s {tags = a} :: GetOrderResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The response's http status code.
+getOrderResponse_httpStatus :: Lens.Lens' GetOrderResponse Prelude.Int
+getOrderResponse_httpStatus = Lens.lens (\GetOrderResponse' {httpStatus} -> httpStatus) (\s@GetOrderResponse' {} a -> s {httpStatus = a} :: GetOrderResponse)
+
+-- | Information about the order.
+getOrderResponse_order :: Lens.Lens' GetOrderResponse Order
+getOrderResponse_order = Lens.lens (\GetOrderResponse' {order} -> order) (\s@GetOrderResponse' {} a -> s {order = a} :: GetOrderResponse)
+
+instance Prelude.NFData GetOrderResponse where
+  rnf GetOrderResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf order
diff --git a/gen/Amazonka/PrivateNetworks/Lens.hs b/gen/Amazonka/PrivateNetworks/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Lens.hs
@@ -0,0 +1,330 @@
+{-# 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.PrivateNetworks.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.PrivateNetworks.Lens
+  ( -- * Operations
+
+    -- ** AcknowledgeOrderReceipt
+    acknowledgeOrderReceipt_orderArn,
+    acknowledgeOrderReceiptResponse_httpStatus,
+    acknowledgeOrderReceiptResponse_order,
+
+    -- ** ActivateDeviceIdentifier
+    activateDeviceIdentifier_clientToken,
+    activateDeviceIdentifier_deviceIdentifierArn,
+    activateDeviceIdentifierResponse_tags,
+    activateDeviceIdentifierResponse_httpStatus,
+    activateDeviceIdentifierResponse_deviceIdentifier,
+
+    -- ** ActivateNetworkSite
+    activateNetworkSite_clientToken,
+    activateNetworkSite_networkSiteArn,
+    activateNetworkSite_shippingAddress,
+    activateNetworkSiteResponse_networkSite,
+    activateNetworkSiteResponse_httpStatus,
+
+    -- ** ConfigureAccessPoint
+    configureAccessPoint_cpiSecretKey,
+    configureAccessPoint_cpiUserId,
+    configureAccessPoint_cpiUserPassword,
+    configureAccessPoint_cpiUsername,
+    configureAccessPoint_position,
+    configureAccessPoint_accessPointArn,
+    configureAccessPointResponse_httpStatus,
+    configureAccessPointResponse_accessPoint,
+
+    -- ** CreateNetwork
+    createNetwork_clientToken,
+    createNetwork_description,
+    createNetwork_tags,
+    createNetwork_networkName,
+    createNetworkResponse_tags,
+    createNetworkResponse_httpStatus,
+    createNetworkResponse_network,
+
+    -- ** CreateNetworkSite
+    createNetworkSite_availabilityZone,
+    createNetworkSite_availabilityZoneId,
+    createNetworkSite_clientToken,
+    createNetworkSite_description,
+    createNetworkSite_pendingPlan,
+    createNetworkSite_tags,
+    createNetworkSite_networkArn,
+    createNetworkSite_networkSiteName,
+    createNetworkSiteResponse_networkSite,
+    createNetworkSiteResponse_tags,
+    createNetworkSiteResponse_httpStatus,
+
+    -- ** DeactivateDeviceIdentifier
+    deactivateDeviceIdentifier_clientToken,
+    deactivateDeviceIdentifier_deviceIdentifierArn,
+    deactivateDeviceIdentifierResponse_httpStatus,
+    deactivateDeviceIdentifierResponse_deviceIdentifier,
+
+    -- ** DeleteNetwork
+    deleteNetwork_clientToken,
+    deleteNetwork_networkArn,
+    deleteNetworkResponse_httpStatus,
+    deleteNetworkResponse_network,
+
+    -- ** DeleteNetworkSite
+    deleteNetworkSite_clientToken,
+    deleteNetworkSite_networkSiteArn,
+    deleteNetworkSiteResponse_networkSite,
+    deleteNetworkSiteResponse_httpStatus,
+
+    -- ** GetDeviceIdentifier
+    getDeviceIdentifier_deviceIdentifierArn,
+    getDeviceIdentifierResponse_deviceIdentifier,
+    getDeviceIdentifierResponse_tags,
+    getDeviceIdentifierResponse_httpStatus,
+
+    -- ** GetNetwork
+    getNetwork_networkArn,
+    getNetworkResponse_tags,
+    getNetworkResponse_httpStatus,
+    getNetworkResponse_network,
+
+    -- ** GetNetworkResource
+    getNetworkResource_networkResourceArn,
+    getNetworkResourceResponse_tags,
+    getNetworkResourceResponse_httpStatus,
+    getNetworkResourceResponse_networkResource,
+
+    -- ** GetNetworkSite
+    getNetworkSite_networkSiteArn,
+    getNetworkSiteResponse_networkSite,
+    getNetworkSiteResponse_tags,
+    getNetworkSiteResponse_httpStatus,
+
+    -- ** GetOrder
+    getOrder_orderArn,
+    getOrderResponse_tags,
+    getOrderResponse_httpStatus,
+    getOrderResponse_order,
+
+    -- ** ListDeviceIdentifiers
+    listDeviceIdentifiers_filters,
+    listDeviceIdentifiers_maxResults,
+    listDeviceIdentifiers_startToken,
+    listDeviceIdentifiers_networkArn,
+    listDeviceIdentifiersResponse_deviceIdentifiers,
+    listDeviceIdentifiersResponse_nextToken,
+    listDeviceIdentifiersResponse_httpStatus,
+
+    -- ** ListNetworkResources
+    listNetworkResources_filters,
+    listNetworkResources_maxResults,
+    listNetworkResources_startToken,
+    listNetworkResources_networkArn,
+    listNetworkResourcesResponse_networkResources,
+    listNetworkResourcesResponse_nextToken,
+    listNetworkResourcesResponse_httpStatus,
+
+    -- ** ListNetworkSites
+    listNetworkSites_filters,
+    listNetworkSites_maxResults,
+    listNetworkSites_startToken,
+    listNetworkSites_networkArn,
+    listNetworkSitesResponse_networkSites,
+    listNetworkSitesResponse_nextToken,
+    listNetworkSitesResponse_httpStatus,
+
+    -- ** ListNetworks
+    listNetworks_filters,
+    listNetworks_maxResults,
+    listNetworks_startToken,
+    listNetworksResponse_networks,
+    listNetworksResponse_nextToken,
+    listNetworksResponse_httpStatus,
+
+    -- ** ListOrders
+    listOrders_filters,
+    listOrders_maxResults,
+    listOrders_startToken,
+    listOrders_networkArn,
+    listOrdersResponse_nextToken,
+    listOrdersResponse_orders,
+    listOrdersResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** Ping
+    pingResponse_status,
+    pingResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdateNetworkSite
+    updateNetworkSite_clientToken,
+    updateNetworkSite_description,
+    updateNetworkSite_networkSiteArn,
+    updateNetworkSiteResponse_networkSite,
+    updateNetworkSiteResponse_tags,
+
+    -- ** UpdateNetworkSitePlan
+    updateNetworkSitePlan_clientToken,
+    updateNetworkSitePlan_networkSiteArn,
+    updateNetworkSitePlan_pendingPlan,
+    updateNetworkSiteResponse_networkSite,
+    updateNetworkSiteResponse_tags,
+
+    -- * Types
+
+    -- ** Address
+    address_company,
+    address_phoneNumber,
+    address_street2,
+    address_street3,
+    address_city,
+    address_country,
+    address_name,
+    address_postalCode,
+    address_stateOrProvince,
+    address_street1,
+
+    -- ** DeviceIdentifier
+    deviceIdentifier_createdAt,
+    deviceIdentifier_deviceIdentifierArn,
+    deviceIdentifier_iccid,
+    deviceIdentifier_imsi,
+    deviceIdentifier_networkArn,
+    deviceIdentifier_orderArn,
+    deviceIdentifier_status,
+    deviceIdentifier_trafficGroupArn,
+    deviceIdentifier_vendor,
+
+    -- ** NameValuePair
+    nameValuePair_value,
+    nameValuePair_name,
+
+    -- ** Network
+    network_createdAt,
+    network_description,
+    network_statusReason,
+    network_networkArn,
+    network_networkName,
+    network_status,
+
+    -- ** NetworkResource
+    networkResource_attributes,
+    networkResource_createdAt,
+    networkResource_description,
+    networkResource_health,
+    networkResource_model,
+    networkResource_networkArn,
+    networkResource_networkResourceArn,
+    networkResource_networkSiteArn,
+    networkResource_orderArn,
+    networkResource_position,
+    networkResource_serialNumber,
+    networkResource_status,
+    networkResource_statusReason,
+    networkResource_type,
+    networkResource_vendor,
+
+    -- ** NetworkResourceDefinition
+    networkResourceDefinition_options,
+    networkResourceDefinition_count,
+    networkResourceDefinition_type,
+
+    -- ** NetworkSite
+    networkSite_availabilityZone,
+    networkSite_availabilityZoneId,
+    networkSite_createdAt,
+    networkSite_currentPlan,
+    networkSite_description,
+    networkSite_pendingPlan,
+    networkSite_statusReason,
+    networkSite_networkArn,
+    networkSite_networkSiteArn,
+    networkSite_networkSiteName,
+    networkSite_status,
+
+    -- ** Order
+    order_acknowledgmentStatus,
+    order_createdAt,
+    order_networkArn,
+    order_networkSiteArn,
+    order_orderArn,
+    order_shippingAddress,
+    order_trackingInformation,
+
+    -- ** Position
+    position_elevation,
+    position_elevationReference,
+    position_elevationUnit,
+    position_latitude,
+    position_longitude,
+
+    -- ** SitePlan
+    sitePlan_options,
+    sitePlan_resourceDefinitions,
+
+    -- ** TrackingInformation
+    trackingInformation_trackingNumber,
+
+    -- ** UpdateNetworkSiteResponse
+    updateNetworkSiteResponse_networkSite,
+    updateNetworkSiteResponse_tags,
+  )
+where
+
+import Amazonka.PrivateNetworks.AcknowledgeOrderReceipt
+import Amazonka.PrivateNetworks.ActivateDeviceIdentifier
+import Amazonka.PrivateNetworks.ActivateNetworkSite
+import Amazonka.PrivateNetworks.ConfigureAccessPoint
+import Amazonka.PrivateNetworks.CreateNetwork
+import Amazonka.PrivateNetworks.CreateNetworkSite
+import Amazonka.PrivateNetworks.DeactivateDeviceIdentifier
+import Amazonka.PrivateNetworks.DeleteNetwork
+import Amazonka.PrivateNetworks.DeleteNetworkSite
+import Amazonka.PrivateNetworks.GetDeviceIdentifier
+import Amazonka.PrivateNetworks.GetNetwork
+import Amazonka.PrivateNetworks.GetNetworkResource
+import Amazonka.PrivateNetworks.GetNetworkSite
+import Amazonka.PrivateNetworks.GetOrder
+import Amazonka.PrivateNetworks.ListDeviceIdentifiers
+import Amazonka.PrivateNetworks.ListNetworkResources
+import Amazonka.PrivateNetworks.ListNetworkSites
+import Amazonka.PrivateNetworks.ListNetworks
+import Amazonka.PrivateNetworks.ListOrders
+import Amazonka.PrivateNetworks.ListTagsForResource
+import Amazonka.PrivateNetworks.Ping
+import Amazonka.PrivateNetworks.TagResource
+import Amazonka.PrivateNetworks.Types.Address
+import Amazonka.PrivateNetworks.Types.DeviceIdentifier
+import Amazonka.PrivateNetworks.Types.NameValuePair
+import Amazonka.PrivateNetworks.Types.Network
+import Amazonka.PrivateNetworks.Types.NetworkResource
+import Amazonka.PrivateNetworks.Types.NetworkResourceDefinition
+import Amazonka.PrivateNetworks.Types.NetworkSite
+import Amazonka.PrivateNetworks.Types.Order
+import Amazonka.PrivateNetworks.Types.Position
+import Amazonka.PrivateNetworks.Types.SitePlan
+import Amazonka.PrivateNetworks.Types.TrackingInformation
+import Amazonka.PrivateNetworks.Types.UpdateNetworkSiteResponse
+import Amazonka.PrivateNetworks.UntagResource
+import Amazonka.PrivateNetworks.UpdateNetworkSite
+import Amazonka.PrivateNetworks.UpdateNetworkSitePlan
diff --git a/gen/Amazonka/PrivateNetworks/ListDeviceIdentifiers.hs b/gen/Amazonka/PrivateNetworks/ListDeviceIdentifiers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/ListDeviceIdentifiers.hs
@@ -0,0 +1,287 @@
+{-# 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.PrivateNetworks.ListDeviceIdentifiers
+-- 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 device identifiers. Add filters to your request to return a more
+-- specific list of results. Use filters to match the Amazon Resource Name
+-- (ARN) of an order, the status of device identifiers, or the ARN of the
+-- traffic group.
+--
+-- >  <p>If you specify multiple filters, filters are joined with an OR, and the request
+--
+-- returns results that match all of the specified filters.
+--
+-- This operation returns paginated results.
+module Amazonka.PrivateNetworks.ListDeviceIdentifiers
+  ( -- * Creating a Request
+    ListDeviceIdentifiers (..),
+    newListDeviceIdentifiers,
+
+    -- * Request Lenses
+    listDeviceIdentifiers_filters,
+    listDeviceIdentifiers_maxResults,
+    listDeviceIdentifiers_startToken,
+    listDeviceIdentifiers_networkArn,
+
+    -- * Destructuring the Response
+    ListDeviceIdentifiersResponse (..),
+    newListDeviceIdentifiersResponse,
+
+    -- * Response Lenses
+    listDeviceIdentifiersResponse_deviceIdentifiers,
+    listDeviceIdentifiersResponse_nextToken,
+    listDeviceIdentifiersResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListDeviceIdentifiers' smart constructor.
+data ListDeviceIdentifiers = ListDeviceIdentifiers'
+  { -- | The filters.
+    --
+    -- -   @ORDER@ - The Amazon Resource Name (ARN) of the order.
+    --
+    -- -   @STATUS@ - The status (@ACTIVE@ | @INACTIVE@).
+    --
+    -- -   @TRAFFIC_GROUP@ - The Amazon Resource Name (ARN) of the traffic
+    --     group.
+    --
+    -- Filter values are case sensitive. If you specify multiple values for a
+    -- filter, the values are joined with an @OR@, and the request returns all
+    -- results that match any of the specified values.
+    filters :: Prelude.Maybe (Prelude.HashMap DeviceIdentifierFilterKeys [Prelude.Text]),
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    startToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network.
+    networkArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDeviceIdentifiers' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'listDeviceIdentifiers_filters' - The filters.
+--
+-- -   @ORDER@ - The Amazon Resource Name (ARN) of the order.
+--
+-- -   @STATUS@ - The status (@ACTIVE@ | @INACTIVE@).
+--
+-- -   @TRAFFIC_GROUP@ - The Amazon Resource Name (ARN) of the traffic
+--     group.
+--
+-- Filter values are case sensitive. If you specify multiple values for a
+-- filter, the values are joined with an @OR@, and the request returns all
+-- results that match any of the specified values.
+--
+-- 'maxResults', 'listDeviceIdentifiers_maxResults' - The maximum number of results to return.
+--
+-- 'startToken', 'listDeviceIdentifiers_startToken' - The token for the next page of results.
+--
+-- 'networkArn', 'listDeviceIdentifiers_networkArn' - The Amazon Resource Name (ARN) of the network.
+newListDeviceIdentifiers ::
+  -- | 'networkArn'
+  Prelude.Text ->
+  ListDeviceIdentifiers
+newListDeviceIdentifiers pNetworkArn_ =
+  ListDeviceIdentifiers'
+    { filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      startToken = Prelude.Nothing,
+      networkArn = pNetworkArn_
+    }
+
+-- | The filters.
+--
+-- -   @ORDER@ - The Amazon Resource Name (ARN) of the order.
+--
+-- -   @STATUS@ - The status (@ACTIVE@ | @INACTIVE@).
+--
+-- -   @TRAFFIC_GROUP@ - The Amazon Resource Name (ARN) of the traffic
+--     group.
+--
+-- Filter values are case sensitive. If you specify multiple values for a
+-- filter, the values are joined with an @OR@, and the request returns all
+-- results that match any of the specified values.
+listDeviceIdentifiers_filters :: Lens.Lens' ListDeviceIdentifiers (Prelude.Maybe (Prelude.HashMap DeviceIdentifierFilterKeys [Prelude.Text]))
+listDeviceIdentifiers_filters = Lens.lens (\ListDeviceIdentifiers' {filters} -> filters) (\s@ListDeviceIdentifiers' {} a -> s {filters = a} :: ListDeviceIdentifiers) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of results to return.
+listDeviceIdentifiers_maxResults :: Lens.Lens' ListDeviceIdentifiers (Prelude.Maybe Prelude.Natural)
+listDeviceIdentifiers_maxResults = Lens.lens (\ListDeviceIdentifiers' {maxResults} -> maxResults) (\s@ListDeviceIdentifiers' {} a -> s {maxResults = a} :: ListDeviceIdentifiers)
+
+-- | The token for the next page of results.
+listDeviceIdentifiers_startToken :: Lens.Lens' ListDeviceIdentifiers (Prelude.Maybe Prelude.Text)
+listDeviceIdentifiers_startToken = Lens.lens (\ListDeviceIdentifiers' {startToken} -> startToken) (\s@ListDeviceIdentifiers' {} a -> s {startToken = a} :: ListDeviceIdentifiers)
+
+-- | The Amazon Resource Name (ARN) of the network.
+listDeviceIdentifiers_networkArn :: Lens.Lens' ListDeviceIdentifiers Prelude.Text
+listDeviceIdentifiers_networkArn = Lens.lens (\ListDeviceIdentifiers' {networkArn} -> networkArn) (\s@ListDeviceIdentifiers' {} a -> s {networkArn = a} :: ListDeviceIdentifiers)
+
+instance Core.AWSPager ListDeviceIdentifiers where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listDeviceIdentifiersResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listDeviceIdentifiersResponse_deviceIdentifiers
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listDeviceIdentifiers_startToken
+          Lens..~ rs
+          Lens.^? listDeviceIdentifiersResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListDeviceIdentifiers where
+  type
+    AWSResponse ListDeviceIdentifiers =
+      ListDeviceIdentifiersResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListDeviceIdentifiersResponse'
+            Prelude.<$> ( x
+                            Data..?> "deviceIdentifiers"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListDeviceIdentifiers where
+  hashWithSalt _salt ListDeviceIdentifiers' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` startToken
+      `Prelude.hashWithSalt` networkArn
+
+instance Prelude.NFData ListDeviceIdentifiers where
+  rnf ListDeviceIdentifiers' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf startToken
+      `Prelude.seq` Prelude.rnf networkArn
+
+instance Data.ToHeaders ListDeviceIdentifiers where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListDeviceIdentifiers where
+  toJSON ListDeviceIdentifiers' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("filters" Data..=) Prelude.<$> filters,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("startToken" Data..=) Prelude.<$> startToken,
+            Prelude.Just ("networkArn" Data..= networkArn)
+          ]
+      )
+
+instance Data.ToPath ListDeviceIdentifiers where
+  toPath = Prelude.const "/v1/device-identifiers/list"
+
+instance Data.ToQuery ListDeviceIdentifiers where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListDeviceIdentifiersResponse' smart constructor.
+data ListDeviceIdentifiersResponse = ListDeviceIdentifiersResponse'
+  { -- | Information about the device identifiers.
+    deviceIdentifiers :: Prelude.Maybe [DeviceIdentifier],
+    -- | 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 'ListDeviceIdentifiersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceIdentifiers', 'listDeviceIdentifiersResponse_deviceIdentifiers' - Information about the device identifiers.
+--
+-- 'nextToken', 'listDeviceIdentifiersResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'listDeviceIdentifiersResponse_httpStatus' - The response's http status code.
+newListDeviceIdentifiersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListDeviceIdentifiersResponse
+newListDeviceIdentifiersResponse pHttpStatus_ =
+  ListDeviceIdentifiersResponse'
+    { deviceIdentifiers =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the device identifiers.
+listDeviceIdentifiersResponse_deviceIdentifiers :: Lens.Lens' ListDeviceIdentifiersResponse (Prelude.Maybe [DeviceIdentifier])
+listDeviceIdentifiersResponse_deviceIdentifiers = Lens.lens (\ListDeviceIdentifiersResponse' {deviceIdentifiers} -> deviceIdentifiers) (\s@ListDeviceIdentifiersResponse' {} a -> s {deviceIdentifiers = a} :: ListDeviceIdentifiersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+listDeviceIdentifiersResponse_nextToken :: Lens.Lens' ListDeviceIdentifiersResponse (Prelude.Maybe Prelude.Text)
+listDeviceIdentifiersResponse_nextToken = Lens.lens (\ListDeviceIdentifiersResponse' {nextToken} -> nextToken) (\s@ListDeviceIdentifiersResponse' {} a -> s {nextToken = a} :: ListDeviceIdentifiersResponse)
+
+-- | The response's http status code.
+listDeviceIdentifiersResponse_httpStatus :: Lens.Lens' ListDeviceIdentifiersResponse Prelude.Int
+listDeviceIdentifiersResponse_httpStatus = Lens.lens (\ListDeviceIdentifiersResponse' {httpStatus} -> httpStatus) (\s@ListDeviceIdentifiersResponse' {} a -> s {httpStatus = a} :: ListDeviceIdentifiersResponse)
+
+instance Prelude.NFData ListDeviceIdentifiersResponse where
+  rnf ListDeviceIdentifiersResponse' {..} =
+    Prelude.rnf deviceIdentifiers
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/PrivateNetworks/ListNetworkResources.hs b/gen/Amazonka/PrivateNetworks/ListNetworkResources.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/ListNetworkResources.hs
@@ -0,0 +1,279 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.PrivateNetworks.ListNetworkResources
+-- 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 network resources. Add filters to your request to return a more
+-- specific list of results. Use filters to match the Amazon Resource Name
+-- (ARN) of an order or the status of network resources.
+--
+-- If you specify multiple filters, filters are joined with an OR, and the
+-- request returns results that match all of the specified filters.
+--
+-- This operation returns paginated results.
+module Amazonka.PrivateNetworks.ListNetworkResources
+  ( -- * Creating a Request
+    ListNetworkResources (..),
+    newListNetworkResources,
+
+    -- * Request Lenses
+    listNetworkResources_filters,
+    listNetworkResources_maxResults,
+    listNetworkResources_startToken,
+    listNetworkResources_networkArn,
+
+    -- * Destructuring the Response
+    ListNetworkResourcesResponse (..),
+    newListNetworkResourcesResponse,
+
+    -- * Response Lenses
+    listNetworkResourcesResponse_networkResources,
+    listNetworkResourcesResponse_nextToken,
+    listNetworkResourcesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListNetworkResources' smart constructor.
+data ListNetworkResources = ListNetworkResources'
+  { -- | The filters.
+    --
+    -- -   @ORDER@ - The Amazon Resource Name (ARN) of the order.
+    --
+    -- -   @STATUS@ - The status (@AVAILABLE@ | @DELETED@ | @DELETING@ |
+    --     @PENDING@ | @PENDING_RETURN@ | @PROVISIONING@ | @SHIPPED@).
+    --
+    -- Filter values are case sensitive. If you specify multiple values for a
+    -- filter, the values are joined with an @OR@, and the request returns all
+    -- results that match any of the specified values.
+    filters :: Prelude.Maybe (Prelude.HashMap NetworkResourceFilterKeys [Prelude.Text]),
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    startToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network.
+    networkArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListNetworkResources' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'listNetworkResources_filters' - The filters.
+--
+-- -   @ORDER@ - The Amazon Resource Name (ARN) of the order.
+--
+-- -   @STATUS@ - The status (@AVAILABLE@ | @DELETED@ | @DELETING@ |
+--     @PENDING@ | @PENDING_RETURN@ | @PROVISIONING@ | @SHIPPED@).
+--
+-- Filter values are case sensitive. If you specify multiple values for a
+-- filter, the values are joined with an @OR@, and the request returns all
+-- results that match any of the specified values.
+--
+-- 'maxResults', 'listNetworkResources_maxResults' - The maximum number of results to return.
+--
+-- 'startToken', 'listNetworkResources_startToken' - The token for the next page of results.
+--
+-- 'networkArn', 'listNetworkResources_networkArn' - The Amazon Resource Name (ARN) of the network.
+newListNetworkResources ::
+  -- | 'networkArn'
+  Prelude.Text ->
+  ListNetworkResources
+newListNetworkResources pNetworkArn_ =
+  ListNetworkResources'
+    { filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      startToken = Prelude.Nothing,
+      networkArn = pNetworkArn_
+    }
+
+-- | The filters.
+--
+-- -   @ORDER@ - The Amazon Resource Name (ARN) of the order.
+--
+-- -   @STATUS@ - The status (@AVAILABLE@ | @DELETED@ | @DELETING@ |
+--     @PENDING@ | @PENDING_RETURN@ | @PROVISIONING@ | @SHIPPED@).
+--
+-- Filter values are case sensitive. If you specify multiple values for a
+-- filter, the values are joined with an @OR@, and the request returns all
+-- results that match any of the specified values.
+listNetworkResources_filters :: Lens.Lens' ListNetworkResources (Prelude.Maybe (Prelude.HashMap NetworkResourceFilterKeys [Prelude.Text]))
+listNetworkResources_filters = Lens.lens (\ListNetworkResources' {filters} -> filters) (\s@ListNetworkResources' {} a -> s {filters = a} :: ListNetworkResources) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of results to return.
+listNetworkResources_maxResults :: Lens.Lens' ListNetworkResources (Prelude.Maybe Prelude.Natural)
+listNetworkResources_maxResults = Lens.lens (\ListNetworkResources' {maxResults} -> maxResults) (\s@ListNetworkResources' {} a -> s {maxResults = a} :: ListNetworkResources)
+
+-- | The token for the next page of results.
+listNetworkResources_startToken :: Lens.Lens' ListNetworkResources (Prelude.Maybe Prelude.Text)
+listNetworkResources_startToken = Lens.lens (\ListNetworkResources' {startToken} -> startToken) (\s@ListNetworkResources' {} a -> s {startToken = a} :: ListNetworkResources)
+
+-- | The Amazon Resource Name (ARN) of the network.
+listNetworkResources_networkArn :: Lens.Lens' ListNetworkResources Prelude.Text
+listNetworkResources_networkArn = Lens.lens (\ListNetworkResources' {networkArn} -> networkArn) (\s@ListNetworkResources' {} a -> s {networkArn = a} :: ListNetworkResources)
+
+instance Core.AWSPager ListNetworkResources where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listNetworkResourcesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listNetworkResourcesResponse_networkResources
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listNetworkResources_startToken
+          Lens..~ rs
+          Lens.^? listNetworkResourcesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListNetworkResources where
+  type
+    AWSResponse ListNetworkResources =
+      ListNetworkResourcesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListNetworkResourcesResponse'
+            Prelude.<$> ( x
+                            Data..?> "networkResources"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListNetworkResources where
+  hashWithSalt _salt ListNetworkResources' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` startToken
+      `Prelude.hashWithSalt` networkArn
+
+instance Prelude.NFData ListNetworkResources where
+  rnf ListNetworkResources' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf startToken
+      `Prelude.seq` Prelude.rnf networkArn
+
+instance Data.ToHeaders ListNetworkResources where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListNetworkResources where
+  toJSON ListNetworkResources' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("filters" Data..=) Prelude.<$> filters,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("startToken" Data..=) Prelude.<$> startToken,
+            Prelude.Just ("networkArn" Data..= networkArn)
+          ]
+      )
+
+instance Data.ToPath ListNetworkResources where
+  toPath = Prelude.const "/v1/network-resources"
+
+instance Data.ToQuery ListNetworkResources where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListNetworkResourcesResponse' smart constructor.
+data ListNetworkResourcesResponse = ListNetworkResourcesResponse'
+  { -- | Information about 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 'ListNetworkResourcesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listNetworkResourcesResponse_networkResources' - Information about network resources.
+--
+-- 'nextToken', 'listNetworkResourcesResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'listNetworkResourcesResponse_httpStatus' - The response's http status code.
+newListNetworkResourcesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListNetworkResourcesResponse
+newListNetworkResourcesResponse pHttpStatus_ =
+  ListNetworkResourcesResponse'
+    { networkResources =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about network resources.
+listNetworkResourcesResponse_networkResources :: Lens.Lens' ListNetworkResourcesResponse (Prelude.Maybe [NetworkResource])
+listNetworkResourcesResponse_networkResources = Lens.lens (\ListNetworkResourcesResponse' {networkResources} -> networkResources) (\s@ListNetworkResourcesResponse' {} a -> s {networkResources = a} :: ListNetworkResourcesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+listNetworkResourcesResponse_nextToken :: Lens.Lens' ListNetworkResourcesResponse (Prelude.Maybe Prelude.Text)
+listNetworkResourcesResponse_nextToken = Lens.lens (\ListNetworkResourcesResponse' {nextToken} -> nextToken) (\s@ListNetworkResourcesResponse' {} a -> s {nextToken = a} :: ListNetworkResourcesResponse)
+
+-- | The response's http status code.
+listNetworkResourcesResponse_httpStatus :: Lens.Lens' ListNetworkResourcesResponse Prelude.Int
+listNetworkResourcesResponse_httpStatus = Lens.lens (\ListNetworkResourcesResponse' {httpStatus} -> httpStatus) (\s@ListNetworkResourcesResponse' {} a -> s {httpStatus = a} :: ListNetworkResourcesResponse)
+
+instance Prelude.NFData ListNetworkResourcesResponse where
+  rnf ListNetworkResourcesResponse' {..} =
+    Prelude.rnf networkResources
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/PrivateNetworks/ListNetworkSites.hs b/gen/Amazonka/PrivateNetworks/ListNetworkSites.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/ListNetworkSites.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.PrivateNetworks.ListNetworkSites
+-- 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 network sites. Add filters to your request to return a more
+-- specific list of results. Use filters to match the status of the network
+-- site.
+--
+-- This operation returns paginated results.
+module Amazonka.PrivateNetworks.ListNetworkSites
+  ( -- * Creating a Request
+    ListNetworkSites (..),
+    newListNetworkSites,
+
+    -- * Request Lenses
+    listNetworkSites_filters,
+    listNetworkSites_maxResults,
+    listNetworkSites_startToken,
+    listNetworkSites_networkArn,
+
+    -- * Destructuring the Response
+    ListNetworkSitesResponse (..),
+    newListNetworkSitesResponse,
+
+    -- * Response Lenses
+    listNetworkSitesResponse_networkSites,
+    listNetworkSitesResponse_nextToken,
+    listNetworkSitesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListNetworkSites' smart constructor.
+data ListNetworkSites = ListNetworkSites'
+  { -- | The filters. Add filters to your request to return a more specific list
+    -- of results. Use filters to match the status of the network sites.
+    --
+    -- -   @STATUS@ - The status (@AVAILABLE@ | @CREATED@ | @DELETED@ |
+    --     @DEPROVISIONING@ | @PROVISIONING@).
+    --
+    -- Filter values are case sensitive. If you specify multiple values for a
+    -- filter, the values are joined with an @OR@, and the request returns all
+    -- results that match any of the specified values.
+    filters :: Prelude.Maybe (Prelude.HashMap NetworkSiteFilterKeys [Prelude.Text]),
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    startToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network.
+    networkArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListNetworkSites' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'listNetworkSites_filters' - The filters. Add filters to your request to return a more specific list
+-- of results. Use filters to match the status of the network sites.
+--
+-- -   @STATUS@ - The status (@AVAILABLE@ | @CREATED@ | @DELETED@ |
+--     @DEPROVISIONING@ | @PROVISIONING@).
+--
+-- Filter values are case sensitive. If you specify multiple values for a
+-- filter, the values are joined with an @OR@, and the request returns all
+-- results that match any of the specified values.
+--
+-- 'maxResults', 'listNetworkSites_maxResults' - The maximum number of results to return.
+--
+-- 'startToken', 'listNetworkSites_startToken' - The token for the next page of results.
+--
+-- 'networkArn', 'listNetworkSites_networkArn' - The Amazon Resource Name (ARN) of the network.
+newListNetworkSites ::
+  -- | 'networkArn'
+  Prelude.Text ->
+  ListNetworkSites
+newListNetworkSites pNetworkArn_ =
+  ListNetworkSites'
+    { filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      startToken = Prelude.Nothing,
+      networkArn = pNetworkArn_
+    }
+
+-- | The filters. Add filters to your request to return a more specific list
+-- of results. Use filters to match the status of the network sites.
+--
+-- -   @STATUS@ - The status (@AVAILABLE@ | @CREATED@ | @DELETED@ |
+--     @DEPROVISIONING@ | @PROVISIONING@).
+--
+-- Filter values are case sensitive. If you specify multiple values for a
+-- filter, the values are joined with an @OR@, and the request returns all
+-- results that match any of the specified values.
+listNetworkSites_filters :: Lens.Lens' ListNetworkSites (Prelude.Maybe (Prelude.HashMap NetworkSiteFilterKeys [Prelude.Text]))
+listNetworkSites_filters = Lens.lens (\ListNetworkSites' {filters} -> filters) (\s@ListNetworkSites' {} a -> s {filters = a} :: ListNetworkSites) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of results to return.
+listNetworkSites_maxResults :: Lens.Lens' ListNetworkSites (Prelude.Maybe Prelude.Natural)
+listNetworkSites_maxResults = Lens.lens (\ListNetworkSites' {maxResults} -> maxResults) (\s@ListNetworkSites' {} a -> s {maxResults = a} :: ListNetworkSites)
+
+-- | The token for the next page of results.
+listNetworkSites_startToken :: Lens.Lens' ListNetworkSites (Prelude.Maybe Prelude.Text)
+listNetworkSites_startToken = Lens.lens (\ListNetworkSites' {startToken} -> startToken) (\s@ListNetworkSites' {} a -> s {startToken = a} :: ListNetworkSites)
+
+-- | The Amazon Resource Name (ARN) of the network.
+listNetworkSites_networkArn :: Lens.Lens' ListNetworkSites Prelude.Text
+listNetworkSites_networkArn = Lens.lens (\ListNetworkSites' {networkArn} -> networkArn) (\s@ListNetworkSites' {} a -> s {networkArn = a} :: ListNetworkSites)
+
+instance Core.AWSPager ListNetworkSites where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listNetworkSitesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listNetworkSitesResponse_networkSites
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listNetworkSites_startToken
+          Lens..~ rs
+          Lens.^? listNetworkSitesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListNetworkSites where
+  type
+    AWSResponse ListNetworkSites =
+      ListNetworkSitesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListNetworkSitesResponse'
+            Prelude.<$> (x Data..?> "networkSites" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListNetworkSites where
+  hashWithSalt _salt ListNetworkSites' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` startToken
+      `Prelude.hashWithSalt` networkArn
+
+instance Prelude.NFData ListNetworkSites where
+  rnf ListNetworkSites' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf startToken
+      `Prelude.seq` Prelude.rnf networkArn
+
+instance Data.ToHeaders ListNetworkSites where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListNetworkSites where
+  toJSON ListNetworkSites' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("filters" Data..=) Prelude.<$> filters,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("startToken" Data..=) Prelude.<$> startToken,
+            Prelude.Just ("networkArn" Data..= networkArn)
+          ]
+      )
+
+instance Data.ToPath ListNetworkSites where
+  toPath = Prelude.const "/v1/network-sites/list"
+
+instance Data.ToQuery ListNetworkSites where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListNetworkSitesResponse' smart constructor.
+data ListNetworkSitesResponse = ListNetworkSitesResponse'
+  { -- | Information about the network sites.
+    networkSites :: Prelude.Maybe [NetworkSite],
+    -- | 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 'ListNetworkSitesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'networkSites', 'listNetworkSitesResponse_networkSites' - Information about the network sites.
+--
+-- 'nextToken', 'listNetworkSitesResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'listNetworkSitesResponse_httpStatus' - The response's http status code.
+newListNetworkSitesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListNetworkSitesResponse
+newListNetworkSitesResponse pHttpStatus_ =
+  ListNetworkSitesResponse'
+    { networkSites =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the network sites.
+listNetworkSitesResponse_networkSites :: Lens.Lens' ListNetworkSitesResponse (Prelude.Maybe [NetworkSite])
+listNetworkSitesResponse_networkSites = Lens.lens (\ListNetworkSitesResponse' {networkSites} -> networkSites) (\s@ListNetworkSitesResponse' {} a -> s {networkSites = a} :: ListNetworkSitesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+listNetworkSitesResponse_nextToken :: Lens.Lens' ListNetworkSitesResponse (Prelude.Maybe Prelude.Text)
+listNetworkSitesResponse_nextToken = Lens.lens (\ListNetworkSitesResponse' {nextToken} -> nextToken) (\s@ListNetworkSitesResponse' {} a -> s {nextToken = a} :: ListNetworkSitesResponse)
+
+-- | The response's http status code.
+listNetworkSitesResponse_httpStatus :: Lens.Lens' ListNetworkSitesResponse Prelude.Int
+listNetworkSitesResponse_httpStatus = Lens.lens (\ListNetworkSitesResponse' {httpStatus} -> httpStatus) (\s@ListNetworkSitesResponse' {} a -> s {httpStatus = a} :: ListNetworkSitesResponse)
+
+instance Prelude.NFData ListNetworkSitesResponse where
+  rnf ListNetworkSitesResponse' {..} =
+    Prelude.rnf networkSites
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/PrivateNetworks/ListNetworks.hs b/gen/Amazonka/PrivateNetworks/ListNetworks.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/ListNetworks.hs
@@ -0,0 +1,248 @@
+{-# 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.PrivateNetworks.ListNetworks
+-- 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 networks. Add filters to your request to return a more specific
+-- list of results. Use filters to match the status of the network.
+--
+-- This operation returns paginated results.
+module Amazonka.PrivateNetworks.ListNetworks
+  ( -- * Creating a Request
+    ListNetworks (..),
+    newListNetworks,
+
+    -- * Request Lenses
+    listNetworks_filters,
+    listNetworks_maxResults,
+    listNetworks_startToken,
+
+    -- * Destructuring the Response
+    ListNetworksResponse (..),
+    newListNetworksResponse,
+
+    -- * Response Lenses
+    listNetworksResponse_networks,
+    listNetworksResponse_nextToken,
+    listNetworksResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListNetworks' smart constructor.
+data ListNetworks = ListNetworks'
+  { -- | The filters.
+    --
+    -- -   @STATUS@ - The status (@AVAILABLE@ | @CREATED@ | @DELETED@ |
+    --     @DEPROVISIONING@ | @PROVISIONING@).
+    --
+    -- Filter values are case sensitive. If you specify multiple values for a
+    -- filter, the values are joined with an @OR@, and the request returns all
+    -- results that match any of the specified values.
+    filters :: Prelude.Maybe (Prelude.HashMap NetworkFilterKeys [Prelude.Text]),
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    startToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListNetworks' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'listNetworks_filters' - The filters.
+--
+-- -   @STATUS@ - The status (@AVAILABLE@ | @CREATED@ | @DELETED@ |
+--     @DEPROVISIONING@ | @PROVISIONING@).
+--
+-- Filter values are case sensitive. If you specify multiple values for a
+-- filter, the values are joined with an @OR@, and the request returns all
+-- results that match any of the specified values.
+--
+-- 'maxResults', 'listNetworks_maxResults' - The maximum number of results to return.
+--
+-- 'startToken', 'listNetworks_startToken' - The token for the next page of results.
+newListNetworks ::
+  ListNetworks
+newListNetworks =
+  ListNetworks'
+    { filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      startToken = Prelude.Nothing
+    }
+
+-- | The filters.
+--
+-- -   @STATUS@ - The status (@AVAILABLE@ | @CREATED@ | @DELETED@ |
+--     @DEPROVISIONING@ | @PROVISIONING@).
+--
+-- Filter values are case sensitive. If you specify multiple values for a
+-- filter, the values are joined with an @OR@, and the request returns all
+-- results that match any of the specified values.
+listNetworks_filters :: Lens.Lens' ListNetworks (Prelude.Maybe (Prelude.HashMap NetworkFilterKeys [Prelude.Text]))
+listNetworks_filters = Lens.lens (\ListNetworks' {filters} -> filters) (\s@ListNetworks' {} a -> s {filters = a} :: ListNetworks) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of results to return.
+listNetworks_maxResults :: Lens.Lens' ListNetworks (Prelude.Maybe Prelude.Natural)
+listNetworks_maxResults = Lens.lens (\ListNetworks' {maxResults} -> maxResults) (\s@ListNetworks' {} a -> s {maxResults = a} :: ListNetworks)
+
+-- | The token for the next page of results.
+listNetworks_startToken :: Lens.Lens' ListNetworks (Prelude.Maybe Prelude.Text)
+listNetworks_startToken = Lens.lens (\ListNetworks' {startToken} -> startToken) (\s@ListNetworks' {} a -> s {startToken = a} :: ListNetworks)
+
+instance Core.AWSPager ListNetworks where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listNetworksResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listNetworksResponse_networks
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listNetworks_startToken
+          Lens..~ rs
+          Lens.^? listNetworksResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListNetworks where
+  type AWSResponse ListNetworks = ListNetworksResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListNetworksResponse'
+            Prelude.<$> (x Data..?> "networks" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListNetworks where
+  hashWithSalt _salt ListNetworks' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` startToken
+
+instance Prelude.NFData ListNetworks where
+  rnf ListNetworks' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf startToken
+
+instance Data.ToHeaders ListNetworks where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListNetworks where
+  toJSON ListNetworks' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("filters" Data..=) Prelude.<$> filters,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("startToken" Data..=) Prelude.<$> startToken
+          ]
+      )
+
+instance Data.ToPath ListNetworks where
+  toPath = Prelude.const "/v1/networks/list"
+
+instance Data.ToQuery ListNetworks where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListNetworksResponse' smart constructor.
+data ListNetworksResponse = ListNetworksResponse'
+  { -- | The networks.
+    networks :: Prelude.Maybe [Network],
+    -- | 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 'ListNetworksResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'networks', 'listNetworksResponse_networks' - The networks.
+--
+-- 'nextToken', 'listNetworksResponse_nextToken' - The token for the next page of results.
+--
+-- 'httpStatus', 'listNetworksResponse_httpStatus' - The response's http status code.
+newListNetworksResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListNetworksResponse
+newListNetworksResponse pHttpStatus_ =
+  ListNetworksResponse'
+    { networks = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The networks.
+listNetworksResponse_networks :: Lens.Lens' ListNetworksResponse (Prelude.Maybe [Network])
+listNetworksResponse_networks = Lens.lens (\ListNetworksResponse' {networks} -> networks) (\s@ListNetworksResponse' {} a -> s {networks = a} :: ListNetworksResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next page of results.
+listNetworksResponse_nextToken :: Lens.Lens' ListNetworksResponse (Prelude.Maybe Prelude.Text)
+listNetworksResponse_nextToken = Lens.lens (\ListNetworksResponse' {nextToken} -> nextToken) (\s@ListNetworksResponse' {} a -> s {nextToken = a} :: ListNetworksResponse)
+
+-- | The response's http status code.
+listNetworksResponse_httpStatus :: Lens.Lens' ListNetworksResponse Prelude.Int
+listNetworksResponse_httpStatus = Lens.lens (\ListNetworksResponse' {httpStatus} -> httpStatus) (\s@ListNetworksResponse' {} a -> s {httpStatus = a} :: ListNetworksResponse)
+
+instance Prelude.NFData ListNetworksResponse where
+  rnf ListNetworksResponse' {..} =
+    Prelude.rnf networks
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/PrivateNetworks/ListOrders.hs b/gen/Amazonka/PrivateNetworks/ListOrders.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/ListOrders.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.PrivateNetworks.ListOrders
+-- 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 orders. Add filters to your request to return a more specific list
+-- of results. Use filters to match the Amazon Resource Name (ARN) of the
+-- network site or the status of the order.
+--
+-- If you specify multiple filters, filters are joined with an OR, and the
+-- request returns results that match all of the specified filters.
+--
+-- This operation returns paginated results.
+module Amazonka.PrivateNetworks.ListOrders
+  ( -- * Creating a Request
+    ListOrders (..),
+    newListOrders,
+
+    -- * Request Lenses
+    listOrders_filters,
+    listOrders_maxResults,
+    listOrders_startToken,
+    listOrders_networkArn,
+
+    -- * Destructuring the Response
+    ListOrdersResponse (..),
+    newListOrdersResponse,
+
+    -- * Response Lenses
+    listOrdersResponse_nextToken,
+    listOrdersResponse_orders,
+    listOrdersResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListOrders' smart constructor.
+data ListOrders = ListOrders'
+  { -- | The filters.
+    --
+    -- -   @NETWORK_SITE@ - The Amazon Resource Name (ARN) of the network site.
+    --
+    -- -   @STATUS@ - The status (@ACKNOWLEDGING@ | @ACKNOWLEDGED@ |
+    --     @UNACKNOWLEDGED@).
+    --
+    -- Filter values are case sensitive. If you specify multiple values for a
+    -- filter, the values are joined with an @OR@, and the request returns all
+    -- results that match any of the specified values.
+    filters :: Prelude.Maybe (Prelude.HashMap OrderFilterKeys [Prelude.Text]),
+    -- | The maximum number of results to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    startToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network.
+    networkArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListOrders' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'listOrders_filters' - The filters.
+--
+-- -   @NETWORK_SITE@ - The Amazon Resource Name (ARN) of the network site.
+--
+-- -   @STATUS@ - The status (@ACKNOWLEDGING@ | @ACKNOWLEDGED@ |
+--     @UNACKNOWLEDGED@).
+--
+-- Filter values are case sensitive. If you specify multiple values for a
+-- filter, the values are joined with an @OR@, and the request returns all
+-- results that match any of the specified values.
+--
+-- 'maxResults', 'listOrders_maxResults' - The maximum number of results to return.
+--
+-- 'startToken', 'listOrders_startToken' - The token for the next page of results.
+--
+-- 'networkArn', 'listOrders_networkArn' - The Amazon Resource Name (ARN) of the network.
+newListOrders ::
+  -- | 'networkArn'
+  Prelude.Text ->
+  ListOrders
+newListOrders pNetworkArn_ =
+  ListOrders'
+    { filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      startToken = Prelude.Nothing,
+      networkArn = pNetworkArn_
+    }
+
+-- | The filters.
+--
+-- -   @NETWORK_SITE@ - The Amazon Resource Name (ARN) of the network site.
+--
+-- -   @STATUS@ - The status (@ACKNOWLEDGING@ | @ACKNOWLEDGED@ |
+--     @UNACKNOWLEDGED@).
+--
+-- Filter values are case sensitive. If you specify multiple values for a
+-- filter, the values are joined with an @OR@, and the request returns all
+-- results that match any of the specified values.
+listOrders_filters :: Lens.Lens' ListOrders (Prelude.Maybe (Prelude.HashMap OrderFilterKeys [Prelude.Text]))
+listOrders_filters = Lens.lens (\ListOrders' {filters} -> filters) (\s@ListOrders' {} a -> s {filters = a} :: ListOrders) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of results to return.
+listOrders_maxResults :: Lens.Lens' ListOrders (Prelude.Maybe Prelude.Natural)
+listOrders_maxResults = Lens.lens (\ListOrders' {maxResults} -> maxResults) (\s@ListOrders' {} a -> s {maxResults = a} :: ListOrders)
+
+-- | The token for the next page of results.
+listOrders_startToken :: Lens.Lens' ListOrders (Prelude.Maybe Prelude.Text)
+listOrders_startToken = Lens.lens (\ListOrders' {startToken} -> startToken) (\s@ListOrders' {} a -> s {startToken = a} :: ListOrders)
+
+-- | The Amazon Resource Name (ARN) of the network.
+listOrders_networkArn :: Lens.Lens' ListOrders Prelude.Text
+listOrders_networkArn = Lens.lens (\ListOrders' {networkArn} -> networkArn) (\s@ListOrders' {} a -> s {networkArn = a} :: ListOrders)
+
+instance Core.AWSPager ListOrders where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listOrdersResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listOrdersResponse_orders
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listOrders_startToken
+          Lens..~ rs
+          Lens.^? listOrdersResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListOrders where
+  type AWSResponse ListOrders = ListOrdersResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListOrdersResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (x Data..?> "orders" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListOrders where
+  hashWithSalt _salt ListOrders' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` startToken
+      `Prelude.hashWithSalt` networkArn
+
+instance Prelude.NFData ListOrders where
+  rnf ListOrders' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf startToken
+      `Prelude.seq` Prelude.rnf networkArn
+
+instance Data.ToHeaders ListOrders where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListOrders where
+  toJSON ListOrders' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("filters" Data..=) Prelude.<$> filters,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("startToken" Data..=) Prelude.<$> startToken,
+            Prelude.Just ("networkArn" Data..= networkArn)
+          ]
+      )
+
+instance Data.ToPath ListOrders where
+  toPath = Prelude.const "/v1/orders/list"
+
+instance Data.ToQuery ListOrders where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListOrdersResponse' smart constructor.
+data ListOrdersResponse = ListOrdersResponse'
+  { -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Information about the orders.
+    orders :: Prelude.Maybe [Order],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListOrdersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listOrdersResponse_nextToken' - The token for the next page of results.
+--
+-- 'orders', 'listOrdersResponse_orders' - Information about the orders.
+--
+-- 'httpStatus', 'listOrdersResponse_httpStatus' - The response's http status code.
+newListOrdersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListOrdersResponse
+newListOrdersResponse pHttpStatus_ =
+  ListOrdersResponse'
+    { nextToken = Prelude.Nothing,
+      orders = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token for the next page of results.
+listOrdersResponse_nextToken :: Lens.Lens' ListOrdersResponse (Prelude.Maybe Prelude.Text)
+listOrdersResponse_nextToken = Lens.lens (\ListOrdersResponse' {nextToken} -> nextToken) (\s@ListOrdersResponse' {} a -> s {nextToken = a} :: ListOrdersResponse)
+
+-- | Information about the orders.
+listOrdersResponse_orders :: Lens.Lens' ListOrdersResponse (Prelude.Maybe [Order])
+listOrdersResponse_orders = Lens.lens (\ListOrdersResponse' {orders} -> orders) (\s@ListOrdersResponse' {} a -> s {orders = a} :: ListOrdersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listOrdersResponse_httpStatus :: Lens.Lens' ListOrdersResponse Prelude.Int
+listOrdersResponse_httpStatus = Lens.lens (\ListOrdersResponse' {httpStatus} -> httpStatus) (\s@ListOrdersResponse' {} a -> s {httpStatus = a} :: ListOrdersResponse)
+
+instance Prelude.NFData ListOrdersResponse where
+  rnf ListOrdersResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf orders
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/PrivateNetworks/ListTagsForResource.hs b/gen/Amazonka/PrivateNetworks/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/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.PrivateNetworks.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 the specified resource.
+module Amazonka.PrivateNetworks.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the resource.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The Amazon Resource Name (ARN) of the resource.
+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceArn
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath ListTagsForResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | The resource tags.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - The resource tags.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The resource tags.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/PrivateNetworks/Ping.hs b/gen/Amazonka/PrivateNetworks/Ping.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Ping.hs
@@ -0,0 +1,138 @@
+{-# 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.PrivateNetworks.Ping
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Checks the health of the service.
+module Amazonka.PrivateNetworks.Ping
+  ( -- * Creating a Request
+    Ping (..),
+    newPing,
+
+    -- * Destructuring the Response
+    PingResponse (..),
+    newPingResponse,
+
+    -- * Response Lenses
+    pingResponse_status,
+    pingResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPing' smart constructor.
+data Ping = Ping'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Ping' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newPing ::
+  Ping
+newPing = Ping'
+
+instance Core.AWSRequest Ping where
+  type AWSResponse Ping = PingResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PingResponse'
+            Prelude.<$> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable Ping where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData Ping where
+  rnf _ = ()
+
+instance Data.ToHeaders Ping where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath Ping where
+  toPath = Prelude.const "/ping"
+
+instance Data.ToQuery Ping where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPingResponse' smart constructor.
+data PingResponse = PingResponse'
+  { -- | Information about the health of the service.
+    status :: 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 'PingResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'pingResponse_status' - Information about the health of the service.
+--
+-- 'httpStatus', 'pingResponse_httpStatus' - The response's http status code.
+newPingResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PingResponse
+newPingResponse pHttpStatus_ =
+  PingResponse'
+    { status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the health of the service.
+pingResponse_status :: Lens.Lens' PingResponse (Prelude.Maybe Prelude.Text)
+pingResponse_status = Lens.lens (\PingResponse' {status} -> status) (\s@PingResponse' {} a -> s {status = a} :: PingResponse)
+
+-- | The response's http status code.
+pingResponse_httpStatus :: Lens.Lens' PingResponse Prelude.Int
+pingResponse_httpStatus = Lens.lens (\PingResponse' {httpStatus} -> httpStatus) (\s@PingResponse' {} a -> s {httpStatus = a} :: PingResponse)
+
+instance Prelude.NFData PingResponse where
+  rnf PingResponse' {..} =
+    Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/PrivateNetworks/TagResource.hs b/gen/Amazonka/PrivateNetworks/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/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.PrivateNetworks.TagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds tags to the specified resource.
+module Amazonka.PrivateNetworks.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+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 add to the resource.
+    tags :: Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'tags', 'tagResource_tags' - The tags to add to the resource.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+-- | The tags to add to the resource.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Data._Sensitive Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("tags" Data..= tags)]
+      )
+
+instance Data.ToPath TagResource where
+  toPath TagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.
+newTagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pHttpStatus_ =
+  TagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/PrivateNetworks/Types.hs b/gen/Amazonka/PrivateNetworks/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types.hs
@@ -0,0 +1,344 @@
+{-# 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.PrivateNetworks.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.PrivateNetworks.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _InternalServerException,
+    _LimitExceededException,
+    _ResourceNotFoundException,
+    _ThrottlingException,
+    _ValidationException,
+
+    -- * AcknowledgmentStatus
+    AcknowledgmentStatus (..),
+
+    -- * DeviceIdentifierFilterKeys
+    DeviceIdentifierFilterKeys (..),
+
+    -- * DeviceIdentifierStatus
+    DeviceIdentifierStatus (..),
+
+    -- * ElevationReference
+    ElevationReference (..),
+
+    -- * ElevationUnit
+    ElevationUnit (..),
+
+    -- * HealthStatus
+    HealthStatus (..),
+
+    -- * NetworkFilterKeys
+    NetworkFilterKeys (..),
+
+    -- * NetworkResourceDefinitionType
+    NetworkResourceDefinitionType (..),
+
+    -- * NetworkResourceFilterKeys
+    NetworkResourceFilterKeys (..),
+
+    -- * NetworkResourceStatus
+    NetworkResourceStatus (..),
+
+    -- * NetworkResourceType
+    NetworkResourceType (..),
+
+    -- * NetworkSiteFilterKeys
+    NetworkSiteFilterKeys (..),
+
+    -- * NetworkSiteStatus
+    NetworkSiteStatus (..),
+
+    -- * NetworkStatus
+    NetworkStatus (..),
+
+    -- * OrderFilterKeys
+    OrderFilterKeys (..),
+
+    -- * Address
+    Address (..),
+    newAddress,
+    address_company,
+    address_phoneNumber,
+    address_street2,
+    address_street3,
+    address_city,
+    address_country,
+    address_name,
+    address_postalCode,
+    address_stateOrProvince,
+    address_street1,
+
+    -- * DeviceIdentifier
+    DeviceIdentifier (..),
+    newDeviceIdentifier,
+    deviceIdentifier_createdAt,
+    deviceIdentifier_deviceIdentifierArn,
+    deviceIdentifier_iccid,
+    deviceIdentifier_imsi,
+    deviceIdentifier_networkArn,
+    deviceIdentifier_orderArn,
+    deviceIdentifier_status,
+    deviceIdentifier_trafficGroupArn,
+    deviceIdentifier_vendor,
+
+    -- * NameValuePair
+    NameValuePair (..),
+    newNameValuePair,
+    nameValuePair_value,
+    nameValuePair_name,
+
+    -- * Network
+    Network (..),
+    newNetwork,
+    network_createdAt,
+    network_description,
+    network_statusReason,
+    network_networkArn,
+    network_networkName,
+    network_status,
+
+    -- * NetworkResource
+    NetworkResource (..),
+    newNetworkResource,
+    networkResource_attributes,
+    networkResource_createdAt,
+    networkResource_description,
+    networkResource_health,
+    networkResource_model,
+    networkResource_networkArn,
+    networkResource_networkResourceArn,
+    networkResource_networkSiteArn,
+    networkResource_orderArn,
+    networkResource_position,
+    networkResource_serialNumber,
+    networkResource_status,
+    networkResource_statusReason,
+    networkResource_type,
+    networkResource_vendor,
+
+    -- * NetworkResourceDefinition
+    NetworkResourceDefinition (..),
+    newNetworkResourceDefinition,
+    networkResourceDefinition_options,
+    networkResourceDefinition_count,
+    networkResourceDefinition_type,
+
+    -- * NetworkSite
+    NetworkSite (..),
+    newNetworkSite,
+    networkSite_availabilityZone,
+    networkSite_availabilityZoneId,
+    networkSite_createdAt,
+    networkSite_currentPlan,
+    networkSite_description,
+    networkSite_pendingPlan,
+    networkSite_statusReason,
+    networkSite_networkArn,
+    networkSite_networkSiteArn,
+    networkSite_networkSiteName,
+    networkSite_status,
+
+    -- * Order
+    Order (..),
+    newOrder,
+    order_acknowledgmentStatus,
+    order_createdAt,
+    order_networkArn,
+    order_networkSiteArn,
+    order_orderArn,
+    order_shippingAddress,
+    order_trackingInformation,
+
+    -- * Position
+    Position (..),
+    newPosition,
+    position_elevation,
+    position_elevationReference,
+    position_elevationUnit,
+    position_latitude,
+    position_longitude,
+
+    -- * SitePlan
+    SitePlan (..),
+    newSitePlan,
+    sitePlan_options,
+    sitePlan_resourceDefinitions,
+
+    -- * TrackingInformation
+    TrackingInformation (..),
+    newTrackingInformation,
+    trackingInformation_trackingNumber,
+
+    -- * UpdateNetworkSiteResponse
+    UpdateNetworkSiteResponse (..),
+    newUpdateNetworkSiteResponse,
+    updateNetworkSiteResponse_networkSite,
+    updateNetworkSiteResponse_tags,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types.AcknowledgmentStatus
+import Amazonka.PrivateNetworks.Types.Address
+import Amazonka.PrivateNetworks.Types.DeviceIdentifier
+import Amazonka.PrivateNetworks.Types.DeviceIdentifierFilterKeys
+import Amazonka.PrivateNetworks.Types.DeviceIdentifierStatus
+import Amazonka.PrivateNetworks.Types.ElevationReference
+import Amazonka.PrivateNetworks.Types.ElevationUnit
+import Amazonka.PrivateNetworks.Types.HealthStatus
+import Amazonka.PrivateNetworks.Types.NameValuePair
+import Amazonka.PrivateNetworks.Types.Network
+import Amazonka.PrivateNetworks.Types.NetworkFilterKeys
+import Amazonka.PrivateNetworks.Types.NetworkResource
+import Amazonka.PrivateNetworks.Types.NetworkResourceDefinition
+import Amazonka.PrivateNetworks.Types.NetworkResourceDefinitionType
+import Amazonka.PrivateNetworks.Types.NetworkResourceFilterKeys
+import Amazonka.PrivateNetworks.Types.NetworkResourceStatus
+import Amazonka.PrivateNetworks.Types.NetworkResourceType
+import Amazonka.PrivateNetworks.Types.NetworkSite
+import Amazonka.PrivateNetworks.Types.NetworkSiteFilterKeys
+import Amazonka.PrivateNetworks.Types.NetworkSiteStatus
+import Amazonka.PrivateNetworks.Types.NetworkStatus
+import Amazonka.PrivateNetworks.Types.Order
+import Amazonka.PrivateNetworks.Types.OrderFilterKeys
+import Amazonka.PrivateNetworks.Types.Position
+import Amazonka.PrivateNetworks.Types.SitePlan
+import Amazonka.PrivateNetworks.Types.TrackingInformation
+import Amazonka.PrivateNetworks.Types.UpdateNetworkSiteResponse
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2021-12-03@ of the Amazon Private 5G SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "PrivateNetworks",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "private-networks",
+      Core.signingName = "private-networks",
+      Core.version = "2021-12-03",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "PrivateNetworks",
+      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 permission to perform this operation.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 403
+
+-- | Information about an internal error.
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+    Prelude.. Core.hasStatus 500
+
+-- | The limit was exceeded.
+_LimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_LimitExceededException =
+  Core._MatchServiceError
+    defaultService
+    "LimitExceededException"
+    Prelude.. Core.hasStatus 400
+
+-- | The resource was not found.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | 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 request failed validation.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/PrivateNetworks/Types/AcknowledgmentStatus.hs b/gen/Amazonka/PrivateNetworks/Types/AcknowledgmentStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/AcknowledgmentStatus.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.PrivateNetworks.Types.AcknowledgmentStatus
+-- 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.PrivateNetworks.Types.AcknowledgmentStatus
+  ( AcknowledgmentStatus
+      ( ..,
+        AcknowledgmentStatus_ACKNOWLEDGED,
+        AcknowledgmentStatus_ACKNOWLEDGING,
+        AcknowledgmentStatus_UNACKNOWLEDGED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AcknowledgmentStatus = AcknowledgmentStatus'
+  { fromAcknowledgmentStatus ::
+      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 AcknowledgmentStatus_ACKNOWLEDGED :: AcknowledgmentStatus
+pattern AcknowledgmentStatus_ACKNOWLEDGED = AcknowledgmentStatus' "ACKNOWLEDGED"
+
+pattern AcknowledgmentStatus_ACKNOWLEDGING :: AcknowledgmentStatus
+pattern AcknowledgmentStatus_ACKNOWLEDGING = AcknowledgmentStatus' "ACKNOWLEDGING"
+
+pattern AcknowledgmentStatus_UNACKNOWLEDGED :: AcknowledgmentStatus
+pattern AcknowledgmentStatus_UNACKNOWLEDGED = AcknowledgmentStatus' "UNACKNOWLEDGED"
+
+{-# COMPLETE
+  AcknowledgmentStatus_ACKNOWLEDGED,
+  AcknowledgmentStatus_ACKNOWLEDGING,
+  AcknowledgmentStatus_UNACKNOWLEDGED,
+  AcknowledgmentStatus'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/Address.hs b/gen/Amazonka/PrivateNetworks/Types/Address.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/Address.hs
@@ -0,0 +1,217 @@
+{-# 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.PrivateNetworks.Types.Address
+-- 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.PrivateNetworks.Types.Address where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about an address.
+--
+-- /See:/ 'newAddress' smart constructor.
+data Address = Address'
+  { -- | The company name for this address.
+    company :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The phone number for this address.
+    phoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The second line of the street address.
+    street2 :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The third line of the street address.
+    street3 :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The city for this address.
+    city :: Data.Sensitive Prelude.Text,
+    -- | The country for this address.
+    country :: Data.Sensitive Prelude.Text,
+    -- | The recipient\'s name for this address.
+    name :: Data.Sensitive Prelude.Text,
+    -- | The postal code for this address.
+    postalCode :: Data.Sensitive Prelude.Text,
+    -- | The state or province for this address.
+    stateOrProvince :: Data.Sensitive Prelude.Text,
+    -- | The first line of the street address.
+    street1 :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Address' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'company', 'address_company' - The company name for this address.
+--
+-- 'phoneNumber', 'address_phoneNumber' - The phone number for this address.
+--
+-- 'street2', 'address_street2' - The second line of the street address.
+--
+-- 'street3', 'address_street3' - The third line of the street address.
+--
+-- 'city', 'address_city' - The city for this address.
+--
+-- 'country', 'address_country' - The country for this address.
+--
+-- 'name', 'address_name' - The recipient\'s name for this address.
+--
+-- 'postalCode', 'address_postalCode' - The postal code for this address.
+--
+-- 'stateOrProvince', 'address_stateOrProvince' - The state or province for this address.
+--
+-- 'street1', 'address_street1' - The first line of the street address.
+newAddress ::
+  -- | 'city'
+  Prelude.Text ->
+  -- | 'country'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'postalCode'
+  Prelude.Text ->
+  -- | 'stateOrProvince'
+  Prelude.Text ->
+  -- | 'street1'
+  Prelude.Text ->
+  Address
+newAddress
+  pCity_
+  pCountry_
+  pName_
+  pPostalCode_
+  pStateOrProvince_
+  pStreet1_ =
+    Address'
+      { company = Prelude.Nothing,
+        phoneNumber = Prelude.Nothing,
+        street2 = Prelude.Nothing,
+        street3 = Prelude.Nothing,
+        city = Data._Sensitive Lens.# pCity_,
+        country = Data._Sensitive Lens.# pCountry_,
+        name = Data._Sensitive Lens.# pName_,
+        postalCode = Data._Sensitive Lens.# pPostalCode_,
+        stateOrProvince =
+          Data._Sensitive Lens.# pStateOrProvince_,
+        street1 = Data._Sensitive Lens.# pStreet1_
+      }
+
+-- | The company name for this address.
+address_company :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_company = Lens.lens (\Address' {company} -> company) (\s@Address' {} a -> s {company = a} :: Address) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The phone number for this address.
+address_phoneNumber :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_phoneNumber = Lens.lens (\Address' {phoneNumber} -> phoneNumber) (\s@Address' {} a -> s {phoneNumber = a} :: Address) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The second line of the street address.
+address_street2 :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_street2 = Lens.lens (\Address' {street2} -> street2) (\s@Address' {} a -> s {street2 = a} :: Address) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The third line of the street address.
+address_street3 :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_street3 = Lens.lens (\Address' {street3} -> street3) (\s@Address' {} a -> s {street3 = a} :: Address) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The city for this address.
+address_city :: Lens.Lens' Address Prelude.Text
+address_city = Lens.lens (\Address' {city} -> city) (\s@Address' {} a -> s {city = a} :: Address) Prelude.. Data._Sensitive
+
+-- | The country for this address.
+address_country :: Lens.Lens' Address Prelude.Text
+address_country = Lens.lens (\Address' {country} -> country) (\s@Address' {} a -> s {country = a} :: Address) Prelude.. Data._Sensitive
+
+-- | The recipient\'s name for this address.
+address_name :: Lens.Lens' Address Prelude.Text
+address_name = Lens.lens (\Address' {name} -> name) (\s@Address' {} a -> s {name = a} :: Address) Prelude.. Data._Sensitive
+
+-- | The postal code for this address.
+address_postalCode :: Lens.Lens' Address Prelude.Text
+address_postalCode = Lens.lens (\Address' {postalCode} -> postalCode) (\s@Address' {} a -> s {postalCode = a} :: Address) Prelude.. Data._Sensitive
+
+-- | The state or province for this address.
+address_stateOrProvince :: Lens.Lens' Address Prelude.Text
+address_stateOrProvince = Lens.lens (\Address' {stateOrProvince} -> stateOrProvince) (\s@Address' {} a -> s {stateOrProvince = a} :: Address) Prelude.. Data._Sensitive
+
+-- | The first line of the street address.
+address_street1 :: Lens.Lens' Address Prelude.Text
+address_street1 = Lens.lens (\Address' {street1} -> street1) (\s@Address' {} a -> s {street1 = a} :: Address) Prelude.. Data._Sensitive
+
+instance Data.FromJSON Address where
+  parseJSON =
+    Data.withObject
+      "Address"
+      ( \x ->
+          Address'
+            Prelude.<$> (x Data..:? "company")
+            Prelude.<*> (x Data..:? "phoneNumber")
+            Prelude.<*> (x Data..:? "street2")
+            Prelude.<*> (x Data..:? "street3")
+            Prelude.<*> (x Data..: "city")
+            Prelude.<*> (x Data..: "country")
+            Prelude.<*> (x Data..: "name")
+            Prelude.<*> (x Data..: "postalCode")
+            Prelude.<*> (x Data..: "stateOrProvince")
+            Prelude.<*> (x Data..: "street1")
+      )
+
+instance Prelude.Hashable Address where
+  hashWithSalt _salt Address' {..} =
+    _salt
+      `Prelude.hashWithSalt` company
+      `Prelude.hashWithSalt` phoneNumber
+      `Prelude.hashWithSalt` street2
+      `Prelude.hashWithSalt` street3
+      `Prelude.hashWithSalt` city
+      `Prelude.hashWithSalt` country
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` postalCode
+      `Prelude.hashWithSalt` stateOrProvince
+      `Prelude.hashWithSalt` street1
+
+instance Prelude.NFData Address where
+  rnf Address' {..} =
+    Prelude.rnf company
+      `Prelude.seq` Prelude.rnf phoneNumber
+      `Prelude.seq` Prelude.rnf street2
+      `Prelude.seq` Prelude.rnf street3
+      `Prelude.seq` Prelude.rnf city
+      `Prelude.seq` Prelude.rnf country
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf postalCode
+      `Prelude.seq` Prelude.rnf stateOrProvince
+      `Prelude.seq` Prelude.rnf street1
+
+instance Data.ToJSON Address where
+  toJSON Address' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("company" Data..=) Prelude.<$> company,
+            ("phoneNumber" Data..=) Prelude.<$> phoneNumber,
+            ("street2" Data..=) Prelude.<$> street2,
+            ("street3" Data..=) Prelude.<$> street3,
+            Prelude.Just ("city" Data..= city),
+            Prelude.Just ("country" Data..= country),
+            Prelude.Just ("name" Data..= name),
+            Prelude.Just ("postalCode" Data..= postalCode),
+            Prelude.Just
+              ("stateOrProvince" Data..= stateOrProvince),
+            Prelude.Just ("street1" Data..= street1)
+          ]
+      )
diff --git a/gen/Amazonka/PrivateNetworks/Types/DeviceIdentifier.hs b/gen/Amazonka/PrivateNetworks/Types/DeviceIdentifier.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/DeviceIdentifier.hs
@@ -0,0 +1,178 @@
+{-# 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.PrivateNetworks.Types.DeviceIdentifier
+-- 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.PrivateNetworks.Types.DeviceIdentifier where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types.DeviceIdentifierStatus
+
+-- | Information about a subscriber of a device that can use a network.
+--
+-- /See:/ 'newDeviceIdentifier' smart constructor.
+data DeviceIdentifier = DeviceIdentifier'
+  { -- | The creation time of this device identifier.
+    createdAt :: Prelude.Maybe Data.ISO8601,
+    -- | The Amazon Resource Name (ARN) of the device identifier.
+    deviceIdentifierArn :: Prelude.Maybe Prelude.Text,
+    -- | The Integrated Circuit Card Identifier of the device identifier.
+    iccid :: Prelude.Maybe Prelude.Text,
+    -- | The International Mobile Subscriber Identity of the device identifier.
+    imsi :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The Amazon Resource Name (ARN) of the network on which the device
+    -- identifier appears.
+    networkArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the order used to purchase the device
+    -- identifier.
+    orderArn :: Prelude.Maybe Prelude.Text,
+    -- | The status of the device identifier.
+    status :: Prelude.Maybe DeviceIdentifierStatus,
+    -- | The Amazon Resource Name (ARN) of the traffic group to which the device
+    -- identifier belongs.
+    trafficGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | The vendor of the device identifier.
+    vendor :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeviceIdentifier' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deviceIdentifier_createdAt' - The creation time of this device identifier.
+--
+-- 'deviceIdentifierArn', 'deviceIdentifier_deviceIdentifierArn' - The Amazon Resource Name (ARN) of the device identifier.
+--
+-- 'iccid', 'deviceIdentifier_iccid' - The Integrated Circuit Card Identifier of the device identifier.
+--
+-- 'imsi', 'deviceIdentifier_imsi' - The International Mobile Subscriber Identity of the device identifier.
+--
+-- 'networkArn', 'deviceIdentifier_networkArn' - The Amazon Resource Name (ARN) of the network on which the device
+-- identifier appears.
+--
+-- 'orderArn', 'deviceIdentifier_orderArn' - The Amazon Resource Name (ARN) of the order used to purchase the device
+-- identifier.
+--
+-- 'status', 'deviceIdentifier_status' - The status of the device identifier.
+--
+-- 'trafficGroupArn', 'deviceIdentifier_trafficGroupArn' - The Amazon Resource Name (ARN) of the traffic group to which the device
+-- identifier belongs.
+--
+-- 'vendor', 'deviceIdentifier_vendor' - The vendor of the device identifier.
+newDeviceIdentifier ::
+  DeviceIdentifier
+newDeviceIdentifier =
+  DeviceIdentifier'
+    { createdAt = Prelude.Nothing,
+      deviceIdentifierArn = Prelude.Nothing,
+      iccid = Prelude.Nothing,
+      imsi = Prelude.Nothing,
+      networkArn = Prelude.Nothing,
+      orderArn = Prelude.Nothing,
+      status = Prelude.Nothing,
+      trafficGroupArn = Prelude.Nothing,
+      vendor = Prelude.Nothing
+    }
+
+-- | The creation time of this device identifier.
+deviceIdentifier_createdAt :: Lens.Lens' DeviceIdentifier (Prelude.Maybe Prelude.UTCTime)
+deviceIdentifier_createdAt = Lens.lens (\DeviceIdentifier' {createdAt} -> createdAt) (\s@DeviceIdentifier' {} a -> s {createdAt = a} :: DeviceIdentifier) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the device identifier.
+deviceIdentifier_deviceIdentifierArn :: Lens.Lens' DeviceIdentifier (Prelude.Maybe Prelude.Text)
+deviceIdentifier_deviceIdentifierArn = Lens.lens (\DeviceIdentifier' {deviceIdentifierArn} -> deviceIdentifierArn) (\s@DeviceIdentifier' {} a -> s {deviceIdentifierArn = a} :: DeviceIdentifier)
+
+-- | The Integrated Circuit Card Identifier of the device identifier.
+deviceIdentifier_iccid :: Lens.Lens' DeviceIdentifier (Prelude.Maybe Prelude.Text)
+deviceIdentifier_iccid = Lens.lens (\DeviceIdentifier' {iccid} -> iccid) (\s@DeviceIdentifier' {} a -> s {iccid = a} :: DeviceIdentifier)
+
+-- | The International Mobile Subscriber Identity of the device identifier.
+deviceIdentifier_imsi :: Lens.Lens' DeviceIdentifier (Prelude.Maybe Prelude.Text)
+deviceIdentifier_imsi = Lens.lens (\DeviceIdentifier' {imsi} -> imsi) (\s@DeviceIdentifier' {} a -> s {imsi = a} :: DeviceIdentifier) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Amazon Resource Name (ARN) of the network on which the device
+-- identifier appears.
+deviceIdentifier_networkArn :: Lens.Lens' DeviceIdentifier (Prelude.Maybe Prelude.Text)
+deviceIdentifier_networkArn = Lens.lens (\DeviceIdentifier' {networkArn} -> networkArn) (\s@DeviceIdentifier' {} a -> s {networkArn = a} :: DeviceIdentifier)
+
+-- | The Amazon Resource Name (ARN) of the order used to purchase the device
+-- identifier.
+deviceIdentifier_orderArn :: Lens.Lens' DeviceIdentifier (Prelude.Maybe Prelude.Text)
+deviceIdentifier_orderArn = Lens.lens (\DeviceIdentifier' {orderArn} -> orderArn) (\s@DeviceIdentifier' {} a -> s {orderArn = a} :: DeviceIdentifier)
+
+-- | The status of the device identifier.
+deviceIdentifier_status :: Lens.Lens' DeviceIdentifier (Prelude.Maybe DeviceIdentifierStatus)
+deviceIdentifier_status = Lens.lens (\DeviceIdentifier' {status} -> status) (\s@DeviceIdentifier' {} a -> s {status = a} :: DeviceIdentifier)
+
+-- | The Amazon Resource Name (ARN) of the traffic group to which the device
+-- identifier belongs.
+deviceIdentifier_trafficGroupArn :: Lens.Lens' DeviceIdentifier (Prelude.Maybe Prelude.Text)
+deviceIdentifier_trafficGroupArn = Lens.lens (\DeviceIdentifier' {trafficGroupArn} -> trafficGroupArn) (\s@DeviceIdentifier' {} a -> s {trafficGroupArn = a} :: DeviceIdentifier)
+
+-- | The vendor of the device identifier.
+deviceIdentifier_vendor :: Lens.Lens' DeviceIdentifier (Prelude.Maybe Prelude.Text)
+deviceIdentifier_vendor = Lens.lens (\DeviceIdentifier' {vendor} -> vendor) (\s@DeviceIdentifier' {} a -> s {vendor = a} :: DeviceIdentifier)
+
+instance Data.FromJSON DeviceIdentifier where
+  parseJSON =
+    Data.withObject
+      "DeviceIdentifier"
+      ( \x ->
+          DeviceIdentifier'
+            Prelude.<$> (x Data..:? "createdAt")
+            Prelude.<*> (x Data..:? "deviceIdentifierArn")
+            Prelude.<*> (x Data..:? "iccid")
+            Prelude.<*> (x Data..:? "imsi")
+            Prelude.<*> (x Data..:? "networkArn")
+            Prelude.<*> (x Data..:? "orderArn")
+            Prelude.<*> (x Data..:? "status")
+            Prelude.<*> (x Data..:? "trafficGroupArn")
+            Prelude.<*> (x Data..:? "vendor")
+      )
+
+instance Prelude.Hashable DeviceIdentifier where
+  hashWithSalt _salt DeviceIdentifier' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` deviceIdentifierArn
+      `Prelude.hashWithSalt` iccid
+      `Prelude.hashWithSalt` imsi
+      `Prelude.hashWithSalt` networkArn
+      `Prelude.hashWithSalt` orderArn
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` trafficGroupArn
+      `Prelude.hashWithSalt` vendor
+
+instance Prelude.NFData DeviceIdentifier where
+  rnf DeviceIdentifier' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf deviceIdentifierArn
+      `Prelude.seq` Prelude.rnf iccid
+      `Prelude.seq` Prelude.rnf imsi
+      `Prelude.seq` Prelude.rnf networkArn
+      `Prelude.seq` Prelude.rnf orderArn
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf trafficGroupArn
+      `Prelude.seq` Prelude.rnf vendor
diff --git a/gen/Amazonka/PrivateNetworks/Types/DeviceIdentifierFilterKeys.hs b/gen/Amazonka/PrivateNetworks/Types/DeviceIdentifierFilterKeys.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/DeviceIdentifierFilterKeys.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.PrivateNetworks.Types.DeviceIdentifierFilterKeys
+-- 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.PrivateNetworks.Types.DeviceIdentifierFilterKeys
+  ( DeviceIdentifierFilterKeys
+      ( ..,
+        DeviceIdentifierFilterKeys_ORDER,
+        DeviceIdentifierFilterKeys_STATUS,
+        DeviceIdentifierFilterKeys_TRAFFIC_GROUP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DeviceIdentifierFilterKeys = DeviceIdentifierFilterKeys'
+  { fromDeviceIdentifierFilterKeys ::
+      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 DeviceIdentifierFilterKeys_ORDER :: DeviceIdentifierFilterKeys
+pattern DeviceIdentifierFilterKeys_ORDER = DeviceIdentifierFilterKeys' "ORDER"
+
+pattern DeviceIdentifierFilterKeys_STATUS :: DeviceIdentifierFilterKeys
+pattern DeviceIdentifierFilterKeys_STATUS = DeviceIdentifierFilterKeys' "STATUS"
+
+pattern DeviceIdentifierFilterKeys_TRAFFIC_GROUP :: DeviceIdentifierFilterKeys
+pattern DeviceIdentifierFilterKeys_TRAFFIC_GROUP = DeviceIdentifierFilterKeys' "TRAFFIC_GROUP"
+
+{-# COMPLETE
+  DeviceIdentifierFilterKeys_ORDER,
+  DeviceIdentifierFilterKeys_STATUS,
+  DeviceIdentifierFilterKeys_TRAFFIC_GROUP,
+  DeviceIdentifierFilterKeys'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/DeviceIdentifierStatus.hs b/gen/Amazonka/PrivateNetworks/Types/DeviceIdentifierStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/DeviceIdentifierStatus.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.PrivateNetworks.Types.DeviceIdentifierStatus
+-- 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.PrivateNetworks.Types.DeviceIdentifierStatus
+  ( DeviceIdentifierStatus
+      ( ..,
+        DeviceIdentifierStatus_ACTIVE,
+        DeviceIdentifierStatus_INACTIVE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DeviceIdentifierStatus = DeviceIdentifierStatus'
+  { fromDeviceIdentifierStatus ::
+      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 DeviceIdentifierStatus_ACTIVE :: DeviceIdentifierStatus
+pattern DeviceIdentifierStatus_ACTIVE = DeviceIdentifierStatus' "ACTIVE"
+
+pattern DeviceIdentifierStatus_INACTIVE :: DeviceIdentifierStatus
+pattern DeviceIdentifierStatus_INACTIVE = DeviceIdentifierStatus' "INACTIVE"
+
+{-# COMPLETE
+  DeviceIdentifierStatus_ACTIVE,
+  DeviceIdentifierStatus_INACTIVE,
+  DeviceIdentifierStatus'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/ElevationReference.hs b/gen/Amazonka/PrivateNetworks/Types/ElevationReference.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/ElevationReference.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.PrivateNetworks.Types.ElevationReference
+-- 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.PrivateNetworks.Types.ElevationReference
+  ( ElevationReference
+      ( ..,
+        ElevationReference_AGL,
+        ElevationReference_AMSL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ElevationReference = ElevationReference'
+  { fromElevationReference ::
+      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 ElevationReference_AGL :: ElevationReference
+pattern ElevationReference_AGL = ElevationReference' "AGL"
+
+pattern ElevationReference_AMSL :: ElevationReference
+pattern ElevationReference_AMSL = ElevationReference' "AMSL"
+
+{-# COMPLETE
+  ElevationReference_AGL,
+  ElevationReference_AMSL,
+  ElevationReference'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/ElevationUnit.hs b/gen/Amazonka/PrivateNetworks/Types/ElevationUnit.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/ElevationUnit.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.PrivateNetworks.Types.ElevationUnit
+-- 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.PrivateNetworks.Types.ElevationUnit
+  ( ElevationUnit
+      ( ..,
+        ElevationUnit_FEET
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ElevationUnit = ElevationUnit'
+  { fromElevationUnit ::
+      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 ElevationUnit_FEET :: ElevationUnit
+pattern ElevationUnit_FEET = ElevationUnit' "FEET"
+
+{-# COMPLETE
+  ElevationUnit_FEET,
+  ElevationUnit'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/HealthStatus.hs b/gen/Amazonka/PrivateNetworks/Types/HealthStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/HealthStatus.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.PrivateNetworks.Types.HealthStatus
+-- 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.PrivateNetworks.Types.HealthStatus
+  ( HealthStatus
+      ( ..,
+        HealthStatus_HEALTHY,
+        HealthStatus_INITIAL,
+        HealthStatus_UNHEALTHY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype HealthStatus = HealthStatus'
+  { fromHealthStatus ::
+      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 HealthStatus_HEALTHY :: HealthStatus
+pattern HealthStatus_HEALTHY = HealthStatus' "HEALTHY"
+
+pattern HealthStatus_INITIAL :: HealthStatus
+pattern HealthStatus_INITIAL = HealthStatus' "INITIAL"
+
+pattern HealthStatus_UNHEALTHY :: HealthStatus
+pattern HealthStatus_UNHEALTHY = HealthStatus' "UNHEALTHY"
+
+{-# COMPLETE
+  HealthStatus_HEALTHY,
+  HealthStatus_INITIAL,
+  HealthStatus_UNHEALTHY,
+  HealthStatus'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/NameValuePair.hs b/gen/Amazonka/PrivateNetworks/Types/NameValuePair.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/NameValuePair.hs
@@ -0,0 +1,94 @@
+{-# 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.PrivateNetworks.Types.NameValuePair
+-- 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.PrivateNetworks.Types.NameValuePair where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about a name\/value pair.
+--
+-- /See:/ 'newNameValuePair' smart constructor.
+data NameValuePair = NameValuePair'
+  { -- | The value of the pair.
+    value :: Prelude.Maybe Prelude.Text,
+    -- | The name of the pair.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NameValuePair' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'value', 'nameValuePair_value' - The value of the pair.
+--
+-- 'name', 'nameValuePair_name' - The name of the pair.
+newNameValuePair ::
+  -- | 'name'
+  Prelude.Text ->
+  NameValuePair
+newNameValuePair pName_ =
+  NameValuePair'
+    { value = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | The value of the pair.
+nameValuePair_value :: Lens.Lens' NameValuePair (Prelude.Maybe Prelude.Text)
+nameValuePair_value = Lens.lens (\NameValuePair' {value} -> value) (\s@NameValuePair' {} a -> s {value = a} :: NameValuePair)
+
+-- | The name of the pair.
+nameValuePair_name :: Lens.Lens' NameValuePair Prelude.Text
+nameValuePair_name = Lens.lens (\NameValuePair' {name} -> name) (\s@NameValuePair' {} a -> s {name = a} :: NameValuePair)
+
+instance Data.FromJSON NameValuePair where
+  parseJSON =
+    Data.withObject
+      "NameValuePair"
+      ( \x ->
+          NameValuePair'
+            Prelude.<$> (x Data..:? "value")
+            Prelude.<*> (x Data..: "name")
+      )
+
+instance Prelude.Hashable NameValuePair where
+  hashWithSalt _salt NameValuePair' {..} =
+    _salt
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData NameValuePair where
+  rnf NameValuePair' {..} =
+    Prelude.rnf value `Prelude.seq` Prelude.rnf name
+
+instance Data.ToJSON NameValuePair where
+  toJSON NameValuePair' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("value" Data..=) Prelude.<$> value,
+            Prelude.Just ("name" Data..= name)
+          ]
+      )
diff --git a/gen/Amazonka/PrivateNetworks/Types/Network.hs b/gen/Amazonka/PrivateNetworks/Types/Network.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/Network.hs
@@ -0,0 +1,139 @@
+{-# 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.PrivateNetworks.Types.Network
+-- 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.PrivateNetworks.Types.Network where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types.NetworkStatus
+
+-- | Information about a network.
+--
+-- /See:/ 'newNetwork' smart constructor.
+data Network = Network'
+  { -- | The creation time of the network.
+    createdAt :: Prelude.Maybe Data.ISO8601,
+    -- | The description of the network.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The status reason of the network.
+    statusReason :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network.
+    networkArn :: Prelude.Text,
+    -- | The name of the network.
+    networkName :: Prelude.Text,
+    -- | The status of the network.
+    status :: NetworkStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Network' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'network_createdAt' - The creation time of the network.
+--
+-- 'description', 'network_description' - The description of the network.
+--
+-- 'statusReason', 'network_statusReason' - The status reason of the network.
+--
+-- 'networkArn', 'network_networkArn' - The Amazon Resource Name (ARN) of the network.
+--
+-- 'networkName', 'network_networkName' - The name of the network.
+--
+-- 'status', 'network_status' - The status of the network.
+newNetwork ::
+  -- | 'networkArn'
+  Prelude.Text ->
+  -- | 'networkName'
+  Prelude.Text ->
+  -- | 'status'
+  NetworkStatus ->
+  Network
+newNetwork pNetworkArn_ pNetworkName_ pStatus_ =
+  Network'
+    { createdAt = Prelude.Nothing,
+      description = Prelude.Nothing,
+      statusReason = Prelude.Nothing,
+      networkArn = pNetworkArn_,
+      networkName = pNetworkName_,
+      status = pStatus_
+    }
+
+-- | The creation time of the network.
+network_createdAt :: Lens.Lens' Network (Prelude.Maybe Prelude.UTCTime)
+network_createdAt = Lens.lens (\Network' {createdAt} -> createdAt) (\s@Network' {} a -> s {createdAt = a} :: Network) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the network.
+network_description :: Lens.Lens' Network (Prelude.Maybe Prelude.Text)
+network_description = Lens.lens (\Network' {description} -> description) (\s@Network' {} a -> s {description = a} :: Network)
+
+-- | The status reason of the network.
+network_statusReason :: Lens.Lens' Network (Prelude.Maybe Prelude.Text)
+network_statusReason = Lens.lens (\Network' {statusReason} -> statusReason) (\s@Network' {} a -> s {statusReason = a} :: Network)
+
+-- | The Amazon Resource Name (ARN) of the network.
+network_networkArn :: Lens.Lens' Network Prelude.Text
+network_networkArn = Lens.lens (\Network' {networkArn} -> networkArn) (\s@Network' {} a -> s {networkArn = a} :: Network)
+
+-- | The name of the network.
+network_networkName :: Lens.Lens' Network Prelude.Text
+network_networkName = Lens.lens (\Network' {networkName} -> networkName) (\s@Network' {} a -> s {networkName = a} :: Network)
+
+-- | The status of the network.
+network_status :: Lens.Lens' Network NetworkStatus
+network_status = Lens.lens (\Network' {status} -> status) (\s@Network' {} a -> s {status = a} :: Network)
+
+instance Data.FromJSON Network where
+  parseJSON =
+    Data.withObject
+      "Network"
+      ( \x ->
+          Network'
+            Prelude.<$> (x Data..:? "createdAt")
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> (x Data..:? "statusReason")
+            Prelude.<*> (x Data..: "networkArn")
+            Prelude.<*> (x Data..: "networkName")
+            Prelude.<*> (x Data..: "status")
+      )
+
+instance Prelude.Hashable Network where
+  hashWithSalt _salt Network' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` statusReason
+      `Prelude.hashWithSalt` networkArn
+      `Prelude.hashWithSalt` networkName
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData Network where
+  rnf Network' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf statusReason
+      `Prelude.seq` Prelude.rnf networkArn
+      `Prelude.seq` Prelude.rnf networkName
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/PrivateNetworks/Types/NetworkFilterKeys.hs b/gen/Amazonka/PrivateNetworks/Types/NetworkFilterKeys.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/NetworkFilterKeys.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.PrivateNetworks.Types.NetworkFilterKeys
+-- 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.PrivateNetworks.Types.NetworkFilterKeys
+  ( NetworkFilterKeys
+      ( ..,
+        NetworkFilterKeys_STATUS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NetworkFilterKeys = NetworkFilterKeys'
+  { fromNetworkFilterKeys ::
+      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 NetworkFilterKeys_STATUS :: NetworkFilterKeys
+pattern NetworkFilterKeys_STATUS = NetworkFilterKeys' "STATUS"
+
+{-# COMPLETE
+  NetworkFilterKeys_STATUS,
+  NetworkFilterKeys'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/NetworkResource.hs b/gen/Amazonka/PrivateNetworks/Types/NetworkResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/NetworkResource.hs
@@ -0,0 +1,254 @@
+{-# 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.PrivateNetworks.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.PrivateNetworks.Types.NetworkResource where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types.HealthStatus
+import Amazonka.PrivateNetworks.Types.NameValuePair
+import Amazonka.PrivateNetworks.Types.NetworkResourceStatus
+import Amazonka.PrivateNetworks.Types.NetworkResourceType
+import Amazonka.PrivateNetworks.Types.Position
+
+-- | Information about a network resource.
+--
+-- /See:/ 'newNetworkResource' smart constructor.
+data NetworkResource = NetworkResource'
+  { -- | The attributes of the network resource.
+    attributes :: Prelude.Maybe [NameValuePair],
+    -- | The creation time of the network resource.
+    createdAt :: Prelude.Maybe Data.ISO8601,
+    -- | The description of the network resource.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The health of the network resource.
+    health :: Prelude.Maybe HealthStatus,
+    -- | The model of the network resource.
+    model :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network on which this network
+    -- resource appears.
+    networkArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network resource.
+    networkResourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network site on which this network
+    -- resource appears.
+    networkSiteArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the order used to purchase this
+    -- network resource.
+    orderArn :: Prelude.Maybe Prelude.Text,
+    -- | The position of the network resource.
+    position :: Prelude.Maybe Position,
+    -- | The serial number of the network resource.
+    serialNumber :: Prelude.Maybe Prelude.Text,
+    -- | The status of the network resource.
+    status :: Prelude.Maybe NetworkResourceStatus,
+    -- | The status reason of the network resource.
+    statusReason :: Prelude.Maybe Prelude.Text,
+    -- | The type of the network resource.
+    type' :: Prelude.Maybe NetworkResourceType,
+    -- | The vendor of the network resource.
+    vendor :: Prelude.Maybe Prelude.Text
+  }
+  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:
+--
+-- 'attributes', 'networkResource_attributes' - The attributes of the network resource.
+--
+-- 'createdAt', 'networkResource_createdAt' - The creation time of the network resource.
+--
+-- 'description', 'networkResource_description' - The description of the network resource.
+--
+-- 'health', 'networkResource_health' - The health of the network resource.
+--
+-- 'model', 'networkResource_model' - The model of the network resource.
+--
+-- 'networkArn', 'networkResource_networkArn' - The Amazon Resource Name (ARN) of the network on which this network
+-- resource appears.
+--
+-- 'networkResourceArn', 'networkResource_networkResourceArn' - The Amazon Resource Name (ARN) of the network resource.
+--
+-- 'networkSiteArn', 'networkResource_networkSiteArn' - The Amazon Resource Name (ARN) of the network site on which this network
+-- resource appears.
+--
+-- 'orderArn', 'networkResource_orderArn' - The Amazon Resource Name (ARN) of the order used to purchase this
+-- network resource.
+--
+-- 'position', 'networkResource_position' - The position of the network resource.
+--
+-- 'serialNumber', 'networkResource_serialNumber' - The serial number of the network resource.
+--
+-- 'status', 'networkResource_status' - The status of the network resource.
+--
+-- 'statusReason', 'networkResource_statusReason' - The status reason of the network resource.
+--
+-- 'type'', 'networkResource_type' - The type of the network resource.
+--
+-- 'vendor', 'networkResource_vendor' - The vendor of the network resource.
+newNetworkResource ::
+  NetworkResource
+newNetworkResource =
+  NetworkResource'
+    { attributes = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      description = Prelude.Nothing,
+      health = Prelude.Nothing,
+      model = Prelude.Nothing,
+      networkArn = Prelude.Nothing,
+      networkResourceArn = Prelude.Nothing,
+      networkSiteArn = Prelude.Nothing,
+      orderArn = Prelude.Nothing,
+      position = Prelude.Nothing,
+      serialNumber = Prelude.Nothing,
+      status = Prelude.Nothing,
+      statusReason = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      vendor = Prelude.Nothing
+    }
+
+-- | The attributes of the network resource.
+networkResource_attributes :: Lens.Lens' NetworkResource (Prelude.Maybe [NameValuePair])
+networkResource_attributes = Lens.lens (\NetworkResource' {attributes} -> attributes) (\s@NetworkResource' {} a -> s {attributes = a} :: NetworkResource) Prelude.. Lens.mapping Lens.coerced
+
+-- | The creation time of the network resource.
+networkResource_createdAt :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.UTCTime)
+networkResource_createdAt = Lens.lens (\NetworkResource' {createdAt} -> createdAt) (\s@NetworkResource' {} a -> s {createdAt = a} :: NetworkResource) Prelude.. Lens.mapping Data._Time
+
+-- | The description of the network resource.
+networkResource_description :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_description = Lens.lens (\NetworkResource' {description} -> description) (\s@NetworkResource' {} a -> s {description = a} :: NetworkResource)
+
+-- | The health of the network resource.
+networkResource_health :: Lens.Lens' NetworkResource (Prelude.Maybe HealthStatus)
+networkResource_health = Lens.lens (\NetworkResource' {health} -> health) (\s@NetworkResource' {} a -> s {health = a} :: NetworkResource)
+
+-- | The model of the network resource.
+networkResource_model :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_model = Lens.lens (\NetworkResource' {model} -> model) (\s@NetworkResource' {} a -> s {model = a} :: NetworkResource)
+
+-- | The Amazon Resource Name (ARN) of the network on which this network
+-- resource appears.
+networkResource_networkArn :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_networkArn = Lens.lens (\NetworkResource' {networkArn} -> networkArn) (\s@NetworkResource' {} a -> s {networkArn = a} :: NetworkResource)
+
+-- | The Amazon Resource Name (ARN) of the network resource.
+networkResource_networkResourceArn :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_networkResourceArn = Lens.lens (\NetworkResource' {networkResourceArn} -> networkResourceArn) (\s@NetworkResource' {} a -> s {networkResourceArn = a} :: NetworkResource)
+
+-- | The Amazon Resource Name (ARN) of the network site on which this network
+-- resource appears.
+networkResource_networkSiteArn :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_networkSiteArn = Lens.lens (\NetworkResource' {networkSiteArn} -> networkSiteArn) (\s@NetworkResource' {} a -> s {networkSiteArn = a} :: NetworkResource)
+
+-- | The Amazon Resource Name (ARN) of the order used to purchase this
+-- network resource.
+networkResource_orderArn :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_orderArn = Lens.lens (\NetworkResource' {orderArn} -> orderArn) (\s@NetworkResource' {} a -> s {orderArn = a} :: NetworkResource)
+
+-- | The position of the network resource.
+networkResource_position :: Lens.Lens' NetworkResource (Prelude.Maybe Position)
+networkResource_position = Lens.lens (\NetworkResource' {position} -> position) (\s@NetworkResource' {} a -> s {position = a} :: NetworkResource)
+
+-- | The serial number of the network resource.
+networkResource_serialNumber :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_serialNumber = Lens.lens (\NetworkResource' {serialNumber} -> serialNumber) (\s@NetworkResource' {} a -> s {serialNumber = a} :: NetworkResource)
+
+-- | The status of the network resource.
+networkResource_status :: Lens.Lens' NetworkResource (Prelude.Maybe NetworkResourceStatus)
+networkResource_status = Lens.lens (\NetworkResource' {status} -> status) (\s@NetworkResource' {} a -> s {status = a} :: NetworkResource)
+
+-- | The status reason of the network resource.
+networkResource_statusReason :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_statusReason = Lens.lens (\NetworkResource' {statusReason} -> statusReason) (\s@NetworkResource' {} a -> s {statusReason = a} :: NetworkResource)
+
+-- | The type of the network resource.
+networkResource_type :: Lens.Lens' NetworkResource (Prelude.Maybe NetworkResourceType)
+networkResource_type = Lens.lens (\NetworkResource' {type'} -> type') (\s@NetworkResource' {} a -> s {type' = a} :: NetworkResource)
+
+-- | The vendor of the network resource.
+networkResource_vendor :: Lens.Lens' NetworkResource (Prelude.Maybe Prelude.Text)
+networkResource_vendor = Lens.lens (\NetworkResource' {vendor} -> vendor) (\s@NetworkResource' {} a -> s {vendor = a} :: NetworkResource)
+
+instance Data.FromJSON NetworkResource where
+  parseJSON =
+    Data.withObject
+      "NetworkResource"
+      ( \x ->
+          NetworkResource'
+            Prelude.<$> (x Data..:? "attributes" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "createdAt")
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> (x Data..:? "health")
+            Prelude.<*> (x Data..:? "model")
+            Prelude.<*> (x Data..:? "networkArn")
+            Prelude.<*> (x Data..:? "networkResourceArn")
+            Prelude.<*> (x Data..:? "networkSiteArn")
+            Prelude.<*> (x Data..:? "orderArn")
+            Prelude.<*> (x Data..:? "position")
+            Prelude.<*> (x Data..:? "serialNumber")
+            Prelude.<*> (x Data..:? "status")
+            Prelude.<*> (x Data..:? "statusReason")
+            Prelude.<*> (x Data..:? "type")
+            Prelude.<*> (x Data..:? "vendor")
+      )
+
+instance Prelude.Hashable NetworkResource where
+  hashWithSalt _salt NetworkResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` attributes
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` health
+      `Prelude.hashWithSalt` model
+      `Prelude.hashWithSalt` networkArn
+      `Prelude.hashWithSalt` networkResourceArn
+      `Prelude.hashWithSalt` networkSiteArn
+      `Prelude.hashWithSalt` orderArn
+      `Prelude.hashWithSalt` position
+      `Prelude.hashWithSalt` serialNumber
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` statusReason
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` vendor
+
+instance Prelude.NFData NetworkResource where
+  rnf NetworkResource' {..} =
+    Prelude.rnf attributes
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf health
+      `Prelude.seq` Prelude.rnf model
+      `Prelude.seq` Prelude.rnf networkArn
+      `Prelude.seq` Prelude.rnf networkResourceArn
+      `Prelude.seq` Prelude.rnf networkSiteArn
+      `Prelude.seq` Prelude.rnf orderArn
+      `Prelude.seq` Prelude.rnf position
+      `Prelude.seq` Prelude.rnf serialNumber
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf statusReason
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf vendor
diff --git a/gen/Amazonka/PrivateNetworks/Types/NetworkResourceDefinition.hs b/gen/Amazonka/PrivateNetworks/Types/NetworkResourceDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/NetworkResourceDefinition.hs
@@ -0,0 +1,113 @@
+{-# 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.PrivateNetworks.Types.NetworkResourceDefinition
+-- 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.PrivateNetworks.Types.NetworkResourceDefinition where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types.NameValuePair
+import Amazonka.PrivateNetworks.Types.NetworkResourceDefinitionType
+
+-- | Information about a network resource definition.
+--
+-- /See:/ 'newNetworkResourceDefinition' smart constructor.
+data NetworkResourceDefinition = NetworkResourceDefinition'
+  { -- | The options in the network resource definition.
+    options :: Prelude.Maybe [NameValuePair],
+    -- | The count in the network resource definition.
+    count :: Prelude.Natural,
+    -- | The type in the network resource definition.
+    type' :: NetworkResourceDefinitionType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NetworkResourceDefinition' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'options', 'networkResourceDefinition_options' - The options in the network resource definition.
+--
+-- 'count', 'networkResourceDefinition_count' - The count in the network resource definition.
+--
+-- 'type'', 'networkResourceDefinition_type' - The type in the network resource definition.
+newNetworkResourceDefinition ::
+  -- | 'count'
+  Prelude.Natural ->
+  -- | 'type''
+  NetworkResourceDefinitionType ->
+  NetworkResourceDefinition
+newNetworkResourceDefinition pCount_ pType_ =
+  NetworkResourceDefinition'
+    { options =
+        Prelude.Nothing,
+      count = pCount_,
+      type' = pType_
+    }
+
+-- | The options in the network resource definition.
+networkResourceDefinition_options :: Lens.Lens' NetworkResourceDefinition (Prelude.Maybe [NameValuePair])
+networkResourceDefinition_options = Lens.lens (\NetworkResourceDefinition' {options} -> options) (\s@NetworkResourceDefinition' {} a -> s {options = a} :: NetworkResourceDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The count in the network resource definition.
+networkResourceDefinition_count :: Lens.Lens' NetworkResourceDefinition Prelude.Natural
+networkResourceDefinition_count = Lens.lens (\NetworkResourceDefinition' {count} -> count) (\s@NetworkResourceDefinition' {} a -> s {count = a} :: NetworkResourceDefinition)
+
+-- | The type in the network resource definition.
+networkResourceDefinition_type :: Lens.Lens' NetworkResourceDefinition NetworkResourceDefinitionType
+networkResourceDefinition_type = Lens.lens (\NetworkResourceDefinition' {type'} -> type') (\s@NetworkResourceDefinition' {} a -> s {type' = a} :: NetworkResourceDefinition)
+
+instance Data.FromJSON NetworkResourceDefinition where
+  parseJSON =
+    Data.withObject
+      "NetworkResourceDefinition"
+      ( \x ->
+          NetworkResourceDefinition'
+            Prelude.<$> (x Data..:? "options" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "count")
+            Prelude.<*> (x Data..: "type")
+      )
+
+instance Prelude.Hashable NetworkResourceDefinition where
+  hashWithSalt _salt NetworkResourceDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` options
+      `Prelude.hashWithSalt` count
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData NetworkResourceDefinition where
+  rnf NetworkResourceDefinition' {..} =
+    Prelude.rnf options
+      `Prelude.seq` Prelude.rnf count
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON NetworkResourceDefinition where
+  toJSON NetworkResourceDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("options" Data..=) Prelude.<$> options,
+            Prelude.Just ("count" Data..= count),
+            Prelude.Just ("type" Data..= type')
+          ]
+      )
diff --git a/gen/Amazonka/PrivateNetworks/Types/NetworkResourceDefinitionType.hs b/gen/Amazonka/PrivateNetworks/Types/NetworkResourceDefinitionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/NetworkResourceDefinitionType.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.PrivateNetworks.Types.NetworkResourceDefinitionType
+-- 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.PrivateNetworks.Types.NetworkResourceDefinitionType
+  ( NetworkResourceDefinitionType
+      ( ..,
+        NetworkResourceDefinitionType_DEVICE_IDENTIFIER,
+        NetworkResourceDefinitionType_RADIO_UNIT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NetworkResourceDefinitionType = NetworkResourceDefinitionType'
+  { fromNetworkResourceDefinitionType ::
+      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 NetworkResourceDefinitionType_DEVICE_IDENTIFIER :: NetworkResourceDefinitionType
+pattern NetworkResourceDefinitionType_DEVICE_IDENTIFIER = NetworkResourceDefinitionType' "DEVICE_IDENTIFIER"
+
+pattern NetworkResourceDefinitionType_RADIO_UNIT :: NetworkResourceDefinitionType
+pattern NetworkResourceDefinitionType_RADIO_UNIT = NetworkResourceDefinitionType' "RADIO_UNIT"
+
+{-# COMPLETE
+  NetworkResourceDefinitionType_DEVICE_IDENTIFIER,
+  NetworkResourceDefinitionType_RADIO_UNIT,
+  NetworkResourceDefinitionType'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/NetworkResourceFilterKeys.hs b/gen/Amazonka/PrivateNetworks/Types/NetworkResourceFilterKeys.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/NetworkResourceFilterKeys.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.PrivateNetworks.Types.NetworkResourceFilterKeys
+-- 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.PrivateNetworks.Types.NetworkResourceFilterKeys
+  ( NetworkResourceFilterKeys
+      ( ..,
+        NetworkResourceFilterKeys_ORDER,
+        NetworkResourceFilterKeys_STATUS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NetworkResourceFilterKeys = NetworkResourceFilterKeys'
+  { fromNetworkResourceFilterKeys ::
+      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 NetworkResourceFilterKeys_ORDER :: NetworkResourceFilterKeys
+pattern NetworkResourceFilterKeys_ORDER = NetworkResourceFilterKeys' "ORDER"
+
+pattern NetworkResourceFilterKeys_STATUS :: NetworkResourceFilterKeys
+pattern NetworkResourceFilterKeys_STATUS = NetworkResourceFilterKeys' "STATUS"
+
+{-# COMPLETE
+  NetworkResourceFilterKeys_ORDER,
+  NetworkResourceFilterKeys_STATUS,
+  NetworkResourceFilterKeys'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/NetworkResourceStatus.hs b/gen/Amazonka/PrivateNetworks/Types/NetworkResourceStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/NetworkResourceStatus.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.PrivateNetworks.Types.NetworkResourceStatus
+-- 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.PrivateNetworks.Types.NetworkResourceStatus
+  ( NetworkResourceStatus
+      ( ..,
+        NetworkResourceStatus_AVAILABLE,
+        NetworkResourceStatus_DELETED,
+        NetworkResourceStatus_DELETING,
+        NetworkResourceStatus_PENDING,
+        NetworkResourceStatus_PENDING_RETURN,
+        NetworkResourceStatus_PROVISIONED,
+        NetworkResourceStatus_PROVISIONING,
+        NetworkResourceStatus_SHIPPED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NetworkResourceStatus = NetworkResourceStatus'
+  { fromNetworkResourceStatus ::
+      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 NetworkResourceStatus_AVAILABLE :: NetworkResourceStatus
+pattern NetworkResourceStatus_AVAILABLE = NetworkResourceStatus' "AVAILABLE"
+
+pattern NetworkResourceStatus_DELETED :: NetworkResourceStatus
+pattern NetworkResourceStatus_DELETED = NetworkResourceStatus' "DELETED"
+
+pattern NetworkResourceStatus_DELETING :: NetworkResourceStatus
+pattern NetworkResourceStatus_DELETING = NetworkResourceStatus' "DELETING"
+
+pattern NetworkResourceStatus_PENDING :: NetworkResourceStatus
+pattern NetworkResourceStatus_PENDING = NetworkResourceStatus' "PENDING"
+
+pattern NetworkResourceStatus_PENDING_RETURN :: NetworkResourceStatus
+pattern NetworkResourceStatus_PENDING_RETURN = NetworkResourceStatus' "PENDING_RETURN"
+
+pattern NetworkResourceStatus_PROVISIONED :: NetworkResourceStatus
+pattern NetworkResourceStatus_PROVISIONED = NetworkResourceStatus' "PROVISIONED"
+
+pattern NetworkResourceStatus_PROVISIONING :: NetworkResourceStatus
+pattern NetworkResourceStatus_PROVISIONING = NetworkResourceStatus' "PROVISIONING"
+
+pattern NetworkResourceStatus_SHIPPED :: NetworkResourceStatus
+pattern NetworkResourceStatus_SHIPPED = NetworkResourceStatus' "SHIPPED"
+
+{-# COMPLETE
+  NetworkResourceStatus_AVAILABLE,
+  NetworkResourceStatus_DELETED,
+  NetworkResourceStatus_DELETING,
+  NetworkResourceStatus_PENDING,
+  NetworkResourceStatus_PENDING_RETURN,
+  NetworkResourceStatus_PROVISIONED,
+  NetworkResourceStatus_PROVISIONING,
+  NetworkResourceStatus_SHIPPED,
+  NetworkResourceStatus'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/NetworkResourceType.hs b/gen/Amazonka/PrivateNetworks/Types/NetworkResourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/NetworkResourceType.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.PrivateNetworks.Types.NetworkResourceType
+-- 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.PrivateNetworks.Types.NetworkResourceType
+  ( NetworkResourceType
+      ( ..,
+        NetworkResourceType_RADIO_UNIT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NetworkResourceType = NetworkResourceType'
+  { fromNetworkResourceType ::
+      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 NetworkResourceType_RADIO_UNIT :: NetworkResourceType
+pattern NetworkResourceType_RADIO_UNIT = NetworkResourceType' "RADIO_UNIT"
+
+{-# COMPLETE
+  NetworkResourceType_RADIO_UNIT,
+  NetworkResourceType'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/NetworkSite.hs b/gen/Amazonka/PrivateNetworks/Types/NetworkSite.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/NetworkSite.hs
@@ -0,0 +1,209 @@
+{-# 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.PrivateNetworks.Types.NetworkSite
+-- 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.PrivateNetworks.Types.NetworkSite where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types.NetworkSiteStatus
+import Amazonka.PrivateNetworks.Types.SitePlan
+
+-- | Information about a network site.
+--
+-- /See:/ 'newNetworkSite' smart constructor.
+data NetworkSite = NetworkSite'
+  { -- | The parent Availability Zone for the network site.
+    availabilityZone :: Prelude.Maybe Prelude.Text,
+    -- | The parent Availability Zone ID for the network site.
+    availabilityZoneId :: Prelude.Maybe Prelude.Text,
+    -- | The creation time of the network site.
+    createdAt :: Prelude.Maybe Data.ISO8601,
+    -- | The current plan of the network site.
+    currentPlan :: Prelude.Maybe SitePlan,
+    -- | The description of the network site.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The pending plan of the network site.
+    pendingPlan :: Prelude.Maybe SitePlan,
+    -- | The status reason of the network site.
+    statusReason :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network to which the network site
+    -- belongs.
+    networkArn :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network site.
+    networkSiteArn :: Prelude.Text,
+    -- | The name of the network site.
+    networkSiteName :: Prelude.Text,
+    -- | The status of the network site.
+    status :: NetworkSiteStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NetworkSite' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'availabilityZone', 'networkSite_availabilityZone' - The parent Availability Zone for the network site.
+--
+-- 'availabilityZoneId', 'networkSite_availabilityZoneId' - The parent Availability Zone ID for the network site.
+--
+-- 'createdAt', 'networkSite_createdAt' - The creation time of the network site.
+--
+-- 'currentPlan', 'networkSite_currentPlan' - The current plan of the network site.
+--
+-- 'description', 'networkSite_description' - The description of the network site.
+--
+-- 'pendingPlan', 'networkSite_pendingPlan' - The pending plan of the network site.
+--
+-- 'statusReason', 'networkSite_statusReason' - The status reason of the network site.
+--
+-- 'networkArn', 'networkSite_networkArn' - The Amazon Resource Name (ARN) of the network to which the network site
+-- belongs.
+--
+-- 'networkSiteArn', 'networkSite_networkSiteArn' - The Amazon Resource Name (ARN) of the network site.
+--
+-- 'networkSiteName', 'networkSite_networkSiteName' - The name of the network site.
+--
+-- 'status', 'networkSite_status' - The status of the network site.
+newNetworkSite ::
+  -- | 'networkArn'
+  Prelude.Text ->
+  -- | 'networkSiteArn'
+  Prelude.Text ->
+  -- | 'networkSiteName'
+  Prelude.Text ->
+  -- | 'status'
+  NetworkSiteStatus ->
+  NetworkSite
+newNetworkSite
+  pNetworkArn_
+  pNetworkSiteArn_
+  pNetworkSiteName_
+  pStatus_ =
+    NetworkSite'
+      { availabilityZone = Prelude.Nothing,
+        availabilityZoneId = Prelude.Nothing,
+        createdAt = Prelude.Nothing,
+        currentPlan = Prelude.Nothing,
+        description = Prelude.Nothing,
+        pendingPlan = Prelude.Nothing,
+        statusReason = Prelude.Nothing,
+        networkArn = pNetworkArn_,
+        networkSiteArn = pNetworkSiteArn_,
+        networkSiteName = pNetworkSiteName_,
+        status = pStatus_
+      }
+
+-- | The parent Availability Zone for the network site.
+networkSite_availabilityZone :: Lens.Lens' NetworkSite (Prelude.Maybe Prelude.Text)
+networkSite_availabilityZone = Lens.lens (\NetworkSite' {availabilityZone} -> availabilityZone) (\s@NetworkSite' {} a -> s {availabilityZone = a} :: NetworkSite)
+
+-- | The parent Availability Zone ID for the network site.
+networkSite_availabilityZoneId :: Lens.Lens' NetworkSite (Prelude.Maybe Prelude.Text)
+networkSite_availabilityZoneId = Lens.lens (\NetworkSite' {availabilityZoneId} -> availabilityZoneId) (\s@NetworkSite' {} a -> s {availabilityZoneId = a} :: NetworkSite)
+
+-- | The creation time of the network site.
+networkSite_createdAt :: Lens.Lens' NetworkSite (Prelude.Maybe Prelude.UTCTime)
+networkSite_createdAt = Lens.lens (\NetworkSite' {createdAt} -> createdAt) (\s@NetworkSite' {} a -> s {createdAt = a} :: NetworkSite) Prelude.. Lens.mapping Data._Time
+
+-- | The current plan of the network site.
+networkSite_currentPlan :: Lens.Lens' NetworkSite (Prelude.Maybe SitePlan)
+networkSite_currentPlan = Lens.lens (\NetworkSite' {currentPlan} -> currentPlan) (\s@NetworkSite' {} a -> s {currentPlan = a} :: NetworkSite)
+
+-- | The description of the network site.
+networkSite_description :: Lens.Lens' NetworkSite (Prelude.Maybe Prelude.Text)
+networkSite_description = Lens.lens (\NetworkSite' {description} -> description) (\s@NetworkSite' {} a -> s {description = a} :: NetworkSite)
+
+-- | The pending plan of the network site.
+networkSite_pendingPlan :: Lens.Lens' NetworkSite (Prelude.Maybe SitePlan)
+networkSite_pendingPlan = Lens.lens (\NetworkSite' {pendingPlan} -> pendingPlan) (\s@NetworkSite' {} a -> s {pendingPlan = a} :: NetworkSite)
+
+-- | The status reason of the network site.
+networkSite_statusReason :: Lens.Lens' NetworkSite (Prelude.Maybe Prelude.Text)
+networkSite_statusReason = Lens.lens (\NetworkSite' {statusReason} -> statusReason) (\s@NetworkSite' {} a -> s {statusReason = a} :: NetworkSite)
+
+-- | The Amazon Resource Name (ARN) of the network to which the network site
+-- belongs.
+networkSite_networkArn :: Lens.Lens' NetworkSite Prelude.Text
+networkSite_networkArn = Lens.lens (\NetworkSite' {networkArn} -> networkArn) (\s@NetworkSite' {} a -> s {networkArn = a} :: NetworkSite)
+
+-- | The Amazon Resource Name (ARN) of the network site.
+networkSite_networkSiteArn :: Lens.Lens' NetworkSite Prelude.Text
+networkSite_networkSiteArn = Lens.lens (\NetworkSite' {networkSiteArn} -> networkSiteArn) (\s@NetworkSite' {} a -> s {networkSiteArn = a} :: NetworkSite)
+
+-- | The name of the network site.
+networkSite_networkSiteName :: Lens.Lens' NetworkSite Prelude.Text
+networkSite_networkSiteName = Lens.lens (\NetworkSite' {networkSiteName} -> networkSiteName) (\s@NetworkSite' {} a -> s {networkSiteName = a} :: NetworkSite)
+
+-- | The status of the network site.
+networkSite_status :: Lens.Lens' NetworkSite NetworkSiteStatus
+networkSite_status = Lens.lens (\NetworkSite' {status} -> status) (\s@NetworkSite' {} a -> s {status = a} :: NetworkSite)
+
+instance Data.FromJSON NetworkSite where
+  parseJSON =
+    Data.withObject
+      "NetworkSite"
+      ( \x ->
+          NetworkSite'
+            Prelude.<$> (x Data..:? "availabilityZone")
+            Prelude.<*> (x Data..:? "availabilityZoneId")
+            Prelude.<*> (x Data..:? "createdAt")
+            Prelude.<*> (x Data..:? "currentPlan")
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> (x Data..:? "pendingPlan")
+            Prelude.<*> (x Data..:? "statusReason")
+            Prelude.<*> (x Data..: "networkArn")
+            Prelude.<*> (x Data..: "networkSiteArn")
+            Prelude.<*> (x Data..: "networkSiteName")
+            Prelude.<*> (x Data..: "status")
+      )
+
+instance Prelude.Hashable NetworkSite where
+  hashWithSalt _salt NetworkSite' {..} =
+    _salt
+      `Prelude.hashWithSalt` availabilityZone
+      `Prelude.hashWithSalt` availabilityZoneId
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` currentPlan
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` pendingPlan
+      `Prelude.hashWithSalt` statusReason
+      `Prelude.hashWithSalt` networkArn
+      `Prelude.hashWithSalt` networkSiteArn
+      `Prelude.hashWithSalt` networkSiteName
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData NetworkSite where
+  rnf NetworkSite' {..} =
+    Prelude.rnf availabilityZone
+      `Prelude.seq` Prelude.rnf availabilityZoneId
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf currentPlan
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf pendingPlan
+      `Prelude.seq` Prelude.rnf statusReason
+      `Prelude.seq` Prelude.rnf networkArn
+      `Prelude.seq` Prelude.rnf networkSiteArn
+      `Prelude.seq` Prelude.rnf networkSiteName
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/PrivateNetworks/Types/NetworkSiteFilterKeys.hs b/gen/Amazonka/PrivateNetworks/Types/NetworkSiteFilterKeys.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/NetworkSiteFilterKeys.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.PrivateNetworks.Types.NetworkSiteFilterKeys
+-- 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.PrivateNetworks.Types.NetworkSiteFilterKeys
+  ( NetworkSiteFilterKeys
+      ( ..,
+        NetworkSiteFilterKeys_STATUS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NetworkSiteFilterKeys = NetworkSiteFilterKeys'
+  { fromNetworkSiteFilterKeys ::
+      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 NetworkSiteFilterKeys_STATUS :: NetworkSiteFilterKeys
+pattern NetworkSiteFilterKeys_STATUS = NetworkSiteFilterKeys' "STATUS"
+
+{-# COMPLETE
+  NetworkSiteFilterKeys_STATUS,
+  NetworkSiteFilterKeys'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/NetworkSiteStatus.hs b/gen/Amazonka/PrivateNetworks/Types/NetworkSiteStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/NetworkSiteStatus.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.PrivateNetworks.Types.NetworkSiteStatus
+-- 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.PrivateNetworks.Types.NetworkSiteStatus
+  ( NetworkSiteStatus
+      ( ..,
+        NetworkSiteStatus_AVAILABLE,
+        NetworkSiteStatus_CREATED,
+        NetworkSiteStatus_DELETED,
+        NetworkSiteStatus_DEPROVISIONING,
+        NetworkSiteStatus_PROVISIONING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NetworkSiteStatus = NetworkSiteStatus'
+  { fromNetworkSiteStatus ::
+      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 NetworkSiteStatus_AVAILABLE :: NetworkSiteStatus
+pattern NetworkSiteStatus_AVAILABLE = NetworkSiteStatus' "AVAILABLE"
+
+pattern NetworkSiteStatus_CREATED :: NetworkSiteStatus
+pattern NetworkSiteStatus_CREATED = NetworkSiteStatus' "CREATED"
+
+pattern NetworkSiteStatus_DELETED :: NetworkSiteStatus
+pattern NetworkSiteStatus_DELETED = NetworkSiteStatus' "DELETED"
+
+pattern NetworkSiteStatus_DEPROVISIONING :: NetworkSiteStatus
+pattern NetworkSiteStatus_DEPROVISIONING = NetworkSiteStatus' "DEPROVISIONING"
+
+pattern NetworkSiteStatus_PROVISIONING :: NetworkSiteStatus
+pattern NetworkSiteStatus_PROVISIONING = NetworkSiteStatus' "PROVISIONING"
+
+{-# COMPLETE
+  NetworkSiteStatus_AVAILABLE,
+  NetworkSiteStatus_CREATED,
+  NetworkSiteStatus_DELETED,
+  NetworkSiteStatus_DEPROVISIONING,
+  NetworkSiteStatus_PROVISIONING,
+  NetworkSiteStatus'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/NetworkStatus.hs b/gen/Amazonka/PrivateNetworks/Types/NetworkStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/NetworkStatus.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.PrivateNetworks.Types.NetworkStatus
+-- 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.PrivateNetworks.Types.NetworkStatus
+  ( NetworkStatus
+      ( ..,
+        NetworkStatus_AVAILABLE,
+        NetworkStatus_CREATED,
+        NetworkStatus_DELETED,
+        NetworkStatus_DEPROVISIONING,
+        NetworkStatus_PROVISIONING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NetworkStatus = NetworkStatus'
+  { fromNetworkStatus ::
+      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 NetworkStatus_AVAILABLE :: NetworkStatus
+pattern NetworkStatus_AVAILABLE = NetworkStatus' "AVAILABLE"
+
+pattern NetworkStatus_CREATED :: NetworkStatus
+pattern NetworkStatus_CREATED = NetworkStatus' "CREATED"
+
+pattern NetworkStatus_DELETED :: NetworkStatus
+pattern NetworkStatus_DELETED = NetworkStatus' "DELETED"
+
+pattern NetworkStatus_DEPROVISIONING :: NetworkStatus
+pattern NetworkStatus_DEPROVISIONING = NetworkStatus' "DEPROVISIONING"
+
+pattern NetworkStatus_PROVISIONING :: NetworkStatus
+pattern NetworkStatus_PROVISIONING = NetworkStatus' "PROVISIONING"
+
+{-# COMPLETE
+  NetworkStatus_AVAILABLE,
+  NetworkStatus_CREATED,
+  NetworkStatus_DELETED,
+  NetworkStatus_DEPROVISIONING,
+  NetworkStatus_PROVISIONING,
+  NetworkStatus'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/Order.hs b/gen/Amazonka/PrivateNetworks/Types/Order.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/Order.hs
@@ -0,0 +1,156 @@
+{-# 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.PrivateNetworks.Types.Order
+-- 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.PrivateNetworks.Types.Order where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types.AcknowledgmentStatus
+import Amazonka.PrivateNetworks.Types.Address
+import Amazonka.PrivateNetworks.Types.TrackingInformation
+
+-- | Information about an order.
+--
+-- /See:/ 'newOrder' smart constructor.
+data Order = Order'
+  { -- | The acknowledgement status of the order.
+    acknowledgmentStatus :: Prelude.Maybe AcknowledgmentStatus,
+    -- | The creation time of the order.
+    createdAt :: Prelude.Maybe Data.ISO8601,
+    -- | The Amazon Resource Name (ARN) of the network associated with this
+    -- order.
+    networkArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network site associated with this
+    -- order.
+    networkSiteArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the order.
+    orderArn :: Prelude.Maybe Prelude.Text,
+    -- | The shipping address of the order.
+    shippingAddress :: Prelude.Maybe Address,
+    -- | The tracking information of the order.
+    trackingInformation :: Prelude.Maybe [TrackingInformation]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Order' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'acknowledgmentStatus', 'order_acknowledgmentStatus' - The acknowledgement status of the order.
+--
+-- 'createdAt', 'order_createdAt' - The creation time of the order.
+--
+-- 'networkArn', 'order_networkArn' - The Amazon Resource Name (ARN) of the network associated with this
+-- order.
+--
+-- 'networkSiteArn', 'order_networkSiteArn' - The Amazon Resource Name (ARN) of the network site associated with this
+-- order.
+--
+-- 'orderArn', 'order_orderArn' - The Amazon Resource Name (ARN) of the order.
+--
+-- 'shippingAddress', 'order_shippingAddress' - The shipping address of the order.
+--
+-- 'trackingInformation', 'order_trackingInformation' - The tracking information of the order.
+newOrder ::
+  Order
+newOrder =
+  Order'
+    { acknowledgmentStatus = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      networkArn = Prelude.Nothing,
+      networkSiteArn = Prelude.Nothing,
+      orderArn = Prelude.Nothing,
+      shippingAddress = Prelude.Nothing,
+      trackingInformation = Prelude.Nothing
+    }
+
+-- | The acknowledgement status of the order.
+order_acknowledgmentStatus :: Lens.Lens' Order (Prelude.Maybe AcknowledgmentStatus)
+order_acknowledgmentStatus = Lens.lens (\Order' {acknowledgmentStatus} -> acknowledgmentStatus) (\s@Order' {} a -> s {acknowledgmentStatus = a} :: Order)
+
+-- | The creation time of the order.
+order_createdAt :: Lens.Lens' Order (Prelude.Maybe Prelude.UTCTime)
+order_createdAt = Lens.lens (\Order' {createdAt} -> createdAt) (\s@Order' {} a -> s {createdAt = a} :: Order) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the network associated with this
+-- order.
+order_networkArn :: Lens.Lens' Order (Prelude.Maybe Prelude.Text)
+order_networkArn = Lens.lens (\Order' {networkArn} -> networkArn) (\s@Order' {} a -> s {networkArn = a} :: Order)
+
+-- | The Amazon Resource Name (ARN) of the network site associated with this
+-- order.
+order_networkSiteArn :: Lens.Lens' Order (Prelude.Maybe Prelude.Text)
+order_networkSiteArn = Lens.lens (\Order' {networkSiteArn} -> networkSiteArn) (\s@Order' {} a -> s {networkSiteArn = a} :: Order)
+
+-- | The Amazon Resource Name (ARN) of the order.
+order_orderArn :: Lens.Lens' Order (Prelude.Maybe Prelude.Text)
+order_orderArn = Lens.lens (\Order' {orderArn} -> orderArn) (\s@Order' {} a -> s {orderArn = a} :: Order)
+
+-- | The shipping address of the order.
+order_shippingAddress :: Lens.Lens' Order (Prelude.Maybe Address)
+order_shippingAddress = Lens.lens (\Order' {shippingAddress} -> shippingAddress) (\s@Order' {} a -> s {shippingAddress = a} :: Order)
+
+-- | The tracking information of the order.
+order_trackingInformation :: Lens.Lens' Order (Prelude.Maybe [TrackingInformation])
+order_trackingInformation = Lens.lens (\Order' {trackingInformation} -> trackingInformation) (\s@Order' {} a -> s {trackingInformation = a} :: Order) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Order where
+  parseJSON =
+    Data.withObject
+      "Order"
+      ( \x ->
+          Order'
+            Prelude.<$> (x Data..:? "acknowledgmentStatus")
+            Prelude.<*> (x Data..:? "createdAt")
+            Prelude.<*> (x Data..:? "networkArn")
+            Prelude.<*> (x Data..:? "networkSiteArn")
+            Prelude.<*> (x Data..:? "orderArn")
+            Prelude.<*> (x Data..:? "shippingAddress")
+            Prelude.<*> ( x
+                            Data..:? "trackingInformation"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable Order where
+  hashWithSalt _salt Order' {..} =
+    _salt
+      `Prelude.hashWithSalt` acknowledgmentStatus
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` networkArn
+      `Prelude.hashWithSalt` networkSiteArn
+      `Prelude.hashWithSalt` orderArn
+      `Prelude.hashWithSalt` shippingAddress
+      `Prelude.hashWithSalt` trackingInformation
+
+instance Prelude.NFData Order where
+  rnf Order' {..} =
+    Prelude.rnf acknowledgmentStatus
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf networkArn
+      `Prelude.seq` Prelude.rnf networkSiteArn
+      `Prelude.seq` Prelude.rnf orderArn
+      `Prelude.seq` Prelude.rnf shippingAddress
+      `Prelude.seq` Prelude.rnf trackingInformation
diff --git a/gen/Amazonka/PrivateNetworks/Types/OrderFilterKeys.hs b/gen/Amazonka/PrivateNetworks/Types/OrderFilterKeys.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/OrderFilterKeys.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.PrivateNetworks.Types.OrderFilterKeys
+-- 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.PrivateNetworks.Types.OrderFilterKeys
+  ( OrderFilterKeys
+      ( ..,
+        OrderFilterKeys_NETWORK_SITE,
+        OrderFilterKeys_STATUS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OrderFilterKeys = OrderFilterKeys'
+  { fromOrderFilterKeys ::
+      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 OrderFilterKeys_NETWORK_SITE :: OrderFilterKeys
+pattern OrderFilterKeys_NETWORK_SITE = OrderFilterKeys' "NETWORK_SITE"
+
+pattern OrderFilterKeys_STATUS :: OrderFilterKeys
+pattern OrderFilterKeys_STATUS = OrderFilterKeys' "STATUS"
+
+{-# COMPLETE
+  OrderFilterKeys_NETWORK_SITE,
+  OrderFilterKeys_STATUS,
+  OrderFilterKeys'
+  #-}
diff --git a/gen/Amazonka/PrivateNetworks/Types/Position.hs b/gen/Amazonka/PrivateNetworks/Types/Position.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/Position.hs
@@ -0,0 +1,135 @@
+{-# 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.PrivateNetworks.Types.Position
+-- 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.PrivateNetworks.Types.Position where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types.ElevationReference
+import Amazonka.PrivateNetworks.Types.ElevationUnit
+
+-- | Information about a position.
+--
+-- /See:/ 'newPosition' smart constructor.
+data Position = Position'
+  { -- | The elevation of the equipment at this position.
+    elevation :: Prelude.Maybe Prelude.Double,
+    -- | The reference point from which elevation is reported.
+    elevationReference :: Prelude.Maybe ElevationReference,
+    -- | The units used to measure the elevation of the position.
+    elevationUnit :: Prelude.Maybe ElevationUnit,
+    -- | The latitude of the position.
+    latitude :: Prelude.Maybe Prelude.Double,
+    -- | The longitude of the position.
+    longitude :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Position' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'elevation', 'position_elevation' - The elevation of the equipment at this position.
+--
+-- 'elevationReference', 'position_elevationReference' - The reference point from which elevation is reported.
+--
+-- 'elevationUnit', 'position_elevationUnit' - The units used to measure the elevation of the position.
+--
+-- 'latitude', 'position_latitude' - The latitude of the position.
+--
+-- 'longitude', 'position_longitude' - The longitude of the position.
+newPosition ::
+  Position
+newPosition =
+  Position'
+    { elevation = Prelude.Nothing,
+      elevationReference = Prelude.Nothing,
+      elevationUnit = Prelude.Nothing,
+      latitude = Prelude.Nothing,
+      longitude = Prelude.Nothing
+    }
+
+-- | The elevation of the equipment at this position.
+position_elevation :: Lens.Lens' Position (Prelude.Maybe Prelude.Double)
+position_elevation = Lens.lens (\Position' {elevation} -> elevation) (\s@Position' {} a -> s {elevation = a} :: Position)
+
+-- | The reference point from which elevation is reported.
+position_elevationReference :: Lens.Lens' Position (Prelude.Maybe ElevationReference)
+position_elevationReference = Lens.lens (\Position' {elevationReference} -> elevationReference) (\s@Position' {} a -> s {elevationReference = a} :: Position)
+
+-- | The units used to measure the elevation of the position.
+position_elevationUnit :: Lens.Lens' Position (Prelude.Maybe ElevationUnit)
+position_elevationUnit = Lens.lens (\Position' {elevationUnit} -> elevationUnit) (\s@Position' {} a -> s {elevationUnit = a} :: Position)
+
+-- | The latitude of the position.
+position_latitude :: Lens.Lens' Position (Prelude.Maybe Prelude.Double)
+position_latitude = Lens.lens (\Position' {latitude} -> latitude) (\s@Position' {} a -> s {latitude = a} :: Position)
+
+-- | The longitude of the position.
+position_longitude :: Lens.Lens' Position (Prelude.Maybe Prelude.Double)
+position_longitude = Lens.lens (\Position' {longitude} -> longitude) (\s@Position' {} a -> s {longitude = a} :: Position)
+
+instance Data.FromJSON Position where
+  parseJSON =
+    Data.withObject
+      "Position"
+      ( \x ->
+          Position'
+            Prelude.<$> (x Data..:? "elevation")
+            Prelude.<*> (x Data..:? "elevationReference")
+            Prelude.<*> (x Data..:? "elevationUnit")
+            Prelude.<*> (x Data..:? "latitude")
+            Prelude.<*> (x Data..:? "longitude")
+      )
+
+instance Prelude.Hashable Position where
+  hashWithSalt _salt Position' {..} =
+    _salt
+      `Prelude.hashWithSalt` elevation
+      `Prelude.hashWithSalt` elevationReference
+      `Prelude.hashWithSalt` elevationUnit
+      `Prelude.hashWithSalt` latitude
+      `Prelude.hashWithSalt` longitude
+
+instance Prelude.NFData Position where
+  rnf Position' {..} =
+    Prelude.rnf elevation
+      `Prelude.seq` Prelude.rnf elevationReference
+      `Prelude.seq` Prelude.rnf elevationUnit
+      `Prelude.seq` Prelude.rnf latitude
+      `Prelude.seq` Prelude.rnf longitude
+
+instance Data.ToJSON Position where
+  toJSON Position' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("elevation" Data..=) Prelude.<$> elevation,
+            ("elevationReference" Data..=)
+              Prelude.<$> elevationReference,
+            ("elevationUnit" Data..=) Prelude.<$> elevationUnit,
+            ("latitude" Data..=) Prelude.<$> latitude,
+            ("longitude" Data..=) Prelude.<$> longitude
+          ]
+      )
diff --git a/gen/Amazonka/PrivateNetworks/Types/SitePlan.hs b/gen/Amazonka/PrivateNetworks/Types/SitePlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/SitePlan.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.PrivateNetworks.Types.SitePlan
+-- 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.PrivateNetworks.Types.SitePlan where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types.NameValuePair
+import Amazonka.PrivateNetworks.Types.NetworkResourceDefinition
+
+-- | Information about a site plan.
+--
+-- /See:/ 'newSitePlan' smart constructor.
+data SitePlan = SitePlan'
+  { -- | The options of the plan.
+    options :: Prelude.Maybe [NameValuePair],
+    -- | The resource definitions of the plan.
+    resourceDefinitions :: Prelude.Maybe [NetworkResourceDefinition]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SitePlan' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'options', 'sitePlan_options' - The options of the plan.
+--
+-- 'resourceDefinitions', 'sitePlan_resourceDefinitions' - The resource definitions of the plan.
+newSitePlan ::
+  SitePlan
+newSitePlan =
+  SitePlan'
+    { options = Prelude.Nothing,
+      resourceDefinitions = Prelude.Nothing
+    }
+
+-- | The options of the plan.
+sitePlan_options :: Lens.Lens' SitePlan (Prelude.Maybe [NameValuePair])
+sitePlan_options = Lens.lens (\SitePlan' {options} -> options) (\s@SitePlan' {} a -> s {options = a} :: SitePlan) Prelude.. Lens.mapping Lens.coerced
+
+-- | The resource definitions of the plan.
+sitePlan_resourceDefinitions :: Lens.Lens' SitePlan (Prelude.Maybe [NetworkResourceDefinition])
+sitePlan_resourceDefinitions = Lens.lens (\SitePlan' {resourceDefinitions} -> resourceDefinitions) (\s@SitePlan' {} a -> s {resourceDefinitions = a} :: SitePlan) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON SitePlan where
+  parseJSON =
+    Data.withObject
+      "SitePlan"
+      ( \x ->
+          SitePlan'
+            Prelude.<$> (x Data..:? "options" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "resourceDefinitions"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable SitePlan where
+  hashWithSalt _salt SitePlan' {..} =
+    _salt
+      `Prelude.hashWithSalt` options
+      `Prelude.hashWithSalt` resourceDefinitions
+
+instance Prelude.NFData SitePlan where
+  rnf SitePlan' {..} =
+    Prelude.rnf options
+      `Prelude.seq` Prelude.rnf resourceDefinitions
+
+instance Data.ToJSON SitePlan where
+  toJSON SitePlan' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("options" Data..=) Prelude.<$> options,
+            ("resourceDefinitions" Data..=)
+              Prelude.<$> resourceDefinitions
+          ]
+      )
diff --git a/gen/Amazonka/PrivateNetworks/Types/TrackingInformation.hs b/gen/Amazonka/PrivateNetworks/Types/TrackingInformation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/TrackingInformation.hs
@@ -0,0 +1,72 @@
+{-# 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.PrivateNetworks.Types.TrackingInformation
+-- 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.PrivateNetworks.Types.TrackingInformation where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about tracking a shipment.
+--
+-- /See:/ 'newTrackingInformation' smart constructor.
+data TrackingInformation = TrackingInformation'
+  { -- | The tracking number of the shipment.
+    trackingNumber :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrackingInformation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'trackingNumber', 'trackingInformation_trackingNumber' - The tracking number of the shipment.
+newTrackingInformation ::
+  TrackingInformation
+newTrackingInformation =
+  TrackingInformation'
+    { trackingNumber =
+        Prelude.Nothing
+    }
+
+-- | The tracking number of the shipment.
+trackingInformation_trackingNumber :: Lens.Lens' TrackingInformation (Prelude.Maybe Prelude.Text)
+trackingInformation_trackingNumber = Lens.lens (\TrackingInformation' {trackingNumber} -> trackingNumber) (\s@TrackingInformation' {} a -> s {trackingNumber = a} :: TrackingInformation)
+
+instance Data.FromJSON TrackingInformation where
+  parseJSON =
+    Data.withObject
+      "TrackingInformation"
+      ( \x ->
+          TrackingInformation'
+            Prelude.<$> (x Data..:? "trackingNumber")
+      )
+
+instance Prelude.Hashable TrackingInformation where
+  hashWithSalt _salt TrackingInformation' {..} =
+    _salt `Prelude.hashWithSalt` trackingNumber
+
+instance Prelude.NFData TrackingInformation where
+  rnf TrackingInformation' {..} =
+    Prelude.rnf trackingNumber
diff --git a/gen/Amazonka/PrivateNetworks/Types/UpdateNetworkSiteResponse.hs b/gen/Amazonka/PrivateNetworks/Types/UpdateNetworkSiteResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/Types/UpdateNetworkSiteResponse.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.PrivateNetworks.Types.UpdateNetworkSiteResponse
+-- 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.PrivateNetworks.Types.UpdateNetworkSiteResponse where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types.NetworkSite
+
+-- | /See:/ 'newUpdateNetworkSiteResponse' smart constructor.
+data UpdateNetworkSiteResponse = UpdateNetworkSiteResponse'
+  { -- | Information about the network site.
+    networkSite :: Prelude.Maybe NetworkSite,
+    -- | The network site tags.
+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text))
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateNetworkSiteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'networkSite', 'updateNetworkSiteResponse_networkSite' - Information about the network site.
+--
+-- 'tags', 'updateNetworkSiteResponse_tags' - The network site tags.
+newUpdateNetworkSiteResponse ::
+  UpdateNetworkSiteResponse
+newUpdateNetworkSiteResponse =
+  UpdateNetworkSiteResponse'
+    { networkSite =
+        Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | Information about the network site.
+updateNetworkSiteResponse_networkSite :: Lens.Lens' UpdateNetworkSiteResponse (Prelude.Maybe NetworkSite)
+updateNetworkSiteResponse_networkSite = Lens.lens (\UpdateNetworkSiteResponse' {networkSite} -> networkSite) (\s@UpdateNetworkSiteResponse' {} a -> s {networkSite = a} :: UpdateNetworkSiteResponse)
+
+-- | The network site tags.
+updateNetworkSiteResponse_tags :: Lens.Lens' UpdateNetworkSiteResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+updateNetworkSiteResponse_tags = Lens.lens (\UpdateNetworkSiteResponse' {tags} -> tags) (\s@UpdateNetworkSiteResponse' {} a -> s {tags = a} :: UpdateNetworkSiteResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)
+
+instance Data.FromJSON UpdateNetworkSiteResponse where
+  parseJSON =
+    Data.withObject
+      "UpdateNetworkSiteResponse"
+      ( \x ->
+          UpdateNetworkSiteResponse'
+            Prelude.<$> (x Data..:? "networkSite")
+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable UpdateNetworkSiteResponse where
+  hashWithSalt _salt UpdateNetworkSiteResponse' {..} =
+    _salt
+      `Prelude.hashWithSalt` networkSite
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData UpdateNetworkSiteResponse where
+  rnf UpdateNetworkSiteResponse' {..} =
+    Prelude.rnf networkSite
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/PrivateNetworks/UntagResource.hs b/gen/Amazonka/PrivateNetworks/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/UntagResource.hs
@@ -0,0 +1,166 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.PrivateNetworks.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 the specified resource.
+module Amazonka.PrivateNetworks.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+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.
+    tagKeys :: Data.Sensitive (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The tag keys.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ pTagKeys_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys =
+        Data._Sensitive
+          Prelude.. Lens.coerced
+          Lens.# pTagKeys_
+    }
+
+-- | 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.
+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.NonEmpty Prelude.Text)
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Data._Sensitive Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery UntagResource where
+  toQuery UntagResource' {..} =
+    Prelude.mconcat
+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/PrivateNetworks/UpdateNetworkSite.hs b/gen/Amazonka/PrivateNetworks/UpdateNetworkSite.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/UpdateNetworkSite.hs
@@ -0,0 +1,154 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.PrivateNetworks.UpdateNetworkSite
+-- 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 specified network site.
+module Amazonka.PrivateNetworks.UpdateNetworkSite
+  ( -- * Creating a Request
+    UpdateNetworkSite (..),
+    newUpdateNetworkSite,
+
+    -- * Request Lenses
+    updateNetworkSite_clientToken,
+    updateNetworkSite_description,
+    updateNetworkSite_networkSiteArn,
+
+    -- * Destructuring the Response
+    UpdateNetworkSiteResponse (..),
+    newUpdateNetworkSiteResponse,
+
+    -- * Response Lenses
+    updateNetworkSiteResponse_networkSite,
+    updateNetworkSiteResponse_tags,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateNetworkSite' smart constructor.
+data UpdateNetworkSite = UpdateNetworkSite'
+  { -- | Unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the request. For more information, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The description.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network site.
+    networkSiteArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateNetworkSite' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateNetworkSite_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+--
+-- 'description', 'updateNetworkSite_description' - The description.
+--
+-- 'networkSiteArn', 'updateNetworkSite_networkSiteArn' - The Amazon Resource Name (ARN) of the network site.
+newUpdateNetworkSite ::
+  -- | 'networkSiteArn'
+  Prelude.Text ->
+  UpdateNetworkSite
+newUpdateNetworkSite pNetworkSiteArn_ =
+  UpdateNetworkSite'
+    { clientToken = Prelude.Nothing,
+      description = Prelude.Nothing,
+      networkSiteArn = pNetworkSiteArn_
+    }
+
+-- | Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+updateNetworkSite_clientToken :: Lens.Lens' UpdateNetworkSite (Prelude.Maybe Prelude.Text)
+updateNetworkSite_clientToken = Lens.lens (\UpdateNetworkSite' {clientToken} -> clientToken) (\s@UpdateNetworkSite' {} a -> s {clientToken = a} :: UpdateNetworkSite)
+
+-- | The description.
+updateNetworkSite_description :: Lens.Lens' UpdateNetworkSite (Prelude.Maybe Prelude.Text)
+updateNetworkSite_description = Lens.lens (\UpdateNetworkSite' {description} -> description) (\s@UpdateNetworkSite' {} a -> s {description = a} :: UpdateNetworkSite)
+
+-- | The Amazon Resource Name (ARN) of the network site.
+updateNetworkSite_networkSiteArn :: Lens.Lens' UpdateNetworkSite Prelude.Text
+updateNetworkSite_networkSiteArn = Lens.lens (\UpdateNetworkSite' {networkSiteArn} -> networkSiteArn) (\s@UpdateNetworkSite' {} a -> s {networkSiteArn = a} :: UpdateNetworkSite)
+
+instance Core.AWSRequest UpdateNetworkSite where
+  type
+    AWSResponse UpdateNetworkSite =
+      UpdateNetworkSiteResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      (\s h x -> Data.eitherParseJSON x)
+
+instance Prelude.Hashable UpdateNetworkSite where
+  hashWithSalt _salt UpdateNetworkSite' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` networkSiteArn
+
+instance Prelude.NFData UpdateNetworkSite where
+  rnf UpdateNetworkSite' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf networkSiteArn
+
+instance Data.ToHeaders UpdateNetworkSite where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateNetworkSite where
+  toJSON UpdateNetworkSite' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clientToken" Data..=) Prelude.<$> clientToken,
+            ("description" Data..=) Prelude.<$> description,
+            Prelude.Just
+              ("networkSiteArn" Data..= networkSiteArn)
+          ]
+      )
+
+instance Data.ToPath UpdateNetworkSite where
+  toPath = Prelude.const "/v1/network-sites/site"
+
+instance Data.ToQuery UpdateNetworkSite where
+  toQuery = Prelude.const Prelude.mempty
diff --git a/gen/Amazonka/PrivateNetworks/UpdateNetworkSitePlan.hs b/gen/Amazonka/PrivateNetworks/UpdateNetworkSitePlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/UpdateNetworkSitePlan.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.PrivateNetworks.UpdateNetworkSitePlan
+-- 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 specified network site plan.
+module Amazonka.PrivateNetworks.UpdateNetworkSitePlan
+  ( -- * Creating a Request
+    UpdateNetworkSitePlan (..),
+    newUpdateNetworkSitePlan,
+
+    -- * Request Lenses
+    updateNetworkSitePlan_clientToken,
+    updateNetworkSitePlan_networkSiteArn,
+    updateNetworkSitePlan_pendingPlan,
+
+    -- * Destructuring the Response
+    UpdateNetworkSiteResponse (..),
+    newUpdateNetworkSiteResponse,
+
+    -- * Response Lenses
+    updateNetworkSiteResponse_networkSite,
+    updateNetworkSiteResponse_tags,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Types
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateNetworkSitePlan' smart constructor.
+data UpdateNetworkSitePlan = UpdateNetworkSitePlan'
+  { -- | Unique, case-sensitive identifier that you provide to ensure the
+    -- idempotency of the request. For more information, see
+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the network site.
+    networkSiteArn :: Prelude.Text,
+    -- | The pending plan.
+    pendingPlan :: SitePlan
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateNetworkSitePlan' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateNetworkSitePlan_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+--
+-- 'networkSiteArn', 'updateNetworkSitePlan_networkSiteArn' - The Amazon Resource Name (ARN) of the network site.
+--
+-- 'pendingPlan', 'updateNetworkSitePlan_pendingPlan' - The pending plan.
+newUpdateNetworkSitePlan ::
+  -- | 'networkSiteArn'
+  Prelude.Text ->
+  -- | 'pendingPlan'
+  SitePlan ->
+  UpdateNetworkSitePlan
+newUpdateNetworkSitePlan
+  pNetworkSiteArn_
+  pPendingPlan_ =
+    UpdateNetworkSitePlan'
+      { clientToken =
+          Prelude.Nothing,
+        networkSiteArn = pNetworkSiteArn_,
+        pendingPlan = pPendingPlan_
+      }
+
+-- | Unique, case-sensitive identifier that you provide to ensure the
+-- idempotency of the request. For more information, see
+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to ensure idempotency>.
+updateNetworkSitePlan_clientToken :: Lens.Lens' UpdateNetworkSitePlan (Prelude.Maybe Prelude.Text)
+updateNetworkSitePlan_clientToken = Lens.lens (\UpdateNetworkSitePlan' {clientToken} -> clientToken) (\s@UpdateNetworkSitePlan' {} a -> s {clientToken = a} :: UpdateNetworkSitePlan)
+
+-- | The Amazon Resource Name (ARN) of the network site.
+updateNetworkSitePlan_networkSiteArn :: Lens.Lens' UpdateNetworkSitePlan Prelude.Text
+updateNetworkSitePlan_networkSiteArn = Lens.lens (\UpdateNetworkSitePlan' {networkSiteArn} -> networkSiteArn) (\s@UpdateNetworkSitePlan' {} a -> s {networkSiteArn = a} :: UpdateNetworkSitePlan)
+
+-- | The pending plan.
+updateNetworkSitePlan_pendingPlan :: Lens.Lens' UpdateNetworkSitePlan SitePlan
+updateNetworkSitePlan_pendingPlan = Lens.lens (\UpdateNetworkSitePlan' {pendingPlan} -> pendingPlan) (\s@UpdateNetworkSitePlan' {} a -> s {pendingPlan = a} :: UpdateNetworkSitePlan)
+
+instance Core.AWSRequest UpdateNetworkSitePlan where
+  type
+    AWSResponse UpdateNetworkSitePlan =
+      UpdateNetworkSiteResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      (\s h x -> Data.eitherParseJSON x)
+
+instance Prelude.Hashable UpdateNetworkSitePlan where
+  hashWithSalt _salt UpdateNetworkSitePlan' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` networkSiteArn
+      `Prelude.hashWithSalt` pendingPlan
+
+instance Prelude.NFData UpdateNetworkSitePlan where
+  rnf UpdateNetworkSitePlan' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf networkSiteArn
+      `Prelude.seq` Prelude.rnf pendingPlan
+
+instance Data.ToHeaders UpdateNetworkSitePlan where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateNetworkSitePlan where
+  toJSON UpdateNetworkSitePlan' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clientToken" Data..=) Prelude.<$> clientToken,
+            Prelude.Just
+              ("networkSiteArn" Data..= networkSiteArn),
+            Prelude.Just ("pendingPlan" Data..= pendingPlan)
+          ]
+      )
+
+instance Data.ToPath UpdateNetworkSitePlan where
+  toPath = Prelude.const "/v1/network-sites/plan"
+
+instance Data.ToQuery UpdateNetworkSitePlan where
+  toQuery = Prelude.const Prelude.mempty
diff --git a/gen/Amazonka/PrivateNetworks/Waiters.hs b/gen/Amazonka/PrivateNetworks/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/PrivateNetworks/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.PrivateNetworks.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.PrivateNetworks.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.PrivateNetworks.Lens
+import Amazonka.PrivateNetworks.Types
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Main (main) where
+
+import Test.Amazonka.PrivateNetworks
+import Test.Amazonka.PrivateNetworks.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "PrivateNetworks"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/PrivateNetworks.hs b/test/Test/Amazonka/Gen/PrivateNetworks.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/PrivateNetworks.hs
@@ -0,0 +1,538 @@
+{-# 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.PrivateNetworks
+-- 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.PrivateNetworks where
+
+import Amazonka.PrivateNetworks
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Amazonka.PrivateNetworks.Internal
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestAcknowledgeOrderReceipt $
+--             newAcknowledgeOrderReceipt
+--
+--         , requestActivateDeviceIdentifier $
+--             newActivateDeviceIdentifier
+--
+--         , requestActivateNetworkSite $
+--             newActivateNetworkSite
+--
+--         , requestConfigureAccessPoint $
+--             newConfigureAccessPoint
+--
+--         , requestCreateNetwork $
+--             newCreateNetwork
+--
+--         , requestCreateNetworkSite $
+--             newCreateNetworkSite
+--
+--         , requestDeactivateDeviceIdentifier $
+--             newDeactivateDeviceIdentifier
+--
+--         , requestDeleteNetwork $
+--             newDeleteNetwork
+--
+--         , requestDeleteNetworkSite $
+--             newDeleteNetworkSite
+--
+--         , requestGetDeviceIdentifier $
+--             newGetDeviceIdentifier
+--
+--         , requestGetNetwork $
+--             newGetNetwork
+--
+--         , requestGetNetworkResource $
+--             newGetNetworkResource
+--
+--         , requestGetNetworkSite $
+--             newGetNetworkSite
+--
+--         , requestGetOrder $
+--             newGetOrder
+--
+--         , requestListDeviceIdentifiers $
+--             newListDeviceIdentifiers
+--
+--         , requestListNetworkResources $
+--             newListNetworkResources
+--
+--         , requestListNetworkSites $
+--             newListNetworkSites
+--
+--         , requestListNetworks $
+--             newListNetworks
+--
+--         , requestListOrders $
+--             newListOrders
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestPing $
+--             newPing
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateNetworkSite $
+--             newUpdateNetworkSite
+--
+--         , requestUpdateNetworkSitePlan $
+--             newUpdateNetworkSitePlan
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAcknowledgeOrderReceipt $
+--             newAcknowledgeOrderReceiptResponse
+--
+--         , responseActivateDeviceIdentifier $
+--             newActivateDeviceIdentifierResponse
+--
+--         , responseActivateNetworkSite $
+--             newActivateNetworkSiteResponse
+--
+--         , responseConfigureAccessPoint $
+--             newConfigureAccessPointResponse
+--
+--         , responseCreateNetwork $
+--             newCreateNetworkResponse
+--
+--         , responseCreateNetworkSite $
+--             newCreateNetworkSiteResponse
+--
+--         , responseDeactivateDeviceIdentifier $
+--             newDeactivateDeviceIdentifierResponse
+--
+--         , responseDeleteNetwork $
+--             newDeleteNetworkResponse
+--
+--         , responseDeleteNetworkSite $
+--             newDeleteNetworkSiteResponse
+--
+--         , responseGetDeviceIdentifier $
+--             newGetDeviceIdentifierResponse
+--
+--         , responseGetNetwork $
+--             newGetNetworkResponse
+--
+--         , responseGetNetworkResource $
+--             newGetNetworkResourceResponse
+--
+--         , responseGetNetworkSite $
+--             newGetNetworkSiteResponse
+--
+--         , responseGetOrder $
+--             newGetOrderResponse
+--
+--         , responseListDeviceIdentifiers $
+--             newListDeviceIdentifiersResponse
+--
+--         , responseListNetworkResources $
+--             newListNetworkResourcesResponse
+--
+--         , responseListNetworkSites $
+--             newListNetworkSitesResponse
+--
+--         , responseListNetworks $
+--             newListNetworksResponse
+--
+--         , responseListOrders $
+--             newListOrdersResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responsePing $
+--             newPingResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateNetworkSite $
+--             newUpdateNetworkSiteResponse
+--
+--         , responseUpdateNetworkSitePlan $
+--             newUpdateNetworkSiteResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAcknowledgeOrderReceipt :: AcknowledgeOrderReceipt -> TestTree
+requestAcknowledgeOrderReceipt =
+  req
+    "AcknowledgeOrderReceipt"
+    "fixture/AcknowledgeOrderReceipt.yaml"
+
+requestActivateDeviceIdentifier :: ActivateDeviceIdentifier -> TestTree
+requestActivateDeviceIdentifier =
+  req
+    "ActivateDeviceIdentifier"
+    "fixture/ActivateDeviceIdentifier.yaml"
+
+requestActivateNetworkSite :: ActivateNetworkSite -> TestTree
+requestActivateNetworkSite =
+  req
+    "ActivateNetworkSite"
+    "fixture/ActivateNetworkSite.yaml"
+
+requestConfigureAccessPoint :: ConfigureAccessPoint -> TestTree
+requestConfigureAccessPoint =
+  req
+    "ConfigureAccessPoint"
+    "fixture/ConfigureAccessPoint.yaml"
+
+requestCreateNetwork :: CreateNetwork -> TestTree
+requestCreateNetwork =
+  req
+    "CreateNetwork"
+    "fixture/CreateNetwork.yaml"
+
+requestCreateNetworkSite :: CreateNetworkSite -> TestTree
+requestCreateNetworkSite =
+  req
+    "CreateNetworkSite"
+    "fixture/CreateNetworkSite.yaml"
+
+requestDeactivateDeviceIdentifier :: DeactivateDeviceIdentifier -> TestTree
+requestDeactivateDeviceIdentifier =
+  req
+    "DeactivateDeviceIdentifier"
+    "fixture/DeactivateDeviceIdentifier.yaml"
+
+requestDeleteNetwork :: DeleteNetwork -> TestTree
+requestDeleteNetwork =
+  req
+    "DeleteNetwork"
+    "fixture/DeleteNetwork.yaml"
+
+requestDeleteNetworkSite :: DeleteNetworkSite -> TestTree
+requestDeleteNetworkSite =
+  req
+    "DeleteNetworkSite"
+    "fixture/DeleteNetworkSite.yaml"
+
+requestGetDeviceIdentifier :: GetDeviceIdentifier -> TestTree
+requestGetDeviceIdentifier =
+  req
+    "GetDeviceIdentifier"
+    "fixture/GetDeviceIdentifier.yaml"
+
+requestGetNetwork :: GetNetwork -> TestTree
+requestGetNetwork =
+  req
+    "GetNetwork"
+    "fixture/GetNetwork.yaml"
+
+requestGetNetworkResource :: GetNetworkResource -> TestTree
+requestGetNetworkResource =
+  req
+    "GetNetworkResource"
+    "fixture/GetNetworkResource.yaml"
+
+requestGetNetworkSite :: GetNetworkSite -> TestTree
+requestGetNetworkSite =
+  req
+    "GetNetworkSite"
+    "fixture/GetNetworkSite.yaml"
+
+requestGetOrder :: GetOrder -> TestTree
+requestGetOrder =
+  req
+    "GetOrder"
+    "fixture/GetOrder.yaml"
+
+requestListDeviceIdentifiers :: ListDeviceIdentifiers -> TestTree
+requestListDeviceIdentifiers =
+  req
+    "ListDeviceIdentifiers"
+    "fixture/ListDeviceIdentifiers.yaml"
+
+requestListNetworkResources :: ListNetworkResources -> TestTree
+requestListNetworkResources =
+  req
+    "ListNetworkResources"
+    "fixture/ListNetworkResources.yaml"
+
+requestListNetworkSites :: ListNetworkSites -> TestTree
+requestListNetworkSites =
+  req
+    "ListNetworkSites"
+    "fixture/ListNetworkSites.yaml"
+
+requestListNetworks :: ListNetworks -> TestTree
+requestListNetworks =
+  req
+    "ListNetworks"
+    "fixture/ListNetworks.yaml"
+
+requestListOrders :: ListOrders -> TestTree
+requestListOrders =
+  req
+    "ListOrders"
+    "fixture/ListOrders.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestPing :: Ping -> TestTree
+requestPing =
+  req
+    "Ping"
+    "fixture/Ping.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateNetworkSite :: UpdateNetworkSite -> TestTree
+requestUpdateNetworkSite =
+  req
+    "UpdateNetworkSite"
+    "fixture/UpdateNetworkSite.yaml"
+
+requestUpdateNetworkSitePlan :: UpdateNetworkSitePlan -> TestTree
+requestUpdateNetworkSitePlan =
+  req
+    "UpdateNetworkSitePlan"
+    "fixture/UpdateNetworkSitePlan.yaml"
+
+-- Responses
+
+responseAcknowledgeOrderReceipt :: AcknowledgeOrderReceiptResponse -> TestTree
+responseAcknowledgeOrderReceipt =
+  res
+    "AcknowledgeOrderReceiptResponse"
+    "fixture/AcknowledgeOrderReceiptResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AcknowledgeOrderReceipt)
+
+responseActivateDeviceIdentifier :: ActivateDeviceIdentifierResponse -> TestTree
+responseActivateDeviceIdentifier =
+  res
+    "ActivateDeviceIdentifierResponse"
+    "fixture/ActivateDeviceIdentifierResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ActivateDeviceIdentifier)
+
+responseActivateNetworkSite :: ActivateNetworkSiteResponse -> TestTree
+responseActivateNetworkSite =
+  res
+    "ActivateNetworkSiteResponse"
+    "fixture/ActivateNetworkSiteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ActivateNetworkSite)
+
+responseConfigureAccessPoint :: ConfigureAccessPointResponse -> TestTree
+responseConfigureAccessPoint =
+  res
+    "ConfigureAccessPointResponse"
+    "fixture/ConfigureAccessPointResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ConfigureAccessPoint)
+
+responseCreateNetwork :: CreateNetworkResponse -> TestTree
+responseCreateNetwork =
+  res
+    "CreateNetworkResponse"
+    "fixture/CreateNetworkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateNetwork)
+
+responseCreateNetworkSite :: CreateNetworkSiteResponse -> TestTree
+responseCreateNetworkSite =
+  res
+    "CreateNetworkSiteResponse"
+    "fixture/CreateNetworkSiteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateNetworkSite)
+
+responseDeactivateDeviceIdentifier :: DeactivateDeviceIdentifierResponse -> TestTree
+responseDeactivateDeviceIdentifier =
+  res
+    "DeactivateDeviceIdentifierResponse"
+    "fixture/DeactivateDeviceIdentifierResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeactivateDeviceIdentifier)
+
+responseDeleteNetwork :: DeleteNetworkResponse -> TestTree
+responseDeleteNetwork =
+  res
+    "DeleteNetworkResponse"
+    "fixture/DeleteNetworkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteNetwork)
+
+responseDeleteNetworkSite :: DeleteNetworkSiteResponse -> TestTree
+responseDeleteNetworkSite =
+  res
+    "DeleteNetworkSiteResponse"
+    "fixture/DeleteNetworkSiteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteNetworkSite)
+
+responseGetDeviceIdentifier :: GetDeviceIdentifierResponse -> TestTree
+responseGetDeviceIdentifier =
+  res
+    "GetDeviceIdentifierResponse"
+    "fixture/GetDeviceIdentifierResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetDeviceIdentifier)
+
+responseGetNetwork :: GetNetworkResponse -> TestTree
+responseGetNetwork =
+  res
+    "GetNetworkResponse"
+    "fixture/GetNetworkResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetNetwork)
+
+responseGetNetworkResource :: GetNetworkResourceResponse -> TestTree
+responseGetNetworkResource =
+  res
+    "GetNetworkResourceResponse"
+    "fixture/GetNetworkResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetNetworkResource)
+
+responseGetNetworkSite :: GetNetworkSiteResponse -> TestTree
+responseGetNetworkSite =
+  res
+    "GetNetworkSiteResponse"
+    "fixture/GetNetworkSiteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetNetworkSite)
+
+responseGetOrder :: GetOrderResponse -> TestTree
+responseGetOrder =
+  res
+    "GetOrderResponse"
+    "fixture/GetOrderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetOrder)
+
+responseListDeviceIdentifiers :: ListDeviceIdentifiersResponse -> TestTree
+responseListDeviceIdentifiers =
+  res
+    "ListDeviceIdentifiersResponse"
+    "fixture/ListDeviceIdentifiersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListDeviceIdentifiers)
+
+responseListNetworkResources :: ListNetworkResourcesResponse -> TestTree
+responseListNetworkResources =
+  res
+    "ListNetworkResourcesResponse"
+    "fixture/ListNetworkResourcesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListNetworkResources)
+
+responseListNetworkSites :: ListNetworkSitesResponse -> TestTree
+responseListNetworkSites =
+  res
+    "ListNetworkSitesResponse"
+    "fixture/ListNetworkSitesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListNetworkSites)
+
+responseListNetworks :: ListNetworksResponse -> TestTree
+responseListNetworks =
+  res
+    "ListNetworksResponse"
+    "fixture/ListNetworksResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListNetworks)
+
+responseListOrders :: ListOrdersResponse -> TestTree
+responseListOrders =
+  res
+    "ListOrdersResponse"
+    "fixture/ListOrdersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListOrders)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responsePing :: PingResponse -> TestTree
+responsePing =
+  res
+    "PingResponse"
+    "fixture/PingResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy Ping)
+
+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)
+
+responseUpdateNetworkSite :: UpdateNetworkSiteResponse -> TestTree
+responseUpdateNetworkSite =
+  res
+    "UpdateNetworkSiteResponse"
+    "fixture/UpdateNetworkSiteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateNetworkSite)
+
+responseUpdateNetworkSitePlan :: UpdateNetworkSiteResponse -> TestTree
+responseUpdateNetworkSitePlan =
+  res
+    "UpdateNetworkSitePlanResponse"
+    "fixture/UpdateNetworkSitePlanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateNetworkSitePlan)
diff --git a/test/Test/Amazonka/PrivateNetworks.hs b/test/Test/Amazonka/PrivateNetworks.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/PrivateNetworks.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.PrivateNetworks
+-- 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.PrivateNetworks
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/PrivateNetworks/Internal.hs b/test/Test/Amazonka/PrivateNetworks/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/PrivateNetworks/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.PrivateNetworks.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.PrivateNetworks.Internal where
