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 Outposts SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2019-12-03@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-outposts)
+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.Outposts](http://hackage.haskell.org/package/amazonka-outposts/docs/Amazonka-Outposts.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-outposts` 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-outposts.cabal b/amazonka-outposts.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-outposts.cabal
@@ -0,0 +1,149 @@
+cabal-version:      2.2
+name:               amazonka-outposts
+version:            2.0
+synopsis:           Amazon Outposts SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
+description:
+  Derived from API version @2019-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.Outposts.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.Outposts" 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-outposts
+
+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.Outposts
+    Amazonka.Outposts.CancelOrder
+    Amazonka.Outposts.CreateOrder
+    Amazonka.Outposts.CreateOutpost
+    Amazonka.Outposts.CreateSite
+    Amazonka.Outposts.DeleteOutpost
+    Amazonka.Outposts.DeleteSite
+    Amazonka.Outposts.GetCatalogItem
+    Amazonka.Outposts.GetConnection
+    Amazonka.Outposts.GetOrder
+    Amazonka.Outposts.GetOutpost
+    Amazonka.Outposts.GetOutpostInstanceTypes
+    Amazonka.Outposts.GetSite
+    Amazonka.Outposts.GetSiteAddress
+    Amazonka.Outposts.Lens
+    Amazonka.Outposts.ListAssets
+    Amazonka.Outposts.ListCatalogItems
+    Amazonka.Outposts.ListOrders
+    Amazonka.Outposts.ListOutposts
+    Amazonka.Outposts.ListSites
+    Amazonka.Outposts.ListTagsForResource
+    Amazonka.Outposts.StartConnection
+    Amazonka.Outposts.TagResource
+    Amazonka.Outposts.Types
+    Amazonka.Outposts.Types.Address
+    Amazonka.Outposts.Types.AddressType
+    Amazonka.Outposts.Types.AssetInfo
+    Amazonka.Outposts.Types.AssetLocation
+    Amazonka.Outposts.Types.AssetState
+    Amazonka.Outposts.Types.AssetType
+    Amazonka.Outposts.Types.CatalogItem
+    Amazonka.Outposts.Types.CatalogItemClass
+    Amazonka.Outposts.Types.CatalogItemStatus
+    Amazonka.Outposts.Types.ComputeAssetState
+    Amazonka.Outposts.Types.ComputeAttributes
+    Amazonka.Outposts.Types.ConnectionDetails
+    Amazonka.Outposts.Types.EC2Capacity
+    Amazonka.Outposts.Types.FiberOpticCableType
+    Amazonka.Outposts.Types.InstanceTypeItem
+    Amazonka.Outposts.Types.LineItem
+    Amazonka.Outposts.Types.LineItemAssetInformation
+    Amazonka.Outposts.Types.LineItemRequest
+    Amazonka.Outposts.Types.LineItemStatus
+    Amazonka.Outposts.Types.MaximumSupportedWeightLbs
+    Amazonka.Outposts.Types.OpticalStandard
+    Amazonka.Outposts.Types.Order
+    Amazonka.Outposts.Types.OrderStatus
+    Amazonka.Outposts.Types.OrderSummary
+    Amazonka.Outposts.Types.OrderType
+    Amazonka.Outposts.Types.Outpost
+    Amazonka.Outposts.Types.PaymentOption
+    Amazonka.Outposts.Types.PaymentTerm
+    Amazonka.Outposts.Types.PowerConnector
+    Amazonka.Outposts.Types.PowerDrawKva
+    Amazonka.Outposts.Types.PowerFeedDrop
+    Amazonka.Outposts.Types.PowerPhase
+    Amazonka.Outposts.Types.RackPhysicalProperties
+    Amazonka.Outposts.Types.ShipmentCarrier
+    Amazonka.Outposts.Types.ShipmentInformation
+    Amazonka.Outposts.Types.Site
+    Amazonka.Outposts.Types.SupportedHardwareType
+    Amazonka.Outposts.Types.SupportedStorageEnum
+    Amazonka.Outposts.Types.UplinkCount
+    Amazonka.Outposts.Types.UplinkGbps
+    Amazonka.Outposts.UntagResource
+    Amazonka.Outposts.UpdateOutpost
+    Amazonka.Outposts.UpdateSite
+    Amazonka.Outposts.UpdateSiteAddress
+    Amazonka.Outposts.UpdateSiteRackPhysicalProperties
+    Amazonka.Outposts.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-outposts-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.Outposts
+    Test.Amazonka.Outposts
+    Test.Amazonka.Outposts.Internal
+
+  build-depends:
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-outposts
+    , amazonka-test         >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/CancelOrder.yaml b/fixture/CancelOrder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CancelOrder.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/CancelOrderResponse.proto b/fixture/CancelOrderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CancelOrderResponse.proto
diff --git a/fixture/CreateOrder.yaml b/fixture/CreateOrder.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateOrder.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/CreateOrderResponse.proto b/fixture/CreateOrderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateOrderResponse.proto
diff --git a/fixture/CreateOutpost.yaml b/fixture/CreateOutpost.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateOutpost.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/CreateOutpostResponse.proto b/fixture/CreateOutpostResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateOutpostResponse.proto
diff --git a/fixture/CreateSite.yaml b/fixture/CreateSite.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSite.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateSiteResponse.proto b/fixture/CreateSiteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSiteResponse.proto
diff --git a/fixture/DeleteOutpost.yaml b/fixture/DeleteOutpost.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteOutpost.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/DeleteOutpostResponse.proto b/fixture/DeleteOutpostResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteOutpostResponse.proto
diff --git a/fixture/DeleteSite.yaml b/fixture/DeleteSite.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSite.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteSiteResponse.proto b/fixture/DeleteSiteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSiteResponse.proto
diff --git a/fixture/GetCatalogItem.yaml b/fixture/GetCatalogItem.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetCatalogItem.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/GetCatalogItemResponse.proto b/fixture/GetCatalogItemResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetCatalogItemResponse.proto
diff --git a/fixture/GetConnection.yaml b/fixture/GetConnection.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetConnection.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/GetConnectionResponse.proto b/fixture/GetConnectionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetConnectionResponse.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/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/GetOutpost.yaml b/fixture/GetOutpost.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetOutpost.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/GetOutpostInstanceTypes.yaml b/fixture/GetOutpostInstanceTypes.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetOutpostInstanceTypes.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/GetOutpostInstanceTypesResponse.proto b/fixture/GetOutpostInstanceTypesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetOutpostInstanceTypesResponse.proto
diff --git a/fixture/GetOutpostResponse.proto b/fixture/GetOutpostResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetOutpostResponse.proto
diff --git a/fixture/GetSite.yaml b/fixture/GetSite.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetSite.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/GetSiteAddress.yaml b/fixture/GetSiteAddress.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetSiteAddress.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/GetSiteAddressResponse.proto b/fixture/GetSiteAddressResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetSiteAddressResponse.proto
diff --git a/fixture/GetSiteResponse.proto b/fixture/GetSiteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetSiteResponse.proto
diff --git a/fixture/ListAssets.yaml b/fixture/ListAssets.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAssets.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/ListAssetsResponse.proto b/fixture/ListAssetsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAssetsResponse.proto
diff --git a/fixture/ListCatalogItems.yaml b/fixture/ListCatalogItems.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListCatalogItems.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/ListCatalogItemsResponse.proto b/fixture/ListCatalogItemsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListCatalogItemsResponse.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: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/ListOutposts.yaml b/fixture/ListOutposts.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListOutposts.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/ListOutpostsResponse.proto b/fixture/ListOutpostsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListOutpostsResponse.proto
diff --git a/fixture/ListSites.yaml b/fixture/ListSites.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListSites.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/ListSitesResponse.proto b/fixture/ListSitesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListSitesResponse.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/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/StartConnection.yaml b/fixture/StartConnection.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartConnection.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/StartConnectionResponse.proto b/fixture/StartConnectionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartConnectionResponse.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/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/UpdateOutpost.yaml b/fixture/UpdateOutpost.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateOutpost.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/UpdateOutpostResponse.proto b/fixture/UpdateOutpostResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateOutpostResponse.proto
diff --git a/fixture/UpdateSite.yaml b/fixture/UpdateSite.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSite.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/UpdateSiteAddress.yaml b/fixture/UpdateSiteAddress.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSiteAddress.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/UpdateSiteAddressResponse.proto b/fixture/UpdateSiteAddressResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSiteAddressResponse.proto
diff --git a/fixture/UpdateSiteRackPhysicalProperties.yaml b/fixture/UpdateSiteRackPhysicalProperties.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSiteRackPhysicalProperties.yaml
@@ -0,0 +1,10 @@
+---
+method: PATCH
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/outposts/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  outposts.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/UpdateSiteRackPhysicalPropertiesResponse.proto b/fixture/UpdateSiteRackPhysicalPropertiesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSiteRackPhysicalPropertiesResponse.proto
diff --git a/fixture/UpdateSiteResponse.proto b/fixture/UpdateSiteResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSiteResponse.proto
diff --git a/gen/Amazonka/Outposts.hs b/gen/Amazonka/Outposts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts.hs
@@ -0,0 +1,404 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.Outposts
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2019-12-03@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon Web Services Outposts is a fully managed service that extends
+-- Amazon Web Services infrastructure, APIs, and tools to customer
+-- premises. By providing local access to Amazon Web Services managed
+-- infrastructure, Amazon Web Services Outposts enables customers to build
+-- and run applications on premises using the same programming interfaces
+-- as in Amazon Web Services Regions, while using local compute and storage
+-- resources for lower latency and local data processing needs.
+module Amazonka.Outposts
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** NotFoundException
+    _NotFoundException,
+
+    -- ** ServiceQuotaExceededException
+    _ServiceQuotaExceededException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** CancelOrder
+    CancelOrder (CancelOrder'),
+    newCancelOrder,
+    CancelOrderResponse (CancelOrderResponse'),
+    newCancelOrderResponse,
+
+    -- ** CreateOrder
+    CreateOrder (CreateOrder'),
+    newCreateOrder,
+    CreateOrderResponse (CreateOrderResponse'),
+    newCreateOrderResponse,
+
+    -- ** CreateOutpost
+    CreateOutpost (CreateOutpost'),
+    newCreateOutpost,
+    CreateOutpostResponse (CreateOutpostResponse'),
+    newCreateOutpostResponse,
+
+    -- ** CreateSite
+    CreateSite (CreateSite'),
+    newCreateSite,
+    CreateSiteResponse (CreateSiteResponse'),
+    newCreateSiteResponse,
+
+    -- ** DeleteOutpost
+    DeleteOutpost (DeleteOutpost'),
+    newDeleteOutpost,
+    DeleteOutpostResponse (DeleteOutpostResponse'),
+    newDeleteOutpostResponse,
+
+    -- ** DeleteSite
+    DeleteSite (DeleteSite'),
+    newDeleteSite,
+    DeleteSiteResponse (DeleteSiteResponse'),
+    newDeleteSiteResponse,
+
+    -- ** GetCatalogItem
+    GetCatalogItem (GetCatalogItem'),
+    newGetCatalogItem,
+    GetCatalogItemResponse (GetCatalogItemResponse'),
+    newGetCatalogItemResponse,
+
+    -- ** GetConnection
+    GetConnection (GetConnection'),
+    newGetConnection,
+    GetConnectionResponse (GetConnectionResponse'),
+    newGetConnectionResponse,
+
+    -- ** GetOrder
+    GetOrder (GetOrder'),
+    newGetOrder,
+    GetOrderResponse (GetOrderResponse'),
+    newGetOrderResponse,
+
+    -- ** GetOutpost
+    GetOutpost (GetOutpost'),
+    newGetOutpost,
+    GetOutpostResponse (GetOutpostResponse'),
+    newGetOutpostResponse,
+
+    -- ** GetOutpostInstanceTypes
+    GetOutpostInstanceTypes (GetOutpostInstanceTypes'),
+    newGetOutpostInstanceTypes,
+    GetOutpostInstanceTypesResponse (GetOutpostInstanceTypesResponse'),
+    newGetOutpostInstanceTypesResponse,
+
+    -- ** GetSite
+    GetSite (GetSite'),
+    newGetSite,
+    GetSiteResponse (GetSiteResponse'),
+    newGetSiteResponse,
+
+    -- ** GetSiteAddress
+    GetSiteAddress (GetSiteAddress'),
+    newGetSiteAddress,
+    GetSiteAddressResponse (GetSiteAddressResponse'),
+    newGetSiteAddressResponse,
+
+    -- ** ListAssets
+    ListAssets (ListAssets'),
+    newListAssets,
+    ListAssetsResponse (ListAssetsResponse'),
+    newListAssetsResponse,
+
+    -- ** ListCatalogItems
+    ListCatalogItems (ListCatalogItems'),
+    newListCatalogItems,
+    ListCatalogItemsResponse (ListCatalogItemsResponse'),
+    newListCatalogItemsResponse,
+
+    -- ** ListOrders
+    ListOrders (ListOrders'),
+    newListOrders,
+    ListOrdersResponse (ListOrdersResponse'),
+    newListOrdersResponse,
+
+    -- ** ListOutposts
+    ListOutposts (ListOutposts'),
+    newListOutposts,
+    ListOutpostsResponse (ListOutpostsResponse'),
+    newListOutpostsResponse,
+
+    -- ** ListSites
+    ListSites (ListSites'),
+    newListSites,
+    ListSitesResponse (ListSitesResponse'),
+    newListSitesResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** StartConnection
+    StartConnection (StartConnection'),
+    newStartConnection,
+    StartConnectionResponse (StartConnectionResponse'),
+    newStartConnectionResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateOutpost
+    UpdateOutpost (UpdateOutpost'),
+    newUpdateOutpost,
+    UpdateOutpostResponse (UpdateOutpostResponse'),
+    newUpdateOutpostResponse,
+
+    -- ** UpdateSite
+    UpdateSite (UpdateSite'),
+    newUpdateSite,
+    UpdateSiteResponse (UpdateSiteResponse'),
+    newUpdateSiteResponse,
+
+    -- ** UpdateSiteAddress
+    UpdateSiteAddress (UpdateSiteAddress'),
+    newUpdateSiteAddress,
+    UpdateSiteAddressResponse (UpdateSiteAddressResponse'),
+    newUpdateSiteAddressResponse,
+
+    -- ** UpdateSiteRackPhysicalProperties
+    UpdateSiteRackPhysicalProperties (UpdateSiteRackPhysicalProperties'),
+    newUpdateSiteRackPhysicalProperties,
+    UpdateSiteRackPhysicalPropertiesResponse (UpdateSiteRackPhysicalPropertiesResponse'),
+    newUpdateSiteRackPhysicalPropertiesResponse,
+
+    -- * Types
+
+    -- ** AddressType
+    AddressType (..),
+
+    -- ** AssetState
+    AssetState (..),
+
+    -- ** AssetType
+    AssetType (..),
+
+    -- ** CatalogItemClass
+    CatalogItemClass (..),
+
+    -- ** CatalogItemStatus
+    CatalogItemStatus (..),
+
+    -- ** ComputeAssetState
+    ComputeAssetState (..),
+
+    -- ** FiberOpticCableType
+    FiberOpticCableType (..),
+
+    -- ** LineItemStatus
+    LineItemStatus (..),
+
+    -- ** MaximumSupportedWeightLbs
+    MaximumSupportedWeightLbs (..),
+
+    -- ** OpticalStandard
+    OpticalStandard (..),
+
+    -- ** OrderStatus
+    OrderStatus (..),
+
+    -- ** OrderType
+    OrderType (..),
+
+    -- ** PaymentOption
+    PaymentOption (..),
+
+    -- ** PaymentTerm
+    PaymentTerm (..),
+
+    -- ** PowerConnector
+    PowerConnector (..),
+
+    -- ** PowerDrawKva
+    PowerDrawKva (..),
+
+    -- ** PowerFeedDrop
+    PowerFeedDrop (..),
+
+    -- ** PowerPhase
+    PowerPhase (..),
+
+    -- ** ShipmentCarrier
+    ShipmentCarrier (..),
+
+    -- ** SupportedHardwareType
+    SupportedHardwareType (..),
+
+    -- ** SupportedStorageEnum
+    SupportedStorageEnum (..),
+
+    -- ** UplinkCount
+    UplinkCount (..),
+
+    -- ** UplinkGbps
+    UplinkGbps (..),
+
+    -- ** Address
+    Address (Address'),
+    newAddress,
+
+    -- ** AssetInfo
+    AssetInfo (AssetInfo'),
+    newAssetInfo,
+
+    -- ** AssetLocation
+    AssetLocation (AssetLocation'),
+    newAssetLocation,
+
+    -- ** CatalogItem
+    CatalogItem (CatalogItem'),
+    newCatalogItem,
+
+    -- ** ComputeAttributes
+    ComputeAttributes (ComputeAttributes'),
+    newComputeAttributes,
+
+    -- ** ConnectionDetails
+    ConnectionDetails (ConnectionDetails'),
+    newConnectionDetails,
+
+    -- ** EC2Capacity
+    EC2Capacity (EC2Capacity'),
+    newEC2Capacity,
+
+    -- ** InstanceTypeItem
+    InstanceTypeItem (InstanceTypeItem'),
+    newInstanceTypeItem,
+
+    -- ** LineItem
+    LineItem (LineItem'),
+    newLineItem,
+
+    -- ** LineItemAssetInformation
+    LineItemAssetInformation (LineItemAssetInformation'),
+    newLineItemAssetInformation,
+
+    -- ** LineItemRequest
+    LineItemRequest (LineItemRequest'),
+    newLineItemRequest,
+
+    -- ** Order
+    Order (Order'),
+    newOrder,
+
+    -- ** OrderSummary
+    OrderSummary (OrderSummary'),
+    newOrderSummary,
+
+    -- ** Outpost
+    Outpost (Outpost'),
+    newOutpost,
+
+    -- ** RackPhysicalProperties
+    RackPhysicalProperties (RackPhysicalProperties'),
+    newRackPhysicalProperties,
+
+    -- ** ShipmentInformation
+    ShipmentInformation (ShipmentInformation'),
+    newShipmentInformation,
+
+    -- ** Site
+    Site (Site'),
+    newSite,
+  )
+where
+
+import Amazonka.Outposts.CancelOrder
+import Amazonka.Outposts.CreateOrder
+import Amazonka.Outposts.CreateOutpost
+import Amazonka.Outposts.CreateSite
+import Amazonka.Outposts.DeleteOutpost
+import Amazonka.Outposts.DeleteSite
+import Amazonka.Outposts.GetCatalogItem
+import Amazonka.Outposts.GetConnection
+import Amazonka.Outposts.GetOrder
+import Amazonka.Outposts.GetOutpost
+import Amazonka.Outposts.GetOutpostInstanceTypes
+import Amazonka.Outposts.GetSite
+import Amazonka.Outposts.GetSiteAddress
+import Amazonka.Outposts.Lens
+import Amazonka.Outposts.ListAssets
+import Amazonka.Outposts.ListCatalogItems
+import Amazonka.Outposts.ListOrders
+import Amazonka.Outposts.ListOutposts
+import Amazonka.Outposts.ListSites
+import Amazonka.Outposts.ListTagsForResource
+import Amazonka.Outposts.StartConnection
+import Amazonka.Outposts.TagResource
+import Amazonka.Outposts.Types
+import Amazonka.Outposts.UntagResource
+import Amazonka.Outposts.UpdateOutpost
+import Amazonka.Outposts.UpdateSite
+import Amazonka.Outposts.UpdateSiteAddress
+import Amazonka.Outposts.UpdateSiteRackPhysicalProperties
+import Amazonka.Outposts.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 'Outposts'.
+
+-- $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/Outposts/CancelOrder.hs b/gen/Amazonka/Outposts/CancelOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/CancelOrder.hs
@@ -0,0 +1,144 @@
+{-# 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.Outposts.CancelOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Cancels the specified order for an Outpost.
+module Amazonka.Outposts.CancelOrder
+  ( -- * Creating a Request
+    CancelOrder (..),
+    newCancelOrder,
+
+    -- * Request Lenses
+    cancelOrder_orderId,
+
+    -- * Destructuring the Response
+    CancelOrderResponse (..),
+    newCancelOrderResponse,
+
+    -- * Response Lenses
+    cancelOrderResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCancelOrder' smart constructor.
+data CancelOrder = CancelOrder'
+  { -- | The ID of the order.
+    orderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CancelOrder' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'orderId', 'cancelOrder_orderId' - The ID of the order.
+newCancelOrder ::
+  -- | 'orderId'
+  Prelude.Text ->
+  CancelOrder
+newCancelOrder pOrderId_ =
+  CancelOrder' {orderId = pOrderId_}
+
+-- | The ID of the order.
+cancelOrder_orderId :: Lens.Lens' CancelOrder Prelude.Text
+cancelOrder_orderId = Lens.lens (\CancelOrder' {orderId} -> orderId) (\s@CancelOrder' {} a -> s {orderId = a} :: CancelOrder)
+
+instance Core.AWSRequest CancelOrder where
+  type AWSResponse CancelOrder = CancelOrderResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          CancelOrderResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CancelOrder where
+  hashWithSalt _salt CancelOrder' {..} =
+    _salt `Prelude.hashWithSalt` orderId
+
+instance Prelude.NFData CancelOrder where
+  rnf CancelOrder' {..} = Prelude.rnf orderId
+
+instance Data.ToHeaders CancelOrder where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CancelOrder where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath CancelOrder where
+  toPath CancelOrder' {..} =
+    Prelude.mconcat
+      ["/orders/", Data.toBS orderId, "/cancel"]
+
+instance Data.ToQuery CancelOrder where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCancelOrderResponse' smart constructor.
+data CancelOrderResponse = CancelOrderResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CancelOrderResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'cancelOrderResponse_httpStatus' - The response's http status code.
+newCancelOrderResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CancelOrderResponse
+newCancelOrderResponse pHttpStatus_ =
+  CancelOrderResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+cancelOrderResponse_httpStatus :: Lens.Lens' CancelOrderResponse Prelude.Int
+cancelOrderResponse_httpStatus = Lens.lens (\CancelOrderResponse' {httpStatus} -> httpStatus) (\s@CancelOrderResponse' {} a -> s {httpStatus = a} :: CancelOrderResponse)
+
+instance Prelude.NFData CancelOrderResponse where
+  rnf CancelOrderResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/CreateOrder.hs b/gen/Amazonka/Outposts/CreateOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/CreateOrder.hs
@@ -0,0 +1,214 @@
+{-# 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.Outposts.CreateOrder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an order for an Outpost.
+module Amazonka.Outposts.CreateOrder
+  ( -- * Creating a Request
+    CreateOrder (..),
+    newCreateOrder,
+
+    -- * Request Lenses
+    createOrder_paymentTerm,
+    createOrder_outpostIdentifier,
+    createOrder_lineItems,
+    createOrder_paymentOption,
+
+    -- * Destructuring the Response
+    CreateOrderResponse (..),
+    newCreateOrderResponse,
+
+    -- * Response Lenses
+    createOrderResponse_order,
+    createOrderResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateOrder' smart constructor.
+data CreateOrder = CreateOrder'
+  { -- | The payment terms.
+    paymentTerm :: Prelude.Maybe PaymentTerm,
+    -- | The ID or the Amazon Resource Name (ARN) of the Outpost.
+    outpostIdentifier :: Prelude.Text,
+    -- | The line items that make up the order.
+    lineItems :: Prelude.NonEmpty LineItemRequest,
+    -- | The payment option.
+    paymentOption :: PaymentOption
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateOrder' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'paymentTerm', 'createOrder_paymentTerm' - The payment terms.
+--
+-- 'outpostIdentifier', 'createOrder_outpostIdentifier' - The ID or the Amazon Resource Name (ARN) of the Outpost.
+--
+-- 'lineItems', 'createOrder_lineItems' - The line items that make up the order.
+--
+-- 'paymentOption', 'createOrder_paymentOption' - The payment option.
+newCreateOrder ::
+  -- | 'outpostIdentifier'
+  Prelude.Text ->
+  -- | 'lineItems'
+  Prelude.NonEmpty LineItemRequest ->
+  -- | 'paymentOption'
+  PaymentOption ->
+  CreateOrder
+newCreateOrder
+  pOutpostIdentifier_
+  pLineItems_
+  pPaymentOption_ =
+    CreateOrder'
+      { paymentTerm = Prelude.Nothing,
+        outpostIdentifier = pOutpostIdentifier_,
+        lineItems = Lens.coerced Lens.# pLineItems_,
+        paymentOption = pPaymentOption_
+      }
+
+-- | The payment terms.
+createOrder_paymentTerm :: Lens.Lens' CreateOrder (Prelude.Maybe PaymentTerm)
+createOrder_paymentTerm = Lens.lens (\CreateOrder' {paymentTerm} -> paymentTerm) (\s@CreateOrder' {} a -> s {paymentTerm = a} :: CreateOrder)
+
+-- | The ID or the Amazon Resource Name (ARN) of the Outpost.
+createOrder_outpostIdentifier :: Lens.Lens' CreateOrder Prelude.Text
+createOrder_outpostIdentifier = Lens.lens (\CreateOrder' {outpostIdentifier} -> outpostIdentifier) (\s@CreateOrder' {} a -> s {outpostIdentifier = a} :: CreateOrder)
+
+-- | The line items that make up the order.
+createOrder_lineItems :: Lens.Lens' CreateOrder (Prelude.NonEmpty LineItemRequest)
+createOrder_lineItems = Lens.lens (\CreateOrder' {lineItems} -> lineItems) (\s@CreateOrder' {} a -> s {lineItems = a} :: CreateOrder) Prelude.. Lens.coerced
+
+-- | The payment option.
+createOrder_paymentOption :: Lens.Lens' CreateOrder PaymentOption
+createOrder_paymentOption = Lens.lens (\CreateOrder' {paymentOption} -> paymentOption) (\s@CreateOrder' {} a -> s {paymentOption = a} :: CreateOrder)
+
+instance Core.AWSRequest CreateOrder where
+  type AWSResponse CreateOrder = CreateOrderResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateOrderResponse'
+            Prelude.<$> (x Data..?> "Order")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateOrder where
+  hashWithSalt _salt CreateOrder' {..} =
+    _salt
+      `Prelude.hashWithSalt` paymentTerm
+      `Prelude.hashWithSalt` outpostIdentifier
+      `Prelude.hashWithSalt` lineItems
+      `Prelude.hashWithSalt` paymentOption
+
+instance Prelude.NFData CreateOrder where
+  rnf CreateOrder' {..} =
+    Prelude.rnf paymentTerm
+      `Prelude.seq` Prelude.rnf outpostIdentifier
+      `Prelude.seq` Prelude.rnf lineItems
+      `Prelude.seq` Prelude.rnf paymentOption
+
+instance Data.ToHeaders CreateOrder where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateOrder where
+  toJSON CreateOrder' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PaymentTerm" Data..=) Prelude.<$> paymentTerm,
+            Prelude.Just
+              ("OutpostIdentifier" Data..= outpostIdentifier),
+            Prelude.Just ("LineItems" Data..= lineItems),
+            Prelude.Just
+              ("PaymentOption" Data..= paymentOption)
+          ]
+      )
+
+instance Data.ToPath CreateOrder where
+  toPath = Prelude.const "/orders"
+
+instance Data.ToQuery CreateOrder where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateOrderResponse' smart constructor.
+data CreateOrderResponse = CreateOrderResponse'
+  { -- | Information about this order.
+    order :: Prelude.Maybe Order,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateOrderResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'order', 'createOrderResponse_order' - Information about this order.
+--
+-- 'httpStatus', 'createOrderResponse_httpStatus' - The response's http status code.
+newCreateOrderResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateOrderResponse
+newCreateOrderResponse pHttpStatus_ =
+  CreateOrderResponse'
+    { order = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about this order.
+createOrderResponse_order :: Lens.Lens' CreateOrderResponse (Prelude.Maybe Order)
+createOrderResponse_order = Lens.lens (\CreateOrderResponse' {order} -> order) (\s@CreateOrderResponse' {} a -> s {order = a} :: CreateOrderResponse)
+
+-- | The response's http status code.
+createOrderResponse_httpStatus :: Lens.Lens' CreateOrderResponse Prelude.Int
+createOrderResponse_httpStatus = Lens.lens (\CreateOrderResponse' {httpStatus} -> httpStatus) (\s@CreateOrderResponse' {} a -> s {httpStatus = a} :: CreateOrderResponse)
+
+instance Prelude.NFData CreateOrderResponse where
+  rnf CreateOrderResponse' {..} =
+    Prelude.rnf order
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/CreateOutpost.hs b/gen/Amazonka/Outposts/CreateOutpost.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/CreateOutpost.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.Outposts.CreateOutpost
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Outpost.
+--
+-- You can specify either an Availability one or an AZ ID.
+module Amazonka.Outposts.CreateOutpost
+  ( -- * Creating a Request
+    CreateOutpost (..),
+    newCreateOutpost,
+
+    -- * Request Lenses
+    createOutpost_availabilityZone,
+    createOutpost_availabilityZoneId,
+    createOutpost_description,
+    createOutpost_supportedHardwareType,
+    createOutpost_tags,
+    createOutpost_name,
+    createOutpost_siteId,
+
+    -- * Destructuring the Response
+    CreateOutpostResponse (..),
+    newCreateOutpostResponse,
+
+    -- * Response Lenses
+    createOutpostResponse_outpost,
+    createOutpostResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateOutpost' smart constructor.
+data CreateOutpost = CreateOutpost'
+  { availabilityZone :: Prelude.Maybe Prelude.Text,
+    availabilityZoneId :: Prelude.Maybe Prelude.Text,
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The type of hardware for this Outpost.
+    supportedHardwareType :: Prelude.Maybe SupportedHardwareType,
+    -- | The tags to apply to the Outpost.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    name :: Prelude.Text,
+    -- | The ID or the Amazon Resource Name (ARN) of the site.
+    siteId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateOutpost' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createOutpost_availabilityZone' - Undocumented member.
+--
+-- 'availabilityZoneId', 'createOutpost_availabilityZoneId' - Undocumented member.
+--
+-- 'description', 'createOutpost_description' - Undocumented member.
+--
+-- 'supportedHardwareType', 'createOutpost_supportedHardwareType' - The type of hardware for this Outpost.
+--
+-- 'tags', 'createOutpost_tags' - The tags to apply to the Outpost.
+--
+-- 'name', 'createOutpost_name' - Undocumented member.
+--
+-- 'siteId', 'createOutpost_siteId' - The ID or the Amazon Resource Name (ARN) of the site.
+newCreateOutpost ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'siteId'
+  Prelude.Text ->
+  CreateOutpost
+newCreateOutpost pName_ pSiteId_ =
+  CreateOutpost'
+    { availabilityZone = Prelude.Nothing,
+      availabilityZoneId = Prelude.Nothing,
+      description = Prelude.Nothing,
+      supportedHardwareType = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      name = pName_,
+      siteId = pSiteId_
+    }
+
+-- | Undocumented member.
+createOutpost_availabilityZone :: Lens.Lens' CreateOutpost (Prelude.Maybe Prelude.Text)
+createOutpost_availabilityZone = Lens.lens (\CreateOutpost' {availabilityZone} -> availabilityZone) (\s@CreateOutpost' {} a -> s {availabilityZone = a} :: CreateOutpost)
+
+-- | Undocumented member.
+createOutpost_availabilityZoneId :: Lens.Lens' CreateOutpost (Prelude.Maybe Prelude.Text)
+createOutpost_availabilityZoneId = Lens.lens (\CreateOutpost' {availabilityZoneId} -> availabilityZoneId) (\s@CreateOutpost' {} a -> s {availabilityZoneId = a} :: CreateOutpost)
+
+-- | Undocumented member.
+createOutpost_description :: Lens.Lens' CreateOutpost (Prelude.Maybe Prelude.Text)
+createOutpost_description = Lens.lens (\CreateOutpost' {description} -> description) (\s@CreateOutpost' {} a -> s {description = a} :: CreateOutpost)
+
+-- | The type of hardware for this Outpost.
+createOutpost_supportedHardwareType :: Lens.Lens' CreateOutpost (Prelude.Maybe SupportedHardwareType)
+createOutpost_supportedHardwareType = Lens.lens (\CreateOutpost' {supportedHardwareType} -> supportedHardwareType) (\s@CreateOutpost' {} a -> s {supportedHardwareType = a} :: CreateOutpost)
+
+-- | The tags to apply to the Outpost.
+createOutpost_tags :: Lens.Lens' CreateOutpost (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createOutpost_tags = Lens.lens (\CreateOutpost' {tags} -> tags) (\s@CreateOutpost' {} a -> s {tags = a} :: CreateOutpost) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createOutpost_name :: Lens.Lens' CreateOutpost Prelude.Text
+createOutpost_name = Lens.lens (\CreateOutpost' {name} -> name) (\s@CreateOutpost' {} a -> s {name = a} :: CreateOutpost)
+
+-- | The ID or the Amazon Resource Name (ARN) of the site.
+createOutpost_siteId :: Lens.Lens' CreateOutpost Prelude.Text
+createOutpost_siteId = Lens.lens (\CreateOutpost' {siteId} -> siteId) (\s@CreateOutpost' {} a -> s {siteId = a} :: CreateOutpost)
+
+instance Core.AWSRequest CreateOutpost where
+  type
+    AWSResponse CreateOutpost =
+      CreateOutpostResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateOutpostResponse'
+            Prelude.<$> (x Data..?> "Outpost")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateOutpost where
+  hashWithSalt _salt CreateOutpost' {..} =
+    _salt
+      `Prelude.hashWithSalt` availabilityZone
+      `Prelude.hashWithSalt` availabilityZoneId
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` supportedHardwareType
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` siteId
+
+instance Prelude.NFData CreateOutpost where
+  rnf CreateOutpost' {..} =
+    Prelude.rnf availabilityZone
+      `Prelude.seq` Prelude.rnf availabilityZoneId
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf supportedHardwareType
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf siteId
+
+instance Data.ToHeaders CreateOutpost where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateOutpost where
+  toJSON CreateOutpost' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AvailabilityZone" Data..=)
+              Prelude.<$> availabilityZone,
+            ("AvailabilityZoneId" Data..=)
+              Prelude.<$> availabilityZoneId,
+            ("Description" Data..=) Prelude.<$> description,
+            ("SupportedHardwareType" Data..=)
+              Prelude.<$> supportedHardwareType,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("SiteId" Data..= siteId)
+          ]
+      )
+
+instance Data.ToPath CreateOutpost where
+  toPath = Prelude.const "/outposts"
+
+instance Data.ToQuery CreateOutpost where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateOutpostResponse' smart constructor.
+data CreateOutpostResponse = CreateOutpostResponse'
+  { outpost :: Prelude.Maybe Outpost,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateOutpostResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'outpost', 'createOutpostResponse_outpost' - Undocumented member.
+--
+-- 'httpStatus', 'createOutpostResponse_httpStatus' - The response's http status code.
+newCreateOutpostResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateOutpostResponse
+newCreateOutpostResponse pHttpStatus_ =
+  CreateOutpostResponse'
+    { outpost = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createOutpostResponse_outpost :: Lens.Lens' CreateOutpostResponse (Prelude.Maybe Outpost)
+createOutpostResponse_outpost = Lens.lens (\CreateOutpostResponse' {outpost} -> outpost) (\s@CreateOutpostResponse' {} a -> s {outpost = a} :: CreateOutpostResponse)
+
+-- | The response's http status code.
+createOutpostResponse_httpStatus :: Lens.Lens' CreateOutpostResponse Prelude.Int
+createOutpostResponse_httpStatus = Lens.lens (\CreateOutpostResponse' {httpStatus} -> httpStatus) (\s@CreateOutpostResponse' {} a -> s {httpStatus = a} :: CreateOutpostResponse)
+
+instance Prelude.NFData CreateOutpostResponse where
+  rnf CreateOutpostResponse' {..} =
+    Prelude.rnf outpost
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/CreateSite.hs b/gen/Amazonka/Outposts/CreateSite.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/CreateSite.hs
@@ -0,0 +1,268 @@
+{-# 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.Outposts.CreateSite
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a site for an Outpost.
+module Amazonka.Outposts.CreateSite
+  ( -- * Creating a Request
+    CreateSite (..),
+    newCreateSite,
+
+    -- * Request Lenses
+    createSite_description,
+    createSite_notes,
+    createSite_operatingAddress,
+    createSite_rackPhysicalProperties,
+    createSite_shippingAddress,
+    createSite_tags,
+    createSite_name,
+
+    -- * Destructuring the Response
+    CreateSiteResponse (..),
+    newCreateSiteResponse,
+
+    -- * Response Lenses
+    createSiteResponse_site,
+    createSiteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateSite' smart constructor.
+data CreateSite = CreateSite'
+  { description :: Prelude.Maybe Prelude.Text,
+    -- | Additional information that you provide about site access requirements,
+    -- electrician scheduling, personal protective equipment, or regulation of
+    -- equipment materials that could affect your installation process.
+    notes :: Prelude.Maybe Prelude.Text,
+    -- | The location to install and power on the hardware. This address might be
+    -- different from the shipping address.
+    operatingAddress :: Prelude.Maybe Address,
+    -- | Information about the physical and logistical details for the rack at
+    -- this site. For more information about hardware requirements for racks,
+    -- see
+    -- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#checklist Network readiness checklist>
+    -- in the Amazon Web Services Outposts User Guide.
+    rackPhysicalProperties :: Prelude.Maybe RackPhysicalProperties,
+    -- | The location to ship the hardware. This address might be different from
+    -- the operating address.
+    shippingAddress :: Prelude.Maybe Address,
+    -- | The tags to apply to a site.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSite' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'createSite_description' - Undocumented member.
+--
+-- 'notes', 'createSite_notes' - Additional information that you provide about site access requirements,
+-- electrician scheduling, personal protective equipment, or regulation of
+-- equipment materials that could affect your installation process.
+--
+-- 'operatingAddress', 'createSite_operatingAddress' - The location to install and power on the hardware. This address might be
+-- different from the shipping address.
+--
+-- 'rackPhysicalProperties', 'createSite_rackPhysicalProperties' - Information about the physical and logistical details for the rack at
+-- this site. For more information about hardware requirements for racks,
+-- see
+-- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#checklist Network readiness checklist>
+-- in the Amazon Web Services Outposts User Guide.
+--
+-- 'shippingAddress', 'createSite_shippingAddress' - The location to ship the hardware. This address might be different from
+-- the operating address.
+--
+-- 'tags', 'createSite_tags' - The tags to apply to a site.
+--
+-- 'name', 'createSite_name' - Undocumented member.
+newCreateSite ::
+  -- | 'name'
+  Prelude.Text ->
+  CreateSite
+newCreateSite pName_ =
+  CreateSite'
+    { description = Prelude.Nothing,
+      notes = Prelude.Nothing,
+      operatingAddress = Prelude.Nothing,
+      rackPhysicalProperties = Prelude.Nothing,
+      shippingAddress = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | Undocumented member.
+createSite_description :: Lens.Lens' CreateSite (Prelude.Maybe Prelude.Text)
+createSite_description = Lens.lens (\CreateSite' {description} -> description) (\s@CreateSite' {} a -> s {description = a} :: CreateSite)
+
+-- | Additional information that you provide about site access requirements,
+-- electrician scheduling, personal protective equipment, or regulation of
+-- equipment materials that could affect your installation process.
+createSite_notes :: Lens.Lens' CreateSite (Prelude.Maybe Prelude.Text)
+createSite_notes = Lens.lens (\CreateSite' {notes} -> notes) (\s@CreateSite' {} a -> s {notes = a} :: CreateSite)
+
+-- | The location to install and power on the hardware. This address might be
+-- different from the shipping address.
+createSite_operatingAddress :: Lens.Lens' CreateSite (Prelude.Maybe Address)
+createSite_operatingAddress = Lens.lens (\CreateSite' {operatingAddress} -> operatingAddress) (\s@CreateSite' {} a -> s {operatingAddress = a} :: CreateSite)
+
+-- | Information about the physical and logistical details for the rack at
+-- this site. For more information about hardware requirements for racks,
+-- see
+-- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#checklist Network readiness checklist>
+-- in the Amazon Web Services Outposts User Guide.
+createSite_rackPhysicalProperties :: Lens.Lens' CreateSite (Prelude.Maybe RackPhysicalProperties)
+createSite_rackPhysicalProperties = Lens.lens (\CreateSite' {rackPhysicalProperties} -> rackPhysicalProperties) (\s@CreateSite' {} a -> s {rackPhysicalProperties = a} :: CreateSite)
+
+-- | The location to ship the hardware. This address might be different from
+-- the operating address.
+createSite_shippingAddress :: Lens.Lens' CreateSite (Prelude.Maybe Address)
+createSite_shippingAddress = Lens.lens (\CreateSite' {shippingAddress} -> shippingAddress) (\s@CreateSite' {} a -> s {shippingAddress = a} :: CreateSite)
+
+-- | The tags to apply to a site.
+createSite_tags :: Lens.Lens' CreateSite (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createSite_tags = Lens.lens (\CreateSite' {tags} -> tags) (\s@CreateSite' {} a -> s {tags = a} :: CreateSite) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+createSite_name :: Lens.Lens' CreateSite Prelude.Text
+createSite_name = Lens.lens (\CreateSite' {name} -> name) (\s@CreateSite' {} a -> s {name = a} :: CreateSite)
+
+instance Core.AWSRequest CreateSite where
+  type AWSResponse CreateSite = CreateSiteResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateSiteResponse'
+            Prelude.<$> (x Data..?> "Site")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateSite where
+  hashWithSalt _salt CreateSite' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` notes
+      `Prelude.hashWithSalt` operatingAddress
+      `Prelude.hashWithSalt` rackPhysicalProperties
+      `Prelude.hashWithSalt` shippingAddress
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreateSite where
+  rnf CreateSite' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf notes
+      `Prelude.seq` Prelude.rnf operatingAddress
+      `Prelude.seq` Prelude.rnf rackPhysicalProperties
+      `Prelude.seq` Prelude.rnf shippingAddress
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreateSite where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateSite where
+  toJSON CreateSite' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("Notes" Data..=) Prelude.<$> notes,
+            ("OperatingAddress" Data..=)
+              Prelude.<$> operatingAddress,
+            ("RackPhysicalProperties" Data..=)
+              Prelude.<$> rackPhysicalProperties,
+            ("ShippingAddress" Data..=)
+              Prelude.<$> shippingAddress,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreateSite where
+  toPath = Prelude.const "/sites"
+
+instance Data.ToQuery CreateSite where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateSiteResponse' smart constructor.
+data CreateSiteResponse = CreateSiteResponse'
+  { site :: Prelude.Maybe Site,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSiteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'site', 'createSiteResponse_site' - Undocumented member.
+--
+-- 'httpStatus', 'createSiteResponse_httpStatus' - The response's http status code.
+newCreateSiteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateSiteResponse
+newCreateSiteResponse pHttpStatus_ =
+  CreateSiteResponse'
+    { site = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createSiteResponse_site :: Lens.Lens' CreateSiteResponse (Prelude.Maybe Site)
+createSiteResponse_site = Lens.lens (\CreateSiteResponse' {site} -> site) (\s@CreateSiteResponse' {} a -> s {site = a} :: CreateSiteResponse)
+
+-- | The response's http status code.
+createSiteResponse_httpStatus :: Lens.Lens' CreateSiteResponse Prelude.Int
+createSiteResponse_httpStatus = Lens.lens (\CreateSiteResponse' {httpStatus} -> httpStatus) (\s@CreateSiteResponse' {} a -> s {httpStatus = a} :: CreateSiteResponse)
+
+instance Prelude.NFData CreateSiteResponse where
+  rnf CreateSiteResponse' {..} =
+    Prelude.rnf site
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/DeleteOutpost.hs b/gen/Amazonka/Outposts/DeleteOutpost.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/DeleteOutpost.hs
@@ -0,0 +1,143 @@
+{-# 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.Outposts.DeleteOutpost
+-- 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 Outpost.
+module Amazonka.Outposts.DeleteOutpost
+  ( -- * Creating a Request
+    DeleteOutpost (..),
+    newDeleteOutpost,
+
+    -- * Request Lenses
+    deleteOutpost_outpostId,
+
+    -- * Destructuring the Response
+    DeleteOutpostResponse (..),
+    newDeleteOutpostResponse,
+
+    -- * Response Lenses
+    deleteOutpostResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteOutpost' smart constructor.
+data DeleteOutpost = DeleteOutpost'
+  { -- | The ID or the Amazon Resource Name (ARN) of the Outpost.
+    outpostId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteOutpost' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'outpostId', 'deleteOutpost_outpostId' - The ID or the Amazon Resource Name (ARN) of the Outpost.
+newDeleteOutpost ::
+  -- | 'outpostId'
+  Prelude.Text ->
+  DeleteOutpost
+newDeleteOutpost pOutpostId_ =
+  DeleteOutpost' {outpostId = pOutpostId_}
+
+-- | The ID or the Amazon Resource Name (ARN) of the Outpost.
+deleteOutpost_outpostId :: Lens.Lens' DeleteOutpost Prelude.Text
+deleteOutpost_outpostId = Lens.lens (\DeleteOutpost' {outpostId} -> outpostId) (\s@DeleteOutpost' {} a -> s {outpostId = a} :: DeleteOutpost)
+
+instance Core.AWSRequest DeleteOutpost where
+  type
+    AWSResponse DeleteOutpost =
+      DeleteOutpostResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteOutpostResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteOutpost where
+  hashWithSalt _salt DeleteOutpost' {..} =
+    _salt `Prelude.hashWithSalt` outpostId
+
+instance Prelude.NFData DeleteOutpost where
+  rnf DeleteOutpost' {..} = Prelude.rnf outpostId
+
+instance Data.ToHeaders DeleteOutpost where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteOutpost where
+  toPath DeleteOutpost' {..} =
+    Prelude.mconcat ["/outposts/", Data.toBS outpostId]
+
+instance Data.ToQuery DeleteOutpost where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteOutpostResponse' smart constructor.
+data DeleteOutpostResponse = DeleteOutpostResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteOutpostResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteOutpostResponse_httpStatus' - The response's http status code.
+newDeleteOutpostResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteOutpostResponse
+newDeleteOutpostResponse pHttpStatus_ =
+  DeleteOutpostResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteOutpostResponse_httpStatus :: Lens.Lens' DeleteOutpostResponse Prelude.Int
+deleteOutpostResponse_httpStatus = Lens.lens (\DeleteOutpostResponse' {httpStatus} -> httpStatus) (\s@DeleteOutpostResponse' {} a -> s {httpStatus = a} :: DeleteOutpostResponse)
+
+instance Prelude.NFData DeleteOutpostResponse where
+  rnf DeleteOutpostResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/DeleteSite.hs b/gen/Amazonka/Outposts/DeleteSite.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/DeleteSite.hs
@@ -0,0 +1,140 @@
+{-# 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.Outposts.DeleteSite
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified site.
+module Amazonka.Outposts.DeleteSite
+  ( -- * Creating a Request
+    DeleteSite (..),
+    newDeleteSite,
+
+    -- * Request Lenses
+    deleteSite_siteId,
+
+    -- * Destructuring the Response
+    DeleteSiteResponse (..),
+    newDeleteSiteResponse,
+
+    -- * Response Lenses
+    deleteSiteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteSite' smart constructor.
+data DeleteSite = DeleteSite'
+  { -- | The ID or the Amazon Resource Name (ARN) of the site.
+    siteId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSite' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'siteId', 'deleteSite_siteId' - The ID or the Amazon Resource Name (ARN) of the site.
+newDeleteSite ::
+  -- | 'siteId'
+  Prelude.Text ->
+  DeleteSite
+newDeleteSite pSiteId_ =
+  DeleteSite' {siteId = pSiteId_}
+
+-- | The ID or the Amazon Resource Name (ARN) of the site.
+deleteSite_siteId :: Lens.Lens' DeleteSite Prelude.Text
+deleteSite_siteId = Lens.lens (\DeleteSite' {siteId} -> siteId) (\s@DeleteSite' {} a -> s {siteId = a} :: DeleteSite)
+
+instance Core.AWSRequest DeleteSite where
+  type AWSResponse DeleteSite = DeleteSiteResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteSiteResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteSite where
+  hashWithSalt _salt DeleteSite' {..} =
+    _salt `Prelude.hashWithSalt` siteId
+
+instance Prelude.NFData DeleteSite where
+  rnf DeleteSite' {..} = Prelude.rnf siteId
+
+instance Data.ToHeaders DeleteSite where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteSite where
+  toPath DeleteSite' {..} =
+    Prelude.mconcat ["/sites/", Data.toBS siteId]
+
+instance Data.ToQuery DeleteSite where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteSiteResponse' smart constructor.
+data DeleteSiteResponse = DeleteSiteResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSiteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteSiteResponse_httpStatus' - The response's http status code.
+newDeleteSiteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteSiteResponse
+newDeleteSiteResponse pHttpStatus_ =
+  DeleteSiteResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteSiteResponse_httpStatus :: Lens.Lens' DeleteSiteResponse Prelude.Int
+deleteSiteResponse_httpStatus = Lens.lens (\DeleteSiteResponse' {httpStatus} -> httpStatus) (\s@DeleteSiteResponse' {} a -> s {httpStatus = a} :: DeleteSiteResponse)
+
+instance Prelude.NFData DeleteSiteResponse where
+  rnf DeleteSiteResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/GetCatalogItem.hs b/gen/Amazonka/Outposts/GetCatalogItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/GetCatalogItem.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.Outposts.GetCatalogItem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about the specified catalog item.
+module Amazonka.Outposts.GetCatalogItem
+  ( -- * Creating a Request
+    GetCatalogItem (..),
+    newGetCatalogItem,
+
+    -- * Request Lenses
+    getCatalogItem_catalogItemId,
+
+    -- * Destructuring the Response
+    GetCatalogItemResponse (..),
+    newGetCatalogItemResponse,
+
+    -- * Response Lenses
+    getCatalogItemResponse_catalogItem,
+    getCatalogItemResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetCatalogItem' smart constructor.
+data GetCatalogItem = GetCatalogItem'
+  { -- | The ID of the catalog item.
+    catalogItemId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCatalogItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'catalogItemId', 'getCatalogItem_catalogItemId' - The ID of the catalog item.
+newGetCatalogItem ::
+  -- | 'catalogItemId'
+  Prelude.Text ->
+  GetCatalogItem
+newGetCatalogItem pCatalogItemId_ =
+  GetCatalogItem' {catalogItemId = pCatalogItemId_}
+
+-- | The ID of the catalog item.
+getCatalogItem_catalogItemId :: Lens.Lens' GetCatalogItem Prelude.Text
+getCatalogItem_catalogItemId = Lens.lens (\GetCatalogItem' {catalogItemId} -> catalogItemId) (\s@GetCatalogItem' {} a -> s {catalogItemId = a} :: GetCatalogItem)
+
+instance Core.AWSRequest GetCatalogItem where
+  type
+    AWSResponse GetCatalogItem =
+      GetCatalogItemResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetCatalogItemResponse'
+            Prelude.<$> (x Data..?> "CatalogItem")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetCatalogItem where
+  hashWithSalt _salt GetCatalogItem' {..} =
+    _salt `Prelude.hashWithSalt` catalogItemId
+
+instance Prelude.NFData GetCatalogItem where
+  rnf GetCatalogItem' {..} = Prelude.rnf catalogItemId
+
+instance Data.ToHeaders GetCatalogItem where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetCatalogItem where
+  toPath GetCatalogItem' {..} =
+    Prelude.mconcat
+      ["/catalog/item/", Data.toBS catalogItemId]
+
+instance Data.ToQuery GetCatalogItem where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetCatalogItemResponse' smart constructor.
+data GetCatalogItemResponse = GetCatalogItemResponse'
+  { -- | Information about this catalog item.
+    catalogItem :: Prelude.Maybe CatalogItem,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCatalogItemResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'catalogItem', 'getCatalogItemResponse_catalogItem' - Information about this catalog item.
+--
+-- 'httpStatus', 'getCatalogItemResponse_httpStatus' - The response's http status code.
+newGetCatalogItemResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetCatalogItemResponse
+newGetCatalogItemResponse pHttpStatus_ =
+  GetCatalogItemResponse'
+    { catalogItem =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about this catalog item.
+getCatalogItemResponse_catalogItem :: Lens.Lens' GetCatalogItemResponse (Prelude.Maybe CatalogItem)
+getCatalogItemResponse_catalogItem = Lens.lens (\GetCatalogItemResponse' {catalogItem} -> catalogItem) (\s@GetCatalogItemResponse' {} a -> s {catalogItem = a} :: GetCatalogItemResponse)
+
+-- | The response's http status code.
+getCatalogItemResponse_httpStatus :: Lens.Lens' GetCatalogItemResponse Prelude.Int
+getCatalogItemResponse_httpStatus = Lens.lens (\GetCatalogItemResponse' {httpStatus} -> httpStatus) (\s@GetCatalogItemResponse' {} a -> s {httpStatus = a} :: GetCatalogItemResponse)
+
+instance Prelude.NFData GetCatalogItemResponse where
+  rnf GetCatalogItemResponse' {..} =
+    Prelude.rnf catalogItem
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/GetConnection.hs b/gen/Amazonka/Outposts/GetConnection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/GetConnection.hs
@@ -0,0 +1,181 @@
+{-# 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.Outposts.GetConnection
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Amazon Web Services uses this action to install Outpost servers.
+--
+-- Gets information about the specified connection.
+--
+-- Use CloudTrail to monitor this action or Amazon Web Services managed
+-- policy for Amazon Web Services Outposts to secure it. For more
+-- information, see
+-- <https://docs.aws.amazon.com/outposts/latest/userguide/security-iam-awsmanpol.html Amazon Web Services managed policies for Amazon Web Services Outposts>
+-- and
+-- <https://docs.aws.amazon.com/outposts/latest/userguide/logging-using-cloudtrail.html Logging Amazon Web Services Outposts API calls with Amazon Web Services CloudTrail>
+-- in the /Amazon Web Services Outposts User Guide/.
+module Amazonka.Outposts.GetConnection
+  ( -- * Creating a Request
+    GetConnection (..),
+    newGetConnection,
+
+    -- * Request Lenses
+    getConnection_connectionId,
+
+    -- * Destructuring the Response
+    GetConnectionResponse (..),
+    newGetConnectionResponse,
+
+    -- * Response Lenses
+    getConnectionResponse_connectionDetails,
+    getConnectionResponse_connectionId,
+    getConnectionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetConnection' smart constructor.
+data GetConnection = GetConnection'
+  { -- | The ID of the connection.
+    connectionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetConnection' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectionId', 'getConnection_connectionId' - The ID of the connection.
+newGetConnection ::
+  -- | 'connectionId'
+  Prelude.Text ->
+  GetConnection
+newGetConnection pConnectionId_ =
+  GetConnection' {connectionId = pConnectionId_}
+
+-- | The ID of the connection.
+getConnection_connectionId :: Lens.Lens' GetConnection Prelude.Text
+getConnection_connectionId = Lens.lens (\GetConnection' {connectionId} -> connectionId) (\s@GetConnection' {} a -> s {connectionId = a} :: GetConnection)
+
+instance Core.AWSRequest GetConnection where
+  type
+    AWSResponse GetConnection =
+      GetConnectionResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetConnectionResponse'
+            Prelude.<$> (x Data..?> "ConnectionDetails")
+            Prelude.<*> (x Data..?> "ConnectionId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetConnection where
+  hashWithSalt _salt GetConnection' {..} =
+    _salt `Prelude.hashWithSalt` connectionId
+
+instance Prelude.NFData GetConnection where
+  rnf GetConnection' {..} = Prelude.rnf connectionId
+
+instance Data.ToHeaders GetConnection where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetConnection where
+  toPath GetConnection' {..} =
+    Prelude.mconcat
+      ["/connections/", Data.toBS connectionId]
+
+instance Data.ToQuery GetConnection where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetConnectionResponse' smart constructor.
+data GetConnectionResponse = GetConnectionResponse'
+  { -- | Information about the connection.
+    connectionDetails :: Prelude.Maybe ConnectionDetails,
+    -- | The ID of the connection.
+    connectionId :: 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 'GetConnectionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectionDetails', 'getConnectionResponse_connectionDetails' - Information about the connection.
+--
+-- 'connectionId', 'getConnectionResponse_connectionId' - The ID of the connection.
+--
+-- 'httpStatus', 'getConnectionResponse_httpStatus' - The response's http status code.
+newGetConnectionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetConnectionResponse
+newGetConnectionResponse pHttpStatus_ =
+  GetConnectionResponse'
+    { connectionDetails =
+        Prelude.Nothing,
+      connectionId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the connection.
+getConnectionResponse_connectionDetails :: Lens.Lens' GetConnectionResponse (Prelude.Maybe ConnectionDetails)
+getConnectionResponse_connectionDetails = Lens.lens (\GetConnectionResponse' {connectionDetails} -> connectionDetails) (\s@GetConnectionResponse' {} a -> s {connectionDetails = a} :: GetConnectionResponse)
+
+-- | The ID of the connection.
+getConnectionResponse_connectionId :: Lens.Lens' GetConnectionResponse (Prelude.Maybe Prelude.Text)
+getConnectionResponse_connectionId = Lens.lens (\GetConnectionResponse' {connectionId} -> connectionId) (\s@GetConnectionResponse' {} a -> s {connectionId = a} :: GetConnectionResponse)
+
+-- | The response's http status code.
+getConnectionResponse_httpStatus :: Lens.Lens' GetConnectionResponse Prelude.Int
+getConnectionResponse_httpStatus = Lens.lens (\GetConnectionResponse' {httpStatus} -> httpStatus) (\s@GetConnectionResponse' {} a -> s {httpStatus = a} :: GetConnectionResponse)
+
+instance Prelude.NFData GetConnectionResponse where
+  rnf GetConnectionResponse' {..} =
+    Prelude.rnf connectionDetails
+      `Prelude.seq` Prelude.rnf connectionId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/GetOrder.hs b/gen/Amazonka/Outposts/GetOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/GetOrder.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.Outposts.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 information about the specified order.
+module Amazonka.Outposts.GetOrder
+  ( -- * Creating a Request
+    GetOrder (..),
+    newGetOrder,
+
+    -- * Request Lenses
+    getOrder_orderId,
+
+    -- * Destructuring the Response
+    GetOrderResponse (..),
+    newGetOrderResponse,
+
+    -- * Response Lenses
+    getOrderResponse_order,
+    getOrderResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetOrder' smart constructor.
+data GetOrder = GetOrder'
+  { -- | The ID of the order.
+    orderId :: 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:
+--
+-- 'orderId', 'getOrder_orderId' - The ID of the order.
+newGetOrder ::
+  -- | 'orderId'
+  Prelude.Text ->
+  GetOrder
+newGetOrder pOrderId_ =
+  GetOrder' {orderId = pOrderId_}
+
+-- | The ID of the order.
+getOrder_orderId :: Lens.Lens' GetOrder Prelude.Text
+getOrder_orderId = Lens.lens (\GetOrder' {orderId} -> orderId) (\s@GetOrder' {} a -> s {orderId = 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..?> "Order")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetOrder where
+  hashWithSalt _salt GetOrder' {..} =
+    _salt `Prelude.hashWithSalt` orderId
+
+instance Prelude.NFData GetOrder where
+  rnf GetOrder' {..} = Prelude.rnf orderId
+
+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 ["/orders/", Data.toBS orderId]
+
+instance Data.ToQuery GetOrder where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetOrderResponse' smart constructor.
+data GetOrderResponse = GetOrderResponse'
+  { order :: Prelude.Maybe Order,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, 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:
+--
+-- 'order', 'getOrderResponse_order' - Undocumented member.
+--
+-- 'httpStatus', 'getOrderResponse_httpStatus' - The response's http status code.
+newGetOrderResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetOrderResponse
+newGetOrderResponse pHttpStatus_ =
+  GetOrderResponse'
+    { order = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+getOrderResponse_order :: Lens.Lens' GetOrderResponse (Prelude.Maybe Order)
+getOrderResponse_order = Lens.lens (\GetOrderResponse' {order} -> order) (\s@GetOrderResponse' {} a -> s {order = a} :: GetOrderResponse)
+
+-- | 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)
+
+instance Prelude.NFData GetOrderResponse where
+  rnf GetOrderResponse' {..} =
+    Prelude.rnf order
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/GetOutpost.hs b/gen/Amazonka/Outposts/GetOutpost.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/GetOutpost.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.Outposts.GetOutpost
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about the specified Outpost.
+module Amazonka.Outposts.GetOutpost
+  ( -- * Creating a Request
+    GetOutpost (..),
+    newGetOutpost,
+
+    -- * Request Lenses
+    getOutpost_outpostId,
+
+    -- * Destructuring the Response
+    GetOutpostResponse (..),
+    newGetOutpostResponse,
+
+    -- * Response Lenses
+    getOutpostResponse_outpost,
+    getOutpostResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetOutpost' smart constructor.
+data GetOutpost = GetOutpost'
+  { -- | The ID or the Amazon Resource Name (ARN) of the Outpost.
+    outpostId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetOutpost' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'outpostId', 'getOutpost_outpostId' - The ID or the Amazon Resource Name (ARN) of the Outpost.
+newGetOutpost ::
+  -- | 'outpostId'
+  Prelude.Text ->
+  GetOutpost
+newGetOutpost pOutpostId_ =
+  GetOutpost' {outpostId = pOutpostId_}
+
+-- | The ID or the Amazon Resource Name (ARN) of the Outpost.
+getOutpost_outpostId :: Lens.Lens' GetOutpost Prelude.Text
+getOutpost_outpostId = Lens.lens (\GetOutpost' {outpostId} -> outpostId) (\s@GetOutpost' {} a -> s {outpostId = a} :: GetOutpost)
+
+instance Core.AWSRequest GetOutpost where
+  type AWSResponse GetOutpost = GetOutpostResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetOutpostResponse'
+            Prelude.<$> (x Data..?> "Outpost")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetOutpost where
+  hashWithSalt _salt GetOutpost' {..} =
+    _salt `Prelude.hashWithSalt` outpostId
+
+instance Prelude.NFData GetOutpost where
+  rnf GetOutpost' {..} = Prelude.rnf outpostId
+
+instance Data.ToHeaders GetOutpost where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetOutpost where
+  toPath GetOutpost' {..} =
+    Prelude.mconcat ["/outposts/", Data.toBS outpostId]
+
+instance Data.ToQuery GetOutpost where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetOutpostResponse' smart constructor.
+data GetOutpostResponse = GetOutpostResponse'
+  { outpost :: Prelude.Maybe Outpost,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetOutpostResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'outpost', 'getOutpostResponse_outpost' - Undocumented member.
+--
+-- 'httpStatus', 'getOutpostResponse_httpStatus' - The response's http status code.
+newGetOutpostResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetOutpostResponse
+newGetOutpostResponse pHttpStatus_ =
+  GetOutpostResponse'
+    { outpost = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+getOutpostResponse_outpost :: Lens.Lens' GetOutpostResponse (Prelude.Maybe Outpost)
+getOutpostResponse_outpost = Lens.lens (\GetOutpostResponse' {outpost} -> outpost) (\s@GetOutpostResponse' {} a -> s {outpost = a} :: GetOutpostResponse)
+
+-- | The response's http status code.
+getOutpostResponse_httpStatus :: Lens.Lens' GetOutpostResponse Prelude.Int
+getOutpostResponse_httpStatus = Lens.lens (\GetOutpostResponse' {httpStatus} -> httpStatus) (\s@GetOutpostResponse' {} a -> s {httpStatus = a} :: GetOutpostResponse)
+
+instance Prelude.NFData GetOutpostResponse where
+  rnf GetOutpostResponse' {..} =
+    Prelude.rnf outpost
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/GetOutpostInstanceTypes.hs b/gen/Amazonka/Outposts/GetOutpostInstanceTypes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/GetOutpostInstanceTypes.hs
@@ -0,0 +1,226 @@
+{-# 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.Outposts.GetOutpostInstanceTypes
+-- 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 instance types for the specified Outpost.
+module Amazonka.Outposts.GetOutpostInstanceTypes
+  ( -- * Creating a Request
+    GetOutpostInstanceTypes (..),
+    newGetOutpostInstanceTypes,
+
+    -- * Request Lenses
+    getOutpostInstanceTypes_maxResults,
+    getOutpostInstanceTypes_nextToken,
+    getOutpostInstanceTypes_outpostId,
+
+    -- * Destructuring the Response
+    GetOutpostInstanceTypesResponse (..),
+    newGetOutpostInstanceTypesResponse,
+
+    -- * Response Lenses
+    getOutpostInstanceTypesResponse_instanceTypes,
+    getOutpostInstanceTypesResponse_nextToken,
+    getOutpostInstanceTypesResponse_outpostArn,
+    getOutpostInstanceTypesResponse_outpostId,
+    getOutpostInstanceTypesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetOutpostInstanceTypes' smart constructor.
+data GetOutpostInstanceTypes = GetOutpostInstanceTypes'
+  { maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID or the Amazon Resource Name (ARN) of the Outpost.
+    outpostId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetOutpostInstanceTypes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'getOutpostInstanceTypes_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'getOutpostInstanceTypes_nextToken' - Undocumented member.
+--
+-- 'outpostId', 'getOutpostInstanceTypes_outpostId' - The ID or the Amazon Resource Name (ARN) of the Outpost.
+newGetOutpostInstanceTypes ::
+  -- | 'outpostId'
+  Prelude.Text ->
+  GetOutpostInstanceTypes
+newGetOutpostInstanceTypes pOutpostId_ =
+  GetOutpostInstanceTypes'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      outpostId = pOutpostId_
+    }
+
+-- | Undocumented member.
+getOutpostInstanceTypes_maxResults :: Lens.Lens' GetOutpostInstanceTypes (Prelude.Maybe Prelude.Natural)
+getOutpostInstanceTypes_maxResults = Lens.lens (\GetOutpostInstanceTypes' {maxResults} -> maxResults) (\s@GetOutpostInstanceTypes' {} a -> s {maxResults = a} :: GetOutpostInstanceTypes)
+
+-- | Undocumented member.
+getOutpostInstanceTypes_nextToken :: Lens.Lens' GetOutpostInstanceTypes (Prelude.Maybe Prelude.Text)
+getOutpostInstanceTypes_nextToken = Lens.lens (\GetOutpostInstanceTypes' {nextToken} -> nextToken) (\s@GetOutpostInstanceTypes' {} a -> s {nextToken = a} :: GetOutpostInstanceTypes)
+
+-- | The ID or the Amazon Resource Name (ARN) of the Outpost.
+getOutpostInstanceTypes_outpostId :: Lens.Lens' GetOutpostInstanceTypes Prelude.Text
+getOutpostInstanceTypes_outpostId = Lens.lens (\GetOutpostInstanceTypes' {outpostId} -> outpostId) (\s@GetOutpostInstanceTypes' {} a -> s {outpostId = a} :: GetOutpostInstanceTypes)
+
+instance Core.AWSRequest GetOutpostInstanceTypes where
+  type
+    AWSResponse GetOutpostInstanceTypes =
+      GetOutpostInstanceTypesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetOutpostInstanceTypesResponse'
+            Prelude.<$> (x Data..?> "InstanceTypes" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "OutpostArn")
+            Prelude.<*> (x Data..?> "OutpostId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetOutpostInstanceTypes where
+  hashWithSalt _salt GetOutpostInstanceTypes' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` outpostId
+
+instance Prelude.NFData GetOutpostInstanceTypes where
+  rnf GetOutpostInstanceTypes' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf outpostId
+
+instance Data.ToHeaders GetOutpostInstanceTypes where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetOutpostInstanceTypes where
+  toPath GetOutpostInstanceTypes' {..} =
+    Prelude.mconcat
+      ["/outposts/", Data.toBS outpostId, "/instanceTypes"]
+
+instance Data.ToQuery GetOutpostInstanceTypes where
+  toQuery GetOutpostInstanceTypes' {..} =
+    Prelude.mconcat
+      [ "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newGetOutpostInstanceTypesResponse' smart constructor.
+data GetOutpostInstanceTypesResponse = GetOutpostInstanceTypesResponse'
+  { instanceTypes :: Prelude.Maybe [InstanceTypeItem],
+    nextToken :: Prelude.Maybe Prelude.Text,
+    outpostArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Outpost.
+    outpostId :: 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 'GetOutpostInstanceTypesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceTypes', 'getOutpostInstanceTypesResponse_instanceTypes' - Undocumented member.
+--
+-- 'nextToken', 'getOutpostInstanceTypesResponse_nextToken' - Undocumented member.
+--
+-- 'outpostArn', 'getOutpostInstanceTypesResponse_outpostArn' - Undocumented member.
+--
+-- 'outpostId', 'getOutpostInstanceTypesResponse_outpostId' - The ID of the Outpost.
+--
+-- 'httpStatus', 'getOutpostInstanceTypesResponse_httpStatus' - The response's http status code.
+newGetOutpostInstanceTypesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetOutpostInstanceTypesResponse
+newGetOutpostInstanceTypesResponse pHttpStatus_ =
+  GetOutpostInstanceTypesResponse'
+    { instanceTypes =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      outpostArn = Prelude.Nothing,
+      outpostId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+getOutpostInstanceTypesResponse_instanceTypes :: Lens.Lens' GetOutpostInstanceTypesResponse (Prelude.Maybe [InstanceTypeItem])
+getOutpostInstanceTypesResponse_instanceTypes = Lens.lens (\GetOutpostInstanceTypesResponse' {instanceTypes} -> instanceTypes) (\s@GetOutpostInstanceTypesResponse' {} a -> s {instanceTypes = a} :: GetOutpostInstanceTypesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+getOutpostInstanceTypesResponse_nextToken :: Lens.Lens' GetOutpostInstanceTypesResponse (Prelude.Maybe Prelude.Text)
+getOutpostInstanceTypesResponse_nextToken = Lens.lens (\GetOutpostInstanceTypesResponse' {nextToken} -> nextToken) (\s@GetOutpostInstanceTypesResponse' {} a -> s {nextToken = a} :: GetOutpostInstanceTypesResponse)
+
+-- | Undocumented member.
+getOutpostInstanceTypesResponse_outpostArn :: Lens.Lens' GetOutpostInstanceTypesResponse (Prelude.Maybe Prelude.Text)
+getOutpostInstanceTypesResponse_outpostArn = Lens.lens (\GetOutpostInstanceTypesResponse' {outpostArn} -> outpostArn) (\s@GetOutpostInstanceTypesResponse' {} a -> s {outpostArn = a} :: GetOutpostInstanceTypesResponse)
+
+-- | The ID of the Outpost.
+getOutpostInstanceTypesResponse_outpostId :: Lens.Lens' GetOutpostInstanceTypesResponse (Prelude.Maybe Prelude.Text)
+getOutpostInstanceTypesResponse_outpostId = Lens.lens (\GetOutpostInstanceTypesResponse' {outpostId} -> outpostId) (\s@GetOutpostInstanceTypesResponse' {} a -> s {outpostId = a} :: GetOutpostInstanceTypesResponse)
+
+-- | The response's http status code.
+getOutpostInstanceTypesResponse_httpStatus :: Lens.Lens' GetOutpostInstanceTypesResponse Prelude.Int
+getOutpostInstanceTypesResponse_httpStatus = Lens.lens (\GetOutpostInstanceTypesResponse' {httpStatus} -> httpStatus) (\s@GetOutpostInstanceTypesResponse' {} a -> s {httpStatus = a} :: GetOutpostInstanceTypesResponse)
+
+instance
+  Prelude.NFData
+    GetOutpostInstanceTypesResponse
+  where
+  rnf GetOutpostInstanceTypesResponse' {..} =
+    Prelude.rnf instanceTypes
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf outpostArn
+      `Prelude.seq` Prelude.rnf outpostId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/GetSite.hs b/gen/Amazonka/Outposts/GetSite.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/GetSite.hs
@@ -0,0 +1,153 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.GetSite
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about the specified Outpost site.
+module Amazonka.Outposts.GetSite
+  ( -- * Creating a Request
+    GetSite (..),
+    newGetSite,
+
+    -- * Request Lenses
+    getSite_siteId,
+
+    -- * Destructuring the Response
+    GetSiteResponse (..),
+    newGetSiteResponse,
+
+    -- * Response Lenses
+    getSiteResponse_site,
+    getSiteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetSite' smart constructor.
+data GetSite = GetSite'
+  { -- | The ID or the Amazon Resource Name (ARN) of the site.
+    siteId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSite' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'siteId', 'getSite_siteId' - The ID or the Amazon Resource Name (ARN) of the site.
+newGetSite ::
+  -- | 'siteId'
+  Prelude.Text ->
+  GetSite
+newGetSite pSiteId_ = GetSite' {siteId = pSiteId_}
+
+-- | The ID or the Amazon Resource Name (ARN) of the site.
+getSite_siteId :: Lens.Lens' GetSite Prelude.Text
+getSite_siteId = Lens.lens (\GetSite' {siteId} -> siteId) (\s@GetSite' {} a -> s {siteId = a} :: GetSite)
+
+instance Core.AWSRequest GetSite where
+  type AWSResponse GetSite = GetSiteResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetSiteResponse'
+            Prelude.<$> (x Data..?> "Site")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetSite where
+  hashWithSalt _salt GetSite' {..} =
+    _salt `Prelude.hashWithSalt` siteId
+
+instance Prelude.NFData GetSite where
+  rnf GetSite' {..} = Prelude.rnf siteId
+
+instance Data.ToHeaders GetSite where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetSite where
+  toPath GetSite' {..} =
+    Prelude.mconcat ["/sites/", Data.toBS siteId]
+
+instance Data.ToQuery GetSite where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetSiteResponse' smart constructor.
+data GetSiteResponse = GetSiteResponse'
+  { site :: Prelude.Maybe Site,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSiteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'site', 'getSiteResponse_site' - Undocumented member.
+--
+-- 'httpStatus', 'getSiteResponse_httpStatus' - The response's http status code.
+newGetSiteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSiteResponse
+newGetSiteResponse pHttpStatus_ =
+  GetSiteResponse'
+    { site = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+getSiteResponse_site :: Lens.Lens' GetSiteResponse (Prelude.Maybe Site)
+getSiteResponse_site = Lens.lens (\GetSiteResponse' {site} -> site) (\s@GetSiteResponse' {} a -> s {site = a} :: GetSiteResponse)
+
+-- | The response's http status code.
+getSiteResponse_httpStatus :: Lens.Lens' GetSiteResponse Prelude.Int
+getSiteResponse_httpStatus = Lens.lens (\GetSiteResponse' {httpStatus} -> httpStatus) (\s@GetSiteResponse' {} a -> s {httpStatus = a} :: GetSiteResponse)
+
+instance Prelude.NFData GetSiteResponse where
+  rnf GetSiteResponse' {..} =
+    Prelude.rnf site
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/GetSiteAddress.hs b/gen/Amazonka/Outposts/GetSiteAddress.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/GetSiteAddress.hs
@@ -0,0 +1,200 @@
+{-# 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.Outposts.GetSiteAddress
+-- 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 site address of the specified site.
+module Amazonka.Outposts.GetSiteAddress
+  ( -- * Creating a Request
+    GetSiteAddress (..),
+    newGetSiteAddress,
+
+    -- * Request Lenses
+    getSiteAddress_siteId,
+    getSiteAddress_addressType,
+
+    -- * Destructuring the Response
+    GetSiteAddressResponse (..),
+    newGetSiteAddressResponse,
+
+    -- * Response Lenses
+    getSiteAddressResponse_address,
+    getSiteAddressResponse_addressType,
+    getSiteAddressResponse_siteId,
+    getSiteAddressResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetSiteAddress' smart constructor.
+data GetSiteAddress = GetSiteAddress'
+  { -- | The ID or the Amazon Resource Name (ARN) of the site.
+    siteId :: Prelude.Text,
+    -- | The type of the address you request.
+    addressType :: AddressType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSiteAddress' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'siteId', 'getSiteAddress_siteId' - The ID or the Amazon Resource Name (ARN) of the site.
+--
+-- 'addressType', 'getSiteAddress_addressType' - The type of the address you request.
+newGetSiteAddress ::
+  -- | 'siteId'
+  Prelude.Text ->
+  -- | 'addressType'
+  AddressType ->
+  GetSiteAddress
+newGetSiteAddress pSiteId_ pAddressType_ =
+  GetSiteAddress'
+    { siteId = pSiteId_,
+      addressType = pAddressType_
+    }
+
+-- | The ID or the Amazon Resource Name (ARN) of the site.
+getSiteAddress_siteId :: Lens.Lens' GetSiteAddress Prelude.Text
+getSiteAddress_siteId = Lens.lens (\GetSiteAddress' {siteId} -> siteId) (\s@GetSiteAddress' {} a -> s {siteId = a} :: GetSiteAddress)
+
+-- | The type of the address you request.
+getSiteAddress_addressType :: Lens.Lens' GetSiteAddress AddressType
+getSiteAddress_addressType = Lens.lens (\GetSiteAddress' {addressType} -> addressType) (\s@GetSiteAddress' {} a -> s {addressType = a} :: GetSiteAddress)
+
+instance Core.AWSRequest GetSiteAddress where
+  type
+    AWSResponse GetSiteAddress =
+      GetSiteAddressResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetSiteAddressResponse'
+            Prelude.<$> (x Data..?> "Address")
+            Prelude.<*> (x Data..?> "AddressType")
+            Prelude.<*> (x Data..?> "SiteId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetSiteAddress where
+  hashWithSalt _salt GetSiteAddress' {..} =
+    _salt
+      `Prelude.hashWithSalt` siteId
+      `Prelude.hashWithSalt` addressType
+
+instance Prelude.NFData GetSiteAddress where
+  rnf GetSiteAddress' {..} =
+    Prelude.rnf siteId
+      `Prelude.seq` Prelude.rnf addressType
+
+instance Data.ToHeaders GetSiteAddress where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetSiteAddress where
+  toPath GetSiteAddress' {..} =
+    Prelude.mconcat
+      ["/sites/", Data.toBS siteId, "/address"]
+
+instance Data.ToQuery GetSiteAddress where
+  toQuery GetSiteAddress' {..} =
+    Prelude.mconcat ["AddressType" Data.=: addressType]
+
+-- | /See:/ 'newGetSiteAddressResponse' smart constructor.
+data GetSiteAddressResponse = GetSiteAddressResponse'
+  { -- | Information about the address.
+    address :: Prelude.Maybe Address,
+    -- | The type of the address you receive.
+    addressType :: Prelude.Maybe AddressType,
+    siteId :: 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 'GetSiteAddressResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'address', 'getSiteAddressResponse_address' - Information about the address.
+--
+-- 'addressType', 'getSiteAddressResponse_addressType' - The type of the address you receive.
+--
+-- 'siteId', 'getSiteAddressResponse_siteId' - Undocumented member.
+--
+-- 'httpStatus', 'getSiteAddressResponse_httpStatus' - The response's http status code.
+newGetSiteAddressResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSiteAddressResponse
+newGetSiteAddressResponse pHttpStatus_ =
+  GetSiteAddressResponse'
+    { address = Prelude.Nothing,
+      addressType = Prelude.Nothing,
+      siteId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the address.
+getSiteAddressResponse_address :: Lens.Lens' GetSiteAddressResponse (Prelude.Maybe Address)
+getSiteAddressResponse_address = Lens.lens (\GetSiteAddressResponse' {address} -> address) (\s@GetSiteAddressResponse' {} a -> s {address = a} :: GetSiteAddressResponse)
+
+-- | The type of the address you receive.
+getSiteAddressResponse_addressType :: Lens.Lens' GetSiteAddressResponse (Prelude.Maybe AddressType)
+getSiteAddressResponse_addressType = Lens.lens (\GetSiteAddressResponse' {addressType} -> addressType) (\s@GetSiteAddressResponse' {} a -> s {addressType = a} :: GetSiteAddressResponse)
+
+-- | Undocumented member.
+getSiteAddressResponse_siteId :: Lens.Lens' GetSiteAddressResponse (Prelude.Maybe Prelude.Text)
+getSiteAddressResponse_siteId = Lens.lens (\GetSiteAddressResponse' {siteId} -> siteId) (\s@GetSiteAddressResponse' {} a -> s {siteId = a} :: GetSiteAddressResponse)
+
+-- | The response's http status code.
+getSiteAddressResponse_httpStatus :: Lens.Lens' GetSiteAddressResponse Prelude.Int
+getSiteAddressResponse_httpStatus = Lens.lens (\GetSiteAddressResponse' {httpStatus} -> httpStatus) (\s@GetSiteAddressResponse' {} a -> s {httpStatus = a} :: GetSiteAddressResponse)
+
+instance Prelude.NFData GetSiteAddressResponse where
+  rnf GetSiteAddressResponse' {..} =
+    Prelude.rnf address
+      `Prelude.seq` Prelude.rnf addressType
+      `Prelude.seq` Prelude.rnf siteId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/Lens.hs b/gen/Amazonka/Outposts/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Lens.hs
@@ -0,0 +1,387 @@
+{-# 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.Outposts.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.Outposts.Lens
+  ( -- * Operations
+
+    -- ** CancelOrder
+    cancelOrder_orderId,
+    cancelOrderResponse_httpStatus,
+
+    -- ** CreateOrder
+    createOrder_paymentTerm,
+    createOrder_outpostIdentifier,
+    createOrder_lineItems,
+    createOrder_paymentOption,
+    createOrderResponse_order,
+    createOrderResponse_httpStatus,
+
+    -- ** CreateOutpost
+    createOutpost_availabilityZone,
+    createOutpost_availabilityZoneId,
+    createOutpost_description,
+    createOutpost_supportedHardwareType,
+    createOutpost_tags,
+    createOutpost_name,
+    createOutpost_siteId,
+    createOutpostResponse_outpost,
+    createOutpostResponse_httpStatus,
+
+    -- ** CreateSite
+    createSite_description,
+    createSite_notes,
+    createSite_operatingAddress,
+    createSite_rackPhysicalProperties,
+    createSite_shippingAddress,
+    createSite_tags,
+    createSite_name,
+    createSiteResponse_site,
+    createSiteResponse_httpStatus,
+
+    -- ** DeleteOutpost
+    deleteOutpost_outpostId,
+    deleteOutpostResponse_httpStatus,
+
+    -- ** DeleteSite
+    deleteSite_siteId,
+    deleteSiteResponse_httpStatus,
+
+    -- ** GetCatalogItem
+    getCatalogItem_catalogItemId,
+    getCatalogItemResponse_catalogItem,
+    getCatalogItemResponse_httpStatus,
+
+    -- ** GetConnection
+    getConnection_connectionId,
+    getConnectionResponse_connectionDetails,
+    getConnectionResponse_connectionId,
+    getConnectionResponse_httpStatus,
+
+    -- ** GetOrder
+    getOrder_orderId,
+    getOrderResponse_order,
+    getOrderResponse_httpStatus,
+
+    -- ** GetOutpost
+    getOutpost_outpostId,
+    getOutpostResponse_outpost,
+    getOutpostResponse_httpStatus,
+
+    -- ** GetOutpostInstanceTypes
+    getOutpostInstanceTypes_maxResults,
+    getOutpostInstanceTypes_nextToken,
+    getOutpostInstanceTypes_outpostId,
+    getOutpostInstanceTypesResponse_instanceTypes,
+    getOutpostInstanceTypesResponse_nextToken,
+    getOutpostInstanceTypesResponse_outpostArn,
+    getOutpostInstanceTypesResponse_outpostId,
+    getOutpostInstanceTypesResponse_httpStatus,
+
+    -- ** GetSite
+    getSite_siteId,
+    getSiteResponse_site,
+    getSiteResponse_httpStatus,
+
+    -- ** GetSiteAddress
+    getSiteAddress_siteId,
+    getSiteAddress_addressType,
+    getSiteAddressResponse_address,
+    getSiteAddressResponse_addressType,
+    getSiteAddressResponse_siteId,
+    getSiteAddressResponse_httpStatus,
+
+    -- ** ListAssets
+    listAssets_hostIdFilter,
+    listAssets_maxResults,
+    listAssets_nextToken,
+    listAssets_statusFilter,
+    listAssets_outpostIdentifier,
+    listAssetsResponse_assets,
+    listAssetsResponse_nextToken,
+    listAssetsResponse_httpStatus,
+
+    -- ** ListCatalogItems
+    listCatalogItems_eC2FamilyFilter,
+    listCatalogItems_itemClassFilter,
+    listCatalogItems_maxResults,
+    listCatalogItems_nextToken,
+    listCatalogItems_supportedStorageFilter,
+    listCatalogItemsResponse_catalogItems,
+    listCatalogItemsResponse_nextToken,
+    listCatalogItemsResponse_httpStatus,
+
+    -- ** ListOrders
+    listOrders_maxResults,
+    listOrders_nextToken,
+    listOrders_outpostIdentifierFilter,
+    listOrdersResponse_nextToken,
+    listOrdersResponse_orders,
+    listOrdersResponse_httpStatus,
+
+    -- ** ListOutposts
+    listOutposts_availabilityZoneFilter,
+    listOutposts_availabilityZoneIdFilter,
+    listOutposts_lifeCycleStatusFilter,
+    listOutposts_maxResults,
+    listOutposts_nextToken,
+    listOutpostsResponse_nextToken,
+    listOutpostsResponse_outposts,
+    listOutpostsResponse_httpStatus,
+
+    -- ** ListSites
+    listSites_maxResults,
+    listSites_nextToken,
+    listSites_operatingAddressCityFilter,
+    listSites_operatingAddressCountryCodeFilter,
+    listSites_operatingAddressStateOrRegionFilter,
+    listSitesResponse_nextToken,
+    listSitesResponse_sites,
+    listSitesResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** StartConnection
+    startConnection_deviceSerialNumber,
+    startConnection_assetId,
+    startConnection_clientPublicKey,
+    startConnection_networkInterfaceDeviceIndex,
+    startConnectionResponse_connectionId,
+    startConnectionResponse_underlayIpAddress,
+    startConnectionResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdateOutpost
+    updateOutpost_description,
+    updateOutpost_name,
+    updateOutpost_supportedHardwareType,
+    updateOutpost_outpostId,
+    updateOutpostResponse_outpost,
+    updateOutpostResponse_httpStatus,
+
+    -- ** UpdateSite
+    updateSite_description,
+    updateSite_name,
+    updateSite_notes,
+    updateSite_siteId,
+    updateSiteResponse_site,
+    updateSiteResponse_httpStatus,
+
+    -- ** UpdateSiteAddress
+    updateSiteAddress_siteId,
+    updateSiteAddress_addressType,
+    updateSiteAddress_address,
+    updateSiteAddressResponse_address,
+    updateSiteAddressResponse_addressType,
+    updateSiteAddressResponse_httpStatus,
+
+    -- ** UpdateSiteRackPhysicalProperties
+    updateSiteRackPhysicalProperties_fiberOpticCableType,
+    updateSiteRackPhysicalProperties_maximumSupportedWeightLbs,
+    updateSiteRackPhysicalProperties_opticalStandard,
+    updateSiteRackPhysicalProperties_powerConnector,
+    updateSiteRackPhysicalProperties_powerDrawKva,
+    updateSiteRackPhysicalProperties_powerFeedDrop,
+    updateSiteRackPhysicalProperties_powerPhase,
+    updateSiteRackPhysicalProperties_uplinkCount,
+    updateSiteRackPhysicalProperties_uplinkGbps,
+    updateSiteRackPhysicalProperties_siteId,
+    updateSiteRackPhysicalPropertiesResponse_site,
+    updateSiteRackPhysicalPropertiesResponse_httpStatus,
+
+    -- * Types
+
+    -- ** Address
+    address_addressLine2,
+    address_addressLine3,
+    address_contactName,
+    address_contactPhoneNumber,
+    address_districtOrCounty,
+    address_municipality,
+    address_addressLine1,
+    address_city,
+    address_stateOrRegion,
+    address_postalCode,
+    address_countryCode,
+
+    -- ** AssetInfo
+    assetInfo_assetId,
+    assetInfo_assetLocation,
+    assetInfo_assetType,
+    assetInfo_computeAttributes,
+    assetInfo_rackId,
+
+    -- ** AssetLocation
+    assetLocation_rackElevation,
+
+    -- ** CatalogItem
+    catalogItem_catalogItemId,
+    catalogItem_eC2Capacities,
+    catalogItem_itemStatus,
+    catalogItem_powerKva,
+    catalogItem_supportedStorage,
+    catalogItem_supportedUplinkGbps,
+    catalogItem_weightLbs,
+
+    -- ** ComputeAttributes
+    computeAttributes_hostId,
+    computeAttributes_state,
+
+    -- ** ConnectionDetails
+    connectionDetails_allowedIps,
+    connectionDetails_clientPublicKey,
+    connectionDetails_clientTunnelAddress,
+    connectionDetails_serverEndpoint,
+    connectionDetails_serverPublicKey,
+    connectionDetails_serverTunnelAddress,
+
+    -- ** EC2Capacity
+    eC2Capacity_family,
+    eC2Capacity_maxSize,
+    eC2Capacity_quantity,
+
+    -- ** InstanceTypeItem
+    instanceTypeItem_instanceType,
+
+    -- ** LineItem
+    lineItem_assetInformationList,
+    lineItem_catalogItemId,
+    lineItem_lineItemId,
+    lineItem_quantity,
+    lineItem_shipmentInformation,
+    lineItem_status,
+
+    -- ** LineItemAssetInformation
+    lineItemAssetInformation_assetId,
+    lineItemAssetInformation_macAddressList,
+
+    -- ** LineItemRequest
+    lineItemRequest_catalogItemId,
+    lineItemRequest_quantity,
+
+    -- ** Order
+    order_lineItems,
+    order_orderFulfilledDate,
+    order_orderId,
+    order_orderSubmissionDate,
+    order_outpostId,
+    order_paymentOption,
+    order_status,
+
+    -- ** OrderSummary
+    orderSummary_lineItemCountsByStatus,
+    orderSummary_orderFulfilledDate,
+    orderSummary_orderId,
+    orderSummary_orderSubmissionDate,
+    orderSummary_orderType,
+    orderSummary_outpostId,
+    orderSummary_status,
+
+    -- ** Outpost
+    outpost_availabilityZone,
+    outpost_availabilityZoneId,
+    outpost_description,
+    outpost_lifeCycleStatus,
+    outpost_name,
+    outpost_outpostArn,
+    outpost_outpostId,
+    outpost_ownerId,
+    outpost_siteArn,
+    outpost_siteId,
+    outpost_supportedHardwareType,
+    outpost_tags,
+
+    -- ** RackPhysicalProperties
+    rackPhysicalProperties_fiberOpticCableType,
+    rackPhysicalProperties_maximumSupportedWeightLbs,
+    rackPhysicalProperties_opticalStandard,
+    rackPhysicalProperties_powerConnector,
+    rackPhysicalProperties_powerDrawKva,
+    rackPhysicalProperties_powerFeedDrop,
+    rackPhysicalProperties_powerPhase,
+    rackPhysicalProperties_uplinkCount,
+    rackPhysicalProperties_uplinkGbps,
+
+    -- ** ShipmentInformation
+    shipmentInformation_shipmentCarrier,
+    shipmentInformation_shipmentTrackingNumber,
+
+    -- ** Site
+    site_accountId,
+    site_description,
+    site_name,
+    site_notes,
+    site_operatingAddressCity,
+    site_operatingAddressCountryCode,
+    site_operatingAddressStateOrRegion,
+    site_rackPhysicalProperties,
+    site_siteArn,
+    site_siteId,
+    site_tags,
+  )
+where
+
+import Amazonka.Outposts.CancelOrder
+import Amazonka.Outposts.CreateOrder
+import Amazonka.Outposts.CreateOutpost
+import Amazonka.Outposts.CreateSite
+import Amazonka.Outposts.DeleteOutpost
+import Amazonka.Outposts.DeleteSite
+import Amazonka.Outposts.GetCatalogItem
+import Amazonka.Outposts.GetConnection
+import Amazonka.Outposts.GetOrder
+import Amazonka.Outposts.GetOutpost
+import Amazonka.Outposts.GetOutpostInstanceTypes
+import Amazonka.Outposts.GetSite
+import Amazonka.Outposts.GetSiteAddress
+import Amazonka.Outposts.ListAssets
+import Amazonka.Outposts.ListCatalogItems
+import Amazonka.Outposts.ListOrders
+import Amazonka.Outposts.ListOutposts
+import Amazonka.Outposts.ListSites
+import Amazonka.Outposts.ListTagsForResource
+import Amazonka.Outposts.StartConnection
+import Amazonka.Outposts.TagResource
+import Amazonka.Outposts.Types.Address
+import Amazonka.Outposts.Types.AssetInfo
+import Amazonka.Outposts.Types.AssetLocation
+import Amazonka.Outposts.Types.CatalogItem
+import Amazonka.Outposts.Types.ComputeAttributes
+import Amazonka.Outposts.Types.ConnectionDetails
+import Amazonka.Outposts.Types.EC2Capacity
+import Amazonka.Outposts.Types.InstanceTypeItem
+import Amazonka.Outposts.Types.LineItem
+import Amazonka.Outposts.Types.LineItemAssetInformation
+import Amazonka.Outposts.Types.LineItemRequest
+import Amazonka.Outposts.Types.Order
+import Amazonka.Outposts.Types.OrderSummary
+import Amazonka.Outposts.Types.Outpost
+import Amazonka.Outposts.Types.RackPhysicalProperties
+import Amazonka.Outposts.Types.ShipmentInformation
+import Amazonka.Outposts.Types.Site
+import Amazonka.Outposts.UntagResource
+import Amazonka.Outposts.UpdateOutpost
+import Amazonka.Outposts.UpdateSite
+import Amazonka.Outposts.UpdateSiteAddress
+import Amazonka.Outposts.UpdateSiteRackPhysicalProperties
diff --git a/gen/Amazonka/Outposts/ListAssets.hs b/gen/Amazonka/Outposts/ListAssets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/ListAssets.hs
@@ -0,0 +1,236 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.ListAssets
+-- 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 hardware assets for the specified Outpost.
+--
+-- Use filters to return specific results. If you specify multiple filters,
+-- the results include only the resources that match all of the specified
+-- filters. For a filter where you can specify multiple values, the results
+-- include items that match any of the values that you specify for the
+-- filter.
+module Amazonka.Outposts.ListAssets
+  ( -- * Creating a Request
+    ListAssets (..),
+    newListAssets,
+
+    -- * Request Lenses
+    listAssets_hostIdFilter,
+    listAssets_maxResults,
+    listAssets_nextToken,
+    listAssets_statusFilter,
+    listAssets_outpostIdentifier,
+
+    -- * Destructuring the Response
+    ListAssetsResponse (..),
+    newListAssetsResponse,
+
+    -- * Response Lenses
+    listAssetsResponse_assets,
+    listAssetsResponse_nextToken,
+    listAssetsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListAssets' smart constructor.
+data ListAssets = ListAssets'
+  { -- | Filters the results by the host ID of a Dedicated Host.
+    hostIdFilter :: Prelude.Maybe [Prelude.Text],
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Filters the results by state.
+    statusFilter :: Prelude.Maybe (Prelude.NonEmpty AssetState),
+    -- | The ID or the Amazon Resource Name (ARN) of the Outpost.
+    outpostIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAssets' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'hostIdFilter', 'listAssets_hostIdFilter' - Filters the results by the host ID of a Dedicated Host.
+--
+-- 'maxResults', 'listAssets_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'listAssets_nextToken' - Undocumented member.
+--
+-- 'statusFilter', 'listAssets_statusFilter' - Filters the results by state.
+--
+-- 'outpostIdentifier', 'listAssets_outpostIdentifier' - The ID or the Amazon Resource Name (ARN) of the Outpost.
+newListAssets ::
+  -- | 'outpostIdentifier'
+  Prelude.Text ->
+  ListAssets
+newListAssets pOutpostIdentifier_ =
+  ListAssets'
+    { hostIdFilter = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      statusFilter = Prelude.Nothing,
+      outpostIdentifier = pOutpostIdentifier_
+    }
+
+-- | Filters the results by the host ID of a Dedicated Host.
+listAssets_hostIdFilter :: Lens.Lens' ListAssets (Prelude.Maybe [Prelude.Text])
+listAssets_hostIdFilter = Lens.lens (\ListAssets' {hostIdFilter} -> hostIdFilter) (\s@ListAssets' {} a -> s {hostIdFilter = a} :: ListAssets) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+listAssets_maxResults :: Lens.Lens' ListAssets (Prelude.Maybe Prelude.Natural)
+listAssets_maxResults = Lens.lens (\ListAssets' {maxResults} -> maxResults) (\s@ListAssets' {} a -> s {maxResults = a} :: ListAssets)
+
+-- | Undocumented member.
+listAssets_nextToken :: Lens.Lens' ListAssets (Prelude.Maybe Prelude.Text)
+listAssets_nextToken = Lens.lens (\ListAssets' {nextToken} -> nextToken) (\s@ListAssets' {} a -> s {nextToken = a} :: ListAssets)
+
+-- | Filters the results by state.
+listAssets_statusFilter :: Lens.Lens' ListAssets (Prelude.Maybe (Prelude.NonEmpty AssetState))
+listAssets_statusFilter = Lens.lens (\ListAssets' {statusFilter} -> statusFilter) (\s@ListAssets' {} a -> s {statusFilter = a} :: ListAssets) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID or the Amazon Resource Name (ARN) of the Outpost.
+listAssets_outpostIdentifier :: Lens.Lens' ListAssets Prelude.Text
+listAssets_outpostIdentifier = Lens.lens (\ListAssets' {outpostIdentifier} -> outpostIdentifier) (\s@ListAssets' {} a -> s {outpostIdentifier = a} :: ListAssets)
+
+instance Core.AWSRequest ListAssets where
+  type AWSResponse ListAssets = ListAssetsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAssetsResponse'
+            Prelude.<$> (x Data..?> "Assets" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAssets where
+  hashWithSalt _salt ListAssets' {..} =
+    _salt
+      `Prelude.hashWithSalt` hostIdFilter
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` statusFilter
+      `Prelude.hashWithSalt` outpostIdentifier
+
+instance Prelude.NFData ListAssets where
+  rnf ListAssets' {..} =
+    Prelude.rnf hostIdFilter
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf statusFilter
+      `Prelude.seq` Prelude.rnf outpostIdentifier
+
+instance Data.ToHeaders ListAssets where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListAssets where
+  toPath ListAssets' {..} =
+    Prelude.mconcat
+      [ "/outposts/",
+        Data.toBS outpostIdentifier,
+        "/assets"
+      ]
+
+instance Data.ToQuery ListAssets where
+  toQuery ListAssets' {..} =
+    Prelude.mconcat
+      [ "HostIdFilter"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> hostIdFilter),
+        "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken,
+        "StatusFilter"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> statusFilter)
+      ]
+
+-- | /See:/ 'newListAssetsResponse' smart constructor.
+data ListAssetsResponse = ListAssetsResponse'
+  { -- | Information about the hardware assets.
+    assets :: Prelude.Maybe [AssetInfo],
+    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 'ListAssetsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'assets', 'listAssetsResponse_assets' - Information about the hardware assets.
+--
+-- 'nextToken', 'listAssetsResponse_nextToken' - Undocumented member.
+--
+-- 'httpStatus', 'listAssetsResponse_httpStatus' - The response's http status code.
+newListAssetsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAssetsResponse
+newListAssetsResponse pHttpStatus_ =
+  ListAssetsResponse'
+    { assets = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the hardware assets.
+listAssetsResponse_assets :: Lens.Lens' ListAssetsResponse (Prelude.Maybe [AssetInfo])
+listAssetsResponse_assets = Lens.lens (\ListAssetsResponse' {assets} -> assets) (\s@ListAssetsResponse' {} a -> s {assets = a} :: ListAssetsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+listAssetsResponse_nextToken :: Lens.Lens' ListAssetsResponse (Prelude.Maybe Prelude.Text)
+listAssetsResponse_nextToken = Lens.lens (\ListAssetsResponse' {nextToken} -> nextToken) (\s@ListAssetsResponse' {} a -> s {nextToken = a} :: ListAssetsResponse)
+
+-- | The response's http status code.
+listAssetsResponse_httpStatus :: Lens.Lens' ListAssetsResponse Prelude.Int
+listAssetsResponse_httpStatus = Lens.lens (\ListAssetsResponse' {httpStatus} -> httpStatus) (\s@ListAssetsResponse' {} a -> s {httpStatus = a} :: ListAssetsResponse)
+
+instance Prelude.NFData ListAssetsResponse where
+  rnf ListAssetsResponse' {..} =
+    Prelude.rnf assets
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/ListCatalogItems.hs b/gen/Amazonka/Outposts/ListCatalogItems.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/ListCatalogItems.hs
@@ -0,0 +1,242 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.ListCatalogItems
+-- 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 items in the catalog.
+--
+-- Use filters to return specific results. If you specify multiple filters,
+-- the results include only the resources that match all of the specified
+-- filters. For a filter where you can specify multiple values, the results
+-- include items that match any of the values that you specify for the
+-- filter.
+module Amazonka.Outposts.ListCatalogItems
+  ( -- * Creating a Request
+    ListCatalogItems (..),
+    newListCatalogItems,
+
+    -- * Request Lenses
+    listCatalogItems_eC2FamilyFilter,
+    listCatalogItems_itemClassFilter,
+    listCatalogItems_maxResults,
+    listCatalogItems_nextToken,
+    listCatalogItems_supportedStorageFilter,
+
+    -- * Destructuring the Response
+    ListCatalogItemsResponse (..),
+    newListCatalogItemsResponse,
+
+    -- * Response Lenses
+    listCatalogItemsResponse_catalogItems,
+    listCatalogItemsResponse_nextToken,
+    listCatalogItemsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListCatalogItems' smart constructor.
+data ListCatalogItems = ListCatalogItems'
+  { -- | Filters the results by EC2 family (for example, M5).
+    eC2FamilyFilter :: Prelude.Maybe [Prelude.Text],
+    -- | Filters the results by item class.
+    itemClassFilter :: Prelude.Maybe [CatalogItemClass],
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Filters the results by storage option.
+    supportedStorageFilter :: Prelude.Maybe [SupportedStorageEnum]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCatalogItems' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'eC2FamilyFilter', 'listCatalogItems_eC2FamilyFilter' - Filters the results by EC2 family (for example, M5).
+--
+-- 'itemClassFilter', 'listCatalogItems_itemClassFilter' - Filters the results by item class.
+--
+-- 'maxResults', 'listCatalogItems_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'listCatalogItems_nextToken' - Undocumented member.
+--
+-- 'supportedStorageFilter', 'listCatalogItems_supportedStorageFilter' - Filters the results by storage option.
+newListCatalogItems ::
+  ListCatalogItems
+newListCatalogItems =
+  ListCatalogItems'
+    { eC2FamilyFilter =
+        Prelude.Nothing,
+      itemClassFilter = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      supportedStorageFilter = Prelude.Nothing
+    }
+
+-- | Filters the results by EC2 family (for example, M5).
+listCatalogItems_eC2FamilyFilter :: Lens.Lens' ListCatalogItems (Prelude.Maybe [Prelude.Text])
+listCatalogItems_eC2FamilyFilter = Lens.lens (\ListCatalogItems' {eC2FamilyFilter} -> eC2FamilyFilter) (\s@ListCatalogItems' {} a -> s {eC2FamilyFilter = a} :: ListCatalogItems) Prelude.. Lens.mapping Lens.coerced
+
+-- | Filters the results by item class.
+listCatalogItems_itemClassFilter :: Lens.Lens' ListCatalogItems (Prelude.Maybe [CatalogItemClass])
+listCatalogItems_itemClassFilter = Lens.lens (\ListCatalogItems' {itemClassFilter} -> itemClassFilter) (\s@ListCatalogItems' {} a -> s {itemClassFilter = a} :: ListCatalogItems) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+listCatalogItems_maxResults :: Lens.Lens' ListCatalogItems (Prelude.Maybe Prelude.Natural)
+listCatalogItems_maxResults = Lens.lens (\ListCatalogItems' {maxResults} -> maxResults) (\s@ListCatalogItems' {} a -> s {maxResults = a} :: ListCatalogItems)
+
+-- | Undocumented member.
+listCatalogItems_nextToken :: Lens.Lens' ListCatalogItems (Prelude.Maybe Prelude.Text)
+listCatalogItems_nextToken = Lens.lens (\ListCatalogItems' {nextToken} -> nextToken) (\s@ListCatalogItems' {} a -> s {nextToken = a} :: ListCatalogItems)
+
+-- | Filters the results by storage option.
+listCatalogItems_supportedStorageFilter :: Lens.Lens' ListCatalogItems (Prelude.Maybe [SupportedStorageEnum])
+listCatalogItems_supportedStorageFilter = Lens.lens (\ListCatalogItems' {supportedStorageFilter} -> supportedStorageFilter) (\s@ListCatalogItems' {} a -> s {supportedStorageFilter = a} :: ListCatalogItems) Prelude.. Lens.mapping Lens.coerced
+
+instance Core.AWSRequest ListCatalogItems where
+  type
+    AWSResponse ListCatalogItems =
+      ListCatalogItemsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListCatalogItemsResponse'
+            Prelude.<$> (x Data..?> "CatalogItems" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListCatalogItems where
+  hashWithSalt _salt ListCatalogItems' {..} =
+    _salt
+      `Prelude.hashWithSalt` eC2FamilyFilter
+      `Prelude.hashWithSalt` itemClassFilter
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` supportedStorageFilter
+
+instance Prelude.NFData ListCatalogItems where
+  rnf ListCatalogItems' {..} =
+    Prelude.rnf eC2FamilyFilter
+      `Prelude.seq` Prelude.rnf itemClassFilter
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf supportedStorageFilter
+
+instance Data.ToHeaders ListCatalogItems where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListCatalogItems where
+  toPath = Prelude.const "/catalog/items"
+
+instance Data.ToQuery ListCatalogItems where
+  toQuery ListCatalogItems' {..} =
+    Prelude.mconcat
+      [ "EC2FamilyFilter"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> eC2FamilyFilter
+            ),
+        "ItemClassFilter"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> itemClassFilter
+            ),
+        "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken,
+        "SupportedStorageFilter"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> supportedStorageFilter
+            )
+      ]
+
+-- | /See:/ 'newListCatalogItemsResponse' smart constructor.
+data ListCatalogItemsResponse = ListCatalogItemsResponse'
+  { -- | Information about the catalog items.
+    catalogItems :: Prelude.Maybe [CatalogItem],
+    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 'ListCatalogItemsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'catalogItems', 'listCatalogItemsResponse_catalogItems' - Information about the catalog items.
+--
+-- 'nextToken', 'listCatalogItemsResponse_nextToken' - Undocumented member.
+--
+-- 'httpStatus', 'listCatalogItemsResponse_httpStatus' - The response's http status code.
+newListCatalogItemsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListCatalogItemsResponse
+newListCatalogItemsResponse pHttpStatus_ =
+  ListCatalogItemsResponse'
+    { catalogItems =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the catalog items.
+listCatalogItemsResponse_catalogItems :: Lens.Lens' ListCatalogItemsResponse (Prelude.Maybe [CatalogItem])
+listCatalogItemsResponse_catalogItems = Lens.lens (\ListCatalogItemsResponse' {catalogItems} -> catalogItems) (\s@ListCatalogItemsResponse' {} a -> s {catalogItems = a} :: ListCatalogItemsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+listCatalogItemsResponse_nextToken :: Lens.Lens' ListCatalogItemsResponse (Prelude.Maybe Prelude.Text)
+listCatalogItemsResponse_nextToken = Lens.lens (\ListCatalogItemsResponse' {nextToken} -> nextToken) (\s@ListCatalogItemsResponse' {} a -> s {nextToken = a} :: ListCatalogItemsResponse)
+
+-- | The response's http status code.
+listCatalogItemsResponse_httpStatus :: Lens.Lens' ListCatalogItemsResponse Prelude.Int
+listCatalogItemsResponse_httpStatus = Lens.lens (\ListCatalogItemsResponse' {httpStatus} -> httpStatus) (\s@ListCatalogItemsResponse' {} a -> s {httpStatus = a} :: ListCatalogItemsResponse)
+
+instance Prelude.NFData ListCatalogItemsResponse where
+  rnf ListCatalogItemsResponse' {..} =
+    Prelude.rnf catalogItems
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/ListOrders.hs b/gen/Amazonka/Outposts/ListOrders.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/ListOrders.hs
@@ -0,0 +1,195 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.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 the Outpost orders for your Amazon Web Services account.
+module Amazonka.Outposts.ListOrders
+  ( -- * Creating a Request
+    ListOrders (..),
+    newListOrders,
+
+    -- * Request Lenses
+    listOrders_maxResults,
+    listOrders_nextToken,
+    listOrders_outpostIdentifierFilter,
+
+    -- * 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 Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListOrders' smart constructor.
+data ListOrders = ListOrders'
+  { maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ID or the Amazon Resource Name (ARN) of the Outpost.
+    outpostIdentifierFilter :: Prelude.Maybe 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:
+--
+-- 'maxResults', 'listOrders_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'listOrders_nextToken' - Undocumented member.
+--
+-- 'outpostIdentifierFilter', 'listOrders_outpostIdentifierFilter' - The ID or the Amazon Resource Name (ARN) of the Outpost.
+newListOrders ::
+  ListOrders
+newListOrders =
+  ListOrders'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      outpostIdentifierFilter = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+listOrders_maxResults :: Lens.Lens' ListOrders (Prelude.Maybe Prelude.Natural)
+listOrders_maxResults = Lens.lens (\ListOrders' {maxResults} -> maxResults) (\s@ListOrders' {} a -> s {maxResults = a} :: ListOrders)
+
+-- | Undocumented member.
+listOrders_nextToken :: Lens.Lens' ListOrders (Prelude.Maybe Prelude.Text)
+listOrders_nextToken = Lens.lens (\ListOrders' {nextToken} -> nextToken) (\s@ListOrders' {} a -> s {nextToken = a} :: ListOrders)
+
+-- | The ID or the Amazon Resource Name (ARN) of the Outpost.
+listOrders_outpostIdentifierFilter :: Lens.Lens' ListOrders (Prelude.Maybe Prelude.Text)
+listOrders_outpostIdentifierFilter = Lens.lens (\ListOrders' {outpostIdentifierFilter} -> outpostIdentifierFilter) (\s@ListOrders' {} a -> s {outpostIdentifierFilter = a} :: ListOrders)
+
+instance Core.AWSRequest ListOrders where
+  type AWSResponse ListOrders = ListOrdersResponse
+  request overrides =
+    Request.get (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` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` outpostIdentifierFilter
+
+instance Prelude.NFData ListOrders where
+  rnf ListOrders' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf outpostIdentifierFilter
+
+instance Data.ToHeaders ListOrders where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListOrders where
+  toPath = Prelude.const "/list-orders"
+
+instance Data.ToQuery ListOrders where
+  toQuery ListOrders' {..} =
+    Prelude.mconcat
+      [ "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken,
+        "OutpostIdentifierFilter"
+          Data.=: outpostIdentifierFilter
+      ]
+
+-- | /See:/ 'newListOrdersResponse' smart constructor.
+data ListOrdersResponse = ListOrdersResponse'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Information about the orders.
+    orders :: Prelude.Maybe [OrderSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, 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' - Undocumented member.
+--
+-- '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_
+    }
+
+-- | Undocumented member.
+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 [OrderSummary])
+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/Outposts/ListOutposts.hs b/gen/Amazonka/Outposts/ListOutposts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/ListOutposts.hs
@@ -0,0 +1,238 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.ListOutposts
+-- 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 Outposts for your Amazon Web Services account.
+--
+-- Use filters to return specific results. If you specify multiple filters,
+-- the results include only the resources that match all of the specified
+-- filters. For a filter where you can specify multiple values, the results
+-- include items that match any of the values that you specify for the
+-- filter.
+module Amazonka.Outposts.ListOutposts
+  ( -- * Creating a Request
+    ListOutposts (..),
+    newListOutposts,
+
+    -- * Request Lenses
+    listOutposts_availabilityZoneFilter,
+    listOutposts_availabilityZoneIdFilter,
+    listOutposts_lifeCycleStatusFilter,
+    listOutposts_maxResults,
+    listOutposts_nextToken,
+
+    -- * Destructuring the Response
+    ListOutpostsResponse (..),
+    newListOutpostsResponse,
+
+    -- * Response Lenses
+    listOutpostsResponse_nextToken,
+    listOutpostsResponse_outposts,
+    listOutpostsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListOutposts' smart constructor.
+data ListOutposts = ListOutposts'
+  { -- | Filters the results by Availability Zone (for example, @us-east-1a@).
+    availabilityZoneFilter :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | Filters the results by AZ ID (for example, @use1-az1@).
+    availabilityZoneIdFilter :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | Filters the results by the lifecycle status.
+    lifeCycleStatusFilter :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListOutposts' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'availabilityZoneFilter', 'listOutposts_availabilityZoneFilter' - Filters the results by Availability Zone (for example, @us-east-1a@).
+--
+-- 'availabilityZoneIdFilter', 'listOutposts_availabilityZoneIdFilter' - Filters the results by AZ ID (for example, @use1-az1@).
+--
+-- 'lifeCycleStatusFilter', 'listOutposts_lifeCycleStatusFilter' - Filters the results by the lifecycle status.
+--
+-- 'maxResults', 'listOutposts_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'listOutposts_nextToken' - Undocumented member.
+newListOutposts ::
+  ListOutposts
+newListOutposts =
+  ListOutposts'
+    { availabilityZoneFilter =
+        Prelude.Nothing,
+      availabilityZoneIdFilter = Prelude.Nothing,
+      lifeCycleStatusFilter = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Filters the results by Availability Zone (for example, @us-east-1a@).
+listOutposts_availabilityZoneFilter :: Lens.Lens' ListOutposts (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listOutposts_availabilityZoneFilter = Lens.lens (\ListOutposts' {availabilityZoneFilter} -> availabilityZoneFilter) (\s@ListOutposts' {} a -> s {availabilityZoneFilter = a} :: ListOutposts) Prelude.. Lens.mapping Lens.coerced
+
+-- | Filters the results by AZ ID (for example, @use1-az1@).
+listOutposts_availabilityZoneIdFilter :: Lens.Lens' ListOutposts (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listOutposts_availabilityZoneIdFilter = Lens.lens (\ListOutposts' {availabilityZoneIdFilter} -> availabilityZoneIdFilter) (\s@ListOutposts' {} a -> s {availabilityZoneIdFilter = a} :: ListOutposts) Prelude.. Lens.mapping Lens.coerced
+
+-- | Filters the results by the lifecycle status.
+listOutposts_lifeCycleStatusFilter :: Lens.Lens' ListOutposts (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listOutposts_lifeCycleStatusFilter = Lens.lens (\ListOutposts' {lifeCycleStatusFilter} -> lifeCycleStatusFilter) (\s@ListOutposts' {} a -> s {lifeCycleStatusFilter = a} :: ListOutposts) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+listOutposts_maxResults :: Lens.Lens' ListOutposts (Prelude.Maybe Prelude.Natural)
+listOutposts_maxResults = Lens.lens (\ListOutposts' {maxResults} -> maxResults) (\s@ListOutposts' {} a -> s {maxResults = a} :: ListOutposts)
+
+-- | Undocumented member.
+listOutposts_nextToken :: Lens.Lens' ListOutposts (Prelude.Maybe Prelude.Text)
+listOutposts_nextToken = Lens.lens (\ListOutposts' {nextToken} -> nextToken) (\s@ListOutposts' {} a -> s {nextToken = a} :: ListOutposts)
+
+instance Core.AWSRequest ListOutposts where
+  type AWSResponse ListOutposts = ListOutpostsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListOutpostsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Outposts" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListOutposts where
+  hashWithSalt _salt ListOutposts' {..} =
+    _salt
+      `Prelude.hashWithSalt` availabilityZoneFilter
+      `Prelude.hashWithSalt` availabilityZoneIdFilter
+      `Prelude.hashWithSalt` lifeCycleStatusFilter
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListOutposts where
+  rnf ListOutposts' {..} =
+    Prelude.rnf availabilityZoneFilter
+      `Prelude.seq` Prelude.rnf availabilityZoneIdFilter
+      `Prelude.seq` Prelude.rnf lifeCycleStatusFilter
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListOutposts where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListOutposts where
+  toPath = Prelude.const "/outposts"
+
+instance Data.ToQuery ListOutposts where
+  toQuery ListOutposts' {..} =
+    Prelude.mconcat
+      [ "AvailabilityZoneFilter"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> availabilityZoneFilter
+            ),
+        "AvailabilityZoneIdFilter"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> availabilityZoneIdFilter
+            ),
+        "LifeCycleStatusFilter"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> lifeCycleStatusFilter
+            ),
+        "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListOutpostsResponse' smart constructor.
+data ListOutpostsResponse = ListOutpostsResponse'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    outposts :: Prelude.Maybe [Outpost],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListOutpostsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listOutpostsResponse_nextToken' - Undocumented member.
+--
+-- 'outposts', 'listOutpostsResponse_outposts' - Undocumented member.
+--
+-- 'httpStatus', 'listOutpostsResponse_httpStatus' - The response's http status code.
+newListOutpostsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListOutpostsResponse
+newListOutpostsResponse pHttpStatus_ =
+  ListOutpostsResponse'
+    { nextToken = Prelude.Nothing,
+      outposts = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+listOutpostsResponse_nextToken :: Lens.Lens' ListOutpostsResponse (Prelude.Maybe Prelude.Text)
+listOutpostsResponse_nextToken = Lens.lens (\ListOutpostsResponse' {nextToken} -> nextToken) (\s@ListOutpostsResponse' {} a -> s {nextToken = a} :: ListOutpostsResponse)
+
+-- | Undocumented member.
+listOutpostsResponse_outposts :: Lens.Lens' ListOutpostsResponse (Prelude.Maybe [Outpost])
+listOutpostsResponse_outposts = Lens.lens (\ListOutpostsResponse' {outposts} -> outposts) (\s@ListOutpostsResponse' {} a -> s {outposts = a} :: ListOutpostsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listOutpostsResponse_httpStatus :: Lens.Lens' ListOutpostsResponse Prelude.Int
+listOutpostsResponse_httpStatus = Lens.lens (\ListOutpostsResponse' {httpStatus} -> httpStatus) (\s@ListOutpostsResponse' {} a -> s {httpStatus = a} :: ListOutpostsResponse)
+
+instance Prelude.NFData ListOutpostsResponse where
+  rnf ListOutpostsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf outposts
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/ListSites.hs b/gen/Amazonka/Outposts/ListSites.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/ListSites.hs
@@ -0,0 +1,239 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.ListSites
+-- 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 Outpost sites for your Amazon Web Services account. Use
+-- filters to return specific results.
+--
+-- Use filters to return specific results. If you specify multiple filters,
+-- the results include only the resources that match all of the specified
+-- filters. For a filter where you can specify multiple values, the results
+-- include items that match any of the values that you specify for the
+-- filter.
+module Amazonka.Outposts.ListSites
+  ( -- * Creating a Request
+    ListSites (..),
+    newListSites,
+
+    -- * Request Lenses
+    listSites_maxResults,
+    listSites_nextToken,
+    listSites_operatingAddressCityFilter,
+    listSites_operatingAddressCountryCodeFilter,
+    listSites_operatingAddressStateOrRegionFilter,
+
+    -- * Destructuring the Response
+    ListSitesResponse (..),
+    newListSitesResponse,
+
+    -- * Response Lenses
+    listSitesResponse_nextToken,
+    listSitesResponse_sites,
+    listSitesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListSites' smart constructor.
+data ListSites = ListSites'
+  { maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Filters the results by city.
+    operatingAddressCityFilter :: Prelude.Maybe [Prelude.Text],
+    -- | Filters the results by country code.
+    operatingAddressCountryCodeFilter :: Prelude.Maybe [Prelude.Text],
+    -- | Filters the results by state or region.
+    operatingAddressStateOrRegionFilter :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSites' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listSites_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'listSites_nextToken' - Undocumented member.
+--
+-- 'operatingAddressCityFilter', 'listSites_operatingAddressCityFilter' - Filters the results by city.
+--
+-- 'operatingAddressCountryCodeFilter', 'listSites_operatingAddressCountryCodeFilter' - Filters the results by country code.
+--
+-- 'operatingAddressStateOrRegionFilter', 'listSites_operatingAddressStateOrRegionFilter' - Filters the results by state or region.
+newListSites ::
+  ListSites
+newListSites =
+  ListSites'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      operatingAddressCityFilter = Prelude.Nothing,
+      operatingAddressCountryCodeFilter = Prelude.Nothing,
+      operatingAddressStateOrRegionFilter =
+        Prelude.Nothing
+    }
+
+-- | Undocumented member.
+listSites_maxResults :: Lens.Lens' ListSites (Prelude.Maybe Prelude.Natural)
+listSites_maxResults = Lens.lens (\ListSites' {maxResults} -> maxResults) (\s@ListSites' {} a -> s {maxResults = a} :: ListSites)
+
+-- | Undocumented member.
+listSites_nextToken :: Lens.Lens' ListSites (Prelude.Maybe Prelude.Text)
+listSites_nextToken = Lens.lens (\ListSites' {nextToken} -> nextToken) (\s@ListSites' {} a -> s {nextToken = a} :: ListSites)
+
+-- | Filters the results by city.
+listSites_operatingAddressCityFilter :: Lens.Lens' ListSites (Prelude.Maybe [Prelude.Text])
+listSites_operatingAddressCityFilter = Lens.lens (\ListSites' {operatingAddressCityFilter} -> operatingAddressCityFilter) (\s@ListSites' {} a -> s {operatingAddressCityFilter = a} :: ListSites) Prelude.. Lens.mapping Lens.coerced
+
+-- | Filters the results by country code.
+listSites_operatingAddressCountryCodeFilter :: Lens.Lens' ListSites (Prelude.Maybe [Prelude.Text])
+listSites_operatingAddressCountryCodeFilter = Lens.lens (\ListSites' {operatingAddressCountryCodeFilter} -> operatingAddressCountryCodeFilter) (\s@ListSites' {} a -> s {operatingAddressCountryCodeFilter = a} :: ListSites) Prelude.. Lens.mapping Lens.coerced
+
+-- | Filters the results by state or region.
+listSites_operatingAddressStateOrRegionFilter :: Lens.Lens' ListSites (Prelude.Maybe [Prelude.Text])
+listSites_operatingAddressStateOrRegionFilter = Lens.lens (\ListSites' {operatingAddressStateOrRegionFilter} -> operatingAddressStateOrRegionFilter) (\s@ListSites' {} a -> s {operatingAddressStateOrRegionFilter = a} :: ListSites) Prelude.. Lens.mapping Lens.coerced
+
+instance Core.AWSRequest ListSites where
+  type AWSResponse ListSites = ListSitesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListSitesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Sites" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListSites where
+  hashWithSalt _salt ListSites' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` operatingAddressCityFilter
+      `Prelude.hashWithSalt` operatingAddressCountryCodeFilter
+      `Prelude.hashWithSalt` operatingAddressStateOrRegionFilter
+
+instance Prelude.NFData ListSites where
+  rnf ListSites' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf operatingAddressCityFilter
+      `Prelude.seq` Prelude.rnf operatingAddressCountryCodeFilter
+      `Prelude.seq` Prelude.rnf operatingAddressStateOrRegionFilter
+
+instance Data.ToHeaders ListSites where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListSites where
+  toPath = Prelude.const "/sites"
+
+instance Data.ToQuery ListSites where
+  toQuery ListSites' {..} =
+    Prelude.mconcat
+      [ "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken,
+        "OperatingAddressCityFilter"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> operatingAddressCityFilter
+            ),
+        "OperatingAddressCountryCodeFilter"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> operatingAddressCountryCodeFilter
+            ),
+        "OperatingAddressStateOrRegionFilter"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> operatingAddressStateOrRegionFilter
+            )
+      ]
+
+-- | /See:/ 'newListSitesResponse' smart constructor.
+data ListSitesResponse = ListSitesResponse'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    sites :: Prelude.Maybe [Site],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSitesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listSitesResponse_nextToken' - Undocumented member.
+--
+-- 'sites', 'listSitesResponse_sites' - Undocumented member.
+--
+-- 'httpStatus', 'listSitesResponse_httpStatus' - The response's http status code.
+newListSitesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListSitesResponse
+newListSitesResponse pHttpStatus_ =
+  ListSitesResponse'
+    { nextToken = Prelude.Nothing,
+      sites = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+listSitesResponse_nextToken :: Lens.Lens' ListSitesResponse (Prelude.Maybe Prelude.Text)
+listSitesResponse_nextToken = Lens.lens (\ListSitesResponse' {nextToken} -> nextToken) (\s@ListSitesResponse' {} a -> s {nextToken = a} :: ListSitesResponse)
+
+-- | Undocumented member.
+listSitesResponse_sites :: Lens.Lens' ListSitesResponse (Prelude.Maybe [Site])
+listSitesResponse_sites = Lens.lens (\ListSitesResponse' {sites} -> sites) (\s@ListSitesResponse' {} a -> s {sites = a} :: ListSitesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listSitesResponse_httpStatus :: Lens.Lens' ListSitesResponse Prelude.Int
+listSitesResponse_httpStatus = Lens.lens (\ListSitesResponse' {httpStatus} -> httpStatus) (\s@ListSitesResponse' {} a -> s {httpStatus = a} :: ListSitesResponse)
+
+instance Prelude.NFData ListSitesResponse where
+  rnf ListSitesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sites
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/ListTagsForResource.hs b/gen/Amazonka/Outposts/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/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.Outposts.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.Outposts.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the resource.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The Amazon Resource Name (ARN) of the resource.
+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceArn
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath ListTagsForResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | The resource tags.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - The 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 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/Outposts/StartConnection.hs b/gen/Amazonka/Outposts/StartConnection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/StartConnection.hs
@@ -0,0 +1,247 @@
+{-# 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.Outposts.StartConnection
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Amazon Web Services uses this action to install Outpost servers.
+--
+-- Starts the connection required for Outpost server installation.
+--
+-- Use CloudTrail to monitor this action or Amazon Web Services managed
+-- policy for Amazon Web Services Outposts to secure it. For more
+-- information, see
+-- <https://docs.aws.amazon.com/outposts/latest/userguide/security-iam-awsmanpol.html Amazon Web Services managed policies for Amazon Web Services Outposts>
+-- and
+-- <https://docs.aws.amazon.com/outposts/latest/userguide/logging-using-cloudtrail.html Logging Amazon Web Services Outposts API calls with Amazon Web Services CloudTrail>
+-- in the /Amazon Web Services Outposts User Guide/.
+module Amazonka.Outposts.StartConnection
+  ( -- * Creating a Request
+    StartConnection (..),
+    newStartConnection,
+
+    -- * Request Lenses
+    startConnection_deviceSerialNumber,
+    startConnection_assetId,
+    startConnection_clientPublicKey,
+    startConnection_networkInterfaceDeviceIndex,
+
+    -- * Destructuring the Response
+    StartConnectionResponse (..),
+    newStartConnectionResponse,
+
+    -- * Response Lenses
+    startConnectionResponse_connectionId,
+    startConnectionResponse_underlayIpAddress,
+    startConnectionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStartConnection' smart constructor.
+data StartConnection = StartConnection'
+  { -- | The serial number of the dongle.
+    deviceSerialNumber :: Prelude.Text,
+    -- | The ID of the Outpost server.
+    assetId :: Prelude.Text,
+    -- | The public key of the client.
+    clientPublicKey :: Prelude.Text,
+    -- | The device index of the network interface on the Outpost server.
+    networkInterfaceDeviceIndex :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartConnection' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceSerialNumber', 'startConnection_deviceSerialNumber' - The serial number of the dongle.
+--
+-- 'assetId', 'startConnection_assetId' - The ID of the Outpost server.
+--
+-- 'clientPublicKey', 'startConnection_clientPublicKey' - The public key of the client.
+--
+-- 'networkInterfaceDeviceIndex', 'startConnection_networkInterfaceDeviceIndex' - The device index of the network interface on the Outpost server.
+newStartConnection ::
+  -- | 'deviceSerialNumber'
+  Prelude.Text ->
+  -- | 'assetId'
+  Prelude.Text ->
+  -- | 'clientPublicKey'
+  Prelude.Text ->
+  -- | 'networkInterfaceDeviceIndex'
+  Prelude.Natural ->
+  StartConnection
+newStartConnection
+  pDeviceSerialNumber_
+  pAssetId_
+  pClientPublicKey_
+  pNetworkInterfaceDeviceIndex_ =
+    StartConnection'
+      { deviceSerialNumber =
+          pDeviceSerialNumber_,
+        assetId = pAssetId_,
+        clientPublicKey = pClientPublicKey_,
+        networkInterfaceDeviceIndex =
+          pNetworkInterfaceDeviceIndex_
+      }
+
+-- | The serial number of the dongle.
+startConnection_deviceSerialNumber :: Lens.Lens' StartConnection Prelude.Text
+startConnection_deviceSerialNumber = Lens.lens (\StartConnection' {deviceSerialNumber} -> deviceSerialNumber) (\s@StartConnection' {} a -> s {deviceSerialNumber = a} :: StartConnection)
+
+-- | The ID of the Outpost server.
+startConnection_assetId :: Lens.Lens' StartConnection Prelude.Text
+startConnection_assetId = Lens.lens (\StartConnection' {assetId} -> assetId) (\s@StartConnection' {} a -> s {assetId = a} :: StartConnection)
+
+-- | The public key of the client.
+startConnection_clientPublicKey :: Lens.Lens' StartConnection Prelude.Text
+startConnection_clientPublicKey = Lens.lens (\StartConnection' {clientPublicKey} -> clientPublicKey) (\s@StartConnection' {} a -> s {clientPublicKey = a} :: StartConnection)
+
+-- | The device index of the network interface on the Outpost server.
+startConnection_networkInterfaceDeviceIndex :: Lens.Lens' StartConnection Prelude.Natural
+startConnection_networkInterfaceDeviceIndex = Lens.lens (\StartConnection' {networkInterfaceDeviceIndex} -> networkInterfaceDeviceIndex) (\s@StartConnection' {} a -> s {networkInterfaceDeviceIndex = a} :: StartConnection)
+
+instance Core.AWSRequest StartConnection where
+  type
+    AWSResponse StartConnection =
+      StartConnectionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartConnectionResponse'
+            Prelude.<$> (x Data..?> "ConnectionId")
+            Prelude.<*> (x Data..?> "UnderlayIpAddress")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartConnection where
+  hashWithSalt _salt StartConnection' {..} =
+    _salt
+      `Prelude.hashWithSalt` deviceSerialNumber
+      `Prelude.hashWithSalt` assetId
+      `Prelude.hashWithSalt` clientPublicKey
+      `Prelude.hashWithSalt` networkInterfaceDeviceIndex
+
+instance Prelude.NFData StartConnection where
+  rnf StartConnection' {..} =
+    Prelude.rnf deviceSerialNumber
+      `Prelude.seq` Prelude.rnf assetId
+      `Prelude.seq` Prelude.rnf clientPublicKey
+      `Prelude.seq` Prelude.rnf networkInterfaceDeviceIndex
+
+instance Data.ToHeaders StartConnection where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartConnection where
+  toJSON StartConnection' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("DeviceSerialNumber" Data..= deviceSerialNumber),
+            Prelude.Just ("AssetId" Data..= assetId),
+            Prelude.Just
+              ("ClientPublicKey" Data..= clientPublicKey),
+            Prelude.Just
+              ( "NetworkInterfaceDeviceIndex"
+                  Data..= networkInterfaceDeviceIndex
+              )
+          ]
+      )
+
+instance Data.ToPath StartConnection where
+  toPath = Prelude.const "/connections"
+
+instance Data.ToQuery StartConnection where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartConnectionResponse' smart constructor.
+data StartConnectionResponse = StartConnectionResponse'
+  { -- | The ID of the connection.
+    connectionId :: Prelude.Maybe Prelude.Text,
+    -- | The underlay IP address.
+    underlayIpAddress :: 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 'StartConnectionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'connectionId', 'startConnectionResponse_connectionId' - The ID of the connection.
+--
+-- 'underlayIpAddress', 'startConnectionResponse_underlayIpAddress' - The underlay IP address.
+--
+-- 'httpStatus', 'startConnectionResponse_httpStatus' - The response's http status code.
+newStartConnectionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartConnectionResponse
+newStartConnectionResponse pHttpStatus_ =
+  StartConnectionResponse'
+    { connectionId =
+        Prelude.Nothing,
+      underlayIpAddress = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the connection.
+startConnectionResponse_connectionId :: Lens.Lens' StartConnectionResponse (Prelude.Maybe Prelude.Text)
+startConnectionResponse_connectionId = Lens.lens (\StartConnectionResponse' {connectionId} -> connectionId) (\s@StartConnectionResponse' {} a -> s {connectionId = a} :: StartConnectionResponse)
+
+-- | The underlay IP address.
+startConnectionResponse_underlayIpAddress :: Lens.Lens' StartConnectionResponse (Prelude.Maybe Prelude.Text)
+startConnectionResponse_underlayIpAddress = Lens.lens (\StartConnectionResponse' {underlayIpAddress} -> underlayIpAddress) (\s@StartConnectionResponse' {} a -> s {underlayIpAddress = a} :: StartConnectionResponse)
+
+-- | The response's http status code.
+startConnectionResponse_httpStatus :: Lens.Lens' StartConnectionResponse Prelude.Int
+startConnectionResponse_httpStatus = Lens.lens (\StartConnectionResponse' {httpStatus} -> httpStatus) (\s@StartConnectionResponse' {} a -> s {httpStatus = a} :: StartConnectionResponse)
+
+instance Prelude.NFData StartConnectionResponse where
+  rnf StartConnectionResponse' {..} =
+    Prelude.rnf connectionId
+      `Prelude.seq` Prelude.rnf underlayIpAddress
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/TagResource.hs b/gen/Amazonka/Outposts/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/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.Outposts.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.Outposts.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    resourceArn :: Prelude.Text,
+    -- | The tags to add to the resource.
+    tags :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- '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.. 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/Outposts/Types.hs b/gen/Amazonka/Outposts/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types.hs
@@ -0,0 +1,422 @@
+{-# 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.Outposts.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.Outposts.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _InternalServerException,
+    _NotFoundException,
+    _ServiceQuotaExceededException,
+    _ValidationException,
+
+    -- * AddressType
+    AddressType (..),
+
+    -- * AssetState
+    AssetState (..),
+
+    -- * AssetType
+    AssetType (..),
+
+    -- * CatalogItemClass
+    CatalogItemClass (..),
+
+    -- * CatalogItemStatus
+    CatalogItemStatus (..),
+
+    -- * ComputeAssetState
+    ComputeAssetState (..),
+
+    -- * FiberOpticCableType
+    FiberOpticCableType (..),
+
+    -- * LineItemStatus
+    LineItemStatus (..),
+
+    -- * MaximumSupportedWeightLbs
+    MaximumSupportedWeightLbs (..),
+
+    -- * OpticalStandard
+    OpticalStandard (..),
+
+    -- * OrderStatus
+    OrderStatus (..),
+
+    -- * OrderType
+    OrderType (..),
+
+    -- * PaymentOption
+    PaymentOption (..),
+
+    -- * PaymentTerm
+    PaymentTerm (..),
+
+    -- * PowerConnector
+    PowerConnector (..),
+
+    -- * PowerDrawKva
+    PowerDrawKva (..),
+
+    -- * PowerFeedDrop
+    PowerFeedDrop (..),
+
+    -- * PowerPhase
+    PowerPhase (..),
+
+    -- * ShipmentCarrier
+    ShipmentCarrier (..),
+
+    -- * SupportedHardwareType
+    SupportedHardwareType (..),
+
+    -- * SupportedStorageEnum
+    SupportedStorageEnum (..),
+
+    -- * UplinkCount
+    UplinkCount (..),
+
+    -- * UplinkGbps
+    UplinkGbps (..),
+
+    -- * Address
+    Address (..),
+    newAddress,
+    address_addressLine2,
+    address_addressLine3,
+    address_contactName,
+    address_contactPhoneNumber,
+    address_districtOrCounty,
+    address_municipality,
+    address_addressLine1,
+    address_city,
+    address_stateOrRegion,
+    address_postalCode,
+    address_countryCode,
+
+    -- * AssetInfo
+    AssetInfo (..),
+    newAssetInfo,
+    assetInfo_assetId,
+    assetInfo_assetLocation,
+    assetInfo_assetType,
+    assetInfo_computeAttributes,
+    assetInfo_rackId,
+
+    -- * AssetLocation
+    AssetLocation (..),
+    newAssetLocation,
+    assetLocation_rackElevation,
+
+    -- * CatalogItem
+    CatalogItem (..),
+    newCatalogItem,
+    catalogItem_catalogItemId,
+    catalogItem_eC2Capacities,
+    catalogItem_itemStatus,
+    catalogItem_powerKva,
+    catalogItem_supportedStorage,
+    catalogItem_supportedUplinkGbps,
+    catalogItem_weightLbs,
+
+    -- * ComputeAttributes
+    ComputeAttributes (..),
+    newComputeAttributes,
+    computeAttributes_hostId,
+    computeAttributes_state,
+
+    -- * ConnectionDetails
+    ConnectionDetails (..),
+    newConnectionDetails,
+    connectionDetails_allowedIps,
+    connectionDetails_clientPublicKey,
+    connectionDetails_clientTunnelAddress,
+    connectionDetails_serverEndpoint,
+    connectionDetails_serverPublicKey,
+    connectionDetails_serverTunnelAddress,
+
+    -- * EC2Capacity
+    EC2Capacity (..),
+    newEC2Capacity,
+    eC2Capacity_family,
+    eC2Capacity_maxSize,
+    eC2Capacity_quantity,
+
+    -- * InstanceTypeItem
+    InstanceTypeItem (..),
+    newInstanceTypeItem,
+    instanceTypeItem_instanceType,
+
+    -- * LineItem
+    LineItem (..),
+    newLineItem,
+    lineItem_assetInformationList,
+    lineItem_catalogItemId,
+    lineItem_lineItemId,
+    lineItem_quantity,
+    lineItem_shipmentInformation,
+    lineItem_status,
+
+    -- * LineItemAssetInformation
+    LineItemAssetInformation (..),
+    newLineItemAssetInformation,
+    lineItemAssetInformation_assetId,
+    lineItemAssetInformation_macAddressList,
+
+    -- * LineItemRequest
+    LineItemRequest (..),
+    newLineItemRequest,
+    lineItemRequest_catalogItemId,
+    lineItemRequest_quantity,
+
+    -- * Order
+    Order (..),
+    newOrder,
+    order_lineItems,
+    order_orderFulfilledDate,
+    order_orderId,
+    order_orderSubmissionDate,
+    order_outpostId,
+    order_paymentOption,
+    order_status,
+
+    -- * OrderSummary
+    OrderSummary (..),
+    newOrderSummary,
+    orderSummary_lineItemCountsByStatus,
+    orderSummary_orderFulfilledDate,
+    orderSummary_orderId,
+    orderSummary_orderSubmissionDate,
+    orderSummary_orderType,
+    orderSummary_outpostId,
+    orderSummary_status,
+
+    -- * Outpost
+    Outpost (..),
+    newOutpost,
+    outpost_availabilityZone,
+    outpost_availabilityZoneId,
+    outpost_description,
+    outpost_lifeCycleStatus,
+    outpost_name,
+    outpost_outpostArn,
+    outpost_outpostId,
+    outpost_ownerId,
+    outpost_siteArn,
+    outpost_siteId,
+    outpost_supportedHardwareType,
+    outpost_tags,
+
+    -- * RackPhysicalProperties
+    RackPhysicalProperties (..),
+    newRackPhysicalProperties,
+    rackPhysicalProperties_fiberOpticCableType,
+    rackPhysicalProperties_maximumSupportedWeightLbs,
+    rackPhysicalProperties_opticalStandard,
+    rackPhysicalProperties_powerConnector,
+    rackPhysicalProperties_powerDrawKva,
+    rackPhysicalProperties_powerFeedDrop,
+    rackPhysicalProperties_powerPhase,
+    rackPhysicalProperties_uplinkCount,
+    rackPhysicalProperties_uplinkGbps,
+
+    -- * ShipmentInformation
+    ShipmentInformation (..),
+    newShipmentInformation,
+    shipmentInformation_shipmentCarrier,
+    shipmentInformation_shipmentTrackingNumber,
+
+    -- * Site
+    Site (..),
+    newSite,
+    site_accountId,
+    site_description,
+    site_name,
+    site_notes,
+    site_operatingAddressCity,
+    site_operatingAddressCountryCode,
+    site_operatingAddressStateOrRegion,
+    site_rackPhysicalProperties,
+    site_siteArn,
+    site_siteId,
+    site_tags,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.Outposts.Types.Address
+import Amazonka.Outposts.Types.AddressType
+import Amazonka.Outposts.Types.AssetInfo
+import Amazonka.Outposts.Types.AssetLocation
+import Amazonka.Outposts.Types.AssetState
+import Amazonka.Outposts.Types.AssetType
+import Amazonka.Outposts.Types.CatalogItem
+import Amazonka.Outposts.Types.CatalogItemClass
+import Amazonka.Outposts.Types.CatalogItemStatus
+import Amazonka.Outposts.Types.ComputeAssetState
+import Amazonka.Outposts.Types.ComputeAttributes
+import Amazonka.Outposts.Types.ConnectionDetails
+import Amazonka.Outposts.Types.EC2Capacity
+import Amazonka.Outposts.Types.FiberOpticCableType
+import Amazonka.Outposts.Types.InstanceTypeItem
+import Amazonka.Outposts.Types.LineItem
+import Amazonka.Outposts.Types.LineItemAssetInformation
+import Amazonka.Outposts.Types.LineItemRequest
+import Amazonka.Outposts.Types.LineItemStatus
+import Amazonka.Outposts.Types.MaximumSupportedWeightLbs
+import Amazonka.Outposts.Types.OpticalStandard
+import Amazonka.Outposts.Types.Order
+import Amazonka.Outposts.Types.OrderStatus
+import Amazonka.Outposts.Types.OrderSummary
+import Amazonka.Outposts.Types.OrderType
+import Amazonka.Outposts.Types.Outpost
+import Amazonka.Outposts.Types.PaymentOption
+import Amazonka.Outposts.Types.PaymentTerm
+import Amazonka.Outposts.Types.PowerConnector
+import Amazonka.Outposts.Types.PowerDrawKva
+import Amazonka.Outposts.Types.PowerFeedDrop
+import Amazonka.Outposts.Types.PowerPhase
+import Amazonka.Outposts.Types.RackPhysicalProperties
+import Amazonka.Outposts.Types.ShipmentCarrier
+import Amazonka.Outposts.Types.ShipmentInformation
+import Amazonka.Outposts.Types.Site
+import Amazonka.Outposts.Types.SupportedHardwareType
+import Amazonka.Outposts.Types.SupportedStorageEnum
+import Amazonka.Outposts.Types.UplinkCount
+import Amazonka.Outposts.Types.UplinkGbps
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2019-12-03@ of the Amazon Outposts SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "Outposts",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "outposts",
+      Core.signingName = "outposts",
+      Core.version = "2019-12-03",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "Outposts",
+      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
+
+-- | Updating or deleting this resource can cause an inconsistent state.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | An internal error has occurred.
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+    Prelude.. Core.hasStatus 500
+
+-- | The specified request is not valid.
+_NotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_NotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "NotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | You have exceeded a service quota.
+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceQuotaExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceQuotaExceededException"
+    Prelude.. Core.hasStatus 402
+
+-- | A parameter is not valid.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/Outposts/Types/Address.hs b/gen/Amazonka/Outposts/Types/Address.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/Address.hs
@@ -0,0 +1,227 @@
+{-# 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.Outposts.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.Outposts.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 second line of the address.
+    addressLine2 :: Prelude.Maybe Prelude.Text,
+    -- | The third line of the address.
+    addressLine3 :: Prelude.Maybe Prelude.Text,
+    -- | The name of the contact.
+    contactName :: Prelude.Maybe Prelude.Text,
+    -- | The phone number of the contact.
+    contactPhoneNumber :: Prelude.Maybe Prelude.Text,
+    -- | The district or county for the address.
+    districtOrCounty :: Prelude.Maybe Prelude.Text,
+    -- | The municipality for the address.
+    municipality :: Prelude.Maybe Prelude.Text,
+    -- | The first line of the address.
+    addressLine1 :: Prelude.Text,
+    -- | The city for the address.
+    city :: Prelude.Text,
+    -- | The state for the address.
+    stateOrRegion :: Prelude.Text,
+    -- | The postal code for the address.
+    postalCode :: Prelude.Text,
+    -- | The ISO-3166 two-letter country code for the address.
+    countryCode :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, 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:
+--
+-- 'addressLine2', 'address_addressLine2' - The second line of the address.
+--
+-- 'addressLine3', 'address_addressLine3' - The third line of the address.
+--
+-- 'contactName', 'address_contactName' - The name of the contact.
+--
+-- 'contactPhoneNumber', 'address_contactPhoneNumber' - The phone number of the contact.
+--
+-- 'districtOrCounty', 'address_districtOrCounty' - The district or county for the address.
+--
+-- 'municipality', 'address_municipality' - The municipality for the address.
+--
+-- 'addressLine1', 'address_addressLine1' - The first line of the address.
+--
+-- 'city', 'address_city' - The city for the address.
+--
+-- 'stateOrRegion', 'address_stateOrRegion' - The state for the address.
+--
+-- 'postalCode', 'address_postalCode' - The postal code for the address.
+--
+-- 'countryCode', 'address_countryCode' - The ISO-3166 two-letter country code for the address.
+newAddress ::
+  -- | 'addressLine1'
+  Prelude.Text ->
+  -- | 'city'
+  Prelude.Text ->
+  -- | 'stateOrRegion'
+  Prelude.Text ->
+  -- | 'postalCode'
+  Prelude.Text ->
+  -- | 'countryCode'
+  Prelude.Text ->
+  Address
+newAddress
+  pAddressLine1_
+  pCity_
+  pStateOrRegion_
+  pPostalCode_
+  pCountryCode_ =
+    Address'
+      { addressLine2 = Prelude.Nothing,
+        addressLine3 = Prelude.Nothing,
+        contactName = Prelude.Nothing,
+        contactPhoneNumber = Prelude.Nothing,
+        districtOrCounty = Prelude.Nothing,
+        municipality = Prelude.Nothing,
+        addressLine1 = pAddressLine1_,
+        city = pCity_,
+        stateOrRegion = pStateOrRegion_,
+        postalCode = pPostalCode_,
+        countryCode = pCountryCode_
+      }
+
+-- | The second line of the address.
+address_addressLine2 :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_addressLine2 = Lens.lens (\Address' {addressLine2} -> addressLine2) (\s@Address' {} a -> s {addressLine2 = a} :: Address)
+
+-- | The third line of the address.
+address_addressLine3 :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_addressLine3 = Lens.lens (\Address' {addressLine3} -> addressLine3) (\s@Address' {} a -> s {addressLine3 = a} :: Address)
+
+-- | The name of the contact.
+address_contactName :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_contactName = Lens.lens (\Address' {contactName} -> contactName) (\s@Address' {} a -> s {contactName = a} :: Address)
+
+-- | The phone number of the contact.
+address_contactPhoneNumber :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_contactPhoneNumber = Lens.lens (\Address' {contactPhoneNumber} -> contactPhoneNumber) (\s@Address' {} a -> s {contactPhoneNumber = a} :: Address)
+
+-- | The district or county for the address.
+address_districtOrCounty :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_districtOrCounty = Lens.lens (\Address' {districtOrCounty} -> districtOrCounty) (\s@Address' {} a -> s {districtOrCounty = a} :: Address)
+
+-- | The municipality for the address.
+address_municipality :: Lens.Lens' Address (Prelude.Maybe Prelude.Text)
+address_municipality = Lens.lens (\Address' {municipality} -> municipality) (\s@Address' {} a -> s {municipality = a} :: Address)
+
+-- | The first line of the address.
+address_addressLine1 :: Lens.Lens' Address Prelude.Text
+address_addressLine1 = Lens.lens (\Address' {addressLine1} -> addressLine1) (\s@Address' {} a -> s {addressLine1 = a} :: Address)
+
+-- | The city for the address.
+address_city :: Lens.Lens' Address Prelude.Text
+address_city = Lens.lens (\Address' {city} -> city) (\s@Address' {} a -> s {city = a} :: Address)
+
+-- | The state for the address.
+address_stateOrRegion :: Lens.Lens' Address Prelude.Text
+address_stateOrRegion = Lens.lens (\Address' {stateOrRegion} -> stateOrRegion) (\s@Address' {} a -> s {stateOrRegion = a} :: Address)
+
+-- | The postal code for the address.
+address_postalCode :: Lens.Lens' Address Prelude.Text
+address_postalCode = Lens.lens (\Address' {postalCode} -> postalCode) (\s@Address' {} a -> s {postalCode = a} :: Address)
+
+-- | The ISO-3166 two-letter country code for the address.
+address_countryCode :: Lens.Lens' Address Prelude.Text
+address_countryCode = Lens.lens (\Address' {countryCode} -> countryCode) (\s@Address' {} a -> s {countryCode = a} :: Address)
+
+instance Data.FromJSON Address where
+  parseJSON =
+    Data.withObject
+      "Address"
+      ( \x ->
+          Address'
+            Prelude.<$> (x Data..:? "AddressLine2")
+            Prelude.<*> (x Data..:? "AddressLine3")
+            Prelude.<*> (x Data..:? "ContactName")
+            Prelude.<*> (x Data..:? "ContactPhoneNumber")
+            Prelude.<*> (x Data..:? "DistrictOrCounty")
+            Prelude.<*> (x Data..:? "Municipality")
+            Prelude.<*> (x Data..: "AddressLine1")
+            Prelude.<*> (x Data..: "City")
+            Prelude.<*> (x Data..: "StateOrRegion")
+            Prelude.<*> (x Data..: "PostalCode")
+            Prelude.<*> (x Data..: "CountryCode")
+      )
+
+instance Prelude.Hashable Address where
+  hashWithSalt _salt Address' {..} =
+    _salt
+      `Prelude.hashWithSalt` addressLine2
+      `Prelude.hashWithSalt` addressLine3
+      `Prelude.hashWithSalt` contactName
+      `Prelude.hashWithSalt` contactPhoneNumber
+      `Prelude.hashWithSalt` districtOrCounty
+      `Prelude.hashWithSalt` municipality
+      `Prelude.hashWithSalt` addressLine1
+      `Prelude.hashWithSalt` city
+      `Prelude.hashWithSalt` stateOrRegion
+      `Prelude.hashWithSalt` postalCode
+      `Prelude.hashWithSalt` countryCode
+
+instance Prelude.NFData Address where
+  rnf Address' {..} =
+    Prelude.rnf addressLine2
+      `Prelude.seq` Prelude.rnf addressLine3
+      `Prelude.seq` Prelude.rnf contactName
+      `Prelude.seq` Prelude.rnf contactPhoneNumber
+      `Prelude.seq` Prelude.rnf districtOrCounty
+      `Prelude.seq` Prelude.rnf municipality
+      `Prelude.seq` Prelude.rnf addressLine1
+      `Prelude.seq` Prelude.rnf city
+      `Prelude.seq` Prelude.rnf stateOrRegion
+      `Prelude.seq` Prelude.rnf postalCode
+      `Prelude.seq` Prelude.rnf countryCode
+
+instance Data.ToJSON Address where
+  toJSON Address' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AddressLine2" Data..=) Prelude.<$> addressLine2,
+            ("AddressLine3" Data..=) Prelude.<$> addressLine3,
+            ("ContactName" Data..=) Prelude.<$> contactName,
+            ("ContactPhoneNumber" Data..=)
+              Prelude.<$> contactPhoneNumber,
+            ("DistrictOrCounty" Data..=)
+              Prelude.<$> districtOrCounty,
+            ("Municipality" Data..=) Prelude.<$> municipality,
+            Prelude.Just ("AddressLine1" Data..= addressLine1),
+            Prelude.Just ("City" Data..= city),
+            Prelude.Just ("StateOrRegion" Data..= stateOrRegion),
+            Prelude.Just ("PostalCode" Data..= postalCode),
+            Prelude.Just ("CountryCode" Data..= countryCode)
+          ]
+      )
diff --git a/gen/Amazonka/Outposts/Types/AddressType.hs b/gen/Amazonka/Outposts/Types/AddressType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/AddressType.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.Outposts.Types.AddressType
+-- 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.Outposts.Types.AddressType
+  ( AddressType
+      ( ..,
+        AddressType_OPERATING_ADDRESS,
+        AddressType_SHIPPING_ADDRESS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AddressType = AddressType'
+  { fromAddressType ::
+      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 AddressType_OPERATING_ADDRESS :: AddressType
+pattern AddressType_OPERATING_ADDRESS = AddressType' "OPERATING_ADDRESS"
+
+pattern AddressType_SHIPPING_ADDRESS :: AddressType
+pattern AddressType_SHIPPING_ADDRESS = AddressType' "SHIPPING_ADDRESS"
+
+{-# COMPLETE
+  AddressType_OPERATING_ADDRESS,
+  AddressType_SHIPPING_ADDRESS,
+  AddressType'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/AssetInfo.hs b/gen/Amazonka/Outposts/Types/AssetInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/AssetInfo.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.Types.AssetInfo
+-- 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.Outposts.Types.AssetInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types.AssetLocation
+import Amazonka.Outposts.Types.AssetType
+import Amazonka.Outposts.Types.ComputeAttributes
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about hardware assets.
+--
+-- /See:/ 'newAssetInfo' smart constructor.
+data AssetInfo = AssetInfo'
+  { -- | The ID of the asset.
+    assetId :: Prelude.Maybe Prelude.Text,
+    -- | The position of an asset in a rack.
+    assetLocation :: Prelude.Maybe AssetLocation,
+    -- | The type of the asset.
+    assetType :: Prelude.Maybe AssetType,
+    -- | Information about compute hardware assets.
+    computeAttributes :: Prelude.Maybe ComputeAttributes,
+    -- | The rack ID of the asset.
+    rackId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssetInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'assetId', 'assetInfo_assetId' - The ID of the asset.
+--
+-- 'assetLocation', 'assetInfo_assetLocation' - The position of an asset in a rack.
+--
+-- 'assetType', 'assetInfo_assetType' - The type of the asset.
+--
+-- 'computeAttributes', 'assetInfo_computeAttributes' - Information about compute hardware assets.
+--
+-- 'rackId', 'assetInfo_rackId' - The rack ID of the asset.
+newAssetInfo ::
+  AssetInfo
+newAssetInfo =
+  AssetInfo'
+    { assetId = Prelude.Nothing,
+      assetLocation = Prelude.Nothing,
+      assetType = Prelude.Nothing,
+      computeAttributes = Prelude.Nothing,
+      rackId = Prelude.Nothing
+    }
+
+-- | The ID of the asset.
+assetInfo_assetId :: Lens.Lens' AssetInfo (Prelude.Maybe Prelude.Text)
+assetInfo_assetId = Lens.lens (\AssetInfo' {assetId} -> assetId) (\s@AssetInfo' {} a -> s {assetId = a} :: AssetInfo)
+
+-- | The position of an asset in a rack.
+assetInfo_assetLocation :: Lens.Lens' AssetInfo (Prelude.Maybe AssetLocation)
+assetInfo_assetLocation = Lens.lens (\AssetInfo' {assetLocation} -> assetLocation) (\s@AssetInfo' {} a -> s {assetLocation = a} :: AssetInfo)
+
+-- | The type of the asset.
+assetInfo_assetType :: Lens.Lens' AssetInfo (Prelude.Maybe AssetType)
+assetInfo_assetType = Lens.lens (\AssetInfo' {assetType} -> assetType) (\s@AssetInfo' {} a -> s {assetType = a} :: AssetInfo)
+
+-- | Information about compute hardware assets.
+assetInfo_computeAttributes :: Lens.Lens' AssetInfo (Prelude.Maybe ComputeAttributes)
+assetInfo_computeAttributes = Lens.lens (\AssetInfo' {computeAttributes} -> computeAttributes) (\s@AssetInfo' {} a -> s {computeAttributes = a} :: AssetInfo)
+
+-- | The rack ID of the asset.
+assetInfo_rackId :: Lens.Lens' AssetInfo (Prelude.Maybe Prelude.Text)
+assetInfo_rackId = Lens.lens (\AssetInfo' {rackId} -> rackId) (\s@AssetInfo' {} a -> s {rackId = a} :: AssetInfo)
+
+instance Data.FromJSON AssetInfo where
+  parseJSON =
+    Data.withObject
+      "AssetInfo"
+      ( \x ->
+          AssetInfo'
+            Prelude.<$> (x Data..:? "AssetId")
+            Prelude.<*> (x Data..:? "AssetLocation")
+            Prelude.<*> (x Data..:? "AssetType")
+            Prelude.<*> (x Data..:? "ComputeAttributes")
+            Prelude.<*> (x Data..:? "RackId")
+      )
+
+instance Prelude.Hashable AssetInfo where
+  hashWithSalt _salt AssetInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` assetId
+      `Prelude.hashWithSalt` assetLocation
+      `Prelude.hashWithSalt` assetType
+      `Prelude.hashWithSalt` computeAttributes
+      `Prelude.hashWithSalt` rackId
+
+instance Prelude.NFData AssetInfo where
+  rnf AssetInfo' {..} =
+    Prelude.rnf assetId
+      `Prelude.seq` Prelude.rnf assetLocation
+      `Prelude.seq` Prelude.rnf assetType
+      `Prelude.seq` Prelude.rnf computeAttributes
+      `Prelude.seq` Prelude.rnf rackId
diff --git a/gen/Amazonka/Outposts/Types/AssetLocation.hs b/gen/Amazonka/Outposts/Types/AssetLocation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/AssetLocation.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.Types.AssetLocation
+-- 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.Outposts.Types.AssetLocation where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the position of the asset in a rack.
+--
+-- /See:/ 'newAssetLocation' smart constructor.
+data AssetLocation = AssetLocation'
+  { -- | The position of an asset in a rack measured in rack units.
+    rackElevation :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssetLocation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'rackElevation', 'assetLocation_rackElevation' - The position of an asset in a rack measured in rack units.
+newAssetLocation ::
+  AssetLocation
+newAssetLocation =
+  AssetLocation' {rackElevation = Prelude.Nothing}
+
+-- | The position of an asset in a rack measured in rack units.
+assetLocation_rackElevation :: Lens.Lens' AssetLocation (Prelude.Maybe Prelude.Double)
+assetLocation_rackElevation = Lens.lens (\AssetLocation' {rackElevation} -> rackElevation) (\s@AssetLocation' {} a -> s {rackElevation = a} :: AssetLocation)
+
+instance Data.FromJSON AssetLocation where
+  parseJSON =
+    Data.withObject
+      "AssetLocation"
+      ( \x ->
+          AssetLocation'
+            Prelude.<$> (x Data..:? "RackElevation")
+      )
+
+instance Prelude.Hashable AssetLocation where
+  hashWithSalt _salt AssetLocation' {..} =
+    _salt `Prelude.hashWithSalt` rackElevation
+
+instance Prelude.NFData AssetLocation where
+  rnf AssetLocation' {..} = Prelude.rnf rackElevation
diff --git a/gen/Amazonka/Outposts/Types/AssetState.hs b/gen/Amazonka/Outposts/Types/AssetState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/AssetState.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.Outposts.Types.AssetState
+-- 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.Outposts.Types.AssetState
+  ( AssetState
+      ( ..,
+        AssetState_ACTIVE,
+        AssetState_RETIRING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AssetState = AssetState'
+  { fromAssetState ::
+      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 AssetState_ACTIVE :: AssetState
+pattern AssetState_ACTIVE = AssetState' "ACTIVE"
+
+pattern AssetState_RETIRING :: AssetState
+pattern AssetState_RETIRING = AssetState' "RETIRING"
+
+{-# COMPLETE
+  AssetState_ACTIVE,
+  AssetState_RETIRING,
+  AssetState'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/AssetType.hs b/gen/Amazonka/Outposts/Types/AssetType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/AssetType.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.Outposts.Types.AssetType
+-- 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.Outposts.Types.AssetType
+  ( AssetType
+      ( ..,
+        AssetType_COMPUTE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AssetType = AssetType'
+  { fromAssetType ::
+      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 AssetType_COMPUTE :: AssetType
+pattern AssetType_COMPUTE = AssetType' "COMPUTE"
+
+{-# COMPLETE
+  AssetType_COMPUTE,
+  AssetType'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/CatalogItem.hs b/gen/Amazonka/Outposts/Types/CatalogItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/CatalogItem.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.Outposts.Types.CatalogItem
+-- 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.Outposts.Types.CatalogItem where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types.CatalogItemStatus
+import Amazonka.Outposts.Types.EC2Capacity
+import Amazonka.Outposts.Types.SupportedStorageEnum
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about a catalog item.
+--
+-- /See:/ 'newCatalogItem' smart constructor.
+data CatalogItem = CatalogItem'
+  { -- | The ID of the catalog item.
+    catalogItemId :: Prelude.Maybe Prelude.Text,
+    -- | Information about the EC2 capacity of an item.
+    eC2Capacities :: Prelude.Maybe [EC2Capacity],
+    -- | The status of a catalog item.
+    itemStatus :: Prelude.Maybe CatalogItemStatus,
+    -- | Information about the power draw of an item.
+    powerKva :: Prelude.Maybe Prelude.Double,
+    -- | The supported storage options for the catalog item.
+    supportedStorage :: Prelude.Maybe [SupportedStorageEnum],
+    -- | The uplink speed this catalog item requires for the connection to the
+    -- Region.
+    supportedUplinkGbps :: Prelude.Maybe [Prelude.Int],
+    -- | The weight of the item in pounds.
+    weightLbs :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CatalogItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'catalogItemId', 'catalogItem_catalogItemId' - The ID of the catalog item.
+--
+-- 'eC2Capacities', 'catalogItem_eC2Capacities' - Information about the EC2 capacity of an item.
+--
+-- 'itemStatus', 'catalogItem_itemStatus' - The status of a catalog item.
+--
+-- 'powerKva', 'catalogItem_powerKva' - Information about the power draw of an item.
+--
+-- 'supportedStorage', 'catalogItem_supportedStorage' - The supported storage options for the catalog item.
+--
+-- 'supportedUplinkGbps', 'catalogItem_supportedUplinkGbps' - The uplink speed this catalog item requires for the connection to the
+-- Region.
+--
+-- 'weightLbs', 'catalogItem_weightLbs' - The weight of the item in pounds.
+newCatalogItem ::
+  CatalogItem
+newCatalogItem =
+  CatalogItem'
+    { catalogItemId = Prelude.Nothing,
+      eC2Capacities = Prelude.Nothing,
+      itemStatus = Prelude.Nothing,
+      powerKva = Prelude.Nothing,
+      supportedStorage = Prelude.Nothing,
+      supportedUplinkGbps = Prelude.Nothing,
+      weightLbs = Prelude.Nothing
+    }
+
+-- | The ID of the catalog item.
+catalogItem_catalogItemId :: Lens.Lens' CatalogItem (Prelude.Maybe Prelude.Text)
+catalogItem_catalogItemId = Lens.lens (\CatalogItem' {catalogItemId} -> catalogItemId) (\s@CatalogItem' {} a -> s {catalogItemId = a} :: CatalogItem)
+
+-- | Information about the EC2 capacity of an item.
+catalogItem_eC2Capacities :: Lens.Lens' CatalogItem (Prelude.Maybe [EC2Capacity])
+catalogItem_eC2Capacities = Lens.lens (\CatalogItem' {eC2Capacities} -> eC2Capacities) (\s@CatalogItem' {} a -> s {eC2Capacities = a} :: CatalogItem) Prelude.. Lens.mapping Lens.coerced
+
+-- | The status of a catalog item.
+catalogItem_itemStatus :: Lens.Lens' CatalogItem (Prelude.Maybe CatalogItemStatus)
+catalogItem_itemStatus = Lens.lens (\CatalogItem' {itemStatus} -> itemStatus) (\s@CatalogItem' {} a -> s {itemStatus = a} :: CatalogItem)
+
+-- | Information about the power draw of an item.
+catalogItem_powerKva :: Lens.Lens' CatalogItem (Prelude.Maybe Prelude.Double)
+catalogItem_powerKva = Lens.lens (\CatalogItem' {powerKva} -> powerKva) (\s@CatalogItem' {} a -> s {powerKva = a} :: CatalogItem)
+
+-- | The supported storage options for the catalog item.
+catalogItem_supportedStorage :: Lens.Lens' CatalogItem (Prelude.Maybe [SupportedStorageEnum])
+catalogItem_supportedStorage = Lens.lens (\CatalogItem' {supportedStorage} -> supportedStorage) (\s@CatalogItem' {} a -> s {supportedStorage = a} :: CatalogItem) Prelude.. Lens.mapping Lens.coerced
+
+-- | The uplink speed this catalog item requires for the connection to the
+-- Region.
+catalogItem_supportedUplinkGbps :: Lens.Lens' CatalogItem (Prelude.Maybe [Prelude.Int])
+catalogItem_supportedUplinkGbps = Lens.lens (\CatalogItem' {supportedUplinkGbps} -> supportedUplinkGbps) (\s@CatalogItem' {} a -> s {supportedUplinkGbps = a} :: CatalogItem) Prelude.. Lens.mapping Lens.coerced
+
+-- | The weight of the item in pounds.
+catalogItem_weightLbs :: Lens.Lens' CatalogItem (Prelude.Maybe Prelude.Int)
+catalogItem_weightLbs = Lens.lens (\CatalogItem' {weightLbs} -> weightLbs) (\s@CatalogItem' {} a -> s {weightLbs = a} :: CatalogItem)
+
+instance Data.FromJSON CatalogItem where
+  parseJSON =
+    Data.withObject
+      "CatalogItem"
+      ( \x ->
+          CatalogItem'
+            Prelude.<$> (x Data..:? "CatalogItemId")
+            Prelude.<*> (x Data..:? "EC2Capacities" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ItemStatus")
+            Prelude.<*> (x Data..:? "PowerKva")
+            Prelude.<*> ( x
+                            Data..:? "SupportedStorage"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "SupportedUplinkGbps"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "WeightLbs")
+      )
+
+instance Prelude.Hashable CatalogItem where
+  hashWithSalt _salt CatalogItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` catalogItemId
+      `Prelude.hashWithSalt` eC2Capacities
+      `Prelude.hashWithSalt` itemStatus
+      `Prelude.hashWithSalt` powerKva
+      `Prelude.hashWithSalt` supportedStorage
+      `Prelude.hashWithSalt` supportedUplinkGbps
+      `Prelude.hashWithSalt` weightLbs
+
+instance Prelude.NFData CatalogItem where
+  rnf CatalogItem' {..} =
+    Prelude.rnf catalogItemId
+      `Prelude.seq` Prelude.rnf eC2Capacities
+      `Prelude.seq` Prelude.rnf itemStatus
+      `Prelude.seq` Prelude.rnf powerKva
+      `Prelude.seq` Prelude.rnf supportedStorage
+      `Prelude.seq` Prelude.rnf supportedUplinkGbps
+      `Prelude.seq` Prelude.rnf weightLbs
diff --git a/gen/Amazonka/Outposts/Types/CatalogItemClass.hs b/gen/Amazonka/Outposts/Types/CatalogItemClass.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/CatalogItemClass.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.Outposts.Types.CatalogItemClass
+-- 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.Outposts.Types.CatalogItemClass
+  ( CatalogItemClass
+      ( ..,
+        CatalogItemClass_RACK,
+        CatalogItemClass_SERVER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CatalogItemClass = CatalogItemClass'
+  { fromCatalogItemClass ::
+      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 CatalogItemClass_RACK :: CatalogItemClass
+pattern CatalogItemClass_RACK = CatalogItemClass' "RACK"
+
+pattern CatalogItemClass_SERVER :: CatalogItemClass
+pattern CatalogItemClass_SERVER = CatalogItemClass' "SERVER"
+
+{-# COMPLETE
+  CatalogItemClass_RACK,
+  CatalogItemClass_SERVER,
+  CatalogItemClass'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/CatalogItemStatus.hs b/gen/Amazonka/Outposts/Types/CatalogItemStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/CatalogItemStatus.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.Outposts.Types.CatalogItemStatus
+-- 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.Outposts.Types.CatalogItemStatus
+  ( CatalogItemStatus
+      ( ..,
+        CatalogItemStatus_AVAILABLE,
+        CatalogItemStatus_DISCONTINUED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CatalogItemStatus = CatalogItemStatus'
+  { fromCatalogItemStatus ::
+      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 CatalogItemStatus_AVAILABLE :: CatalogItemStatus
+pattern CatalogItemStatus_AVAILABLE = CatalogItemStatus' "AVAILABLE"
+
+pattern CatalogItemStatus_DISCONTINUED :: CatalogItemStatus
+pattern CatalogItemStatus_DISCONTINUED = CatalogItemStatus' "DISCONTINUED"
+
+{-# COMPLETE
+  CatalogItemStatus_AVAILABLE,
+  CatalogItemStatus_DISCONTINUED,
+  CatalogItemStatus'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/ComputeAssetState.hs b/gen/Amazonka/Outposts/Types/ComputeAssetState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/ComputeAssetState.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.Outposts.Types.ComputeAssetState
+-- 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.Outposts.Types.ComputeAssetState
+  ( ComputeAssetState
+      ( ..,
+        ComputeAssetState_ACTIVE,
+        ComputeAssetState_ISOLATED,
+        ComputeAssetState_RETIRING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ComputeAssetState = ComputeAssetState'
+  { fromComputeAssetState ::
+      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 ComputeAssetState_ACTIVE :: ComputeAssetState
+pattern ComputeAssetState_ACTIVE = ComputeAssetState' "ACTIVE"
+
+pattern ComputeAssetState_ISOLATED :: ComputeAssetState
+pattern ComputeAssetState_ISOLATED = ComputeAssetState' "ISOLATED"
+
+pattern ComputeAssetState_RETIRING :: ComputeAssetState
+pattern ComputeAssetState_RETIRING = ComputeAssetState' "RETIRING"
+
+{-# COMPLETE
+  ComputeAssetState_ACTIVE,
+  ComputeAssetState_ISOLATED,
+  ComputeAssetState_RETIRING,
+  ComputeAssetState'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/ComputeAttributes.hs b/gen/Amazonka/Outposts/Types/ComputeAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/ComputeAttributes.hs
@@ -0,0 +1,120 @@
+{-# 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.Outposts.Types.ComputeAttributes
+-- 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.Outposts.Types.ComputeAttributes where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types.ComputeAssetState
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about compute hardware assets.
+--
+-- /See:/ 'newComputeAttributes' smart constructor.
+data ComputeAttributes = ComputeAttributes'
+  { -- | The host ID of the Dedicated Host on the asset.
+    hostId :: Prelude.Maybe Prelude.Text,
+    -- | The state.
+    --
+    -- -   ACTIVE - The asset is available and can provide capacity for new
+    --     compute resources.
+    --
+    -- -   ISOLATED - The asset is undergoing maintenance and can\'t provide
+    --     capacity for new compute resources. Existing compute resources on
+    --     the asset are not affected.
+    --
+    -- -   RETIRING - The underlying hardware for the asset is degraded.
+    --     Capacity for new compute resources is reduced. Amazon Web Services
+    --     sends notifications for resources that must be stopped before the
+    --     asset can be replaced.
+    state :: Prelude.Maybe ComputeAssetState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ComputeAttributes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'hostId', 'computeAttributes_hostId' - The host ID of the Dedicated Host on the asset.
+--
+-- 'state', 'computeAttributes_state' - The state.
+--
+-- -   ACTIVE - The asset is available and can provide capacity for new
+--     compute resources.
+--
+-- -   ISOLATED - The asset is undergoing maintenance and can\'t provide
+--     capacity for new compute resources. Existing compute resources on
+--     the asset are not affected.
+--
+-- -   RETIRING - The underlying hardware for the asset is degraded.
+--     Capacity for new compute resources is reduced. Amazon Web Services
+--     sends notifications for resources that must be stopped before the
+--     asset can be replaced.
+newComputeAttributes ::
+  ComputeAttributes
+newComputeAttributes =
+  ComputeAttributes'
+    { hostId = Prelude.Nothing,
+      state = Prelude.Nothing
+    }
+
+-- | The host ID of the Dedicated Host on the asset.
+computeAttributes_hostId :: Lens.Lens' ComputeAttributes (Prelude.Maybe Prelude.Text)
+computeAttributes_hostId = Lens.lens (\ComputeAttributes' {hostId} -> hostId) (\s@ComputeAttributes' {} a -> s {hostId = a} :: ComputeAttributes)
+
+-- | The state.
+--
+-- -   ACTIVE - The asset is available and can provide capacity for new
+--     compute resources.
+--
+-- -   ISOLATED - The asset is undergoing maintenance and can\'t provide
+--     capacity for new compute resources. Existing compute resources on
+--     the asset are not affected.
+--
+-- -   RETIRING - The underlying hardware for the asset is degraded.
+--     Capacity for new compute resources is reduced. Amazon Web Services
+--     sends notifications for resources that must be stopped before the
+--     asset can be replaced.
+computeAttributes_state :: Lens.Lens' ComputeAttributes (Prelude.Maybe ComputeAssetState)
+computeAttributes_state = Lens.lens (\ComputeAttributes' {state} -> state) (\s@ComputeAttributes' {} a -> s {state = a} :: ComputeAttributes)
+
+instance Data.FromJSON ComputeAttributes where
+  parseJSON =
+    Data.withObject
+      "ComputeAttributes"
+      ( \x ->
+          ComputeAttributes'
+            Prelude.<$> (x Data..:? "HostId")
+            Prelude.<*> (x Data..:? "State")
+      )
+
+instance Prelude.Hashable ComputeAttributes where
+  hashWithSalt _salt ComputeAttributes' {..} =
+    _salt
+      `Prelude.hashWithSalt` hostId
+      `Prelude.hashWithSalt` state
+
+instance Prelude.NFData ComputeAttributes where
+  rnf ComputeAttributes' {..} =
+    Prelude.rnf hostId `Prelude.seq` Prelude.rnf state
diff --git a/gen/Amazonka/Outposts/Types/ConnectionDetails.hs b/gen/Amazonka/Outposts/Types/ConnectionDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/ConnectionDetails.hs
@@ -0,0 +1,132 @@
+{-# 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.Outposts.Types.ConnectionDetails
+-- 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.Outposts.Types.ConnectionDetails 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 connection.
+--
+-- /See:/ 'newConnectionDetails' smart constructor.
+data ConnectionDetails = ConnectionDetails'
+  { -- | The allowed IP addresses.
+    allowedIps :: Prelude.Maybe [Prelude.Text],
+    -- | The public key of the client.
+    clientPublicKey :: Prelude.Maybe Prelude.Text,
+    -- | The client tunnel address.
+    clientTunnelAddress :: Prelude.Maybe Prelude.Text,
+    -- | The endpoint for the server.
+    serverEndpoint :: Prelude.Maybe Prelude.Text,
+    -- | The public key of the server.
+    serverPublicKey :: Prelude.Maybe Prelude.Text,
+    -- | The server tunnel address.
+    serverTunnelAddress :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConnectionDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'allowedIps', 'connectionDetails_allowedIps' - The allowed IP addresses.
+--
+-- 'clientPublicKey', 'connectionDetails_clientPublicKey' - The public key of the client.
+--
+-- 'clientTunnelAddress', 'connectionDetails_clientTunnelAddress' - The client tunnel address.
+--
+-- 'serverEndpoint', 'connectionDetails_serverEndpoint' - The endpoint for the server.
+--
+-- 'serverPublicKey', 'connectionDetails_serverPublicKey' - The public key of the server.
+--
+-- 'serverTunnelAddress', 'connectionDetails_serverTunnelAddress' - The server tunnel address.
+newConnectionDetails ::
+  ConnectionDetails
+newConnectionDetails =
+  ConnectionDetails'
+    { allowedIps = Prelude.Nothing,
+      clientPublicKey = Prelude.Nothing,
+      clientTunnelAddress = Prelude.Nothing,
+      serverEndpoint = Prelude.Nothing,
+      serverPublicKey = Prelude.Nothing,
+      serverTunnelAddress = Prelude.Nothing
+    }
+
+-- | The allowed IP addresses.
+connectionDetails_allowedIps :: Lens.Lens' ConnectionDetails (Prelude.Maybe [Prelude.Text])
+connectionDetails_allowedIps = Lens.lens (\ConnectionDetails' {allowedIps} -> allowedIps) (\s@ConnectionDetails' {} a -> s {allowedIps = a} :: ConnectionDetails) Prelude.. Lens.mapping Lens.coerced
+
+-- | The public key of the client.
+connectionDetails_clientPublicKey :: Lens.Lens' ConnectionDetails (Prelude.Maybe Prelude.Text)
+connectionDetails_clientPublicKey = Lens.lens (\ConnectionDetails' {clientPublicKey} -> clientPublicKey) (\s@ConnectionDetails' {} a -> s {clientPublicKey = a} :: ConnectionDetails)
+
+-- | The client tunnel address.
+connectionDetails_clientTunnelAddress :: Lens.Lens' ConnectionDetails (Prelude.Maybe Prelude.Text)
+connectionDetails_clientTunnelAddress = Lens.lens (\ConnectionDetails' {clientTunnelAddress} -> clientTunnelAddress) (\s@ConnectionDetails' {} a -> s {clientTunnelAddress = a} :: ConnectionDetails)
+
+-- | The endpoint for the server.
+connectionDetails_serverEndpoint :: Lens.Lens' ConnectionDetails (Prelude.Maybe Prelude.Text)
+connectionDetails_serverEndpoint = Lens.lens (\ConnectionDetails' {serverEndpoint} -> serverEndpoint) (\s@ConnectionDetails' {} a -> s {serverEndpoint = a} :: ConnectionDetails)
+
+-- | The public key of the server.
+connectionDetails_serverPublicKey :: Lens.Lens' ConnectionDetails (Prelude.Maybe Prelude.Text)
+connectionDetails_serverPublicKey = Lens.lens (\ConnectionDetails' {serverPublicKey} -> serverPublicKey) (\s@ConnectionDetails' {} a -> s {serverPublicKey = a} :: ConnectionDetails)
+
+-- | The server tunnel address.
+connectionDetails_serverTunnelAddress :: Lens.Lens' ConnectionDetails (Prelude.Maybe Prelude.Text)
+connectionDetails_serverTunnelAddress = Lens.lens (\ConnectionDetails' {serverTunnelAddress} -> serverTunnelAddress) (\s@ConnectionDetails' {} a -> s {serverTunnelAddress = a} :: ConnectionDetails)
+
+instance Data.FromJSON ConnectionDetails where
+  parseJSON =
+    Data.withObject
+      "ConnectionDetails"
+      ( \x ->
+          ConnectionDetails'
+            Prelude.<$> (x Data..:? "AllowedIps" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "ClientPublicKey")
+            Prelude.<*> (x Data..:? "ClientTunnelAddress")
+            Prelude.<*> (x Data..:? "ServerEndpoint")
+            Prelude.<*> (x Data..:? "ServerPublicKey")
+            Prelude.<*> (x Data..:? "ServerTunnelAddress")
+      )
+
+instance Prelude.Hashable ConnectionDetails where
+  hashWithSalt _salt ConnectionDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` allowedIps
+      `Prelude.hashWithSalt` clientPublicKey
+      `Prelude.hashWithSalt` clientTunnelAddress
+      `Prelude.hashWithSalt` serverEndpoint
+      `Prelude.hashWithSalt` serverPublicKey
+      `Prelude.hashWithSalt` serverTunnelAddress
+
+instance Prelude.NFData ConnectionDetails where
+  rnf ConnectionDetails' {..} =
+    Prelude.rnf allowedIps
+      `Prelude.seq` Prelude.rnf clientPublicKey
+      `Prelude.seq` Prelude.rnf clientTunnelAddress
+      `Prelude.seq` Prelude.rnf serverEndpoint
+      `Prelude.seq` Prelude.rnf serverPublicKey
+      `Prelude.seq` Prelude.rnf serverTunnelAddress
diff --git a/gen/Amazonka/Outposts/Types/EC2Capacity.hs b/gen/Amazonka/Outposts/Types/EC2Capacity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/EC2Capacity.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.Types.EC2Capacity
+-- 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.Outposts.Types.EC2Capacity 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 EC2 capacity.
+--
+-- /See:/ 'newEC2Capacity' smart constructor.
+data EC2Capacity = EC2Capacity'
+  { -- | The family of the EC2 capacity.
+    family :: Prelude.Maybe Prelude.Text,
+    -- | The maximum size of the EC2 capacity.
+    maxSize :: Prelude.Maybe Prelude.Text,
+    -- | The quantity of the EC2 capacity.
+    quantity :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EC2Capacity' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'family', 'eC2Capacity_family' - The family of the EC2 capacity.
+--
+-- 'maxSize', 'eC2Capacity_maxSize' - The maximum size of the EC2 capacity.
+--
+-- 'quantity', 'eC2Capacity_quantity' - The quantity of the EC2 capacity.
+newEC2Capacity ::
+  EC2Capacity
+newEC2Capacity =
+  EC2Capacity'
+    { family = Prelude.Nothing,
+      maxSize = Prelude.Nothing,
+      quantity = Prelude.Nothing
+    }
+
+-- | The family of the EC2 capacity.
+eC2Capacity_family :: Lens.Lens' EC2Capacity (Prelude.Maybe Prelude.Text)
+eC2Capacity_family = Lens.lens (\EC2Capacity' {family} -> family) (\s@EC2Capacity' {} a -> s {family = a} :: EC2Capacity)
+
+-- | The maximum size of the EC2 capacity.
+eC2Capacity_maxSize :: Lens.Lens' EC2Capacity (Prelude.Maybe Prelude.Text)
+eC2Capacity_maxSize = Lens.lens (\EC2Capacity' {maxSize} -> maxSize) (\s@EC2Capacity' {} a -> s {maxSize = a} :: EC2Capacity)
+
+-- | The quantity of the EC2 capacity.
+eC2Capacity_quantity :: Lens.Lens' EC2Capacity (Prelude.Maybe Prelude.Text)
+eC2Capacity_quantity = Lens.lens (\EC2Capacity' {quantity} -> quantity) (\s@EC2Capacity' {} a -> s {quantity = a} :: EC2Capacity)
+
+instance Data.FromJSON EC2Capacity where
+  parseJSON =
+    Data.withObject
+      "EC2Capacity"
+      ( \x ->
+          EC2Capacity'
+            Prelude.<$> (x Data..:? "Family")
+            Prelude.<*> (x Data..:? "MaxSize")
+            Prelude.<*> (x Data..:? "Quantity")
+      )
+
+instance Prelude.Hashable EC2Capacity where
+  hashWithSalt _salt EC2Capacity' {..} =
+    _salt
+      `Prelude.hashWithSalt` family
+      `Prelude.hashWithSalt` maxSize
+      `Prelude.hashWithSalt` quantity
+
+instance Prelude.NFData EC2Capacity where
+  rnf EC2Capacity' {..} =
+    Prelude.rnf family
+      `Prelude.seq` Prelude.rnf maxSize
+      `Prelude.seq` Prelude.rnf quantity
diff --git a/gen/Amazonka/Outposts/Types/FiberOpticCableType.hs b/gen/Amazonka/Outposts/Types/FiberOpticCableType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/FiberOpticCableType.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.Outposts.Types.FiberOpticCableType
+-- 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.Outposts.Types.FiberOpticCableType
+  ( FiberOpticCableType
+      ( ..,
+        FiberOpticCableType_MULTI_MODE,
+        FiberOpticCableType_SINGLE_MODE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FiberOpticCableType = FiberOpticCableType'
+  { fromFiberOpticCableType ::
+      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 FiberOpticCableType_MULTI_MODE :: FiberOpticCableType
+pattern FiberOpticCableType_MULTI_MODE = FiberOpticCableType' "MULTI_MODE"
+
+pattern FiberOpticCableType_SINGLE_MODE :: FiberOpticCableType
+pattern FiberOpticCableType_SINGLE_MODE = FiberOpticCableType' "SINGLE_MODE"
+
+{-# COMPLETE
+  FiberOpticCableType_MULTI_MODE,
+  FiberOpticCableType_SINGLE_MODE,
+  FiberOpticCableType'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/InstanceTypeItem.hs b/gen/Amazonka/Outposts/Types/InstanceTypeItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/InstanceTypeItem.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.Types.InstanceTypeItem
+-- 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.Outposts.Types.InstanceTypeItem 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 instance type.
+--
+-- /See:/ 'newInstanceTypeItem' smart constructor.
+data InstanceTypeItem = InstanceTypeItem'
+  { instanceType :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InstanceTypeItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceType', 'instanceTypeItem_instanceType' - Undocumented member.
+newInstanceTypeItem ::
+  InstanceTypeItem
+newInstanceTypeItem =
+  InstanceTypeItem' {instanceType = Prelude.Nothing}
+
+-- | Undocumented member.
+instanceTypeItem_instanceType :: Lens.Lens' InstanceTypeItem (Prelude.Maybe Prelude.Text)
+instanceTypeItem_instanceType = Lens.lens (\InstanceTypeItem' {instanceType} -> instanceType) (\s@InstanceTypeItem' {} a -> s {instanceType = a} :: InstanceTypeItem)
+
+instance Data.FromJSON InstanceTypeItem where
+  parseJSON =
+    Data.withObject
+      "InstanceTypeItem"
+      ( \x ->
+          InstanceTypeItem'
+            Prelude.<$> (x Data..:? "InstanceType")
+      )
+
+instance Prelude.Hashable InstanceTypeItem where
+  hashWithSalt _salt InstanceTypeItem' {..} =
+    _salt `Prelude.hashWithSalt` instanceType
+
+instance Prelude.NFData InstanceTypeItem where
+  rnf InstanceTypeItem' {..} = Prelude.rnf instanceType
diff --git a/gen/Amazonka/Outposts/Types/LineItem.hs b/gen/Amazonka/Outposts/Types/LineItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/LineItem.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.Types.LineItem
+-- 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.Outposts.Types.LineItem where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types.LineItemAssetInformation
+import Amazonka.Outposts.Types.LineItemStatus
+import Amazonka.Outposts.Types.ShipmentInformation
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about a line item.
+--
+-- /See:/ 'newLineItem' smart constructor.
+data LineItem = LineItem'
+  { -- | Information about assets.
+    assetInformationList :: Prelude.Maybe [LineItemAssetInformation],
+    -- | The ID of the catalog item.
+    catalogItemId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the line item.
+    lineItemId :: Prelude.Maybe Prelude.Text,
+    -- | The quantity of the line item.
+    quantity :: Prelude.Maybe Prelude.Natural,
+    -- | Information about a line item shipment.
+    shipmentInformation :: Prelude.Maybe ShipmentInformation,
+    -- | The status of the line item.
+    status :: Prelude.Maybe LineItemStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LineItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'assetInformationList', 'lineItem_assetInformationList' - Information about assets.
+--
+-- 'catalogItemId', 'lineItem_catalogItemId' - The ID of the catalog item.
+--
+-- 'lineItemId', 'lineItem_lineItemId' - The ID of the line item.
+--
+-- 'quantity', 'lineItem_quantity' - The quantity of the line item.
+--
+-- 'shipmentInformation', 'lineItem_shipmentInformation' - Information about a line item shipment.
+--
+-- 'status', 'lineItem_status' - The status of the line item.
+newLineItem ::
+  LineItem
+newLineItem =
+  LineItem'
+    { assetInformationList = Prelude.Nothing,
+      catalogItemId = Prelude.Nothing,
+      lineItemId = Prelude.Nothing,
+      quantity = Prelude.Nothing,
+      shipmentInformation = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | Information about assets.
+lineItem_assetInformationList :: Lens.Lens' LineItem (Prelude.Maybe [LineItemAssetInformation])
+lineItem_assetInformationList = Lens.lens (\LineItem' {assetInformationList} -> assetInformationList) (\s@LineItem' {} a -> s {assetInformationList = a} :: LineItem) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the catalog item.
+lineItem_catalogItemId :: Lens.Lens' LineItem (Prelude.Maybe Prelude.Text)
+lineItem_catalogItemId = Lens.lens (\LineItem' {catalogItemId} -> catalogItemId) (\s@LineItem' {} a -> s {catalogItemId = a} :: LineItem)
+
+-- | The ID of the line item.
+lineItem_lineItemId :: Lens.Lens' LineItem (Prelude.Maybe Prelude.Text)
+lineItem_lineItemId = Lens.lens (\LineItem' {lineItemId} -> lineItemId) (\s@LineItem' {} a -> s {lineItemId = a} :: LineItem)
+
+-- | The quantity of the line item.
+lineItem_quantity :: Lens.Lens' LineItem (Prelude.Maybe Prelude.Natural)
+lineItem_quantity = Lens.lens (\LineItem' {quantity} -> quantity) (\s@LineItem' {} a -> s {quantity = a} :: LineItem)
+
+-- | Information about a line item shipment.
+lineItem_shipmentInformation :: Lens.Lens' LineItem (Prelude.Maybe ShipmentInformation)
+lineItem_shipmentInformation = Lens.lens (\LineItem' {shipmentInformation} -> shipmentInformation) (\s@LineItem' {} a -> s {shipmentInformation = a} :: LineItem)
+
+-- | The status of the line item.
+lineItem_status :: Lens.Lens' LineItem (Prelude.Maybe LineItemStatus)
+lineItem_status = Lens.lens (\LineItem' {status} -> status) (\s@LineItem' {} a -> s {status = a} :: LineItem)
+
+instance Data.FromJSON LineItem where
+  parseJSON =
+    Data.withObject
+      "LineItem"
+      ( \x ->
+          LineItem'
+            Prelude.<$> ( x
+                            Data..:? "AssetInformationList"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "CatalogItemId")
+            Prelude.<*> (x Data..:? "LineItemId")
+            Prelude.<*> (x Data..:? "Quantity")
+            Prelude.<*> (x Data..:? "ShipmentInformation")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable LineItem where
+  hashWithSalt _salt LineItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` assetInformationList
+      `Prelude.hashWithSalt` catalogItemId
+      `Prelude.hashWithSalt` lineItemId
+      `Prelude.hashWithSalt` quantity
+      `Prelude.hashWithSalt` shipmentInformation
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData LineItem where
+  rnf LineItem' {..} =
+    Prelude.rnf assetInformationList
+      `Prelude.seq` Prelude.rnf catalogItemId
+      `Prelude.seq` Prelude.rnf lineItemId
+      `Prelude.seq` Prelude.rnf quantity
+      `Prelude.seq` Prelude.rnf shipmentInformation
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/Outposts/Types/LineItemAssetInformation.hs b/gen/Amazonka/Outposts/Types/LineItemAssetInformation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/LineItemAssetInformation.hs
@@ -0,0 +1,88 @@
+{-# 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.Outposts.Types.LineItemAssetInformation
+-- 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.Outposts.Types.LineItemAssetInformation 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 line item asset.
+--
+-- /See:/ 'newLineItemAssetInformation' smart constructor.
+data LineItemAssetInformation = LineItemAssetInformation'
+  { -- | The ID of the asset.
+    assetId :: Prelude.Maybe Prelude.Text,
+    -- | The MAC addresses of the asset.
+    macAddressList :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LineItemAssetInformation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'assetId', 'lineItemAssetInformation_assetId' - The ID of the asset.
+--
+-- 'macAddressList', 'lineItemAssetInformation_macAddressList' - The MAC addresses of the asset.
+newLineItemAssetInformation ::
+  LineItemAssetInformation
+newLineItemAssetInformation =
+  LineItemAssetInformation'
+    { assetId =
+        Prelude.Nothing,
+      macAddressList = Prelude.Nothing
+    }
+
+-- | The ID of the asset.
+lineItemAssetInformation_assetId :: Lens.Lens' LineItemAssetInformation (Prelude.Maybe Prelude.Text)
+lineItemAssetInformation_assetId = Lens.lens (\LineItemAssetInformation' {assetId} -> assetId) (\s@LineItemAssetInformation' {} a -> s {assetId = a} :: LineItemAssetInformation)
+
+-- | The MAC addresses of the asset.
+lineItemAssetInformation_macAddressList :: Lens.Lens' LineItemAssetInformation (Prelude.Maybe [Prelude.Text])
+lineItemAssetInformation_macAddressList = Lens.lens (\LineItemAssetInformation' {macAddressList} -> macAddressList) (\s@LineItemAssetInformation' {} a -> s {macAddressList = a} :: LineItemAssetInformation) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON LineItemAssetInformation where
+  parseJSON =
+    Data.withObject
+      "LineItemAssetInformation"
+      ( \x ->
+          LineItemAssetInformation'
+            Prelude.<$> (x Data..:? "AssetId")
+            Prelude.<*> ( x
+                            Data..:? "MacAddressList"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable LineItemAssetInformation where
+  hashWithSalt _salt LineItemAssetInformation' {..} =
+    _salt
+      `Prelude.hashWithSalt` assetId
+      `Prelude.hashWithSalt` macAddressList
+
+instance Prelude.NFData LineItemAssetInformation where
+  rnf LineItemAssetInformation' {..} =
+    Prelude.rnf assetId
+      `Prelude.seq` Prelude.rnf macAddressList
diff --git a/gen/Amazonka/Outposts/Types/LineItemRequest.hs b/gen/Amazonka/Outposts/Types/LineItemRequest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/LineItemRequest.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.Types.LineItemRequest
+-- 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.Outposts.Types.LineItemRequest 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 line item request.
+--
+-- /See:/ 'newLineItemRequest' smart constructor.
+data LineItemRequest = LineItemRequest'
+  { -- | The ID of the catalog item.
+    catalogItemId :: Prelude.Maybe Prelude.Text,
+    -- | The quantity of a line item request.
+    quantity :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LineItemRequest' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'catalogItemId', 'lineItemRequest_catalogItemId' - The ID of the catalog item.
+--
+-- 'quantity', 'lineItemRequest_quantity' - The quantity of a line item request.
+newLineItemRequest ::
+  LineItemRequest
+newLineItemRequest =
+  LineItemRequest'
+    { catalogItemId = Prelude.Nothing,
+      quantity = Prelude.Nothing
+    }
+
+-- | The ID of the catalog item.
+lineItemRequest_catalogItemId :: Lens.Lens' LineItemRequest (Prelude.Maybe Prelude.Text)
+lineItemRequest_catalogItemId = Lens.lens (\LineItemRequest' {catalogItemId} -> catalogItemId) (\s@LineItemRequest' {} a -> s {catalogItemId = a} :: LineItemRequest)
+
+-- | The quantity of a line item request.
+lineItemRequest_quantity :: Lens.Lens' LineItemRequest (Prelude.Maybe Prelude.Natural)
+lineItemRequest_quantity = Lens.lens (\LineItemRequest' {quantity} -> quantity) (\s@LineItemRequest' {} a -> s {quantity = a} :: LineItemRequest)
+
+instance Prelude.Hashable LineItemRequest where
+  hashWithSalt _salt LineItemRequest' {..} =
+    _salt
+      `Prelude.hashWithSalt` catalogItemId
+      `Prelude.hashWithSalt` quantity
+
+instance Prelude.NFData LineItemRequest where
+  rnf LineItemRequest' {..} =
+    Prelude.rnf catalogItemId
+      `Prelude.seq` Prelude.rnf quantity
+
+instance Data.ToJSON LineItemRequest where
+  toJSON LineItemRequest' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CatalogItemId" Data..=) Prelude.<$> catalogItemId,
+            ("Quantity" Data..=) Prelude.<$> quantity
+          ]
+      )
diff --git a/gen/Amazonka/Outposts/Types/LineItemStatus.hs b/gen/Amazonka/Outposts/Types/LineItemStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/LineItemStatus.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.Outposts.Types.LineItemStatus
+-- 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.Outposts.Types.LineItemStatus
+  ( LineItemStatus
+      ( ..,
+        LineItemStatus_BUILDING,
+        LineItemStatus_CANCELLED,
+        LineItemStatus_DELIVERED,
+        LineItemStatus_ERROR,
+        LineItemStatus_INSTALLED,
+        LineItemStatus_INSTALLING,
+        LineItemStatus_PREPARING,
+        LineItemStatus_SHIPPED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LineItemStatus = LineItemStatus'
+  { fromLineItemStatus ::
+      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 LineItemStatus_BUILDING :: LineItemStatus
+pattern LineItemStatus_BUILDING = LineItemStatus' "BUILDING"
+
+pattern LineItemStatus_CANCELLED :: LineItemStatus
+pattern LineItemStatus_CANCELLED = LineItemStatus' "CANCELLED"
+
+pattern LineItemStatus_DELIVERED :: LineItemStatus
+pattern LineItemStatus_DELIVERED = LineItemStatus' "DELIVERED"
+
+pattern LineItemStatus_ERROR :: LineItemStatus
+pattern LineItemStatus_ERROR = LineItemStatus' "ERROR"
+
+pattern LineItemStatus_INSTALLED :: LineItemStatus
+pattern LineItemStatus_INSTALLED = LineItemStatus' "INSTALLED"
+
+pattern LineItemStatus_INSTALLING :: LineItemStatus
+pattern LineItemStatus_INSTALLING = LineItemStatus' "INSTALLING"
+
+pattern LineItemStatus_PREPARING :: LineItemStatus
+pattern LineItemStatus_PREPARING = LineItemStatus' "PREPARING"
+
+pattern LineItemStatus_SHIPPED :: LineItemStatus
+pattern LineItemStatus_SHIPPED = LineItemStatus' "SHIPPED"
+
+{-# COMPLETE
+  LineItemStatus_BUILDING,
+  LineItemStatus_CANCELLED,
+  LineItemStatus_DELIVERED,
+  LineItemStatus_ERROR,
+  LineItemStatus_INSTALLED,
+  LineItemStatus_INSTALLING,
+  LineItemStatus_PREPARING,
+  LineItemStatus_SHIPPED,
+  LineItemStatus'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/MaximumSupportedWeightLbs.hs b/gen/Amazonka/Outposts/Types/MaximumSupportedWeightLbs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/MaximumSupportedWeightLbs.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.Outposts.Types.MaximumSupportedWeightLbs
+-- 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.Outposts.Types.MaximumSupportedWeightLbs
+  ( MaximumSupportedWeightLbs
+      ( ..,
+        MaximumSupportedWeightLbs_MAX_1400_LBS,
+        MaximumSupportedWeightLbs_MAX_1600_LBS,
+        MaximumSupportedWeightLbs_MAX_1800_LBS,
+        MaximumSupportedWeightLbs_MAX_2000_LBS,
+        MaximumSupportedWeightLbs_NO_LIMIT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MaximumSupportedWeightLbs = MaximumSupportedWeightLbs'
+  { fromMaximumSupportedWeightLbs ::
+      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 MaximumSupportedWeightLbs_MAX_1400_LBS :: MaximumSupportedWeightLbs
+pattern MaximumSupportedWeightLbs_MAX_1400_LBS = MaximumSupportedWeightLbs' "MAX_1400_LBS"
+
+pattern MaximumSupportedWeightLbs_MAX_1600_LBS :: MaximumSupportedWeightLbs
+pattern MaximumSupportedWeightLbs_MAX_1600_LBS = MaximumSupportedWeightLbs' "MAX_1600_LBS"
+
+pattern MaximumSupportedWeightLbs_MAX_1800_LBS :: MaximumSupportedWeightLbs
+pattern MaximumSupportedWeightLbs_MAX_1800_LBS = MaximumSupportedWeightLbs' "MAX_1800_LBS"
+
+pattern MaximumSupportedWeightLbs_MAX_2000_LBS :: MaximumSupportedWeightLbs
+pattern MaximumSupportedWeightLbs_MAX_2000_LBS = MaximumSupportedWeightLbs' "MAX_2000_LBS"
+
+pattern MaximumSupportedWeightLbs_NO_LIMIT :: MaximumSupportedWeightLbs
+pattern MaximumSupportedWeightLbs_NO_LIMIT = MaximumSupportedWeightLbs' "NO_LIMIT"
+
+{-# COMPLETE
+  MaximumSupportedWeightLbs_MAX_1400_LBS,
+  MaximumSupportedWeightLbs_MAX_1600_LBS,
+  MaximumSupportedWeightLbs_MAX_1800_LBS,
+  MaximumSupportedWeightLbs_MAX_2000_LBS,
+  MaximumSupportedWeightLbs_NO_LIMIT,
+  MaximumSupportedWeightLbs'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/OpticalStandard.hs b/gen/Amazonka/Outposts/Types/OpticalStandard.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/OpticalStandard.hs
@@ -0,0 +1,126 @@
+{-# 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.Outposts.Types.OpticalStandard
+-- 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.Outposts.Types.OpticalStandard
+  ( OpticalStandard
+      ( ..,
+        OpticalStandard_OPTIC_1000BASE_LX,
+        OpticalStandard_OPTIC_1000BASE_SX,
+        OpticalStandard_OPTIC_100GBASE_CWDM4,
+        OpticalStandard_OPTIC_100GBASE_LR4,
+        OpticalStandard_OPTIC_100GBASE_SR4,
+        OpticalStandard_OPTIC_100G_PSM4_MSA,
+        OpticalStandard_OPTIC_10GBASE_IR,
+        OpticalStandard_OPTIC_10GBASE_LR,
+        OpticalStandard_OPTIC_10GBASE_SR,
+        OpticalStandard_OPTIC_40GBASE_ESR,
+        OpticalStandard_OPTIC_40GBASE_IR4_LR4L,
+        OpticalStandard_OPTIC_40GBASE_LR4,
+        OpticalStandard_OPTIC_40GBASE_SR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OpticalStandard = OpticalStandard'
+  { fromOpticalStandard ::
+      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 OpticalStandard_OPTIC_1000BASE_LX :: OpticalStandard
+pattern OpticalStandard_OPTIC_1000BASE_LX = OpticalStandard' "OPTIC_1000BASE_LX"
+
+pattern OpticalStandard_OPTIC_1000BASE_SX :: OpticalStandard
+pattern OpticalStandard_OPTIC_1000BASE_SX = OpticalStandard' "OPTIC_1000BASE_SX"
+
+pattern OpticalStandard_OPTIC_100GBASE_CWDM4 :: OpticalStandard
+pattern OpticalStandard_OPTIC_100GBASE_CWDM4 = OpticalStandard' "OPTIC_100GBASE_CWDM4"
+
+pattern OpticalStandard_OPTIC_100GBASE_LR4 :: OpticalStandard
+pattern OpticalStandard_OPTIC_100GBASE_LR4 = OpticalStandard' "OPTIC_100GBASE_LR4"
+
+pattern OpticalStandard_OPTIC_100GBASE_SR4 :: OpticalStandard
+pattern OpticalStandard_OPTIC_100GBASE_SR4 = OpticalStandard' "OPTIC_100GBASE_SR4"
+
+pattern OpticalStandard_OPTIC_100G_PSM4_MSA :: OpticalStandard
+pattern OpticalStandard_OPTIC_100G_PSM4_MSA = OpticalStandard' "OPTIC_100G_PSM4_MSA"
+
+pattern OpticalStandard_OPTIC_10GBASE_IR :: OpticalStandard
+pattern OpticalStandard_OPTIC_10GBASE_IR = OpticalStandard' "OPTIC_10GBASE_IR"
+
+pattern OpticalStandard_OPTIC_10GBASE_LR :: OpticalStandard
+pattern OpticalStandard_OPTIC_10GBASE_LR = OpticalStandard' "OPTIC_10GBASE_LR"
+
+pattern OpticalStandard_OPTIC_10GBASE_SR :: OpticalStandard
+pattern OpticalStandard_OPTIC_10GBASE_SR = OpticalStandard' "OPTIC_10GBASE_SR"
+
+pattern OpticalStandard_OPTIC_40GBASE_ESR :: OpticalStandard
+pattern OpticalStandard_OPTIC_40GBASE_ESR = OpticalStandard' "OPTIC_40GBASE_ESR"
+
+pattern OpticalStandard_OPTIC_40GBASE_IR4_LR4L :: OpticalStandard
+pattern OpticalStandard_OPTIC_40GBASE_IR4_LR4L = OpticalStandard' "OPTIC_40GBASE_IR4_LR4L"
+
+pattern OpticalStandard_OPTIC_40GBASE_LR4 :: OpticalStandard
+pattern OpticalStandard_OPTIC_40GBASE_LR4 = OpticalStandard' "OPTIC_40GBASE_LR4"
+
+pattern OpticalStandard_OPTIC_40GBASE_SR :: OpticalStandard
+pattern OpticalStandard_OPTIC_40GBASE_SR = OpticalStandard' "OPTIC_40GBASE_SR"
+
+{-# COMPLETE
+  OpticalStandard_OPTIC_1000BASE_LX,
+  OpticalStandard_OPTIC_1000BASE_SX,
+  OpticalStandard_OPTIC_100GBASE_CWDM4,
+  OpticalStandard_OPTIC_100GBASE_LR4,
+  OpticalStandard_OPTIC_100GBASE_SR4,
+  OpticalStandard_OPTIC_100G_PSM4_MSA,
+  OpticalStandard_OPTIC_10GBASE_IR,
+  OpticalStandard_OPTIC_10GBASE_LR,
+  OpticalStandard_OPTIC_10GBASE_SR,
+  OpticalStandard_OPTIC_40GBASE_ESR,
+  OpticalStandard_OPTIC_40GBASE_IR4_LR4L,
+  OpticalStandard_OPTIC_40GBASE_LR4,
+  OpticalStandard_OPTIC_40GBASE_SR,
+  OpticalStandard'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/Order.hs b/gen/Amazonka/Outposts/Types/Order.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/Order.hs
@@ -0,0 +1,189 @@
+{-# 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.Outposts.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.Outposts.Types.Order where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types.LineItem
+import Amazonka.Outposts.Types.OrderStatus
+import Amazonka.Outposts.Types.PaymentOption
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about an order.
+--
+-- /See:/ 'newOrder' smart constructor.
+data Order = Order'
+  { -- | The line items for the order
+    lineItems :: Prelude.Maybe [LineItem],
+    -- | The fulfillment date of the order.
+    orderFulfilledDate :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the order.
+    orderId :: Prelude.Maybe Prelude.Text,
+    -- | The submission date for the order.
+    orderSubmissionDate :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the Outpost in the order.
+    outpostId :: Prelude.Maybe Prelude.Text,
+    -- | The payment option for the order.
+    paymentOption :: Prelude.Maybe PaymentOption,
+    -- | The status of the order.
+    --
+    -- -   @PREPARING@ - Order is received and being prepared.
+    --
+    -- -   @IN_PROGRESS@ - Order is either being built, shipped, or installed.
+    --     To get more details, see the line item status.
+    --
+    -- -   @COMPLETED@ - Order is complete.
+    --
+    -- -   @CANCELLED@ - Order is cancelled.
+    --
+    -- -   @ERROR@ - Customer should contact support.
+    --
+    -- The following status are deprecated: @RECEIVED@, @PENDING@,
+    -- @PROCESSING@, @INSTALLING@, and @FULFILLED@.
+    status :: Prelude.Maybe OrderStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, 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:
+--
+-- 'lineItems', 'order_lineItems' - The line items for the order
+--
+-- 'orderFulfilledDate', 'order_orderFulfilledDate' - The fulfillment date of the order.
+--
+-- 'orderId', 'order_orderId' - The ID of the order.
+--
+-- 'orderSubmissionDate', 'order_orderSubmissionDate' - The submission date for the order.
+--
+-- 'outpostId', 'order_outpostId' - The ID of the Outpost in the order.
+--
+-- 'paymentOption', 'order_paymentOption' - The payment option for the order.
+--
+-- 'status', 'order_status' - The status of the order.
+--
+-- -   @PREPARING@ - Order is received and being prepared.
+--
+-- -   @IN_PROGRESS@ - Order is either being built, shipped, or installed.
+--     To get more details, see the line item status.
+--
+-- -   @COMPLETED@ - Order is complete.
+--
+-- -   @CANCELLED@ - Order is cancelled.
+--
+-- -   @ERROR@ - Customer should contact support.
+--
+-- The following status are deprecated: @RECEIVED@, @PENDING@,
+-- @PROCESSING@, @INSTALLING@, and @FULFILLED@.
+newOrder ::
+  Order
+newOrder =
+  Order'
+    { lineItems = Prelude.Nothing,
+      orderFulfilledDate = Prelude.Nothing,
+      orderId = Prelude.Nothing,
+      orderSubmissionDate = Prelude.Nothing,
+      outpostId = Prelude.Nothing,
+      paymentOption = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The line items for the order
+order_lineItems :: Lens.Lens' Order (Prelude.Maybe [LineItem])
+order_lineItems = Lens.lens (\Order' {lineItems} -> lineItems) (\s@Order' {} a -> s {lineItems = a} :: Order) Prelude.. Lens.mapping Lens.coerced
+
+-- | The fulfillment date of the order.
+order_orderFulfilledDate :: Lens.Lens' Order (Prelude.Maybe Prelude.UTCTime)
+order_orderFulfilledDate = Lens.lens (\Order' {orderFulfilledDate} -> orderFulfilledDate) (\s@Order' {} a -> s {orderFulfilledDate = a} :: Order) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the order.
+order_orderId :: Lens.Lens' Order (Prelude.Maybe Prelude.Text)
+order_orderId = Lens.lens (\Order' {orderId} -> orderId) (\s@Order' {} a -> s {orderId = a} :: Order)
+
+-- | The submission date for the order.
+order_orderSubmissionDate :: Lens.Lens' Order (Prelude.Maybe Prelude.UTCTime)
+order_orderSubmissionDate = Lens.lens (\Order' {orderSubmissionDate} -> orderSubmissionDate) (\s@Order' {} a -> s {orderSubmissionDate = a} :: Order) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the Outpost in the order.
+order_outpostId :: Lens.Lens' Order (Prelude.Maybe Prelude.Text)
+order_outpostId = Lens.lens (\Order' {outpostId} -> outpostId) (\s@Order' {} a -> s {outpostId = a} :: Order)
+
+-- | The payment option for the order.
+order_paymentOption :: Lens.Lens' Order (Prelude.Maybe PaymentOption)
+order_paymentOption = Lens.lens (\Order' {paymentOption} -> paymentOption) (\s@Order' {} a -> s {paymentOption = a} :: Order)
+
+-- | The status of the order.
+--
+-- -   @PREPARING@ - Order is received and being prepared.
+--
+-- -   @IN_PROGRESS@ - Order is either being built, shipped, or installed.
+--     To get more details, see the line item status.
+--
+-- -   @COMPLETED@ - Order is complete.
+--
+-- -   @CANCELLED@ - Order is cancelled.
+--
+-- -   @ERROR@ - Customer should contact support.
+--
+-- The following status are deprecated: @RECEIVED@, @PENDING@,
+-- @PROCESSING@, @INSTALLING@, and @FULFILLED@.
+order_status :: Lens.Lens' Order (Prelude.Maybe OrderStatus)
+order_status = Lens.lens (\Order' {status} -> status) (\s@Order' {} a -> s {status = a} :: Order)
+
+instance Data.FromJSON Order where
+  parseJSON =
+    Data.withObject
+      "Order"
+      ( \x ->
+          Order'
+            Prelude.<$> (x Data..:? "LineItems" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "OrderFulfilledDate")
+            Prelude.<*> (x Data..:? "OrderId")
+            Prelude.<*> (x Data..:? "OrderSubmissionDate")
+            Prelude.<*> (x Data..:? "OutpostId")
+            Prelude.<*> (x Data..:? "PaymentOption")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable Order where
+  hashWithSalt _salt Order' {..} =
+    _salt
+      `Prelude.hashWithSalt` lineItems
+      `Prelude.hashWithSalt` orderFulfilledDate
+      `Prelude.hashWithSalt` orderId
+      `Prelude.hashWithSalt` orderSubmissionDate
+      `Prelude.hashWithSalt` outpostId
+      `Prelude.hashWithSalt` paymentOption
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData Order where
+  rnf Order' {..} =
+    Prelude.rnf lineItems
+      `Prelude.seq` Prelude.rnf orderFulfilledDate
+      `Prelude.seq` Prelude.rnf orderId
+      `Prelude.seq` Prelude.rnf orderSubmissionDate
+      `Prelude.seq` Prelude.rnf outpostId
+      `Prelude.seq` Prelude.rnf paymentOption
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/Outposts/Types/OrderStatus.hs b/gen/Amazonka/Outposts/Types/OrderStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/OrderStatus.hs
@@ -0,0 +1,111 @@
+{-# 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.Outposts.Types.OrderStatus
+-- 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.Outposts.Types.OrderStatus
+  ( OrderStatus
+      ( ..,
+        OrderStatus_CANCELLED,
+        OrderStatus_COMPLETED,
+        OrderStatus_ERROR,
+        OrderStatus_FULFILLED,
+        OrderStatus_INSTALLING,
+        OrderStatus_IN_PROGRESS,
+        OrderStatus_PENDING,
+        OrderStatus_PREPARING,
+        OrderStatus_PROCESSING,
+        OrderStatus_RECEIVED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OrderStatus = OrderStatus'
+  { fromOrderStatus ::
+      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 OrderStatus_CANCELLED :: OrderStatus
+pattern OrderStatus_CANCELLED = OrderStatus' "CANCELLED"
+
+pattern OrderStatus_COMPLETED :: OrderStatus
+pattern OrderStatus_COMPLETED = OrderStatus' "COMPLETED"
+
+pattern OrderStatus_ERROR :: OrderStatus
+pattern OrderStatus_ERROR = OrderStatus' "ERROR"
+
+pattern OrderStatus_FULFILLED :: OrderStatus
+pattern OrderStatus_FULFILLED = OrderStatus' "FULFILLED"
+
+pattern OrderStatus_INSTALLING :: OrderStatus
+pattern OrderStatus_INSTALLING = OrderStatus' "INSTALLING"
+
+pattern OrderStatus_IN_PROGRESS :: OrderStatus
+pattern OrderStatus_IN_PROGRESS = OrderStatus' "IN_PROGRESS"
+
+pattern OrderStatus_PENDING :: OrderStatus
+pattern OrderStatus_PENDING = OrderStatus' "PENDING"
+
+pattern OrderStatus_PREPARING :: OrderStatus
+pattern OrderStatus_PREPARING = OrderStatus' "PREPARING"
+
+pattern OrderStatus_PROCESSING :: OrderStatus
+pattern OrderStatus_PROCESSING = OrderStatus' "PROCESSING"
+
+pattern OrderStatus_RECEIVED :: OrderStatus
+pattern OrderStatus_RECEIVED = OrderStatus' "RECEIVED"
+
+{-# COMPLETE
+  OrderStatus_CANCELLED,
+  OrderStatus_COMPLETED,
+  OrderStatus_ERROR,
+  OrderStatus_FULFILLED,
+  OrderStatus_INSTALLING,
+  OrderStatus_IN_PROGRESS,
+  OrderStatus_PENDING,
+  OrderStatus_PREPARING,
+  OrderStatus_PROCESSING,
+  OrderStatus_RECEIVED,
+  OrderStatus'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/OrderSummary.hs b/gen/Amazonka/Outposts/Types/OrderSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/OrderSummary.hs
@@ -0,0 +1,193 @@
+{-# 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.Outposts.Types.OrderSummary
+-- 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.Outposts.Types.OrderSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types.LineItemStatus
+import Amazonka.Outposts.Types.OrderStatus
+import Amazonka.Outposts.Types.OrderType
+import qualified Amazonka.Prelude as Prelude
+
+-- | A summary of line items in your order.
+--
+-- /See:/ 'newOrderSummary' smart constructor.
+data OrderSummary = OrderSummary'
+  { -- | The status of all line items in the order.
+    lineItemCountsByStatus :: Prelude.Maybe (Prelude.HashMap LineItemStatus Prelude.Natural),
+    -- | The fulfilment date for the order.
+    orderFulfilledDate :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the order.
+    orderId :: Prelude.Maybe Prelude.Text,
+    -- | The submission date for the order.
+    orderSubmissionDate :: Prelude.Maybe Data.POSIX,
+    -- | The type of order.
+    orderType :: Prelude.Maybe OrderType,
+    -- | The ID of the Outpost.
+    outpostId :: Prelude.Maybe Prelude.Text,
+    -- | The status of the order.
+    --
+    -- -   @PREPARING@ - Order is received and is being prepared.
+    --
+    -- -   @IN_PROGRESS@ - Order is either being built, shipped, or installed.
+    --     For more information, see the @LineItem@ status.
+    --
+    -- -   @COMPLETED@ - Order is complete.
+    --
+    -- -   @CANCELLED@ - Order is cancelled.
+    --
+    -- -   @ERROR@ - Customer should contact support.
+    --
+    -- The following statuses are deprecated: @RECEIVED@, @PENDING@,
+    -- @PROCESSING@, @INSTALLING@, and @FULFILLED@.
+    status :: Prelude.Maybe OrderStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OrderSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lineItemCountsByStatus', 'orderSummary_lineItemCountsByStatus' - The status of all line items in the order.
+--
+-- 'orderFulfilledDate', 'orderSummary_orderFulfilledDate' - The fulfilment date for the order.
+--
+-- 'orderId', 'orderSummary_orderId' - The ID of the order.
+--
+-- 'orderSubmissionDate', 'orderSummary_orderSubmissionDate' - The submission date for the order.
+--
+-- 'orderType', 'orderSummary_orderType' - The type of order.
+--
+-- 'outpostId', 'orderSummary_outpostId' - The ID of the Outpost.
+--
+-- 'status', 'orderSummary_status' - The status of the order.
+--
+-- -   @PREPARING@ - Order is received and is being prepared.
+--
+-- -   @IN_PROGRESS@ - Order is either being built, shipped, or installed.
+--     For more information, see the @LineItem@ status.
+--
+-- -   @COMPLETED@ - Order is complete.
+--
+-- -   @CANCELLED@ - Order is cancelled.
+--
+-- -   @ERROR@ - Customer should contact support.
+--
+-- The following statuses are deprecated: @RECEIVED@, @PENDING@,
+-- @PROCESSING@, @INSTALLING@, and @FULFILLED@.
+newOrderSummary ::
+  OrderSummary
+newOrderSummary =
+  OrderSummary'
+    { lineItemCountsByStatus =
+        Prelude.Nothing,
+      orderFulfilledDate = Prelude.Nothing,
+      orderId = Prelude.Nothing,
+      orderSubmissionDate = Prelude.Nothing,
+      orderType = Prelude.Nothing,
+      outpostId = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The status of all line items in the order.
+orderSummary_lineItemCountsByStatus :: Lens.Lens' OrderSummary (Prelude.Maybe (Prelude.HashMap LineItemStatus Prelude.Natural))
+orderSummary_lineItemCountsByStatus = Lens.lens (\OrderSummary' {lineItemCountsByStatus} -> lineItemCountsByStatus) (\s@OrderSummary' {} a -> s {lineItemCountsByStatus = a} :: OrderSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The fulfilment date for the order.
+orderSummary_orderFulfilledDate :: Lens.Lens' OrderSummary (Prelude.Maybe Prelude.UTCTime)
+orderSummary_orderFulfilledDate = Lens.lens (\OrderSummary' {orderFulfilledDate} -> orderFulfilledDate) (\s@OrderSummary' {} a -> s {orderFulfilledDate = a} :: OrderSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the order.
+orderSummary_orderId :: Lens.Lens' OrderSummary (Prelude.Maybe Prelude.Text)
+orderSummary_orderId = Lens.lens (\OrderSummary' {orderId} -> orderId) (\s@OrderSummary' {} a -> s {orderId = a} :: OrderSummary)
+
+-- | The submission date for the order.
+orderSummary_orderSubmissionDate :: Lens.Lens' OrderSummary (Prelude.Maybe Prelude.UTCTime)
+orderSummary_orderSubmissionDate = Lens.lens (\OrderSummary' {orderSubmissionDate} -> orderSubmissionDate) (\s@OrderSummary' {} a -> s {orderSubmissionDate = a} :: OrderSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The type of order.
+orderSummary_orderType :: Lens.Lens' OrderSummary (Prelude.Maybe OrderType)
+orderSummary_orderType = Lens.lens (\OrderSummary' {orderType} -> orderType) (\s@OrderSummary' {} a -> s {orderType = a} :: OrderSummary)
+
+-- | The ID of the Outpost.
+orderSummary_outpostId :: Lens.Lens' OrderSummary (Prelude.Maybe Prelude.Text)
+orderSummary_outpostId = Lens.lens (\OrderSummary' {outpostId} -> outpostId) (\s@OrderSummary' {} a -> s {outpostId = a} :: OrderSummary)
+
+-- | The status of the order.
+--
+-- -   @PREPARING@ - Order is received and is being prepared.
+--
+-- -   @IN_PROGRESS@ - Order is either being built, shipped, or installed.
+--     For more information, see the @LineItem@ status.
+--
+-- -   @COMPLETED@ - Order is complete.
+--
+-- -   @CANCELLED@ - Order is cancelled.
+--
+-- -   @ERROR@ - Customer should contact support.
+--
+-- The following statuses are deprecated: @RECEIVED@, @PENDING@,
+-- @PROCESSING@, @INSTALLING@, and @FULFILLED@.
+orderSummary_status :: Lens.Lens' OrderSummary (Prelude.Maybe OrderStatus)
+orderSummary_status = Lens.lens (\OrderSummary' {status} -> status) (\s@OrderSummary' {} a -> s {status = a} :: OrderSummary)
+
+instance Data.FromJSON OrderSummary where
+  parseJSON =
+    Data.withObject
+      "OrderSummary"
+      ( \x ->
+          OrderSummary'
+            Prelude.<$> ( x
+                            Data..:? "LineItemCountsByStatus"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "OrderFulfilledDate")
+            Prelude.<*> (x Data..:? "OrderId")
+            Prelude.<*> (x Data..:? "OrderSubmissionDate")
+            Prelude.<*> (x Data..:? "OrderType")
+            Prelude.<*> (x Data..:? "OutpostId")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable OrderSummary where
+  hashWithSalt _salt OrderSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` lineItemCountsByStatus
+      `Prelude.hashWithSalt` orderFulfilledDate
+      `Prelude.hashWithSalt` orderId
+      `Prelude.hashWithSalt` orderSubmissionDate
+      `Prelude.hashWithSalt` orderType
+      `Prelude.hashWithSalt` outpostId
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData OrderSummary where
+  rnf OrderSummary' {..} =
+    Prelude.rnf lineItemCountsByStatus
+      `Prelude.seq` Prelude.rnf orderFulfilledDate
+      `Prelude.seq` Prelude.rnf orderId
+      `Prelude.seq` Prelude.rnf orderSubmissionDate
+      `Prelude.seq` Prelude.rnf orderType
+      `Prelude.seq` Prelude.rnf outpostId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/Outposts/Types/OrderType.hs b/gen/Amazonka/Outposts/Types/OrderType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/OrderType.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.Outposts.Types.OrderType
+-- 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.Outposts.Types.OrderType
+  ( OrderType
+      ( ..,
+        OrderType_OUTPOST,
+        OrderType_REPLACEMENT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OrderType = OrderType'
+  { fromOrderType ::
+      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 OrderType_OUTPOST :: OrderType
+pattern OrderType_OUTPOST = OrderType' "OUTPOST"
+
+pattern OrderType_REPLACEMENT :: OrderType
+pattern OrderType_REPLACEMENT = OrderType' "REPLACEMENT"
+
+{-# COMPLETE
+  OrderType_OUTPOST,
+  OrderType_REPLACEMENT,
+  OrderType'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/Outpost.hs b/gen/Amazonka/Outposts/Types/Outpost.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/Outpost.hs
@@ -0,0 +1,196 @@
+{-# 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.Outposts.Types.Outpost
+-- 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.Outposts.Types.Outpost where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types.SupportedHardwareType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about an Outpost.
+--
+-- /See:/ 'newOutpost' smart constructor.
+data Outpost = Outpost'
+  { availabilityZone :: Prelude.Maybe Prelude.Text,
+    availabilityZoneId :: Prelude.Maybe Prelude.Text,
+    description :: Prelude.Maybe Prelude.Text,
+    lifeCycleStatus :: Prelude.Maybe Prelude.Text,
+    name :: Prelude.Maybe Prelude.Text,
+    outpostArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Outpost.
+    outpostId :: Prelude.Maybe Prelude.Text,
+    ownerId :: Prelude.Maybe Prelude.Text,
+    siteArn :: Prelude.Maybe Prelude.Text,
+    siteId :: Prelude.Maybe Prelude.Text,
+    -- | The hardware type.
+    supportedHardwareType :: Prelude.Maybe SupportedHardwareType,
+    -- | The Outpost tags.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Outpost' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'outpost_availabilityZone' - Undocumented member.
+--
+-- 'availabilityZoneId', 'outpost_availabilityZoneId' - Undocumented member.
+--
+-- 'description', 'outpost_description' - Undocumented member.
+--
+-- 'lifeCycleStatus', 'outpost_lifeCycleStatus' - Undocumented member.
+--
+-- 'name', 'outpost_name' - Undocumented member.
+--
+-- 'outpostArn', 'outpost_outpostArn' - Undocumented member.
+--
+-- 'outpostId', 'outpost_outpostId' - The ID of the Outpost.
+--
+-- 'ownerId', 'outpost_ownerId' - Undocumented member.
+--
+-- 'siteArn', 'outpost_siteArn' - Undocumented member.
+--
+-- 'siteId', 'outpost_siteId' - Undocumented member.
+--
+-- 'supportedHardwareType', 'outpost_supportedHardwareType' - The hardware type.
+--
+-- 'tags', 'outpost_tags' - The Outpost tags.
+newOutpost ::
+  Outpost
+newOutpost =
+  Outpost'
+    { availabilityZone = Prelude.Nothing,
+      availabilityZoneId = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lifeCycleStatus = Prelude.Nothing,
+      name = Prelude.Nothing,
+      outpostArn = Prelude.Nothing,
+      outpostId = Prelude.Nothing,
+      ownerId = Prelude.Nothing,
+      siteArn = Prelude.Nothing,
+      siteId = Prelude.Nothing,
+      supportedHardwareType = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+outpost_availabilityZone :: Lens.Lens' Outpost (Prelude.Maybe Prelude.Text)
+outpost_availabilityZone = Lens.lens (\Outpost' {availabilityZone} -> availabilityZone) (\s@Outpost' {} a -> s {availabilityZone = a} :: Outpost)
+
+-- | Undocumented member.
+outpost_availabilityZoneId :: Lens.Lens' Outpost (Prelude.Maybe Prelude.Text)
+outpost_availabilityZoneId = Lens.lens (\Outpost' {availabilityZoneId} -> availabilityZoneId) (\s@Outpost' {} a -> s {availabilityZoneId = a} :: Outpost)
+
+-- | Undocumented member.
+outpost_description :: Lens.Lens' Outpost (Prelude.Maybe Prelude.Text)
+outpost_description = Lens.lens (\Outpost' {description} -> description) (\s@Outpost' {} a -> s {description = a} :: Outpost)
+
+-- | Undocumented member.
+outpost_lifeCycleStatus :: Lens.Lens' Outpost (Prelude.Maybe Prelude.Text)
+outpost_lifeCycleStatus = Lens.lens (\Outpost' {lifeCycleStatus} -> lifeCycleStatus) (\s@Outpost' {} a -> s {lifeCycleStatus = a} :: Outpost)
+
+-- | Undocumented member.
+outpost_name :: Lens.Lens' Outpost (Prelude.Maybe Prelude.Text)
+outpost_name = Lens.lens (\Outpost' {name} -> name) (\s@Outpost' {} a -> s {name = a} :: Outpost)
+
+-- | Undocumented member.
+outpost_outpostArn :: Lens.Lens' Outpost (Prelude.Maybe Prelude.Text)
+outpost_outpostArn = Lens.lens (\Outpost' {outpostArn} -> outpostArn) (\s@Outpost' {} a -> s {outpostArn = a} :: Outpost)
+
+-- | The ID of the Outpost.
+outpost_outpostId :: Lens.Lens' Outpost (Prelude.Maybe Prelude.Text)
+outpost_outpostId = Lens.lens (\Outpost' {outpostId} -> outpostId) (\s@Outpost' {} a -> s {outpostId = a} :: Outpost)
+
+-- | Undocumented member.
+outpost_ownerId :: Lens.Lens' Outpost (Prelude.Maybe Prelude.Text)
+outpost_ownerId = Lens.lens (\Outpost' {ownerId} -> ownerId) (\s@Outpost' {} a -> s {ownerId = a} :: Outpost)
+
+-- | Undocumented member.
+outpost_siteArn :: Lens.Lens' Outpost (Prelude.Maybe Prelude.Text)
+outpost_siteArn = Lens.lens (\Outpost' {siteArn} -> siteArn) (\s@Outpost' {} a -> s {siteArn = a} :: Outpost)
+
+-- | Undocumented member.
+outpost_siteId :: Lens.Lens' Outpost (Prelude.Maybe Prelude.Text)
+outpost_siteId = Lens.lens (\Outpost' {siteId} -> siteId) (\s@Outpost' {} a -> s {siteId = a} :: Outpost)
+
+-- | The hardware type.
+outpost_supportedHardwareType :: Lens.Lens' Outpost (Prelude.Maybe SupportedHardwareType)
+outpost_supportedHardwareType = Lens.lens (\Outpost' {supportedHardwareType} -> supportedHardwareType) (\s@Outpost' {} a -> s {supportedHardwareType = a} :: Outpost)
+
+-- | The Outpost tags.
+outpost_tags :: Lens.Lens' Outpost (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+outpost_tags = Lens.lens (\Outpost' {tags} -> tags) (\s@Outpost' {} a -> s {tags = a} :: Outpost) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Outpost where
+  parseJSON =
+    Data.withObject
+      "Outpost"
+      ( \x ->
+          Outpost'
+            Prelude.<$> (x Data..:? "AvailabilityZone")
+            Prelude.<*> (x Data..:? "AvailabilityZoneId")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "LifeCycleStatus")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "OutpostArn")
+            Prelude.<*> (x Data..:? "OutpostId")
+            Prelude.<*> (x Data..:? "OwnerId")
+            Prelude.<*> (x Data..:? "SiteArn")
+            Prelude.<*> (x Data..:? "SiteId")
+            Prelude.<*> (x Data..:? "SupportedHardwareType")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable Outpost where
+  hashWithSalt _salt Outpost' {..} =
+    _salt
+      `Prelude.hashWithSalt` availabilityZone
+      `Prelude.hashWithSalt` availabilityZoneId
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` lifeCycleStatus
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` outpostArn
+      `Prelude.hashWithSalt` outpostId
+      `Prelude.hashWithSalt` ownerId
+      `Prelude.hashWithSalt` siteArn
+      `Prelude.hashWithSalt` siteId
+      `Prelude.hashWithSalt` supportedHardwareType
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData Outpost where
+  rnf Outpost' {..} =
+    Prelude.rnf availabilityZone
+      `Prelude.seq` Prelude.rnf availabilityZoneId
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lifeCycleStatus
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf outpostArn
+      `Prelude.seq` Prelude.rnf outpostId
+      `Prelude.seq` Prelude.rnf ownerId
+      `Prelude.seq` Prelude.rnf siteArn
+      `Prelude.seq` Prelude.rnf siteId
+      `Prelude.seq` Prelude.rnf supportedHardwareType
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/Outposts/Types/PaymentOption.hs b/gen/Amazonka/Outposts/Types/PaymentOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/PaymentOption.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.Outposts.Types.PaymentOption
+-- 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.Outposts.Types.PaymentOption
+  ( PaymentOption
+      ( ..,
+        PaymentOption_ALL_UPFRONT,
+        PaymentOption_NO_UPFRONT,
+        PaymentOption_PARTIAL_UPFRONT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PaymentOption = PaymentOption'
+  { fromPaymentOption ::
+      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 PaymentOption_ALL_UPFRONT :: PaymentOption
+pattern PaymentOption_ALL_UPFRONT = PaymentOption' "ALL_UPFRONT"
+
+pattern PaymentOption_NO_UPFRONT :: PaymentOption
+pattern PaymentOption_NO_UPFRONT = PaymentOption' "NO_UPFRONT"
+
+pattern PaymentOption_PARTIAL_UPFRONT :: PaymentOption
+pattern PaymentOption_PARTIAL_UPFRONT = PaymentOption' "PARTIAL_UPFRONT"
+
+{-# COMPLETE
+  PaymentOption_ALL_UPFRONT,
+  PaymentOption_NO_UPFRONT,
+  PaymentOption_PARTIAL_UPFRONT,
+  PaymentOption'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/PaymentTerm.hs b/gen/Amazonka/Outposts/Types/PaymentTerm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/PaymentTerm.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.Outposts.Types.PaymentTerm
+-- 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.Outposts.Types.PaymentTerm
+  ( PaymentTerm
+      ( ..,
+        PaymentTerm_ONE_YEAR,
+        PaymentTerm_THREE_YEARS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PaymentTerm = PaymentTerm'
+  { fromPaymentTerm ::
+      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 PaymentTerm_ONE_YEAR :: PaymentTerm
+pattern PaymentTerm_ONE_YEAR = PaymentTerm' "ONE_YEAR"
+
+pattern PaymentTerm_THREE_YEARS :: PaymentTerm
+pattern PaymentTerm_THREE_YEARS = PaymentTerm' "THREE_YEARS"
+
+{-# COMPLETE
+  PaymentTerm_ONE_YEAR,
+  PaymentTerm_THREE_YEARS,
+  PaymentTerm'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/PowerConnector.hs b/gen/Amazonka/Outposts/Types/PowerConnector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/PowerConnector.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.Types.PowerConnector
+-- 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.Outposts.Types.PowerConnector
+  ( PowerConnector
+      ( ..,
+        PowerConnector_AH530P7W,
+        PowerConnector_AH532P6W,
+        PowerConnector_IEC309,
+        PowerConnector_L6_30P
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PowerConnector = PowerConnector'
+  { fromPowerConnector ::
+      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 PowerConnector_AH530P7W :: PowerConnector
+pattern PowerConnector_AH530P7W = PowerConnector' "AH530P7W"
+
+pattern PowerConnector_AH532P6W :: PowerConnector
+pattern PowerConnector_AH532P6W = PowerConnector' "AH532P6W"
+
+pattern PowerConnector_IEC309 :: PowerConnector
+pattern PowerConnector_IEC309 = PowerConnector' "IEC309"
+
+pattern PowerConnector_L6_30P :: PowerConnector
+pattern PowerConnector_L6_30P = PowerConnector' "L6_30P"
+
+{-# COMPLETE
+  PowerConnector_AH530P7W,
+  PowerConnector_AH532P6W,
+  PowerConnector_IEC309,
+  PowerConnector_L6_30P,
+  PowerConnector'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/PowerDrawKva.hs b/gen/Amazonka/Outposts/Types/PowerDrawKva.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/PowerDrawKva.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.Outposts.Types.PowerDrawKva
+-- 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.Outposts.Types.PowerDrawKva
+  ( PowerDrawKva
+      ( ..,
+        PowerDrawKva_POWER_10_KVA,
+        PowerDrawKva_POWER_15_KVA,
+        PowerDrawKva_POWER_5_KVA
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PowerDrawKva = PowerDrawKva'
+  { fromPowerDrawKva ::
+      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 PowerDrawKva_POWER_10_KVA :: PowerDrawKva
+pattern PowerDrawKva_POWER_10_KVA = PowerDrawKva' "POWER_10_KVA"
+
+pattern PowerDrawKva_POWER_15_KVA :: PowerDrawKva
+pattern PowerDrawKva_POWER_15_KVA = PowerDrawKva' "POWER_15_KVA"
+
+pattern PowerDrawKva_POWER_5_KVA :: PowerDrawKva
+pattern PowerDrawKva_POWER_5_KVA = PowerDrawKva' "POWER_5_KVA"
+
+{-# COMPLETE
+  PowerDrawKva_POWER_10_KVA,
+  PowerDrawKva_POWER_15_KVA,
+  PowerDrawKva_POWER_5_KVA,
+  PowerDrawKva'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/PowerFeedDrop.hs b/gen/Amazonka/Outposts/Types/PowerFeedDrop.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/PowerFeedDrop.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.Outposts.Types.PowerFeedDrop
+-- 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.Outposts.Types.PowerFeedDrop
+  ( PowerFeedDrop
+      ( ..,
+        PowerFeedDrop_ABOVE_RACK,
+        PowerFeedDrop_BELOW_RACK
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PowerFeedDrop = PowerFeedDrop'
+  { fromPowerFeedDrop ::
+      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 PowerFeedDrop_ABOVE_RACK :: PowerFeedDrop
+pattern PowerFeedDrop_ABOVE_RACK = PowerFeedDrop' "ABOVE_RACK"
+
+pattern PowerFeedDrop_BELOW_RACK :: PowerFeedDrop
+pattern PowerFeedDrop_BELOW_RACK = PowerFeedDrop' "BELOW_RACK"
+
+{-# COMPLETE
+  PowerFeedDrop_ABOVE_RACK,
+  PowerFeedDrop_BELOW_RACK,
+  PowerFeedDrop'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/PowerPhase.hs b/gen/Amazonka/Outposts/Types/PowerPhase.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/PowerPhase.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.Outposts.Types.PowerPhase
+-- 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.Outposts.Types.PowerPhase
+  ( PowerPhase
+      ( ..,
+        PowerPhase_SINGLE_PHASE,
+        PowerPhase_THREE_PHASE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PowerPhase = PowerPhase'
+  { fromPowerPhase ::
+      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 PowerPhase_SINGLE_PHASE :: PowerPhase
+pattern PowerPhase_SINGLE_PHASE = PowerPhase' "SINGLE_PHASE"
+
+pattern PowerPhase_THREE_PHASE :: PowerPhase
+pattern PowerPhase_THREE_PHASE = PowerPhase' "THREE_PHASE"
+
+{-# COMPLETE
+  PowerPhase_SINGLE_PHASE,
+  PowerPhase_THREE_PHASE,
+  PowerPhase'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/RackPhysicalProperties.hs b/gen/Amazonka/Outposts/Types/RackPhysicalProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/RackPhysicalProperties.hs
@@ -0,0 +1,222 @@
+{-# 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.Outposts.Types.RackPhysicalProperties
+-- 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.Outposts.Types.RackPhysicalProperties where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types.FiberOpticCableType
+import Amazonka.Outposts.Types.MaximumSupportedWeightLbs
+import Amazonka.Outposts.Types.OpticalStandard
+import Amazonka.Outposts.Types.PowerConnector
+import Amazonka.Outposts.Types.PowerDrawKva
+import Amazonka.Outposts.Types.PowerFeedDrop
+import Amazonka.Outposts.Types.PowerPhase
+import Amazonka.Outposts.Types.UplinkCount
+import Amazonka.Outposts.Types.UplinkGbps
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the physical and logistical details for racks at
+-- sites. For more information about hardware requirements for racks, see
+-- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#checklist Network readiness checklist>
+-- in the Amazon Web Services Outposts User Guide.
+--
+-- /See:/ 'newRackPhysicalProperties' smart constructor.
+data RackPhysicalProperties = RackPhysicalProperties'
+  { -- | The type of fiber used to attach the Outpost to the network.
+    fiberOpticCableType :: Prelude.Maybe FiberOpticCableType,
+    -- | The maximum rack weight that this site can support. @NO_LIMIT@ is over
+    -- 2000 lbs (907 kg).
+    maximumSupportedWeightLbs :: Prelude.Maybe MaximumSupportedWeightLbs,
+    -- | The type of optical standard used to attach the Outpost to the network.
+    -- This field is dependent on uplink speed, fiber type, and distance to the
+    -- upstream device. For more information about networking requirements for
+    -- racks, see
+    -- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#facility-networking Network>
+    -- in the Amazon Web Services Outposts User Guide.
+    opticalStandard :: Prelude.Maybe OpticalStandard,
+    -- | The power connector for the hardware.
+    powerConnector :: Prelude.Maybe PowerConnector,
+    -- | The power draw available at the hardware placement position for the
+    -- rack.
+    powerDrawKva :: Prelude.Maybe PowerDrawKva,
+    -- | The position of the power feed.
+    powerFeedDrop :: Prelude.Maybe PowerFeedDrop,
+    -- | The power option that you can provide for hardware.
+    powerPhase :: Prelude.Maybe PowerPhase,
+    -- | The number of uplinks each Outpost network device.
+    uplinkCount :: Prelude.Maybe UplinkCount,
+    -- | The uplink speed the rack supports for the connection to the Region.
+    uplinkGbps :: Prelude.Maybe UplinkGbps
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RackPhysicalProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fiberOpticCableType', 'rackPhysicalProperties_fiberOpticCableType' - The type of fiber used to attach the Outpost to the network.
+--
+-- 'maximumSupportedWeightLbs', 'rackPhysicalProperties_maximumSupportedWeightLbs' - The maximum rack weight that this site can support. @NO_LIMIT@ is over
+-- 2000 lbs (907 kg).
+--
+-- 'opticalStandard', 'rackPhysicalProperties_opticalStandard' - The type of optical standard used to attach the Outpost to the network.
+-- This field is dependent on uplink speed, fiber type, and distance to the
+-- upstream device. For more information about networking requirements for
+-- racks, see
+-- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#facility-networking Network>
+-- in the Amazon Web Services Outposts User Guide.
+--
+-- 'powerConnector', 'rackPhysicalProperties_powerConnector' - The power connector for the hardware.
+--
+-- 'powerDrawKva', 'rackPhysicalProperties_powerDrawKva' - The power draw available at the hardware placement position for the
+-- rack.
+--
+-- 'powerFeedDrop', 'rackPhysicalProperties_powerFeedDrop' - The position of the power feed.
+--
+-- 'powerPhase', 'rackPhysicalProperties_powerPhase' - The power option that you can provide for hardware.
+--
+-- 'uplinkCount', 'rackPhysicalProperties_uplinkCount' - The number of uplinks each Outpost network device.
+--
+-- 'uplinkGbps', 'rackPhysicalProperties_uplinkGbps' - The uplink speed the rack supports for the connection to the Region.
+newRackPhysicalProperties ::
+  RackPhysicalProperties
+newRackPhysicalProperties =
+  RackPhysicalProperties'
+    { fiberOpticCableType =
+        Prelude.Nothing,
+      maximumSupportedWeightLbs = Prelude.Nothing,
+      opticalStandard = Prelude.Nothing,
+      powerConnector = Prelude.Nothing,
+      powerDrawKva = Prelude.Nothing,
+      powerFeedDrop = Prelude.Nothing,
+      powerPhase = Prelude.Nothing,
+      uplinkCount = Prelude.Nothing,
+      uplinkGbps = Prelude.Nothing
+    }
+
+-- | The type of fiber used to attach the Outpost to the network.
+rackPhysicalProperties_fiberOpticCableType :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe FiberOpticCableType)
+rackPhysicalProperties_fiberOpticCableType = Lens.lens (\RackPhysicalProperties' {fiberOpticCableType} -> fiberOpticCableType) (\s@RackPhysicalProperties' {} a -> s {fiberOpticCableType = a} :: RackPhysicalProperties)
+
+-- | The maximum rack weight that this site can support. @NO_LIMIT@ is over
+-- 2000 lbs (907 kg).
+rackPhysicalProperties_maximumSupportedWeightLbs :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe MaximumSupportedWeightLbs)
+rackPhysicalProperties_maximumSupportedWeightLbs = Lens.lens (\RackPhysicalProperties' {maximumSupportedWeightLbs} -> maximumSupportedWeightLbs) (\s@RackPhysicalProperties' {} a -> s {maximumSupportedWeightLbs = a} :: RackPhysicalProperties)
+
+-- | The type of optical standard used to attach the Outpost to the network.
+-- This field is dependent on uplink speed, fiber type, and distance to the
+-- upstream device. For more information about networking requirements for
+-- racks, see
+-- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#facility-networking Network>
+-- in the Amazon Web Services Outposts User Guide.
+rackPhysicalProperties_opticalStandard :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe OpticalStandard)
+rackPhysicalProperties_opticalStandard = Lens.lens (\RackPhysicalProperties' {opticalStandard} -> opticalStandard) (\s@RackPhysicalProperties' {} a -> s {opticalStandard = a} :: RackPhysicalProperties)
+
+-- | The power connector for the hardware.
+rackPhysicalProperties_powerConnector :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe PowerConnector)
+rackPhysicalProperties_powerConnector = Lens.lens (\RackPhysicalProperties' {powerConnector} -> powerConnector) (\s@RackPhysicalProperties' {} a -> s {powerConnector = a} :: RackPhysicalProperties)
+
+-- | The power draw available at the hardware placement position for the
+-- rack.
+rackPhysicalProperties_powerDrawKva :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe PowerDrawKva)
+rackPhysicalProperties_powerDrawKva = Lens.lens (\RackPhysicalProperties' {powerDrawKva} -> powerDrawKva) (\s@RackPhysicalProperties' {} a -> s {powerDrawKva = a} :: RackPhysicalProperties)
+
+-- | The position of the power feed.
+rackPhysicalProperties_powerFeedDrop :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe PowerFeedDrop)
+rackPhysicalProperties_powerFeedDrop = Lens.lens (\RackPhysicalProperties' {powerFeedDrop} -> powerFeedDrop) (\s@RackPhysicalProperties' {} a -> s {powerFeedDrop = a} :: RackPhysicalProperties)
+
+-- | The power option that you can provide for hardware.
+rackPhysicalProperties_powerPhase :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe PowerPhase)
+rackPhysicalProperties_powerPhase = Lens.lens (\RackPhysicalProperties' {powerPhase} -> powerPhase) (\s@RackPhysicalProperties' {} a -> s {powerPhase = a} :: RackPhysicalProperties)
+
+-- | The number of uplinks each Outpost network device.
+rackPhysicalProperties_uplinkCount :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe UplinkCount)
+rackPhysicalProperties_uplinkCount = Lens.lens (\RackPhysicalProperties' {uplinkCount} -> uplinkCount) (\s@RackPhysicalProperties' {} a -> s {uplinkCount = a} :: RackPhysicalProperties)
+
+-- | The uplink speed the rack supports for the connection to the Region.
+rackPhysicalProperties_uplinkGbps :: Lens.Lens' RackPhysicalProperties (Prelude.Maybe UplinkGbps)
+rackPhysicalProperties_uplinkGbps = Lens.lens (\RackPhysicalProperties' {uplinkGbps} -> uplinkGbps) (\s@RackPhysicalProperties' {} a -> s {uplinkGbps = a} :: RackPhysicalProperties)
+
+instance Data.FromJSON RackPhysicalProperties where
+  parseJSON =
+    Data.withObject
+      "RackPhysicalProperties"
+      ( \x ->
+          RackPhysicalProperties'
+            Prelude.<$> (x Data..:? "FiberOpticCableType")
+            Prelude.<*> (x Data..:? "MaximumSupportedWeightLbs")
+            Prelude.<*> (x Data..:? "OpticalStandard")
+            Prelude.<*> (x Data..:? "PowerConnector")
+            Prelude.<*> (x Data..:? "PowerDrawKva")
+            Prelude.<*> (x Data..:? "PowerFeedDrop")
+            Prelude.<*> (x Data..:? "PowerPhase")
+            Prelude.<*> (x Data..:? "UplinkCount")
+            Prelude.<*> (x Data..:? "UplinkGbps")
+      )
+
+instance Prelude.Hashable RackPhysicalProperties where
+  hashWithSalt _salt RackPhysicalProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` fiberOpticCableType
+      `Prelude.hashWithSalt` maximumSupportedWeightLbs
+      `Prelude.hashWithSalt` opticalStandard
+      `Prelude.hashWithSalt` powerConnector
+      `Prelude.hashWithSalt` powerDrawKva
+      `Prelude.hashWithSalt` powerFeedDrop
+      `Prelude.hashWithSalt` powerPhase
+      `Prelude.hashWithSalt` uplinkCount
+      `Prelude.hashWithSalt` uplinkGbps
+
+instance Prelude.NFData RackPhysicalProperties where
+  rnf RackPhysicalProperties' {..} =
+    Prelude.rnf fiberOpticCableType
+      `Prelude.seq` Prelude.rnf maximumSupportedWeightLbs
+      `Prelude.seq` Prelude.rnf opticalStandard
+      `Prelude.seq` Prelude.rnf powerConnector
+      `Prelude.seq` Prelude.rnf powerDrawKva
+      `Prelude.seq` Prelude.rnf powerFeedDrop
+      `Prelude.seq` Prelude.rnf powerPhase
+      `Prelude.seq` Prelude.rnf uplinkCount
+      `Prelude.seq` Prelude.rnf uplinkGbps
+
+instance Data.ToJSON RackPhysicalProperties where
+  toJSON RackPhysicalProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FiberOpticCableType" Data..=)
+              Prelude.<$> fiberOpticCableType,
+            ("MaximumSupportedWeightLbs" Data..=)
+              Prelude.<$> maximumSupportedWeightLbs,
+            ("OpticalStandard" Data..=)
+              Prelude.<$> opticalStandard,
+            ("PowerConnector" Data..=)
+              Prelude.<$> powerConnector,
+            ("PowerDrawKva" Data..=) Prelude.<$> powerDrawKva,
+            ("PowerFeedDrop" Data..=) Prelude.<$> powerFeedDrop,
+            ("PowerPhase" Data..=) Prelude.<$> powerPhase,
+            ("UplinkCount" Data..=) Prelude.<$> uplinkCount,
+            ("UplinkGbps" Data..=) Prelude.<$> uplinkGbps
+          ]
+      )
diff --git a/gen/Amazonka/Outposts/Types/ShipmentCarrier.hs b/gen/Amazonka/Outposts/Types/ShipmentCarrier.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/ShipmentCarrier.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.Types.ShipmentCarrier
+-- 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.Outposts.Types.ShipmentCarrier
+  ( ShipmentCarrier
+      ( ..,
+        ShipmentCarrier_DBS,
+        ShipmentCarrier_DHL,
+        ShipmentCarrier_FEDEX,
+        ShipmentCarrier_UPS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ShipmentCarrier = ShipmentCarrier'
+  { fromShipmentCarrier ::
+      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 ShipmentCarrier_DBS :: ShipmentCarrier
+pattern ShipmentCarrier_DBS = ShipmentCarrier' "DBS"
+
+pattern ShipmentCarrier_DHL :: ShipmentCarrier
+pattern ShipmentCarrier_DHL = ShipmentCarrier' "DHL"
+
+pattern ShipmentCarrier_FEDEX :: ShipmentCarrier
+pattern ShipmentCarrier_FEDEX = ShipmentCarrier' "FEDEX"
+
+pattern ShipmentCarrier_UPS :: ShipmentCarrier
+pattern ShipmentCarrier_UPS = ShipmentCarrier' "UPS"
+
+{-# COMPLETE
+  ShipmentCarrier_DBS,
+  ShipmentCarrier_DHL,
+  ShipmentCarrier_FEDEX,
+  ShipmentCarrier_UPS,
+  ShipmentCarrier'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/ShipmentInformation.hs b/gen/Amazonka/Outposts/Types/ShipmentInformation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/ShipmentInformation.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.Types.ShipmentInformation
+-- 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.Outposts.Types.ShipmentInformation where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types.ShipmentCarrier
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about a line item shipment.
+--
+-- /See:/ 'newShipmentInformation' smart constructor.
+data ShipmentInformation = ShipmentInformation'
+  { -- | The carrier of the shipment.
+    shipmentCarrier :: Prelude.Maybe ShipmentCarrier,
+    -- | The tracking number of the shipment.
+    shipmentTrackingNumber :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ShipmentInformation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'shipmentCarrier', 'shipmentInformation_shipmentCarrier' - The carrier of the shipment.
+--
+-- 'shipmentTrackingNumber', 'shipmentInformation_shipmentTrackingNumber' - The tracking number of the shipment.
+newShipmentInformation ::
+  ShipmentInformation
+newShipmentInformation =
+  ShipmentInformation'
+    { shipmentCarrier =
+        Prelude.Nothing,
+      shipmentTrackingNumber = Prelude.Nothing
+    }
+
+-- | The carrier of the shipment.
+shipmentInformation_shipmentCarrier :: Lens.Lens' ShipmentInformation (Prelude.Maybe ShipmentCarrier)
+shipmentInformation_shipmentCarrier = Lens.lens (\ShipmentInformation' {shipmentCarrier} -> shipmentCarrier) (\s@ShipmentInformation' {} a -> s {shipmentCarrier = a} :: ShipmentInformation)
+
+-- | The tracking number of the shipment.
+shipmentInformation_shipmentTrackingNumber :: Lens.Lens' ShipmentInformation (Prelude.Maybe Prelude.Text)
+shipmentInformation_shipmentTrackingNumber = Lens.lens (\ShipmentInformation' {shipmentTrackingNumber} -> shipmentTrackingNumber) (\s@ShipmentInformation' {} a -> s {shipmentTrackingNumber = a} :: ShipmentInformation)
+
+instance Data.FromJSON ShipmentInformation where
+  parseJSON =
+    Data.withObject
+      "ShipmentInformation"
+      ( \x ->
+          ShipmentInformation'
+            Prelude.<$> (x Data..:? "ShipmentCarrier")
+            Prelude.<*> (x Data..:? "ShipmentTrackingNumber")
+      )
+
+instance Prelude.Hashable ShipmentInformation where
+  hashWithSalt _salt ShipmentInformation' {..} =
+    _salt
+      `Prelude.hashWithSalt` shipmentCarrier
+      `Prelude.hashWithSalt` shipmentTrackingNumber
+
+instance Prelude.NFData ShipmentInformation where
+  rnf ShipmentInformation' {..} =
+    Prelude.rnf shipmentCarrier
+      `Prelude.seq` Prelude.rnf shipmentTrackingNumber
diff --git a/gen/Amazonka/Outposts/Types/Site.hs b/gen/Amazonka/Outposts/Types/Site.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/Site.hs
@@ -0,0 +1,194 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.Types.Site
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Outposts.Types.Site where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types.RackPhysicalProperties
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about a site.
+--
+-- /See:/ 'newSite' smart constructor.
+data Site = Site'
+  { accountId :: Prelude.Maybe Prelude.Text,
+    description :: Prelude.Maybe Prelude.Text,
+    name :: Prelude.Maybe Prelude.Text,
+    -- | Notes about a site.
+    notes :: Prelude.Maybe Prelude.Text,
+    -- | City where the hardware is installed and powered on.
+    operatingAddressCity :: Prelude.Maybe Prelude.Text,
+    -- | The ISO-3166 two-letter country code where the hardware is installed and
+    -- powered on.
+    operatingAddressCountryCode :: Prelude.Maybe Prelude.Text,
+    -- | State or region where the hardware is installed and powered on.
+    operatingAddressStateOrRegion :: Prelude.Maybe Prelude.Text,
+    -- | Information about the physical and logistical details for a rack at the
+    -- site.
+    rackPhysicalProperties :: Prelude.Maybe RackPhysicalProperties,
+    siteArn :: Prelude.Maybe Prelude.Text,
+    siteId :: Prelude.Maybe Prelude.Text,
+    -- | The site tags.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Site' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'accountId', 'site_accountId' - Undocumented member.
+--
+-- 'description', 'site_description' - Undocumented member.
+--
+-- 'name', 'site_name' - Undocumented member.
+--
+-- 'notes', 'site_notes' - Notes about a site.
+--
+-- 'operatingAddressCity', 'site_operatingAddressCity' - City where the hardware is installed and powered on.
+--
+-- 'operatingAddressCountryCode', 'site_operatingAddressCountryCode' - The ISO-3166 two-letter country code where the hardware is installed and
+-- powered on.
+--
+-- 'operatingAddressStateOrRegion', 'site_operatingAddressStateOrRegion' - State or region where the hardware is installed and powered on.
+--
+-- 'rackPhysicalProperties', 'site_rackPhysicalProperties' - Information about the physical and logistical details for a rack at the
+-- site.
+--
+-- 'siteArn', 'site_siteArn' - Undocumented member.
+--
+-- 'siteId', 'site_siteId' - Undocumented member.
+--
+-- 'tags', 'site_tags' - The site tags.
+newSite ::
+  Site
+newSite =
+  Site'
+    { accountId = Prelude.Nothing,
+      description = Prelude.Nothing,
+      name = Prelude.Nothing,
+      notes = Prelude.Nothing,
+      operatingAddressCity = Prelude.Nothing,
+      operatingAddressCountryCode = Prelude.Nothing,
+      operatingAddressStateOrRegion = Prelude.Nothing,
+      rackPhysicalProperties = Prelude.Nothing,
+      siteArn = Prelude.Nothing,
+      siteId = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+site_accountId :: Lens.Lens' Site (Prelude.Maybe Prelude.Text)
+site_accountId = Lens.lens (\Site' {accountId} -> accountId) (\s@Site' {} a -> s {accountId = a} :: Site)
+
+-- | Undocumented member.
+site_description :: Lens.Lens' Site (Prelude.Maybe Prelude.Text)
+site_description = Lens.lens (\Site' {description} -> description) (\s@Site' {} a -> s {description = a} :: Site)
+
+-- | Undocumented member.
+site_name :: Lens.Lens' Site (Prelude.Maybe Prelude.Text)
+site_name = Lens.lens (\Site' {name} -> name) (\s@Site' {} a -> s {name = a} :: Site)
+
+-- | Notes about a site.
+site_notes :: Lens.Lens' Site (Prelude.Maybe Prelude.Text)
+site_notes = Lens.lens (\Site' {notes} -> notes) (\s@Site' {} a -> s {notes = a} :: Site)
+
+-- | City where the hardware is installed and powered on.
+site_operatingAddressCity :: Lens.Lens' Site (Prelude.Maybe Prelude.Text)
+site_operatingAddressCity = Lens.lens (\Site' {operatingAddressCity} -> operatingAddressCity) (\s@Site' {} a -> s {operatingAddressCity = a} :: Site)
+
+-- | The ISO-3166 two-letter country code where the hardware is installed and
+-- powered on.
+site_operatingAddressCountryCode :: Lens.Lens' Site (Prelude.Maybe Prelude.Text)
+site_operatingAddressCountryCode = Lens.lens (\Site' {operatingAddressCountryCode} -> operatingAddressCountryCode) (\s@Site' {} a -> s {operatingAddressCountryCode = a} :: Site)
+
+-- | State or region where the hardware is installed and powered on.
+site_operatingAddressStateOrRegion :: Lens.Lens' Site (Prelude.Maybe Prelude.Text)
+site_operatingAddressStateOrRegion = Lens.lens (\Site' {operatingAddressStateOrRegion} -> operatingAddressStateOrRegion) (\s@Site' {} a -> s {operatingAddressStateOrRegion = a} :: Site)
+
+-- | Information about the physical and logistical details for a rack at the
+-- site.
+site_rackPhysicalProperties :: Lens.Lens' Site (Prelude.Maybe RackPhysicalProperties)
+site_rackPhysicalProperties = Lens.lens (\Site' {rackPhysicalProperties} -> rackPhysicalProperties) (\s@Site' {} a -> s {rackPhysicalProperties = a} :: Site)
+
+-- | Undocumented member.
+site_siteArn :: Lens.Lens' Site (Prelude.Maybe Prelude.Text)
+site_siteArn = Lens.lens (\Site' {siteArn} -> siteArn) (\s@Site' {} a -> s {siteArn = a} :: Site)
+
+-- | Undocumented member.
+site_siteId :: Lens.Lens' Site (Prelude.Maybe Prelude.Text)
+site_siteId = Lens.lens (\Site' {siteId} -> siteId) (\s@Site' {} a -> s {siteId = a} :: Site)
+
+-- | The site tags.
+site_tags :: Lens.Lens' Site (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+site_tags = Lens.lens (\Site' {tags} -> tags) (\s@Site' {} a -> s {tags = a} :: Site) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Site where
+  parseJSON =
+    Data.withObject
+      "Site"
+      ( \x ->
+          Site'
+            Prelude.<$> (x Data..:? "AccountId")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Notes")
+            Prelude.<*> (x Data..:? "OperatingAddressCity")
+            Prelude.<*> (x Data..:? "OperatingAddressCountryCode")
+            Prelude.<*> (x Data..:? "OperatingAddressStateOrRegion")
+            Prelude.<*> (x Data..:? "RackPhysicalProperties")
+            Prelude.<*> (x Data..:? "SiteArn")
+            Prelude.<*> (x Data..:? "SiteId")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable Site where
+  hashWithSalt _salt Site' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` notes
+      `Prelude.hashWithSalt` operatingAddressCity
+      `Prelude.hashWithSalt` operatingAddressCountryCode
+      `Prelude.hashWithSalt` operatingAddressStateOrRegion
+      `Prelude.hashWithSalt` rackPhysicalProperties
+      `Prelude.hashWithSalt` siteArn
+      `Prelude.hashWithSalt` siteId
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData Site where
+  rnf Site' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf notes
+      `Prelude.seq` Prelude.rnf operatingAddressCity
+      `Prelude.seq` Prelude.rnf operatingAddressCountryCode
+      `Prelude.seq` Prelude.rnf operatingAddressStateOrRegion
+      `Prelude.seq` Prelude.rnf rackPhysicalProperties
+      `Prelude.seq` Prelude.rnf siteArn
+      `Prelude.seq` Prelude.rnf siteId
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/Outposts/Types/SupportedHardwareType.hs b/gen/Amazonka/Outposts/Types/SupportedHardwareType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/SupportedHardwareType.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.Outposts.Types.SupportedHardwareType
+-- 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.Outposts.Types.SupportedHardwareType
+  ( SupportedHardwareType
+      ( ..,
+        SupportedHardwareType_RACK,
+        SupportedHardwareType_SERVER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SupportedHardwareType = SupportedHardwareType'
+  { fromSupportedHardwareType ::
+      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 SupportedHardwareType_RACK :: SupportedHardwareType
+pattern SupportedHardwareType_RACK = SupportedHardwareType' "RACK"
+
+pattern SupportedHardwareType_SERVER :: SupportedHardwareType
+pattern SupportedHardwareType_SERVER = SupportedHardwareType' "SERVER"
+
+{-# COMPLETE
+  SupportedHardwareType_RACK,
+  SupportedHardwareType_SERVER,
+  SupportedHardwareType'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/SupportedStorageEnum.hs b/gen/Amazonka/Outposts/Types/SupportedStorageEnum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/SupportedStorageEnum.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.Outposts.Types.SupportedStorageEnum
+-- 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.Outposts.Types.SupportedStorageEnum
+  ( SupportedStorageEnum
+      ( ..,
+        SupportedStorageEnum_EBS,
+        SupportedStorageEnum_S3
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SupportedStorageEnum = SupportedStorageEnum'
+  { fromSupportedStorageEnum ::
+      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 SupportedStorageEnum_EBS :: SupportedStorageEnum
+pattern SupportedStorageEnum_EBS = SupportedStorageEnum' "EBS"
+
+pattern SupportedStorageEnum_S3 :: SupportedStorageEnum
+pattern SupportedStorageEnum_S3 = SupportedStorageEnum' "S3"
+
+{-# COMPLETE
+  SupportedStorageEnum_EBS,
+  SupportedStorageEnum_S3,
+  SupportedStorageEnum'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/UplinkCount.hs b/gen/Amazonka/Outposts/Types/UplinkCount.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/UplinkCount.hs
@@ -0,0 +1,111 @@
+{-# 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.Outposts.Types.UplinkCount
+-- 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.Outposts.Types.UplinkCount
+  ( UplinkCount
+      ( ..,
+        UplinkCount_UPLINK_COUNT_1,
+        UplinkCount_UPLINK_COUNT_12,
+        UplinkCount_UPLINK_COUNT_16,
+        UplinkCount_UPLINK_COUNT_2,
+        UplinkCount_UPLINK_COUNT_3,
+        UplinkCount_UPLINK_COUNT_4,
+        UplinkCount_UPLINK_COUNT_5,
+        UplinkCount_UPLINK_COUNT_6,
+        UplinkCount_UPLINK_COUNT_7,
+        UplinkCount_UPLINK_COUNT_8
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype UplinkCount = UplinkCount'
+  { fromUplinkCount ::
+      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 UplinkCount_UPLINK_COUNT_1 :: UplinkCount
+pattern UplinkCount_UPLINK_COUNT_1 = UplinkCount' "UPLINK_COUNT_1"
+
+pattern UplinkCount_UPLINK_COUNT_12 :: UplinkCount
+pattern UplinkCount_UPLINK_COUNT_12 = UplinkCount' "UPLINK_COUNT_12"
+
+pattern UplinkCount_UPLINK_COUNT_16 :: UplinkCount
+pattern UplinkCount_UPLINK_COUNT_16 = UplinkCount' "UPLINK_COUNT_16"
+
+pattern UplinkCount_UPLINK_COUNT_2 :: UplinkCount
+pattern UplinkCount_UPLINK_COUNT_2 = UplinkCount' "UPLINK_COUNT_2"
+
+pattern UplinkCount_UPLINK_COUNT_3 :: UplinkCount
+pattern UplinkCount_UPLINK_COUNT_3 = UplinkCount' "UPLINK_COUNT_3"
+
+pattern UplinkCount_UPLINK_COUNT_4 :: UplinkCount
+pattern UplinkCount_UPLINK_COUNT_4 = UplinkCount' "UPLINK_COUNT_4"
+
+pattern UplinkCount_UPLINK_COUNT_5 :: UplinkCount
+pattern UplinkCount_UPLINK_COUNT_5 = UplinkCount' "UPLINK_COUNT_5"
+
+pattern UplinkCount_UPLINK_COUNT_6 :: UplinkCount
+pattern UplinkCount_UPLINK_COUNT_6 = UplinkCount' "UPLINK_COUNT_6"
+
+pattern UplinkCount_UPLINK_COUNT_7 :: UplinkCount
+pattern UplinkCount_UPLINK_COUNT_7 = UplinkCount' "UPLINK_COUNT_7"
+
+pattern UplinkCount_UPLINK_COUNT_8 :: UplinkCount
+pattern UplinkCount_UPLINK_COUNT_8 = UplinkCount' "UPLINK_COUNT_8"
+
+{-# COMPLETE
+  UplinkCount_UPLINK_COUNT_1,
+  UplinkCount_UPLINK_COUNT_12,
+  UplinkCount_UPLINK_COUNT_16,
+  UplinkCount_UPLINK_COUNT_2,
+  UplinkCount_UPLINK_COUNT_3,
+  UplinkCount_UPLINK_COUNT_4,
+  UplinkCount_UPLINK_COUNT_5,
+  UplinkCount_UPLINK_COUNT_6,
+  UplinkCount_UPLINK_COUNT_7,
+  UplinkCount_UPLINK_COUNT_8,
+  UplinkCount'
+  #-}
diff --git a/gen/Amazonka/Outposts/Types/UplinkGbps.hs b/gen/Amazonka/Outposts/Types/UplinkGbps.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/Types/UplinkGbps.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Outposts.Types.UplinkGbps
+-- 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.Outposts.Types.UplinkGbps
+  ( UplinkGbps
+      ( ..,
+        UplinkGbps_UPLINK_100G,
+        UplinkGbps_UPLINK_10G,
+        UplinkGbps_UPLINK_1G,
+        UplinkGbps_UPLINK_40G
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype UplinkGbps = UplinkGbps'
+  { fromUplinkGbps ::
+      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 UplinkGbps_UPLINK_100G :: UplinkGbps
+pattern UplinkGbps_UPLINK_100G = UplinkGbps' "UPLINK_100G"
+
+pattern UplinkGbps_UPLINK_10G :: UplinkGbps
+pattern UplinkGbps_UPLINK_10G = UplinkGbps' "UPLINK_10G"
+
+pattern UplinkGbps_UPLINK_1G :: UplinkGbps
+pattern UplinkGbps_UPLINK_1G = UplinkGbps' "UPLINK_1G"
+
+pattern UplinkGbps_UPLINK_40G :: UplinkGbps
+pattern UplinkGbps_UPLINK_40G = UplinkGbps' "UPLINK_40G"
+
+{-# COMPLETE
+  UplinkGbps_UPLINK_100G,
+  UplinkGbps_UPLINK_10G,
+  UplinkGbps_UPLINK_1G,
+  UplinkGbps_UPLINK_40G,
+  UplinkGbps'
+  #-}
diff --git a/gen/Amazonka/Outposts/UntagResource.hs b/gen/Amazonka/Outposts/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/UntagResource.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.Outposts.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.Outposts.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource.
+    resourceArn :: Prelude.Text,
+    -- | The tag keys.
+    tagKeys :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The tag keys.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ pTagKeys_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource.
+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.. 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/Outposts/UpdateOutpost.hs b/gen/Amazonka/Outposts/UpdateOutpost.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/UpdateOutpost.hs
@@ -0,0 +1,205 @@
+{-# 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.Outposts.UpdateOutpost
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an Outpost.
+module Amazonka.Outposts.UpdateOutpost
+  ( -- * Creating a Request
+    UpdateOutpost (..),
+    newUpdateOutpost,
+
+    -- * Request Lenses
+    updateOutpost_description,
+    updateOutpost_name,
+    updateOutpost_supportedHardwareType,
+    updateOutpost_outpostId,
+
+    -- * Destructuring the Response
+    UpdateOutpostResponse (..),
+    newUpdateOutpostResponse,
+
+    -- * Response Lenses
+    updateOutpostResponse_outpost,
+    updateOutpostResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateOutpost' smart constructor.
+data UpdateOutpost = UpdateOutpost'
+  { description :: Prelude.Maybe Prelude.Text,
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The type of hardware for this Outpost.
+    supportedHardwareType :: Prelude.Maybe SupportedHardwareType,
+    -- | The ID or the Amazon Resource Name (ARN) of the Outpost.
+    outpostId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateOutpost' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'updateOutpost_description' - Undocumented member.
+--
+-- 'name', 'updateOutpost_name' - Undocumented member.
+--
+-- 'supportedHardwareType', 'updateOutpost_supportedHardwareType' - The type of hardware for this Outpost.
+--
+-- 'outpostId', 'updateOutpost_outpostId' - The ID or the Amazon Resource Name (ARN) of the Outpost.
+newUpdateOutpost ::
+  -- | 'outpostId'
+  Prelude.Text ->
+  UpdateOutpost
+newUpdateOutpost pOutpostId_ =
+  UpdateOutpost'
+    { description = Prelude.Nothing,
+      name = Prelude.Nothing,
+      supportedHardwareType = Prelude.Nothing,
+      outpostId = pOutpostId_
+    }
+
+-- | Undocumented member.
+updateOutpost_description :: Lens.Lens' UpdateOutpost (Prelude.Maybe Prelude.Text)
+updateOutpost_description = Lens.lens (\UpdateOutpost' {description} -> description) (\s@UpdateOutpost' {} a -> s {description = a} :: UpdateOutpost)
+
+-- | Undocumented member.
+updateOutpost_name :: Lens.Lens' UpdateOutpost (Prelude.Maybe Prelude.Text)
+updateOutpost_name = Lens.lens (\UpdateOutpost' {name} -> name) (\s@UpdateOutpost' {} a -> s {name = a} :: UpdateOutpost)
+
+-- | The type of hardware for this Outpost.
+updateOutpost_supportedHardwareType :: Lens.Lens' UpdateOutpost (Prelude.Maybe SupportedHardwareType)
+updateOutpost_supportedHardwareType = Lens.lens (\UpdateOutpost' {supportedHardwareType} -> supportedHardwareType) (\s@UpdateOutpost' {} a -> s {supportedHardwareType = a} :: UpdateOutpost)
+
+-- | The ID or the Amazon Resource Name (ARN) of the Outpost.
+updateOutpost_outpostId :: Lens.Lens' UpdateOutpost Prelude.Text
+updateOutpost_outpostId = Lens.lens (\UpdateOutpost' {outpostId} -> outpostId) (\s@UpdateOutpost' {} a -> s {outpostId = a} :: UpdateOutpost)
+
+instance Core.AWSRequest UpdateOutpost where
+  type
+    AWSResponse UpdateOutpost =
+      UpdateOutpostResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateOutpostResponse'
+            Prelude.<$> (x Data..?> "Outpost")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateOutpost where
+  hashWithSalt _salt UpdateOutpost' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` supportedHardwareType
+      `Prelude.hashWithSalt` outpostId
+
+instance Prelude.NFData UpdateOutpost where
+  rnf UpdateOutpost' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf supportedHardwareType
+      `Prelude.seq` Prelude.rnf outpostId
+
+instance Data.ToHeaders UpdateOutpost where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateOutpost where
+  toJSON UpdateOutpost' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("Name" Data..=) Prelude.<$> name,
+            ("SupportedHardwareType" Data..=)
+              Prelude.<$> supportedHardwareType
+          ]
+      )
+
+instance Data.ToPath UpdateOutpost where
+  toPath UpdateOutpost' {..} =
+    Prelude.mconcat ["/outposts/", Data.toBS outpostId]
+
+instance Data.ToQuery UpdateOutpost where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateOutpostResponse' smart constructor.
+data UpdateOutpostResponse = UpdateOutpostResponse'
+  { outpost :: Prelude.Maybe Outpost,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateOutpostResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'outpost', 'updateOutpostResponse_outpost' - Undocumented member.
+--
+-- 'httpStatus', 'updateOutpostResponse_httpStatus' - The response's http status code.
+newUpdateOutpostResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateOutpostResponse
+newUpdateOutpostResponse pHttpStatus_ =
+  UpdateOutpostResponse'
+    { outpost = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+updateOutpostResponse_outpost :: Lens.Lens' UpdateOutpostResponse (Prelude.Maybe Outpost)
+updateOutpostResponse_outpost = Lens.lens (\UpdateOutpostResponse' {outpost} -> outpost) (\s@UpdateOutpostResponse' {} a -> s {outpost = a} :: UpdateOutpostResponse)
+
+-- | The response's http status code.
+updateOutpostResponse_httpStatus :: Lens.Lens' UpdateOutpostResponse Prelude.Int
+updateOutpostResponse_httpStatus = Lens.lens (\UpdateOutpostResponse' {httpStatus} -> httpStatus) (\s@UpdateOutpostResponse' {} a -> s {httpStatus = a} :: UpdateOutpostResponse)
+
+instance Prelude.NFData UpdateOutpostResponse where
+  rnf UpdateOutpostResponse' {..} =
+    Prelude.rnf outpost
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/UpdateSite.hs b/gen/Amazonka/Outposts/UpdateSite.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/UpdateSite.hs
@@ -0,0 +1,202 @@
+{-# 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.Outposts.UpdateSite
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the specified site.
+module Amazonka.Outposts.UpdateSite
+  ( -- * Creating a Request
+    UpdateSite (..),
+    newUpdateSite,
+
+    -- * Request Lenses
+    updateSite_description,
+    updateSite_name,
+    updateSite_notes,
+    updateSite_siteId,
+
+    -- * Destructuring the Response
+    UpdateSiteResponse (..),
+    newUpdateSiteResponse,
+
+    -- * Response Lenses
+    updateSiteResponse_site,
+    updateSiteResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateSite' smart constructor.
+data UpdateSite = UpdateSite'
+  { description :: Prelude.Maybe Prelude.Text,
+    name :: Prelude.Maybe Prelude.Text,
+    -- | Notes about a site.
+    notes :: Prelude.Maybe Prelude.Text,
+    -- | The ID or the Amazon Resource Name (ARN) of the site.
+    siteId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSite' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'updateSite_description' - Undocumented member.
+--
+-- 'name', 'updateSite_name' - Undocumented member.
+--
+-- 'notes', 'updateSite_notes' - Notes about a site.
+--
+-- 'siteId', 'updateSite_siteId' - The ID or the Amazon Resource Name (ARN) of the site.
+newUpdateSite ::
+  -- | 'siteId'
+  Prelude.Text ->
+  UpdateSite
+newUpdateSite pSiteId_ =
+  UpdateSite'
+    { description = Prelude.Nothing,
+      name = Prelude.Nothing,
+      notes = Prelude.Nothing,
+      siteId = pSiteId_
+    }
+
+-- | Undocumented member.
+updateSite_description :: Lens.Lens' UpdateSite (Prelude.Maybe Prelude.Text)
+updateSite_description = Lens.lens (\UpdateSite' {description} -> description) (\s@UpdateSite' {} a -> s {description = a} :: UpdateSite)
+
+-- | Undocumented member.
+updateSite_name :: Lens.Lens' UpdateSite (Prelude.Maybe Prelude.Text)
+updateSite_name = Lens.lens (\UpdateSite' {name} -> name) (\s@UpdateSite' {} a -> s {name = a} :: UpdateSite)
+
+-- | Notes about a site.
+updateSite_notes :: Lens.Lens' UpdateSite (Prelude.Maybe Prelude.Text)
+updateSite_notes = Lens.lens (\UpdateSite' {notes} -> notes) (\s@UpdateSite' {} a -> s {notes = a} :: UpdateSite)
+
+-- | The ID or the Amazon Resource Name (ARN) of the site.
+updateSite_siteId :: Lens.Lens' UpdateSite Prelude.Text
+updateSite_siteId = Lens.lens (\UpdateSite' {siteId} -> siteId) (\s@UpdateSite' {} a -> s {siteId = a} :: UpdateSite)
+
+instance Core.AWSRequest UpdateSite where
+  type AWSResponse UpdateSite = UpdateSiteResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateSiteResponse'
+            Prelude.<$> (x Data..?> "Site")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateSite where
+  hashWithSalt _salt UpdateSite' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` notes
+      `Prelude.hashWithSalt` siteId
+
+instance Prelude.NFData UpdateSite where
+  rnf UpdateSite' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf notes
+      `Prelude.seq` Prelude.rnf siteId
+
+instance Data.ToHeaders UpdateSite where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateSite where
+  toJSON UpdateSite' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("Name" Data..=) Prelude.<$> name,
+            ("Notes" Data..=) Prelude.<$> notes
+          ]
+      )
+
+instance Data.ToPath UpdateSite where
+  toPath UpdateSite' {..} =
+    Prelude.mconcat ["/sites/", Data.toBS siteId]
+
+instance Data.ToQuery UpdateSite where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateSiteResponse' smart constructor.
+data UpdateSiteResponse = UpdateSiteResponse'
+  { site :: Prelude.Maybe Site,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSiteResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'site', 'updateSiteResponse_site' - Undocumented member.
+--
+-- 'httpStatus', 'updateSiteResponse_httpStatus' - The response's http status code.
+newUpdateSiteResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateSiteResponse
+newUpdateSiteResponse pHttpStatus_ =
+  UpdateSiteResponse'
+    { site = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+updateSiteResponse_site :: Lens.Lens' UpdateSiteResponse (Prelude.Maybe Site)
+updateSiteResponse_site = Lens.lens (\UpdateSiteResponse' {site} -> site) (\s@UpdateSiteResponse' {} a -> s {site = a} :: UpdateSiteResponse)
+
+-- | The response's http status code.
+updateSiteResponse_httpStatus :: Lens.Lens' UpdateSiteResponse Prelude.Int
+updateSiteResponse_httpStatus = Lens.lens (\UpdateSiteResponse' {httpStatus} -> httpStatus) (\s@UpdateSiteResponse' {} a -> s {httpStatus = a} :: UpdateSiteResponse)
+
+instance Prelude.NFData UpdateSiteResponse where
+  rnf UpdateSiteResponse' {..} =
+    Prelude.rnf site
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/UpdateSiteAddress.hs b/gen/Amazonka/Outposts/UpdateSiteAddress.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/UpdateSiteAddress.hs
@@ -0,0 +1,219 @@
+{-# 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.Outposts.UpdateSiteAddress
+-- 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 address of the specified site.
+--
+-- You can\'t update a site address if there is an order in progress. You
+-- must wait for the order to complete or cancel the order.
+--
+-- You can update the operating address before you place an order at the
+-- site, or after all Outposts that belong to the site have been
+-- deactivated.
+module Amazonka.Outposts.UpdateSiteAddress
+  ( -- * Creating a Request
+    UpdateSiteAddress (..),
+    newUpdateSiteAddress,
+
+    -- * Request Lenses
+    updateSiteAddress_siteId,
+    updateSiteAddress_addressType,
+    updateSiteAddress_address,
+
+    -- * Destructuring the Response
+    UpdateSiteAddressResponse (..),
+    newUpdateSiteAddressResponse,
+
+    -- * Response Lenses
+    updateSiteAddressResponse_address,
+    updateSiteAddressResponse_addressType,
+    updateSiteAddressResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateSiteAddress' smart constructor.
+data UpdateSiteAddress = UpdateSiteAddress'
+  { -- | The ID or the Amazon Resource Name (ARN) of the site.
+    siteId :: Prelude.Text,
+    -- | The type of the address.
+    addressType :: AddressType,
+    -- | The address for the site.
+    address :: Address
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSiteAddress' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'siteId', 'updateSiteAddress_siteId' - The ID or the Amazon Resource Name (ARN) of the site.
+--
+-- 'addressType', 'updateSiteAddress_addressType' - The type of the address.
+--
+-- 'address', 'updateSiteAddress_address' - The address for the site.
+newUpdateSiteAddress ::
+  -- | 'siteId'
+  Prelude.Text ->
+  -- | 'addressType'
+  AddressType ->
+  -- | 'address'
+  Address ->
+  UpdateSiteAddress
+newUpdateSiteAddress pSiteId_ pAddressType_ pAddress_ =
+  UpdateSiteAddress'
+    { siteId = pSiteId_,
+      addressType = pAddressType_,
+      address = pAddress_
+    }
+
+-- | The ID or the Amazon Resource Name (ARN) of the site.
+updateSiteAddress_siteId :: Lens.Lens' UpdateSiteAddress Prelude.Text
+updateSiteAddress_siteId = Lens.lens (\UpdateSiteAddress' {siteId} -> siteId) (\s@UpdateSiteAddress' {} a -> s {siteId = a} :: UpdateSiteAddress)
+
+-- | The type of the address.
+updateSiteAddress_addressType :: Lens.Lens' UpdateSiteAddress AddressType
+updateSiteAddress_addressType = Lens.lens (\UpdateSiteAddress' {addressType} -> addressType) (\s@UpdateSiteAddress' {} a -> s {addressType = a} :: UpdateSiteAddress)
+
+-- | The address for the site.
+updateSiteAddress_address :: Lens.Lens' UpdateSiteAddress Address
+updateSiteAddress_address = Lens.lens (\UpdateSiteAddress' {address} -> address) (\s@UpdateSiteAddress' {} a -> s {address = a} :: UpdateSiteAddress)
+
+instance Core.AWSRequest UpdateSiteAddress where
+  type
+    AWSResponse UpdateSiteAddress =
+      UpdateSiteAddressResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateSiteAddressResponse'
+            Prelude.<$> (x Data..?> "Address")
+            Prelude.<*> (x Data..?> "AddressType")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateSiteAddress where
+  hashWithSalt _salt UpdateSiteAddress' {..} =
+    _salt
+      `Prelude.hashWithSalt` siteId
+      `Prelude.hashWithSalt` addressType
+      `Prelude.hashWithSalt` address
+
+instance Prelude.NFData UpdateSiteAddress where
+  rnf UpdateSiteAddress' {..} =
+    Prelude.rnf siteId
+      `Prelude.seq` Prelude.rnf addressType
+      `Prelude.seq` Prelude.rnf address
+
+instance Data.ToHeaders UpdateSiteAddress where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateSiteAddress where
+  toJSON UpdateSiteAddress' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("AddressType" Data..= addressType),
+            Prelude.Just ("Address" Data..= address)
+          ]
+      )
+
+instance Data.ToPath UpdateSiteAddress where
+  toPath UpdateSiteAddress' {..} =
+    Prelude.mconcat
+      ["/sites/", Data.toBS siteId, "/address"]
+
+instance Data.ToQuery UpdateSiteAddress where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateSiteAddressResponse' smart constructor.
+data UpdateSiteAddressResponse = UpdateSiteAddressResponse'
+  { -- | Information about an address.
+    address :: Prelude.Maybe Address,
+    -- | The type of the address.
+    addressType :: Prelude.Maybe AddressType,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSiteAddressResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'address', 'updateSiteAddressResponse_address' - Information about an address.
+--
+-- 'addressType', 'updateSiteAddressResponse_addressType' - The type of the address.
+--
+-- 'httpStatus', 'updateSiteAddressResponse_httpStatus' - The response's http status code.
+newUpdateSiteAddressResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateSiteAddressResponse
+newUpdateSiteAddressResponse pHttpStatus_ =
+  UpdateSiteAddressResponse'
+    { address =
+        Prelude.Nothing,
+      addressType = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about an address.
+updateSiteAddressResponse_address :: Lens.Lens' UpdateSiteAddressResponse (Prelude.Maybe Address)
+updateSiteAddressResponse_address = Lens.lens (\UpdateSiteAddressResponse' {address} -> address) (\s@UpdateSiteAddressResponse' {} a -> s {address = a} :: UpdateSiteAddressResponse)
+
+-- | The type of the address.
+updateSiteAddressResponse_addressType :: Lens.Lens' UpdateSiteAddressResponse (Prelude.Maybe AddressType)
+updateSiteAddressResponse_addressType = Lens.lens (\UpdateSiteAddressResponse' {addressType} -> addressType) (\s@UpdateSiteAddressResponse' {} a -> s {addressType = a} :: UpdateSiteAddressResponse)
+
+-- | The response's http status code.
+updateSiteAddressResponse_httpStatus :: Lens.Lens' UpdateSiteAddressResponse Prelude.Int
+updateSiteAddressResponse_httpStatus = Lens.lens (\UpdateSiteAddressResponse' {httpStatus} -> httpStatus) (\s@UpdateSiteAddressResponse' {} a -> s {httpStatus = a} :: UpdateSiteAddressResponse)
+
+instance Prelude.NFData UpdateSiteAddressResponse where
+  rnf UpdateSiteAddressResponse' {..} =
+    Prelude.rnf address
+      `Prelude.seq` Prelude.rnf addressType
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/UpdateSiteRackPhysicalProperties.hs b/gen/Amazonka/Outposts/UpdateSiteRackPhysicalProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/UpdateSiteRackPhysicalProperties.hs
@@ -0,0 +1,511 @@
+{-# 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.Outposts.UpdateSiteRackPhysicalProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update the physical and logistical details for a rack at a site. For
+-- more information about hardware requirements for racks, see
+-- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#checklist Network readiness checklist>
+-- in the Amazon Web Services Outposts User Guide.
+--
+-- To update a rack at a site with an order of @IN_PROGRESS@, you must wait
+-- for the order to complete or cancel the order.
+module Amazonka.Outposts.UpdateSiteRackPhysicalProperties
+  ( -- * Creating a Request
+    UpdateSiteRackPhysicalProperties (..),
+    newUpdateSiteRackPhysicalProperties,
+
+    -- * Request Lenses
+    updateSiteRackPhysicalProperties_fiberOpticCableType,
+    updateSiteRackPhysicalProperties_maximumSupportedWeightLbs,
+    updateSiteRackPhysicalProperties_opticalStandard,
+    updateSiteRackPhysicalProperties_powerConnector,
+    updateSiteRackPhysicalProperties_powerDrawKva,
+    updateSiteRackPhysicalProperties_powerFeedDrop,
+    updateSiteRackPhysicalProperties_powerPhase,
+    updateSiteRackPhysicalProperties_uplinkCount,
+    updateSiteRackPhysicalProperties_uplinkGbps,
+    updateSiteRackPhysicalProperties_siteId,
+
+    -- * Destructuring the Response
+    UpdateSiteRackPhysicalPropertiesResponse (..),
+    newUpdateSiteRackPhysicalPropertiesResponse,
+
+    -- * Response Lenses
+    updateSiteRackPhysicalPropertiesResponse_site,
+    updateSiteRackPhysicalPropertiesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateSiteRackPhysicalProperties' smart constructor.
+data UpdateSiteRackPhysicalProperties = UpdateSiteRackPhysicalProperties'
+  { -- | The type of fiber that you will use to attach the Outpost to your
+    -- network.
+    fiberOpticCableType :: Prelude.Maybe FiberOpticCableType,
+    -- | The maximum rack weight that this site can support. @NO_LIMIT@ is over
+    -- 2000lbs.
+    maximumSupportedWeightLbs :: Prelude.Maybe MaximumSupportedWeightLbs,
+    -- | The type of optical standard that you will use to attach the Outpost to
+    -- your network. This field is dependent on uplink speed, fiber type, and
+    -- distance to the upstream device. For more information about networking
+    -- requirements for racks, see
+    -- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#facility-networking Network>
+    -- in the Amazon Web Services Outposts User Guide.
+    --
+    -- -   @OPTIC_10GBASE_SR@: 10GBASE-SR
+    --
+    -- -   @OPTIC_10GBASE_IR@: 10GBASE-IR
+    --
+    -- -   @OPTIC_10GBASE_LR@: 10GBASE-LR
+    --
+    -- -   @OPTIC_40GBASE_SR@: 40GBASE-SR
+    --
+    -- -   @OPTIC_40GBASE_ESR@: 40GBASE-ESR
+    --
+    -- -   @OPTIC_40GBASE_IR4_LR4L@: 40GBASE-IR (LR4L)
+    --
+    -- -   @OPTIC_40GBASE_LR4@: 40GBASE-LR4
+    --
+    -- -   @OPTIC_100GBASE_SR4@: 100GBASE-SR4
+    --
+    -- -   @OPTIC_100GBASE_CWDM4@: 100GBASE-CWDM4
+    --
+    -- -   @OPTIC_100GBASE_LR4@: 100GBASE-LR4
+    --
+    -- -   @OPTIC_100G_PSM4_MSA@: 100G PSM4 MSA
+    --
+    -- -   @OPTIC_1000BASE_LX@: 1000Base-LX
+    --
+    -- -   @OPTIC_1000BASE_SX@ : 1000Base-SX
+    opticalStandard :: Prelude.Maybe OpticalStandard,
+    -- | The power connector that Amazon Web Services should plan to provide for
+    -- connections to the hardware. Note the correlation between @PowerPhase@
+    -- and @PowerConnector@.
+    --
+    -- -   Single-phase AC feed
+    --
+    --     -   __L6-30P__ – (common in US); 30A; single phase
+    --
+    --     -   __IEC309 (blue)__ – P+N+E, 6hr; 32 A; single phase
+    --
+    -- -   Three-phase AC feed
+    --
+    --     -   __AH530P7W (red)__ – 3P+N+E, 7hr; 30A; three phase
+    --
+    --     -   __AH532P6W (red)__ – 3P+N+E, 6hr; 32A; three phase
+    powerConnector :: Prelude.Maybe PowerConnector,
+    -- | The power draw, in kVA, available at the hardware placement position for
+    -- the rack.
+    powerDrawKva :: Prelude.Maybe PowerDrawKva,
+    -- | Indicates whether the power feed comes above or below the rack.
+    powerFeedDrop :: Prelude.Maybe PowerFeedDrop,
+    -- | The power option that you can provide for hardware.
+    --
+    -- -   Single-phase AC feed: 200 V to 277 V, 50 Hz or 60 Hz
+    --
+    -- -   Three-phase AC feed: 346 V to 480 V, 50 Hz or 60 Hz
+    powerPhase :: Prelude.Maybe PowerPhase,
+    -- | Racks come with two Outpost network devices. Depending on the supported
+    -- uplink speed at the site, the Outpost network devices provide a variable
+    -- number of uplinks. Specify the number of uplinks for each Outpost
+    -- network device that you intend to use to connect the rack to your
+    -- network. Note the correlation between @UplinkGbps@ and @UplinkCount@.
+    --
+    -- -   1Gbps - Uplinks available: 1, 2, 4, 6, 8
+    --
+    -- -   10Gbps - Uplinks available: 1, 2, 4, 8, 12, 16
+    --
+    -- -   40 and 100 Gbps- Uplinks available: 1, 2, 4
+    uplinkCount :: Prelude.Maybe UplinkCount,
+    -- | The uplink speed the rack should support for the connection to the
+    -- Region.
+    uplinkGbps :: Prelude.Maybe UplinkGbps,
+    -- | The ID or the Amazon Resource Name (ARN) of the site.
+    siteId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSiteRackPhysicalProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'fiberOpticCableType', 'updateSiteRackPhysicalProperties_fiberOpticCableType' - The type of fiber that you will use to attach the Outpost to your
+-- network.
+--
+-- 'maximumSupportedWeightLbs', 'updateSiteRackPhysicalProperties_maximumSupportedWeightLbs' - The maximum rack weight that this site can support. @NO_LIMIT@ is over
+-- 2000lbs.
+--
+-- 'opticalStandard', 'updateSiteRackPhysicalProperties_opticalStandard' - The type of optical standard that you will use to attach the Outpost to
+-- your network. This field is dependent on uplink speed, fiber type, and
+-- distance to the upstream device. For more information about networking
+-- requirements for racks, see
+-- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#facility-networking Network>
+-- in the Amazon Web Services Outposts User Guide.
+--
+-- -   @OPTIC_10GBASE_SR@: 10GBASE-SR
+--
+-- -   @OPTIC_10GBASE_IR@: 10GBASE-IR
+--
+-- -   @OPTIC_10GBASE_LR@: 10GBASE-LR
+--
+-- -   @OPTIC_40GBASE_SR@: 40GBASE-SR
+--
+-- -   @OPTIC_40GBASE_ESR@: 40GBASE-ESR
+--
+-- -   @OPTIC_40GBASE_IR4_LR4L@: 40GBASE-IR (LR4L)
+--
+-- -   @OPTIC_40GBASE_LR4@: 40GBASE-LR4
+--
+-- -   @OPTIC_100GBASE_SR4@: 100GBASE-SR4
+--
+-- -   @OPTIC_100GBASE_CWDM4@: 100GBASE-CWDM4
+--
+-- -   @OPTIC_100GBASE_LR4@: 100GBASE-LR4
+--
+-- -   @OPTIC_100G_PSM4_MSA@: 100G PSM4 MSA
+--
+-- -   @OPTIC_1000BASE_LX@: 1000Base-LX
+--
+-- -   @OPTIC_1000BASE_SX@ : 1000Base-SX
+--
+-- 'powerConnector', 'updateSiteRackPhysicalProperties_powerConnector' - The power connector that Amazon Web Services should plan to provide for
+-- connections to the hardware. Note the correlation between @PowerPhase@
+-- and @PowerConnector@.
+--
+-- -   Single-phase AC feed
+--
+--     -   __L6-30P__ – (common in US); 30A; single phase
+--
+--     -   __IEC309 (blue)__ – P+N+E, 6hr; 32 A; single phase
+--
+-- -   Three-phase AC feed
+--
+--     -   __AH530P7W (red)__ – 3P+N+E, 7hr; 30A; three phase
+--
+--     -   __AH532P6W (red)__ – 3P+N+E, 6hr; 32A; three phase
+--
+-- 'powerDrawKva', 'updateSiteRackPhysicalProperties_powerDrawKva' - The power draw, in kVA, available at the hardware placement position for
+-- the rack.
+--
+-- 'powerFeedDrop', 'updateSiteRackPhysicalProperties_powerFeedDrop' - Indicates whether the power feed comes above or below the rack.
+--
+-- 'powerPhase', 'updateSiteRackPhysicalProperties_powerPhase' - The power option that you can provide for hardware.
+--
+-- -   Single-phase AC feed: 200 V to 277 V, 50 Hz or 60 Hz
+--
+-- -   Three-phase AC feed: 346 V to 480 V, 50 Hz or 60 Hz
+--
+-- 'uplinkCount', 'updateSiteRackPhysicalProperties_uplinkCount' - Racks come with two Outpost network devices. Depending on the supported
+-- uplink speed at the site, the Outpost network devices provide a variable
+-- number of uplinks. Specify the number of uplinks for each Outpost
+-- network device that you intend to use to connect the rack to your
+-- network. Note the correlation between @UplinkGbps@ and @UplinkCount@.
+--
+-- -   1Gbps - Uplinks available: 1, 2, 4, 6, 8
+--
+-- -   10Gbps - Uplinks available: 1, 2, 4, 8, 12, 16
+--
+-- -   40 and 100 Gbps- Uplinks available: 1, 2, 4
+--
+-- 'uplinkGbps', 'updateSiteRackPhysicalProperties_uplinkGbps' - The uplink speed the rack should support for the connection to the
+-- Region.
+--
+-- 'siteId', 'updateSiteRackPhysicalProperties_siteId' - The ID or the Amazon Resource Name (ARN) of the site.
+newUpdateSiteRackPhysicalProperties ::
+  -- | 'siteId'
+  Prelude.Text ->
+  UpdateSiteRackPhysicalProperties
+newUpdateSiteRackPhysicalProperties pSiteId_ =
+  UpdateSiteRackPhysicalProperties'
+    { fiberOpticCableType =
+        Prelude.Nothing,
+      maximumSupportedWeightLbs =
+        Prelude.Nothing,
+      opticalStandard = Prelude.Nothing,
+      powerConnector = Prelude.Nothing,
+      powerDrawKva = Prelude.Nothing,
+      powerFeedDrop = Prelude.Nothing,
+      powerPhase = Prelude.Nothing,
+      uplinkCount = Prelude.Nothing,
+      uplinkGbps = Prelude.Nothing,
+      siteId = pSiteId_
+    }
+
+-- | The type of fiber that you will use to attach the Outpost to your
+-- network.
+updateSiteRackPhysicalProperties_fiberOpticCableType :: Lens.Lens' UpdateSiteRackPhysicalProperties (Prelude.Maybe FiberOpticCableType)
+updateSiteRackPhysicalProperties_fiberOpticCableType = Lens.lens (\UpdateSiteRackPhysicalProperties' {fiberOpticCableType} -> fiberOpticCableType) (\s@UpdateSiteRackPhysicalProperties' {} a -> s {fiberOpticCableType = a} :: UpdateSiteRackPhysicalProperties)
+
+-- | The maximum rack weight that this site can support. @NO_LIMIT@ is over
+-- 2000lbs.
+updateSiteRackPhysicalProperties_maximumSupportedWeightLbs :: Lens.Lens' UpdateSiteRackPhysicalProperties (Prelude.Maybe MaximumSupportedWeightLbs)
+updateSiteRackPhysicalProperties_maximumSupportedWeightLbs = Lens.lens (\UpdateSiteRackPhysicalProperties' {maximumSupportedWeightLbs} -> maximumSupportedWeightLbs) (\s@UpdateSiteRackPhysicalProperties' {} a -> s {maximumSupportedWeightLbs = a} :: UpdateSiteRackPhysicalProperties)
+
+-- | The type of optical standard that you will use to attach the Outpost to
+-- your network. This field is dependent on uplink speed, fiber type, and
+-- distance to the upstream device. For more information about networking
+-- requirements for racks, see
+-- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-requirements.html#facility-networking Network>
+-- in the Amazon Web Services Outposts User Guide.
+--
+-- -   @OPTIC_10GBASE_SR@: 10GBASE-SR
+--
+-- -   @OPTIC_10GBASE_IR@: 10GBASE-IR
+--
+-- -   @OPTIC_10GBASE_LR@: 10GBASE-LR
+--
+-- -   @OPTIC_40GBASE_SR@: 40GBASE-SR
+--
+-- -   @OPTIC_40GBASE_ESR@: 40GBASE-ESR
+--
+-- -   @OPTIC_40GBASE_IR4_LR4L@: 40GBASE-IR (LR4L)
+--
+-- -   @OPTIC_40GBASE_LR4@: 40GBASE-LR4
+--
+-- -   @OPTIC_100GBASE_SR4@: 100GBASE-SR4
+--
+-- -   @OPTIC_100GBASE_CWDM4@: 100GBASE-CWDM4
+--
+-- -   @OPTIC_100GBASE_LR4@: 100GBASE-LR4
+--
+-- -   @OPTIC_100G_PSM4_MSA@: 100G PSM4 MSA
+--
+-- -   @OPTIC_1000BASE_LX@: 1000Base-LX
+--
+-- -   @OPTIC_1000BASE_SX@ : 1000Base-SX
+updateSiteRackPhysicalProperties_opticalStandard :: Lens.Lens' UpdateSiteRackPhysicalProperties (Prelude.Maybe OpticalStandard)
+updateSiteRackPhysicalProperties_opticalStandard = Lens.lens (\UpdateSiteRackPhysicalProperties' {opticalStandard} -> opticalStandard) (\s@UpdateSiteRackPhysicalProperties' {} a -> s {opticalStandard = a} :: UpdateSiteRackPhysicalProperties)
+
+-- | The power connector that Amazon Web Services should plan to provide for
+-- connections to the hardware. Note the correlation between @PowerPhase@
+-- and @PowerConnector@.
+--
+-- -   Single-phase AC feed
+--
+--     -   __L6-30P__ – (common in US); 30A; single phase
+--
+--     -   __IEC309 (blue)__ – P+N+E, 6hr; 32 A; single phase
+--
+-- -   Three-phase AC feed
+--
+--     -   __AH530P7W (red)__ – 3P+N+E, 7hr; 30A; three phase
+--
+--     -   __AH532P6W (red)__ – 3P+N+E, 6hr; 32A; three phase
+updateSiteRackPhysicalProperties_powerConnector :: Lens.Lens' UpdateSiteRackPhysicalProperties (Prelude.Maybe PowerConnector)
+updateSiteRackPhysicalProperties_powerConnector = Lens.lens (\UpdateSiteRackPhysicalProperties' {powerConnector} -> powerConnector) (\s@UpdateSiteRackPhysicalProperties' {} a -> s {powerConnector = a} :: UpdateSiteRackPhysicalProperties)
+
+-- | The power draw, in kVA, available at the hardware placement position for
+-- the rack.
+updateSiteRackPhysicalProperties_powerDrawKva :: Lens.Lens' UpdateSiteRackPhysicalProperties (Prelude.Maybe PowerDrawKva)
+updateSiteRackPhysicalProperties_powerDrawKva = Lens.lens (\UpdateSiteRackPhysicalProperties' {powerDrawKva} -> powerDrawKva) (\s@UpdateSiteRackPhysicalProperties' {} a -> s {powerDrawKva = a} :: UpdateSiteRackPhysicalProperties)
+
+-- | Indicates whether the power feed comes above or below the rack.
+updateSiteRackPhysicalProperties_powerFeedDrop :: Lens.Lens' UpdateSiteRackPhysicalProperties (Prelude.Maybe PowerFeedDrop)
+updateSiteRackPhysicalProperties_powerFeedDrop = Lens.lens (\UpdateSiteRackPhysicalProperties' {powerFeedDrop} -> powerFeedDrop) (\s@UpdateSiteRackPhysicalProperties' {} a -> s {powerFeedDrop = a} :: UpdateSiteRackPhysicalProperties)
+
+-- | The power option that you can provide for hardware.
+--
+-- -   Single-phase AC feed: 200 V to 277 V, 50 Hz or 60 Hz
+--
+-- -   Three-phase AC feed: 346 V to 480 V, 50 Hz or 60 Hz
+updateSiteRackPhysicalProperties_powerPhase :: Lens.Lens' UpdateSiteRackPhysicalProperties (Prelude.Maybe PowerPhase)
+updateSiteRackPhysicalProperties_powerPhase = Lens.lens (\UpdateSiteRackPhysicalProperties' {powerPhase} -> powerPhase) (\s@UpdateSiteRackPhysicalProperties' {} a -> s {powerPhase = a} :: UpdateSiteRackPhysicalProperties)
+
+-- | Racks come with two Outpost network devices. Depending on the supported
+-- uplink speed at the site, the Outpost network devices provide a variable
+-- number of uplinks. Specify the number of uplinks for each Outpost
+-- network device that you intend to use to connect the rack to your
+-- network. Note the correlation between @UplinkGbps@ and @UplinkCount@.
+--
+-- -   1Gbps - Uplinks available: 1, 2, 4, 6, 8
+--
+-- -   10Gbps - Uplinks available: 1, 2, 4, 8, 12, 16
+--
+-- -   40 and 100 Gbps- Uplinks available: 1, 2, 4
+updateSiteRackPhysicalProperties_uplinkCount :: Lens.Lens' UpdateSiteRackPhysicalProperties (Prelude.Maybe UplinkCount)
+updateSiteRackPhysicalProperties_uplinkCount = Lens.lens (\UpdateSiteRackPhysicalProperties' {uplinkCount} -> uplinkCount) (\s@UpdateSiteRackPhysicalProperties' {} a -> s {uplinkCount = a} :: UpdateSiteRackPhysicalProperties)
+
+-- | The uplink speed the rack should support for the connection to the
+-- Region.
+updateSiteRackPhysicalProperties_uplinkGbps :: Lens.Lens' UpdateSiteRackPhysicalProperties (Prelude.Maybe UplinkGbps)
+updateSiteRackPhysicalProperties_uplinkGbps = Lens.lens (\UpdateSiteRackPhysicalProperties' {uplinkGbps} -> uplinkGbps) (\s@UpdateSiteRackPhysicalProperties' {} a -> s {uplinkGbps = a} :: UpdateSiteRackPhysicalProperties)
+
+-- | The ID or the Amazon Resource Name (ARN) of the site.
+updateSiteRackPhysicalProperties_siteId :: Lens.Lens' UpdateSiteRackPhysicalProperties Prelude.Text
+updateSiteRackPhysicalProperties_siteId = Lens.lens (\UpdateSiteRackPhysicalProperties' {siteId} -> siteId) (\s@UpdateSiteRackPhysicalProperties' {} a -> s {siteId = a} :: UpdateSiteRackPhysicalProperties)
+
+instance
+  Core.AWSRequest
+    UpdateSiteRackPhysicalProperties
+  where
+  type
+    AWSResponse UpdateSiteRackPhysicalProperties =
+      UpdateSiteRackPhysicalPropertiesResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateSiteRackPhysicalPropertiesResponse'
+            Prelude.<$> (x Data..?> "Site")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    UpdateSiteRackPhysicalProperties
+  where
+  hashWithSalt
+    _salt
+    UpdateSiteRackPhysicalProperties' {..} =
+      _salt
+        `Prelude.hashWithSalt` fiberOpticCableType
+        `Prelude.hashWithSalt` maximumSupportedWeightLbs
+        `Prelude.hashWithSalt` opticalStandard
+        `Prelude.hashWithSalt` powerConnector
+        `Prelude.hashWithSalt` powerDrawKva
+        `Prelude.hashWithSalt` powerFeedDrop
+        `Prelude.hashWithSalt` powerPhase
+        `Prelude.hashWithSalt` uplinkCount
+        `Prelude.hashWithSalt` uplinkGbps
+        `Prelude.hashWithSalt` siteId
+
+instance
+  Prelude.NFData
+    UpdateSiteRackPhysicalProperties
+  where
+  rnf UpdateSiteRackPhysicalProperties' {..} =
+    Prelude.rnf fiberOpticCableType
+      `Prelude.seq` Prelude.rnf maximumSupportedWeightLbs
+      `Prelude.seq` Prelude.rnf opticalStandard
+      `Prelude.seq` Prelude.rnf powerConnector
+      `Prelude.seq` Prelude.rnf powerDrawKva
+      `Prelude.seq` Prelude.rnf powerFeedDrop
+      `Prelude.seq` Prelude.rnf powerPhase
+      `Prelude.seq` Prelude.rnf uplinkCount
+      `Prelude.seq` Prelude.rnf uplinkGbps
+      `Prelude.seq` Prelude.rnf siteId
+
+instance
+  Data.ToHeaders
+    UpdateSiteRackPhysicalProperties
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateSiteRackPhysicalProperties where
+  toJSON UpdateSiteRackPhysicalProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FiberOpticCableType" Data..=)
+              Prelude.<$> fiberOpticCableType,
+            ("MaximumSupportedWeightLbs" Data..=)
+              Prelude.<$> maximumSupportedWeightLbs,
+            ("OpticalStandard" Data..=)
+              Prelude.<$> opticalStandard,
+            ("PowerConnector" Data..=)
+              Prelude.<$> powerConnector,
+            ("PowerDrawKva" Data..=) Prelude.<$> powerDrawKva,
+            ("PowerFeedDrop" Data..=) Prelude.<$> powerFeedDrop,
+            ("PowerPhase" Data..=) Prelude.<$> powerPhase,
+            ("UplinkCount" Data..=) Prelude.<$> uplinkCount,
+            ("UplinkGbps" Data..=) Prelude.<$> uplinkGbps
+          ]
+      )
+
+instance Data.ToPath UpdateSiteRackPhysicalProperties where
+  toPath UpdateSiteRackPhysicalProperties' {..} =
+    Prelude.mconcat
+      [ "/sites/",
+        Data.toBS siteId,
+        "/rackPhysicalProperties"
+      ]
+
+instance
+  Data.ToQuery
+    UpdateSiteRackPhysicalProperties
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateSiteRackPhysicalPropertiesResponse' smart constructor.
+data UpdateSiteRackPhysicalPropertiesResponse = UpdateSiteRackPhysicalPropertiesResponse'
+  { site :: Prelude.Maybe Site,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSiteRackPhysicalPropertiesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'site', 'updateSiteRackPhysicalPropertiesResponse_site' - Undocumented member.
+--
+-- 'httpStatus', 'updateSiteRackPhysicalPropertiesResponse_httpStatus' - The response's http status code.
+newUpdateSiteRackPhysicalPropertiesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateSiteRackPhysicalPropertiesResponse
+newUpdateSiteRackPhysicalPropertiesResponse
+  pHttpStatus_ =
+    UpdateSiteRackPhysicalPropertiesResponse'
+      { site =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+updateSiteRackPhysicalPropertiesResponse_site :: Lens.Lens' UpdateSiteRackPhysicalPropertiesResponse (Prelude.Maybe Site)
+updateSiteRackPhysicalPropertiesResponse_site = Lens.lens (\UpdateSiteRackPhysicalPropertiesResponse' {site} -> site) (\s@UpdateSiteRackPhysicalPropertiesResponse' {} a -> s {site = a} :: UpdateSiteRackPhysicalPropertiesResponse)
+
+-- | The response's http status code.
+updateSiteRackPhysicalPropertiesResponse_httpStatus :: Lens.Lens' UpdateSiteRackPhysicalPropertiesResponse Prelude.Int
+updateSiteRackPhysicalPropertiesResponse_httpStatus = Lens.lens (\UpdateSiteRackPhysicalPropertiesResponse' {httpStatus} -> httpStatus) (\s@UpdateSiteRackPhysicalPropertiesResponse' {} a -> s {httpStatus = a} :: UpdateSiteRackPhysicalPropertiesResponse)
+
+instance
+  Prelude.NFData
+    UpdateSiteRackPhysicalPropertiesResponse
+  where
+  rnf UpdateSiteRackPhysicalPropertiesResponse' {..} =
+    Prelude.rnf site
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Outposts/Waiters.hs b/gen/Amazonka/Outposts/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Outposts/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.Outposts.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.Outposts.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Outposts.Lens
+import Amazonka.Outposts.Types
+import qualified Amazonka.Prelude as Prelude
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Main (main) where
+
+import Test.Amazonka.Outposts
+import Test.Amazonka.Outposts.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "Outposts"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/Outposts.hs b/test/Test/Amazonka/Gen/Outposts.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/Outposts.hs
@@ -0,0 +1,558 @@
+{-# 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.Outposts
+-- 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.Outposts where
+
+import Amazonka.Outposts
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.Outposts.Internal
+import Test.Amazonka.Prelude
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestCancelOrder $
+--             newCancelOrder
+--
+--         , requestCreateOrder $
+--             newCreateOrder
+--
+--         , requestCreateOutpost $
+--             newCreateOutpost
+--
+--         , requestCreateSite $
+--             newCreateSite
+--
+--         , requestDeleteOutpost $
+--             newDeleteOutpost
+--
+--         , requestDeleteSite $
+--             newDeleteSite
+--
+--         , requestGetCatalogItem $
+--             newGetCatalogItem
+--
+--         , requestGetConnection $
+--             newGetConnection
+--
+--         , requestGetOrder $
+--             newGetOrder
+--
+--         , requestGetOutpost $
+--             newGetOutpost
+--
+--         , requestGetOutpostInstanceTypes $
+--             newGetOutpostInstanceTypes
+--
+--         , requestGetSite $
+--             newGetSite
+--
+--         , requestGetSiteAddress $
+--             newGetSiteAddress
+--
+--         , requestListAssets $
+--             newListAssets
+--
+--         , requestListCatalogItems $
+--             newListCatalogItems
+--
+--         , requestListOrders $
+--             newListOrders
+--
+--         , requestListOutposts $
+--             newListOutposts
+--
+--         , requestListSites $
+--             newListSites
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestStartConnection $
+--             newStartConnection
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateOutpost $
+--             newUpdateOutpost
+--
+--         , requestUpdateSite $
+--             newUpdateSite
+--
+--         , requestUpdateSiteAddress $
+--             newUpdateSiteAddress
+--
+--         , requestUpdateSiteRackPhysicalProperties $
+--             newUpdateSiteRackPhysicalProperties
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseCancelOrder $
+--             newCancelOrderResponse
+--
+--         , responseCreateOrder $
+--             newCreateOrderResponse
+--
+--         , responseCreateOutpost $
+--             newCreateOutpostResponse
+--
+--         , responseCreateSite $
+--             newCreateSiteResponse
+--
+--         , responseDeleteOutpost $
+--             newDeleteOutpostResponse
+--
+--         , responseDeleteSite $
+--             newDeleteSiteResponse
+--
+--         , responseGetCatalogItem $
+--             newGetCatalogItemResponse
+--
+--         , responseGetConnection $
+--             newGetConnectionResponse
+--
+--         , responseGetOrder $
+--             newGetOrderResponse
+--
+--         , responseGetOutpost $
+--             newGetOutpostResponse
+--
+--         , responseGetOutpostInstanceTypes $
+--             newGetOutpostInstanceTypesResponse
+--
+--         , responseGetSite $
+--             newGetSiteResponse
+--
+--         , responseGetSiteAddress $
+--             newGetSiteAddressResponse
+--
+--         , responseListAssets $
+--             newListAssetsResponse
+--
+--         , responseListCatalogItems $
+--             newListCatalogItemsResponse
+--
+--         , responseListOrders $
+--             newListOrdersResponse
+--
+--         , responseListOutposts $
+--             newListOutpostsResponse
+--
+--         , responseListSites $
+--             newListSitesResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseStartConnection $
+--             newStartConnectionResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateOutpost $
+--             newUpdateOutpostResponse
+--
+--         , responseUpdateSite $
+--             newUpdateSiteResponse
+--
+--         , responseUpdateSiteAddress $
+--             newUpdateSiteAddressResponse
+--
+--         , responseUpdateSiteRackPhysicalProperties $
+--             newUpdateSiteRackPhysicalPropertiesResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestCancelOrder :: CancelOrder -> TestTree
+requestCancelOrder =
+  req
+    "CancelOrder"
+    "fixture/CancelOrder.yaml"
+
+requestCreateOrder :: CreateOrder -> TestTree
+requestCreateOrder =
+  req
+    "CreateOrder"
+    "fixture/CreateOrder.yaml"
+
+requestCreateOutpost :: CreateOutpost -> TestTree
+requestCreateOutpost =
+  req
+    "CreateOutpost"
+    "fixture/CreateOutpost.yaml"
+
+requestCreateSite :: CreateSite -> TestTree
+requestCreateSite =
+  req
+    "CreateSite"
+    "fixture/CreateSite.yaml"
+
+requestDeleteOutpost :: DeleteOutpost -> TestTree
+requestDeleteOutpost =
+  req
+    "DeleteOutpost"
+    "fixture/DeleteOutpost.yaml"
+
+requestDeleteSite :: DeleteSite -> TestTree
+requestDeleteSite =
+  req
+    "DeleteSite"
+    "fixture/DeleteSite.yaml"
+
+requestGetCatalogItem :: GetCatalogItem -> TestTree
+requestGetCatalogItem =
+  req
+    "GetCatalogItem"
+    "fixture/GetCatalogItem.yaml"
+
+requestGetConnection :: GetConnection -> TestTree
+requestGetConnection =
+  req
+    "GetConnection"
+    "fixture/GetConnection.yaml"
+
+requestGetOrder :: GetOrder -> TestTree
+requestGetOrder =
+  req
+    "GetOrder"
+    "fixture/GetOrder.yaml"
+
+requestGetOutpost :: GetOutpost -> TestTree
+requestGetOutpost =
+  req
+    "GetOutpost"
+    "fixture/GetOutpost.yaml"
+
+requestGetOutpostInstanceTypes :: GetOutpostInstanceTypes -> TestTree
+requestGetOutpostInstanceTypes =
+  req
+    "GetOutpostInstanceTypes"
+    "fixture/GetOutpostInstanceTypes.yaml"
+
+requestGetSite :: GetSite -> TestTree
+requestGetSite =
+  req
+    "GetSite"
+    "fixture/GetSite.yaml"
+
+requestGetSiteAddress :: GetSiteAddress -> TestTree
+requestGetSiteAddress =
+  req
+    "GetSiteAddress"
+    "fixture/GetSiteAddress.yaml"
+
+requestListAssets :: ListAssets -> TestTree
+requestListAssets =
+  req
+    "ListAssets"
+    "fixture/ListAssets.yaml"
+
+requestListCatalogItems :: ListCatalogItems -> TestTree
+requestListCatalogItems =
+  req
+    "ListCatalogItems"
+    "fixture/ListCatalogItems.yaml"
+
+requestListOrders :: ListOrders -> TestTree
+requestListOrders =
+  req
+    "ListOrders"
+    "fixture/ListOrders.yaml"
+
+requestListOutposts :: ListOutposts -> TestTree
+requestListOutposts =
+  req
+    "ListOutposts"
+    "fixture/ListOutposts.yaml"
+
+requestListSites :: ListSites -> TestTree
+requestListSites =
+  req
+    "ListSites"
+    "fixture/ListSites.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestStartConnection :: StartConnection -> TestTree
+requestStartConnection =
+  req
+    "StartConnection"
+    "fixture/StartConnection.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateOutpost :: UpdateOutpost -> TestTree
+requestUpdateOutpost =
+  req
+    "UpdateOutpost"
+    "fixture/UpdateOutpost.yaml"
+
+requestUpdateSite :: UpdateSite -> TestTree
+requestUpdateSite =
+  req
+    "UpdateSite"
+    "fixture/UpdateSite.yaml"
+
+requestUpdateSiteAddress :: UpdateSiteAddress -> TestTree
+requestUpdateSiteAddress =
+  req
+    "UpdateSiteAddress"
+    "fixture/UpdateSiteAddress.yaml"
+
+requestUpdateSiteRackPhysicalProperties :: UpdateSiteRackPhysicalProperties -> TestTree
+requestUpdateSiteRackPhysicalProperties =
+  req
+    "UpdateSiteRackPhysicalProperties"
+    "fixture/UpdateSiteRackPhysicalProperties.yaml"
+
+-- Responses
+
+responseCancelOrder :: CancelOrderResponse -> TestTree
+responseCancelOrder =
+  res
+    "CancelOrderResponse"
+    "fixture/CancelOrderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CancelOrder)
+
+responseCreateOrder :: CreateOrderResponse -> TestTree
+responseCreateOrder =
+  res
+    "CreateOrderResponse"
+    "fixture/CreateOrderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateOrder)
+
+responseCreateOutpost :: CreateOutpostResponse -> TestTree
+responseCreateOutpost =
+  res
+    "CreateOutpostResponse"
+    "fixture/CreateOutpostResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateOutpost)
+
+responseCreateSite :: CreateSiteResponse -> TestTree
+responseCreateSite =
+  res
+    "CreateSiteResponse"
+    "fixture/CreateSiteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateSite)
+
+responseDeleteOutpost :: DeleteOutpostResponse -> TestTree
+responseDeleteOutpost =
+  res
+    "DeleteOutpostResponse"
+    "fixture/DeleteOutpostResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteOutpost)
+
+responseDeleteSite :: DeleteSiteResponse -> TestTree
+responseDeleteSite =
+  res
+    "DeleteSiteResponse"
+    "fixture/DeleteSiteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteSite)
+
+responseGetCatalogItem :: GetCatalogItemResponse -> TestTree
+responseGetCatalogItem =
+  res
+    "GetCatalogItemResponse"
+    "fixture/GetCatalogItemResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetCatalogItem)
+
+responseGetConnection :: GetConnectionResponse -> TestTree
+responseGetConnection =
+  res
+    "GetConnectionResponse"
+    "fixture/GetConnectionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetConnection)
+
+responseGetOrder :: GetOrderResponse -> TestTree
+responseGetOrder =
+  res
+    "GetOrderResponse"
+    "fixture/GetOrderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetOrder)
+
+responseGetOutpost :: GetOutpostResponse -> TestTree
+responseGetOutpost =
+  res
+    "GetOutpostResponse"
+    "fixture/GetOutpostResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetOutpost)
+
+responseGetOutpostInstanceTypes :: GetOutpostInstanceTypesResponse -> TestTree
+responseGetOutpostInstanceTypes =
+  res
+    "GetOutpostInstanceTypesResponse"
+    "fixture/GetOutpostInstanceTypesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetOutpostInstanceTypes)
+
+responseGetSite :: GetSiteResponse -> TestTree
+responseGetSite =
+  res
+    "GetSiteResponse"
+    "fixture/GetSiteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetSite)
+
+responseGetSiteAddress :: GetSiteAddressResponse -> TestTree
+responseGetSiteAddress =
+  res
+    "GetSiteAddressResponse"
+    "fixture/GetSiteAddressResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetSiteAddress)
+
+responseListAssets :: ListAssetsResponse -> TestTree
+responseListAssets =
+  res
+    "ListAssetsResponse"
+    "fixture/ListAssetsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAssets)
+
+responseListCatalogItems :: ListCatalogItemsResponse -> TestTree
+responseListCatalogItems =
+  res
+    "ListCatalogItemsResponse"
+    "fixture/ListCatalogItemsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListCatalogItems)
+
+responseListOrders :: ListOrdersResponse -> TestTree
+responseListOrders =
+  res
+    "ListOrdersResponse"
+    "fixture/ListOrdersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListOrders)
+
+responseListOutposts :: ListOutpostsResponse -> TestTree
+responseListOutposts =
+  res
+    "ListOutpostsResponse"
+    "fixture/ListOutpostsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListOutposts)
+
+responseListSites :: ListSitesResponse -> TestTree
+responseListSites =
+  res
+    "ListSitesResponse"
+    "fixture/ListSitesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListSites)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseStartConnection :: StartConnectionResponse -> TestTree
+responseStartConnection =
+  res
+    "StartConnectionResponse"
+    "fixture/StartConnectionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartConnection)
+
+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)
+
+responseUpdateOutpost :: UpdateOutpostResponse -> TestTree
+responseUpdateOutpost =
+  res
+    "UpdateOutpostResponse"
+    "fixture/UpdateOutpostResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateOutpost)
+
+responseUpdateSite :: UpdateSiteResponse -> TestTree
+responseUpdateSite =
+  res
+    "UpdateSiteResponse"
+    "fixture/UpdateSiteResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateSite)
+
+responseUpdateSiteAddress :: UpdateSiteAddressResponse -> TestTree
+responseUpdateSiteAddress =
+  res
+    "UpdateSiteAddressResponse"
+    "fixture/UpdateSiteAddressResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateSiteAddress)
+
+responseUpdateSiteRackPhysicalProperties :: UpdateSiteRackPhysicalPropertiesResponse -> TestTree
+responseUpdateSiteRackPhysicalProperties =
+  res
+    "UpdateSiteRackPhysicalPropertiesResponse"
+    "fixture/UpdateSiteRackPhysicalPropertiesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateSiteRackPhysicalProperties)
diff --git a/test/Test/Amazonka/Outposts.hs b/test/Test/Amazonka/Outposts.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Outposts.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.Outposts
+-- 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.Outposts
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/Outposts/Internal.hs b/test/Test/Amazonka/Outposts/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Outposts/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.Outposts.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.Outposts.Internal where
