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 License Manager User Subscriptions SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2018-05-10@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-license-manager-user-subscriptions)
+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.LicenseManagerUserSubscriptions](http://hackage.haskell.org/package/amazonka-license-manager-user-subscriptions/docs/Amazonka-LicenseManagerUserSubscriptions.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-license-manager-user-subscriptions` 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-license-manager-user-subscriptions.cabal b/amazonka-license-manager-user-subscriptions.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-license-manager-user-subscriptions.cabal
@@ -0,0 +1,103 @@
+cabal-version:      2.2
+name:               amazonka-license-manager-user-subscriptions
+version:            2.0
+synopsis:           Amazon License Manager User Subscriptions 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 @2018-05-10@ 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.LicenseManagerUserSubscriptions.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.LicenseManagerUserSubscriptions" 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-license-manager-user-subscriptions
+
+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.LicenseManagerUserSubscriptions
+    Amazonka.LicenseManagerUserSubscriptions.AssociateUser
+    Amazonka.LicenseManagerUserSubscriptions.DeregisterIdentityProvider
+    Amazonka.LicenseManagerUserSubscriptions.DisassociateUser
+    Amazonka.LicenseManagerUserSubscriptions.Lens
+    Amazonka.LicenseManagerUserSubscriptions.ListIdentityProviders
+    Amazonka.LicenseManagerUserSubscriptions.ListInstances
+    Amazonka.LicenseManagerUserSubscriptions.ListProductSubscriptions
+    Amazonka.LicenseManagerUserSubscriptions.ListUserAssociations
+    Amazonka.LicenseManagerUserSubscriptions.RegisterIdentityProvider
+    Amazonka.LicenseManagerUserSubscriptions.StartProductSubscription
+    Amazonka.LicenseManagerUserSubscriptions.StopProductSubscription
+    Amazonka.LicenseManagerUserSubscriptions.Types
+    Amazonka.LicenseManagerUserSubscriptions.Types.ActiveDirectoryIdentityProvider
+    Amazonka.LicenseManagerUserSubscriptions.Types.Filter
+    Amazonka.LicenseManagerUserSubscriptions.Types.IdentityProvider
+    Amazonka.LicenseManagerUserSubscriptions.Types.IdentityProviderSummary
+    Amazonka.LicenseManagerUserSubscriptions.Types.InstanceSummary
+    Amazonka.LicenseManagerUserSubscriptions.Types.InstanceUserSummary
+    Amazonka.LicenseManagerUserSubscriptions.Types.ProductUserSummary
+    Amazonka.LicenseManagerUserSubscriptions.Types.Settings
+    Amazonka.LicenseManagerUserSubscriptions.Types.UpdateSettings
+    Amazonka.LicenseManagerUserSubscriptions.UpdateIdentityProviderSettings
+    Amazonka.LicenseManagerUserSubscriptions.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-license-manager-user-subscriptions-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.LicenseManagerUserSubscriptions
+    Test.Amazonka.LicenseManagerUserSubscriptions
+    Test.Amazonka.LicenseManagerUserSubscriptions.Internal
+
+  build-depends:
+    , amazonka-core                                >=2.0 && <2.1
+    , amazonka-license-manager-user-subscriptions
+    , amazonka-test                                >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/AssociateUser.yaml b/fixture/AssociateUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateUser.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/license-manager-user-subscriptions/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  license-manager-user-subscriptions.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/AssociateUserResponse.proto b/fixture/AssociateUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateUserResponse.proto
diff --git a/fixture/DeregisterIdentityProvider.yaml b/fixture/DeregisterIdentityProvider.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeregisterIdentityProvider.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/license-manager-user-subscriptions/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  license-manager-user-subscriptions.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/DeregisterIdentityProviderResponse.proto b/fixture/DeregisterIdentityProviderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeregisterIdentityProviderResponse.proto
diff --git a/fixture/DisassociateUser.yaml b/fixture/DisassociateUser.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateUser.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/license-manager-user-subscriptions/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  license-manager-user-subscriptions.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/DisassociateUserResponse.proto b/fixture/DisassociateUserResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateUserResponse.proto
diff --git a/fixture/ListIdentityProviders.yaml b/fixture/ListIdentityProviders.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListIdentityProviders.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/license-manager-user-subscriptions/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  license-manager-user-subscriptions.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/ListIdentityProvidersResponse.proto b/fixture/ListIdentityProvidersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListIdentityProvidersResponse.proto
diff --git a/fixture/ListInstances.yaml b/fixture/ListInstances.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListInstances.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/license-manager-user-subscriptions/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  license-manager-user-subscriptions.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/ListInstancesResponse.proto b/fixture/ListInstancesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListInstancesResponse.proto
diff --git a/fixture/ListProductSubscriptions.yaml b/fixture/ListProductSubscriptions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListProductSubscriptions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/license-manager-user-subscriptions/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  license-manager-user-subscriptions.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/ListProductSubscriptionsResponse.proto b/fixture/ListProductSubscriptionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListProductSubscriptionsResponse.proto
diff --git a/fixture/ListUserAssociations.yaml b/fixture/ListUserAssociations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListUserAssociations.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/license-manager-user-subscriptions/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  license-manager-user-subscriptions.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/ListUserAssociationsResponse.proto b/fixture/ListUserAssociationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListUserAssociationsResponse.proto
diff --git a/fixture/RegisterIdentityProvider.yaml b/fixture/RegisterIdentityProvider.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterIdentityProvider.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/license-manager-user-subscriptions/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  license-manager-user-subscriptions.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/RegisterIdentityProviderResponse.proto b/fixture/RegisterIdentityProviderResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterIdentityProviderResponse.proto
diff --git a/fixture/StartProductSubscription.yaml b/fixture/StartProductSubscription.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartProductSubscription.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/license-manager-user-subscriptions/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  license-manager-user-subscriptions.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/StartProductSubscriptionResponse.proto b/fixture/StartProductSubscriptionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartProductSubscriptionResponse.proto
diff --git a/fixture/StopProductSubscription.yaml b/fixture/StopProductSubscription.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopProductSubscription.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/license-manager-user-subscriptions/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  license-manager-user-subscriptions.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/StopProductSubscriptionResponse.proto b/fixture/StopProductSubscriptionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopProductSubscriptionResponse.proto
diff --git a/fixture/UpdateIdentityProviderSettings.yaml b/fixture/UpdateIdentityProviderSettings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateIdentityProviderSettings.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/license-manager-user-subscriptions/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  license-manager-user-subscriptions.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/UpdateIdentityProviderSettingsResponse.proto b/fixture/UpdateIdentityProviderSettingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateIdentityProviderSettingsResponse.proto
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions.hs b/gen/Amazonka/LicenseManagerUserSubscriptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions.hs
@@ -0,0 +1,197 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.LicenseManagerUserSubscriptions
+-- 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 @2018-05-10@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- With License Manager, you can create user-based subscriptions to utilize
+-- licensed software with a per user subscription fee on Amazon EC2
+-- instances.
+module Amazonka.LicenseManagerUserSubscriptions
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ServiceQuotaExceededException
+    _ServiceQuotaExceededException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AssociateUser
+    AssociateUser (AssociateUser'),
+    newAssociateUser,
+    AssociateUserResponse (AssociateUserResponse'),
+    newAssociateUserResponse,
+
+    -- ** DeregisterIdentityProvider
+    DeregisterIdentityProvider (DeregisterIdentityProvider'),
+    newDeregisterIdentityProvider,
+    DeregisterIdentityProviderResponse (DeregisterIdentityProviderResponse'),
+    newDeregisterIdentityProviderResponse,
+
+    -- ** DisassociateUser
+    DisassociateUser (DisassociateUser'),
+    newDisassociateUser,
+    DisassociateUserResponse (DisassociateUserResponse'),
+    newDisassociateUserResponse,
+
+    -- ** ListIdentityProviders (Paginated)
+    ListIdentityProviders (ListIdentityProviders'),
+    newListIdentityProviders,
+    ListIdentityProvidersResponse (ListIdentityProvidersResponse'),
+    newListIdentityProvidersResponse,
+
+    -- ** ListInstances (Paginated)
+    ListInstances (ListInstances'),
+    newListInstances,
+    ListInstancesResponse (ListInstancesResponse'),
+    newListInstancesResponse,
+
+    -- ** ListProductSubscriptions (Paginated)
+    ListProductSubscriptions (ListProductSubscriptions'),
+    newListProductSubscriptions,
+    ListProductSubscriptionsResponse (ListProductSubscriptionsResponse'),
+    newListProductSubscriptionsResponse,
+
+    -- ** ListUserAssociations (Paginated)
+    ListUserAssociations (ListUserAssociations'),
+    newListUserAssociations,
+    ListUserAssociationsResponse (ListUserAssociationsResponse'),
+    newListUserAssociationsResponse,
+
+    -- ** RegisterIdentityProvider
+    RegisterIdentityProvider (RegisterIdentityProvider'),
+    newRegisterIdentityProvider,
+    RegisterIdentityProviderResponse (RegisterIdentityProviderResponse'),
+    newRegisterIdentityProviderResponse,
+
+    -- ** StartProductSubscription
+    StartProductSubscription (StartProductSubscription'),
+    newStartProductSubscription,
+    StartProductSubscriptionResponse (StartProductSubscriptionResponse'),
+    newStartProductSubscriptionResponse,
+
+    -- ** StopProductSubscription
+    StopProductSubscription (StopProductSubscription'),
+    newStopProductSubscription,
+    StopProductSubscriptionResponse (StopProductSubscriptionResponse'),
+    newStopProductSubscriptionResponse,
+
+    -- ** UpdateIdentityProviderSettings
+    UpdateIdentityProviderSettings (UpdateIdentityProviderSettings'),
+    newUpdateIdentityProviderSettings,
+    UpdateIdentityProviderSettingsResponse (UpdateIdentityProviderSettingsResponse'),
+    newUpdateIdentityProviderSettingsResponse,
+
+    -- * Types
+
+    -- ** ActiveDirectoryIdentityProvider
+    ActiveDirectoryIdentityProvider (ActiveDirectoryIdentityProvider'),
+    newActiveDirectoryIdentityProvider,
+
+    -- ** Filter
+    Filter (Filter'),
+    newFilter,
+
+    -- ** IdentityProvider
+    IdentityProvider (IdentityProvider'),
+    newIdentityProvider,
+
+    -- ** IdentityProviderSummary
+    IdentityProviderSummary (IdentityProviderSummary'),
+    newIdentityProviderSummary,
+
+    -- ** InstanceSummary
+    InstanceSummary (InstanceSummary'),
+    newInstanceSummary,
+
+    -- ** InstanceUserSummary
+    InstanceUserSummary (InstanceUserSummary'),
+    newInstanceUserSummary,
+
+    -- ** ProductUserSummary
+    ProductUserSummary (ProductUserSummary'),
+    newProductUserSummary,
+
+    -- ** Settings
+    Settings (Settings'),
+    newSettings,
+
+    -- ** UpdateSettings
+    UpdateSettings (UpdateSettings'),
+    newUpdateSettings,
+  )
+where
+
+import Amazonka.LicenseManagerUserSubscriptions.AssociateUser
+import Amazonka.LicenseManagerUserSubscriptions.DeregisterIdentityProvider
+import Amazonka.LicenseManagerUserSubscriptions.DisassociateUser
+import Amazonka.LicenseManagerUserSubscriptions.Lens
+import Amazonka.LicenseManagerUserSubscriptions.ListIdentityProviders
+import Amazonka.LicenseManagerUserSubscriptions.ListInstances
+import Amazonka.LicenseManagerUserSubscriptions.ListProductSubscriptions
+import Amazonka.LicenseManagerUserSubscriptions.ListUserAssociations
+import Amazonka.LicenseManagerUserSubscriptions.RegisterIdentityProvider
+import Amazonka.LicenseManagerUserSubscriptions.StartProductSubscription
+import Amazonka.LicenseManagerUserSubscriptions.StopProductSubscription
+import Amazonka.LicenseManagerUserSubscriptions.Types
+import Amazonka.LicenseManagerUserSubscriptions.UpdateIdentityProviderSettings
+import Amazonka.LicenseManagerUserSubscriptions.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 'LicenseManagerUserSubscriptions'.
+
+-- $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/LicenseManagerUserSubscriptions/AssociateUser.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/AssociateUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/AssociateUser.hs
@@ -0,0 +1,227 @@
+{-# 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.LicenseManagerUserSubscriptions.AssociateUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates the user to an EC2 instance to utilize user-based
+-- subscriptions.
+--
+-- Your estimated bill for charges on the number of users and related costs
+-- will take 48 hours to appear for billing periods that haven\'t closed
+-- (marked as __Pending__ billing status) in Amazon Web Services Billing.
+-- For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/invoice.html Viewing your monthly charges>
+-- in the /Amazon Web Services Billing User Guide/.
+module Amazonka.LicenseManagerUserSubscriptions.AssociateUser
+  ( -- * Creating a Request
+    AssociateUser (..),
+    newAssociateUser,
+
+    -- * Request Lenses
+    associateUser_domain,
+    associateUser_identityProvider,
+    associateUser_instanceId,
+    associateUser_username,
+
+    -- * Destructuring the Response
+    AssociateUserResponse (..),
+    newAssociateUserResponse,
+
+    -- * Response Lenses
+    associateUserResponse_httpStatus,
+    associateUserResponse_instanceUserSummary,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociateUser' smart constructor.
+data AssociateUser = AssociateUser'
+  { -- | The domain name of the user.
+    domain :: Prelude.Maybe Prelude.Text,
+    -- | The identity provider of the user.
+    identityProvider :: IdentityProvider,
+    -- | The ID of the EC2 instance, which provides user-based subscriptions.
+    instanceId :: Prelude.Text,
+    -- | The user name from the identity provider for the user.
+    username :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domain', 'associateUser_domain' - The domain name of the user.
+--
+-- 'identityProvider', 'associateUser_identityProvider' - The identity provider of the user.
+--
+-- 'instanceId', 'associateUser_instanceId' - The ID of the EC2 instance, which provides user-based subscriptions.
+--
+-- 'username', 'associateUser_username' - The user name from the identity provider for the user.
+newAssociateUser ::
+  -- | 'identityProvider'
+  IdentityProvider ->
+  -- | 'instanceId'
+  Prelude.Text ->
+  -- | 'username'
+  Prelude.Text ->
+  AssociateUser
+newAssociateUser
+  pIdentityProvider_
+  pInstanceId_
+  pUsername_ =
+    AssociateUser'
+      { domain = Prelude.Nothing,
+        identityProvider = pIdentityProvider_,
+        instanceId = pInstanceId_,
+        username = pUsername_
+      }
+
+-- | The domain name of the user.
+associateUser_domain :: Lens.Lens' AssociateUser (Prelude.Maybe Prelude.Text)
+associateUser_domain = Lens.lens (\AssociateUser' {domain} -> domain) (\s@AssociateUser' {} a -> s {domain = a} :: AssociateUser)
+
+-- | The identity provider of the user.
+associateUser_identityProvider :: Lens.Lens' AssociateUser IdentityProvider
+associateUser_identityProvider = Lens.lens (\AssociateUser' {identityProvider} -> identityProvider) (\s@AssociateUser' {} a -> s {identityProvider = a} :: AssociateUser)
+
+-- | The ID of the EC2 instance, which provides user-based subscriptions.
+associateUser_instanceId :: Lens.Lens' AssociateUser Prelude.Text
+associateUser_instanceId = Lens.lens (\AssociateUser' {instanceId} -> instanceId) (\s@AssociateUser' {} a -> s {instanceId = a} :: AssociateUser)
+
+-- | The user name from the identity provider for the user.
+associateUser_username :: Lens.Lens' AssociateUser Prelude.Text
+associateUser_username = Lens.lens (\AssociateUser' {username} -> username) (\s@AssociateUser' {} a -> s {username = a} :: AssociateUser)
+
+instance Core.AWSRequest AssociateUser where
+  type
+    AWSResponse AssociateUser =
+      AssociateUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AssociateUserResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "InstanceUserSummary")
+      )
+
+instance Prelude.Hashable AssociateUser where
+  hashWithSalt _salt AssociateUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` identityProvider
+      `Prelude.hashWithSalt` instanceId
+      `Prelude.hashWithSalt` username
+
+instance Prelude.NFData AssociateUser where
+  rnf AssociateUser' {..} =
+    Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf identityProvider
+      `Prelude.seq` Prelude.rnf instanceId
+      `Prelude.seq` Prelude.rnf username
+
+instance Data.ToHeaders AssociateUser where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociateUser where
+  toJSON AssociateUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Domain" Data..=) Prelude.<$> domain,
+            Prelude.Just
+              ("IdentityProvider" Data..= identityProvider),
+            Prelude.Just ("InstanceId" Data..= instanceId),
+            Prelude.Just ("Username" Data..= username)
+          ]
+      )
+
+instance Data.ToPath AssociateUser where
+  toPath = Prelude.const "/user/AssociateUser"
+
+instance Data.ToQuery AssociateUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateUserResponse' smart constructor.
+data AssociateUserResponse = AssociateUserResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Metadata that describes the associate user operation.
+    instanceUserSummary :: InstanceUserSummary
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'associateUserResponse_httpStatus' - The response's http status code.
+--
+-- 'instanceUserSummary', 'associateUserResponse_instanceUserSummary' - Metadata that describes the associate user operation.
+newAssociateUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'instanceUserSummary'
+  InstanceUserSummary ->
+  AssociateUserResponse
+newAssociateUserResponse
+  pHttpStatus_
+  pInstanceUserSummary_ =
+    AssociateUserResponse'
+      { httpStatus = pHttpStatus_,
+        instanceUserSummary = pInstanceUserSummary_
+      }
+
+-- | The response's http status code.
+associateUserResponse_httpStatus :: Lens.Lens' AssociateUserResponse Prelude.Int
+associateUserResponse_httpStatus = Lens.lens (\AssociateUserResponse' {httpStatus} -> httpStatus) (\s@AssociateUserResponse' {} a -> s {httpStatus = a} :: AssociateUserResponse)
+
+-- | Metadata that describes the associate user operation.
+associateUserResponse_instanceUserSummary :: Lens.Lens' AssociateUserResponse InstanceUserSummary
+associateUserResponse_instanceUserSummary = Lens.lens (\AssociateUserResponse' {instanceUserSummary} -> instanceUserSummary) (\s@AssociateUserResponse' {} a -> s {instanceUserSummary = a} :: AssociateUserResponse)
+
+instance Prelude.NFData AssociateUserResponse where
+  rnf AssociateUserResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf instanceUserSummary
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/DeregisterIdentityProvider.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/DeregisterIdentityProvider.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/DeregisterIdentityProvider.hs
@@ -0,0 +1,199 @@
+{-# 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.LicenseManagerUserSubscriptions.DeregisterIdentityProvider
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deregisters the identity provider from providing user-based
+-- subscriptions.
+module Amazonka.LicenseManagerUserSubscriptions.DeregisterIdentityProvider
+  ( -- * Creating a Request
+    DeregisterIdentityProvider (..),
+    newDeregisterIdentityProvider,
+
+    -- * Request Lenses
+    deregisterIdentityProvider_identityProvider,
+    deregisterIdentityProvider_product,
+
+    -- * Destructuring the Response
+    DeregisterIdentityProviderResponse (..),
+    newDeregisterIdentityProviderResponse,
+
+    -- * Response Lenses
+    deregisterIdentityProviderResponse_httpStatus,
+    deregisterIdentityProviderResponse_identityProviderSummary,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeregisterIdentityProvider' smart constructor.
+data DeregisterIdentityProvider = DeregisterIdentityProvider'
+  { -- | An object that specifies details for the identity provider.
+    identityProvider :: IdentityProvider,
+    -- | The name of the user-based subscription product.
+    product :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeregisterIdentityProvider' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityProvider', 'deregisterIdentityProvider_identityProvider' - An object that specifies details for the identity provider.
+--
+-- 'product', 'deregisterIdentityProvider_product' - The name of the user-based subscription product.
+newDeregisterIdentityProvider ::
+  -- | 'identityProvider'
+  IdentityProvider ->
+  -- | 'product'
+  Prelude.Text ->
+  DeregisterIdentityProvider
+newDeregisterIdentityProvider
+  pIdentityProvider_
+  pProduct_ =
+    DeregisterIdentityProvider'
+      { identityProvider =
+          pIdentityProvider_,
+        product = pProduct_
+      }
+
+-- | An object that specifies details for the identity provider.
+deregisterIdentityProvider_identityProvider :: Lens.Lens' DeregisterIdentityProvider IdentityProvider
+deregisterIdentityProvider_identityProvider = Lens.lens (\DeregisterIdentityProvider' {identityProvider} -> identityProvider) (\s@DeregisterIdentityProvider' {} a -> s {identityProvider = a} :: DeregisterIdentityProvider)
+
+-- | The name of the user-based subscription product.
+deregisterIdentityProvider_product :: Lens.Lens' DeregisterIdentityProvider Prelude.Text
+deregisterIdentityProvider_product = Lens.lens (\DeregisterIdentityProvider' {product} -> product) (\s@DeregisterIdentityProvider' {} a -> s {product = a} :: DeregisterIdentityProvider)
+
+instance Core.AWSRequest DeregisterIdentityProvider where
+  type
+    AWSResponse DeregisterIdentityProvider =
+      DeregisterIdentityProviderResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeregisterIdentityProviderResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "IdentityProviderSummary")
+      )
+
+instance Prelude.Hashable DeregisterIdentityProvider where
+  hashWithSalt _salt DeregisterIdentityProvider' {..} =
+    _salt
+      `Prelude.hashWithSalt` identityProvider
+      `Prelude.hashWithSalt` product
+
+instance Prelude.NFData DeregisterIdentityProvider where
+  rnf DeregisterIdentityProvider' {..} =
+    Prelude.rnf identityProvider
+      `Prelude.seq` Prelude.rnf product
+
+instance Data.ToHeaders DeregisterIdentityProvider where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeregisterIdentityProvider where
+  toJSON DeregisterIdentityProvider' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("IdentityProvider" Data..= identityProvider),
+            Prelude.Just ("Product" Data..= product)
+          ]
+      )
+
+instance Data.ToPath DeregisterIdentityProvider where
+  toPath =
+    Prelude.const
+      "/identity-provider/DeregisterIdentityProvider"
+
+instance Data.ToQuery DeregisterIdentityProvider where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeregisterIdentityProviderResponse' smart constructor.
+data DeregisterIdentityProviderResponse = DeregisterIdentityProviderResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Metadata that describes the results of an identity provider operation.
+    identityProviderSummary :: IdentityProviderSummary
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeregisterIdentityProviderResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deregisterIdentityProviderResponse_httpStatus' - The response's http status code.
+--
+-- 'identityProviderSummary', 'deregisterIdentityProviderResponse_identityProviderSummary' - Metadata that describes the results of an identity provider operation.
+newDeregisterIdentityProviderResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'identityProviderSummary'
+  IdentityProviderSummary ->
+  DeregisterIdentityProviderResponse
+newDeregisterIdentityProviderResponse
+  pHttpStatus_
+  pIdentityProviderSummary_ =
+    DeregisterIdentityProviderResponse'
+      { httpStatus =
+          pHttpStatus_,
+        identityProviderSummary =
+          pIdentityProviderSummary_
+      }
+
+-- | The response's http status code.
+deregisterIdentityProviderResponse_httpStatus :: Lens.Lens' DeregisterIdentityProviderResponse Prelude.Int
+deregisterIdentityProviderResponse_httpStatus = Lens.lens (\DeregisterIdentityProviderResponse' {httpStatus} -> httpStatus) (\s@DeregisterIdentityProviderResponse' {} a -> s {httpStatus = a} :: DeregisterIdentityProviderResponse)
+
+-- | Metadata that describes the results of an identity provider operation.
+deregisterIdentityProviderResponse_identityProviderSummary :: Lens.Lens' DeregisterIdentityProviderResponse IdentityProviderSummary
+deregisterIdentityProviderResponse_identityProviderSummary = Lens.lens (\DeregisterIdentityProviderResponse' {identityProviderSummary} -> identityProviderSummary) (\s@DeregisterIdentityProviderResponse' {} a -> s {identityProviderSummary = a} :: DeregisterIdentityProviderResponse)
+
+instance
+  Prelude.NFData
+    DeregisterIdentityProviderResponse
+  where
+  rnf DeregisterIdentityProviderResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf identityProviderSummary
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/DisassociateUser.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/DisassociateUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/DisassociateUser.hs
@@ -0,0 +1,221 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LicenseManagerUserSubscriptions.DisassociateUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociates the user from an EC2 instance providing user-based
+-- subscriptions.
+module Amazonka.LicenseManagerUserSubscriptions.DisassociateUser
+  ( -- * Creating a Request
+    DisassociateUser (..),
+    newDisassociateUser,
+
+    -- * Request Lenses
+    disassociateUser_domain,
+    disassociateUser_identityProvider,
+    disassociateUser_instanceId,
+    disassociateUser_username,
+
+    -- * Destructuring the Response
+    DisassociateUserResponse (..),
+    newDisassociateUserResponse,
+
+    -- * Response Lenses
+    disassociateUserResponse_httpStatus,
+    disassociateUserResponse_instanceUserSummary,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociateUser' smart constructor.
+data DisassociateUser = DisassociateUser'
+  { -- | The domain name of the user.
+    domain :: Prelude.Maybe Prelude.Text,
+    -- | An object that specifies details for the identity provider.
+    identityProvider :: IdentityProvider,
+    -- | The ID of the EC2 instance, which provides user-based subscriptions.
+    instanceId :: Prelude.Text,
+    -- | The user name from the identity provider for the user.
+    username :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateUser' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domain', 'disassociateUser_domain' - The domain name of the user.
+--
+-- 'identityProvider', 'disassociateUser_identityProvider' - An object that specifies details for the identity provider.
+--
+-- 'instanceId', 'disassociateUser_instanceId' - The ID of the EC2 instance, which provides user-based subscriptions.
+--
+-- 'username', 'disassociateUser_username' - The user name from the identity provider for the user.
+newDisassociateUser ::
+  -- | 'identityProvider'
+  IdentityProvider ->
+  -- | 'instanceId'
+  Prelude.Text ->
+  -- | 'username'
+  Prelude.Text ->
+  DisassociateUser
+newDisassociateUser
+  pIdentityProvider_
+  pInstanceId_
+  pUsername_ =
+    DisassociateUser'
+      { domain = Prelude.Nothing,
+        identityProvider = pIdentityProvider_,
+        instanceId = pInstanceId_,
+        username = pUsername_
+      }
+
+-- | The domain name of the user.
+disassociateUser_domain :: Lens.Lens' DisassociateUser (Prelude.Maybe Prelude.Text)
+disassociateUser_domain = Lens.lens (\DisassociateUser' {domain} -> domain) (\s@DisassociateUser' {} a -> s {domain = a} :: DisassociateUser)
+
+-- | An object that specifies details for the identity provider.
+disassociateUser_identityProvider :: Lens.Lens' DisassociateUser IdentityProvider
+disassociateUser_identityProvider = Lens.lens (\DisassociateUser' {identityProvider} -> identityProvider) (\s@DisassociateUser' {} a -> s {identityProvider = a} :: DisassociateUser)
+
+-- | The ID of the EC2 instance, which provides user-based subscriptions.
+disassociateUser_instanceId :: Lens.Lens' DisassociateUser Prelude.Text
+disassociateUser_instanceId = Lens.lens (\DisassociateUser' {instanceId} -> instanceId) (\s@DisassociateUser' {} a -> s {instanceId = a} :: DisassociateUser)
+
+-- | The user name from the identity provider for the user.
+disassociateUser_username :: Lens.Lens' DisassociateUser Prelude.Text
+disassociateUser_username = Lens.lens (\DisassociateUser' {username} -> username) (\s@DisassociateUser' {} a -> s {username = a} :: DisassociateUser)
+
+instance Core.AWSRequest DisassociateUser where
+  type
+    AWSResponse DisassociateUser =
+      DisassociateUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DisassociateUserResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "InstanceUserSummary")
+      )
+
+instance Prelude.Hashable DisassociateUser where
+  hashWithSalt _salt DisassociateUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` identityProvider
+      `Prelude.hashWithSalt` instanceId
+      `Prelude.hashWithSalt` username
+
+instance Prelude.NFData DisassociateUser where
+  rnf DisassociateUser' {..} =
+    Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf identityProvider
+      `Prelude.seq` Prelude.rnf instanceId
+      `Prelude.seq` Prelude.rnf username
+
+instance Data.ToHeaders DisassociateUser where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DisassociateUser where
+  toJSON DisassociateUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Domain" Data..=) Prelude.<$> domain,
+            Prelude.Just
+              ("IdentityProvider" Data..= identityProvider),
+            Prelude.Just ("InstanceId" Data..= instanceId),
+            Prelude.Just ("Username" Data..= username)
+          ]
+      )
+
+instance Data.ToPath DisassociateUser where
+  toPath = Prelude.const "/user/DisassociateUser"
+
+instance Data.ToQuery DisassociateUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociateUserResponse' smart constructor.
+data DisassociateUserResponse = DisassociateUserResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Metadata that describes the associate user operation.
+    instanceUserSummary :: InstanceUserSummary
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateUserResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'disassociateUserResponse_httpStatus' - The response's http status code.
+--
+-- 'instanceUserSummary', 'disassociateUserResponse_instanceUserSummary' - Metadata that describes the associate user operation.
+newDisassociateUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'instanceUserSummary'
+  InstanceUserSummary ->
+  DisassociateUserResponse
+newDisassociateUserResponse
+  pHttpStatus_
+  pInstanceUserSummary_ =
+    DisassociateUserResponse'
+      { httpStatus =
+          pHttpStatus_,
+        instanceUserSummary = pInstanceUserSummary_
+      }
+
+-- | The response's http status code.
+disassociateUserResponse_httpStatus :: Lens.Lens' DisassociateUserResponse Prelude.Int
+disassociateUserResponse_httpStatus = Lens.lens (\DisassociateUserResponse' {httpStatus} -> httpStatus) (\s@DisassociateUserResponse' {} a -> s {httpStatus = a} :: DisassociateUserResponse)
+
+-- | Metadata that describes the associate user operation.
+disassociateUserResponse_instanceUserSummary :: Lens.Lens' DisassociateUserResponse InstanceUserSummary
+disassociateUserResponse_instanceUserSummary = Lens.lens (\DisassociateUserResponse' {instanceUserSummary} -> instanceUserSummary) (\s@DisassociateUserResponse' {} a -> s {instanceUserSummary = a} :: DisassociateUserResponse)
+
+instance Prelude.NFData DisassociateUserResponse where
+  rnf DisassociateUserResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf instanceUserSummary
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/Lens.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/Lens.hs
@@ -0,0 +1,181 @@
+{-# 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.LicenseManagerUserSubscriptions.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.LicenseManagerUserSubscriptions.Lens
+  ( -- * Operations
+
+    -- ** AssociateUser
+    associateUser_domain,
+    associateUser_identityProvider,
+    associateUser_instanceId,
+    associateUser_username,
+    associateUserResponse_httpStatus,
+    associateUserResponse_instanceUserSummary,
+
+    -- ** DeregisterIdentityProvider
+    deregisterIdentityProvider_identityProvider,
+    deregisterIdentityProvider_product,
+    deregisterIdentityProviderResponse_httpStatus,
+    deregisterIdentityProviderResponse_identityProviderSummary,
+
+    -- ** DisassociateUser
+    disassociateUser_domain,
+    disassociateUser_identityProvider,
+    disassociateUser_instanceId,
+    disassociateUser_username,
+    disassociateUserResponse_httpStatus,
+    disassociateUserResponse_instanceUserSummary,
+
+    -- ** ListIdentityProviders
+    listIdentityProviders_maxResults,
+    listIdentityProviders_nextToken,
+    listIdentityProvidersResponse_nextToken,
+    listIdentityProvidersResponse_httpStatus,
+    listIdentityProvidersResponse_identityProviderSummaries,
+
+    -- ** ListInstances
+    listInstances_filters,
+    listInstances_maxResults,
+    listInstances_nextToken,
+    listInstancesResponse_instanceSummaries,
+    listInstancesResponse_nextToken,
+    listInstancesResponse_httpStatus,
+
+    -- ** ListProductSubscriptions
+    listProductSubscriptions_filters,
+    listProductSubscriptions_maxResults,
+    listProductSubscriptions_nextToken,
+    listProductSubscriptions_identityProvider,
+    listProductSubscriptions_product,
+    listProductSubscriptionsResponse_nextToken,
+    listProductSubscriptionsResponse_productUserSummaries,
+    listProductSubscriptionsResponse_httpStatus,
+
+    -- ** ListUserAssociations
+    listUserAssociations_filters,
+    listUserAssociations_maxResults,
+    listUserAssociations_nextToken,
+    listUserAssociations_identityProvider,
+    listUserAssociations_instanceId,
+    listUserAssociationsResponse_instanceUserSummaries,
+    listUserAssociationsResponse_nextToken,
+    listUserAssociationsResponse_httpStatus,
+
+    -- ** RegisterIdentityProvider
+    registerIdentityProvider_settings,
+    registerIdentityProvider_identityProvider,
+    registerIdentityProvider_product,
+    registerIdentityProviderResponse_httpStatus,
+    registerIdentityProviderResponse_identityProviderSummary,
+
+    -- ** StartProductSubscription
+    startProductSubscription_domain,
+    startProductSubscription_identityProvider,
+    startProductSubscription_product,
+    startProductSubscription_username,
+    startProductSubscriptionResponse_httpStatus,
+    startProductSubscriptionResponse_productUserSummary,
+
+    -- ** StopProductSubscription
+    stopProductSubscription_domain,
+    stopProductSubscription_identityProvider,
+    stopProductSubscription_product,
+    stopProductSubscription_username,
+    stopProductSubscriptionResponse_httpStatus,
+    stopProductSubscriptionResponse_productUserSummary,
+
+    -- ** UpdateIdentityProviderSettings
+    updateIdentityProviderSettings_identityProvider,
+    updateIdentityProviderSettings_product,
+    updateIdentityProviderSettings_updateSettings,
+    updateIdentityProviderSettingsResponse_httpStatus,
+    updateIdentityProviderSettingsResponse_identityProviderSummary,
+
+    -- * Types
+
+    -- ** ActiveDirectoryIdentityProvider
+    activeDirectoryIdentityProvider_directoryId,
+
+    -- ** Filter
+    filter_attribute,
+    filter_operation,
+    filter_value,
+
+    -- ** IdentityProvider
+    identityProvider_activeDirectoryIdentityProvider,
+
+    -- ** IdentityProviderSummary
+    identityProviderSummary_failureMessage,
+    identityProviderSummary_identityProvider,
+    identityProviderSummary_product,
+    identityProviderSummary_settings,
+    identityProviderSummary_status,
+
+    -- ** InstanceSummary
+    instanceSummary_lastStatusCheckDate,
+    instanceSummary_statusMessage,
+    instanceSummary_instanceId,
+    instanceSummary_products,
+    instanceSummary_status,
+
+    -- ** InstanceUserSummary
+    instanceUserSummary_associationDate,
+    instanceUserSummary_disassociationDate,
+    instanceUserSummary_domain,
+    instanceUserSummary_statusMessage,
+    instanceUserSummary_identityProvider,
+    instanceUserSummary_instanceId,
+    instanceUserSummary_status,
+    instanceUserSummary_username,
+
+    -- ** ProductUserSummary
+    productUserSummary_domain,
+    productUserSummary_statusMessage,
+    productUserSummary_subscriptionEndDate,
+    productUserSummary_subscriptionStartDate,
+    productUserSummary_identityProvider,
+    productUserSummary_product,
+    productUserSummary_status,
+    productUserSummary_username,
+
+    -- ** Settings
+    settings_securityGroupId,
+    settings_subnets,
+
+    -- ** UpdateSettings
+    updateSettings_securityGroupId,
+    updateSettings_addSubnets,
+    updateSettings_removeSubnets,
+  )
+where
+
+import Amazonka.LicenseManagerUserSubscriptions.AssociateUser
+import Amazonka.LicenseManagerUserSubscriptions.DeregisterIdentityProvider
+import Amazonka.LicenseManagerUserSubscriptions.DisassociateUser
+import Amazonka.LicenseManagerUserSubscriptions.ListIdentityProviders
+import Amazonka.LicenseManagerUserSubscriptions.ListInstances
+import Amazonka.LicenseManagerUserSubscriptions.ListProductSubscriptions
+import Amazonka.LicenseManagerUserSubscriptions.ListUserAssociations
+import Amazonka.LicenseManagerUserSubscriptions.RegisterIdentityProvider
+import Amazonka.LicenseManagerUserSubscriptions.StartProductSubscription
+import Amazonka.LicenseManagerUserSubscriptions.StopProductSubscription
+import Amazonka.LicenseManagerUserSubscriptions.Types.ActiveDirectoryIdentityProvider
+import Amazonka.LicenseManagerUserSubscriptions.Types.Filter
+import Amazonka.LicenseManagerUserSubscriptions.Types.IdentityProvider
+import Amazonka.LicenseManagerUserSubscriptions.Types.IdentityProviderSummary
+import Amazonka.LicenseManagerUserSubscriptions.Types.InstanceSummary
+import Amazonka.LicenseManagerUserSubscriptions.Types.InstanceUserSummary
+import Amazonka.LicenseManagerUserSubscriptions.Types.ProductUserSummary
+import Amazonka.LicenseManagerUserSubscriptions.Types.Settings
+import Amazonka.LicenseManagerUserSubscriptions.Types.UpdateSettings
+import Amazonka.LicenseManagerUserSubscriptions.UpdateIdentityProviderSettings
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/ListIdentityProviders.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/ListIdentityProviders.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/ListIdentityProviders.hs
@@ -0,0 +1,221 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LicenseManagerUserSubscriptions.ListIdentityProviders
+-- 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 identity providers for user-based subscriptions.
+--
+-- This operation returns paginated results.
+module Amazonka.LicenseManagerUserSubscriptions.ListIdentityProviders
+  ( -- * Creating a Request
+    ListIdentityProviders (..),
+    newListIdentityProviders,
+
+    -- * Request Lenses
+    listIdentityProviders_maxResults,
+    listIdentityProviders_nextToken,
+
+    -- * Destructuring the Response
+    ListIdentityProvidersResponse (..),
+    newListIdentityProvidersResponse,
+
+    -- * Response Lenses
+    listIdentityProvidersResponse_nextToken,
+    listIdentityProvidersResponse_httpStatus,
+    listIdentityProvidersResponse_identityProviderSummaries,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListIdentityProviders' smart constructor.
+data ListIdentityProviders = ListIdentityProviders'
+  { -- | Maximum number of results to return in a single call.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | Token for the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIdentityProviders' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listIdentityProviders_maxResults' - Maximum number of results to return in a single call.
+--
+-- 'nextToken', 'listIdentityProviders_nextToken' - Token for the next set of results.
+newListIdentityProviders ::
+  ListIdentityProviders
+newListIdentityProviders =
+  ListIdentityProviders'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Maximum number of results to return in a single call.
+listIdentityProviders_maxResults :: Lens.Lens' ListIdentityProviders (Prelude.Maybe Prelude.Int)
+listIdentityProviders_maxResults = Lens.lens (\ListIdentityProviders' {maxResults} -> maxResults) (\s@ListIdentityProviders' {} a -> s {maxResults = a} :: ListIdentityProviders)
+
+-- | Token for the next set of results.
+listIdentityProviders_nextToken :: Lens.Lens' ListIdentityProviders (Prelude.Maybe Prelude.Text)
+listIdentityProviders_nextToken = Lens.lens (\ListIdentityProviders' {nextToken} -> nextToken) (\s@ListIdentityProviders' {} a -> s {nextToken = a} :: ListIdentityProviders)
+
+instance Core.AWSPager ListIdentityProviders where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listIdentityProvidersResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listIdentityProvidersResponse_identityProviderSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listIdentityProviders_nextToken
+          Lens..~ rs
+          Lens.^? listIdentityProvidersResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListIdentityProviders where
+  type
+    AWSResponse ListIdentityProviders =
+      ListIdentityProvidersResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListIdentityProvidersResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "IdentityProviderSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListIdentityProviders where
+  hashWithSalt _salt ListIdentityProviders' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListIdentityProviders where
+  rnf ListIdentityProviders' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListIdentityProviders where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListIdentityProviders where
+  toJSON ListIdentityProviders' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListIdentityProviders where
+  toPath =
+    Prelude.const
+      "/identity-provider/ListIdentityProviders"
+
+instance Data.ToQuery ListIdentityProviders where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListIdentityProvidersResponse' smart constructor.
+data ListIdentityProvidersResponse = ListIdentityProvidersResponse'
+  { -- | Token for the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Metadata that describes the list identity providers operation.
+    identityProviderSummaries :: [IdentityProviderSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIdentityProvidersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listIdentityProvidersResponse_nextToken' - Token for the next set of results.
+--
+-- 'httpStatus', 'listIdentityProvidersResponse_httpStatus' - The response's http status code.
+--
+-- 'identityProviderSummaries', 'listIdentityProvidersResponse_identityProviderSummaries' - Metadata that describes the list identity providers operation.
+newListIdentityProvidersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListIdentityProvidersResponse
+newListIdentityProvidersResponse pHttpStatus_ =
+  ListIdentityProvidersResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      identityProviderSummaries = Prelude.mempty
+    }
+
+-- | Token for the next set of results.
+listIdentityProvidersResponse_nextToken :: Lens.Lens' ListIdentityProvidersResponse (Prelude.Maybe Prelude.Text)
+listIdentityProvidersResponse_nextToken = Lens.lens (\ListIdentityProvidersResponse' {nextToken} -> nextToken) (\s@ListIdentityProvidersResponse' {} a -> s {nextToken = a} :: ListIdentityProvidersResponse)
+
+-- | The response's http status code.
+listIdentityProvidersResponse_httpStatus :: Lens.Lens' ListIdentityProvidersResponse Prelude.Int
+listIdentityProvidersResponse_httpStatus = Lens.lens (\ListIdentityProvidersResponse' {httpStatus} -> httpStatus) (\s@ListIdentityProvidersResponse' {} a -> s {httpStatus = a} :: ListIdentityProvidersResponse)
+
+-- | Metadata that describes the list identity providers operation.
+listIdentityProvidersResponse_identityProviderSummaries :: Lens.Lens' ListIdentityProvidersResponse [IdentityProviderSummary]
+listIdentityProvidersResponse_identityProviderSummaries = Lens.lens (\ListIdentityProvidersResponse' {identityProviderSummaries} -> identityProviderSummaries) (\s@ListIdentityProvidersResponse' {} a -> s {identityProviderSummaries = a} :: ListIdentityProvidersResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListIdentityProvidersResponse where
+  rnf ListIdentityProvidersResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf identityProviderSummaries
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/ListInstances.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/ListInstances.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/ListInstances.hs
@@ -0,0 +1,235 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LicenseManagerUserSubscriptions.ListInstances
+-- 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 EC2 instances providing user-based subscriptions.
+--
+-- This operation returns paginated results.
+module Amazonka.LicenseManagerUserSubscriptions.ListInstances
+  ( -- * Creating a Request
+    ListInstances (..),
+    newListInstances,
+
+    -- * Request Lenses
+    listInstances_filters,
+    listInstances_maxResults,
+    listInstances_nextToken,
+
+    -- * Destructuring the Response
+    ListInstancesResponse (..),
+    newListInstancesResponse,
+
+    -- * Response Lenses
+    listInstancesResponse_instanceSummaries,
+    listInstancesResponse_nextToken,
+    listInstancesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListInstances' smart constructor.
+data ListInstances = ListInstances'
+  { -- | An array of structures that you can use to filter the results to those
+    -- that match one or more sets of key-value pairs that you specify.
+    filters :: Prelude.Maybe [Filter],
+    -- | Maximum number of results to return in a single call.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | Token for the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListInstances' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'listInstances_filters' - An array of structures that you can use to filter the results to those
+-- that match one or more sets of key-value pairs that you specify.
+--
+-- 'maxResults', 'listInstances_maxResults' - Maximum number of results to return in a single call.
+--
+-- 'nextToken', 'listInstances_nextToken' - Token for the next set of results.
+newListInstances ::
+  ListInstances
+newListInstances =
+  ListInstances'
+    { filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | An array of structures that you can use to filter the results to those
+-- that match one or more sets of key-value pairs that you specify.
+listInstances_filters :: Lens.Lens' ListInstances (Prelude.Maybe [Filter])
+listInstances_filters = Lens.lens (\ListInstances' {filters} -> filters) (\s@ListInstances' {} a -> s {filters = a} :: ListInstances) Prelude.. Lens.mapping Lens.coerced
+
+-- | Maximum number of results to return in a single call.
+listInstances_maxResults :: Lens.Lens' ListInstances (Prelude.Maybe Prelude.Int)
+listInstances_maxResults = Lens.lens (\ListInstances' {maxResults} -> maxResults) (\s@ListInstances' {} a -> s {maxResults = a} :: ListInstances)
+
+-- | Token for the next set of results.
+listInstances_nextToken :: Lens.Lens' ListInstances (Prelude.Maybe Prelude.Text)
+listInstances_nextToken = Lens.lens (\ListInstances' {nextToken} -> nextToken) (\s@ListInstances' {} a -> s {nextToken = a} :: ListInstances)
+
+instance Core.AWSPager ListInstances where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listInstancesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listInstancesResponse_instanceSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listInstances_nextToken
+          Lens..~ rs
+          Lens.^? listInstancesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListInstances where
+  type
+    AWSResponse ListInstances =
+      ListInstancesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListInstancesResponse'
+            Prelude.<$> ( x
+                            Data..?> "InstanceSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListInstances where
+  hashWithSalt _salt ListInstances' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListInstances where
+  rnf ListInstances' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListInstances where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListInstances where
+  toJSON ListInstances' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListInstances where
+  toPath = Prelude.const "/instance/ListInstances"
+
+instance Data.ToQuery ListInstances where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListInstancesResponse' smart constructor.
+data ListInstancesResponse = ListInstancesResponse'
+  { -- | Metadata that describes the list instances operation.
+    instanceSummaries :: Prelude.Maybe [InstanceSummary],
+    -- | Token for the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListInstancesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceSummaries', 'listInstancesResponse_instanceSummaries' - Metadata that describes the list instances operation.
+--
+-- 'nextToken', 'listInstancesResponse_nextToken' - Token for the next set of results.
+--
+-- 'httpStatus', 'listInstancesResponse_httpStatus' - The response's http status code.
+newListInstancesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListInstancesResponse
+newListInstancesResponse pHttpStatus_ =
+  ListInstancesResponse'
+    { instanceSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Metadata that describes the list instances operation.
+listInstancesResponse_instanceSummaries :: Lens.Lens' ListInstancesResponse (Prelude.Maybe [InstanceSummary])
+listInstancesResponse_instanceSummaries = Lens.lens (\ListInstancesResponse' {instanceSummaries} -> instanceSummaries) (\s@ListInstancesResponse' {} a -> s {instanceSummaries = a} :: ListInstancesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Token for the next set of results.
+listInstancesResponse_nextToken :: Lens.Lens' ListInstancesResponse (Prelude.Maybe Prelude.Text)
+listInstancesResponse_nextToken = Lens.lens (\ListInstancesResponse' {nextToken} -> nextToken) (\s@ListInstancesResponse' {} a -> s {nextToken = a} :: ListInstancesResponse)
+
+-- | The response's http status code.
+listInstancesResponse_httpStatus :: Lens.Lens' ListInstancesResponse Prelude.Int
+listInstancesResponse_httpStatus = Lens.lens (\ListInstancesResponse' {httpStatus} -> httpStatus) (\s@ListInstancesResponse' {} a -> s {httpStatus = a} :: ListInstancesResponse)
+
+instance Prelude.NFData ListInstancesResponse where
+  rnf ListInstancesResponse' {..} =
+    Prelude.rnf instanceSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/ListProductSubscriptions.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/ListProductSubscriptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/ListProductSubscriptions.hs
@@ -0,0 +1,274 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LicenseManagerUserSubscriptions.ListProductSubscriptions
+-- 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 user-based subscription products available from an identity
+-- provider.
+--
+-- This operation returns paginated results.
+module Amazonka.LicenseManagerUserSubscriptions.ListProductSubscriptions
+  ( -- * Creating a Request
+    ListProductSubscriptions (..),
+    newListProductSubscriptions,
+
+    -- * Request Lenses
+    listProductSubscriptions_filters,
+    listProductSubscriptions_maxResults,
+    listProductSubscriptions_nextToken,
+    listProductSubscriptions_identityProvider,
+    listProductSubscriptions_product,
+
+    -- * Destructuring the Response
+    ListProductSubscriptionsResponse (..),
+    newListProductSubscriptionsResponse,
+
+    -- * Response Lenses
+    listProductSubscriptionsResponse_nextToken,
+    listProductSubscriptionsResponse_productUserSummaries,
+    listProductSubscriptionsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListProductSubscriptions' smart constructor.
+data ListProductSubscriptions = ListProductSubscriptions'
+  { -- | An array of structures that you can use to filter the results to those
+    -- that match one or more sets of key-value pairs that you specify.
+    filters :: Prelude.Maybe [Filter],
+    -- | Maximum number of results to return in a single call.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | Token for the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | An object that specifies details for the identity provider.
+    identityProvider :: IdentityProvider,
+    -- | The name of the user-based subscription product.
+    product :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListProductSubscriptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'listProductSubscriptions_filters' - An array of structures that you can use to filter the results to those
+-- that match one or more sets of key-value pairs that you specify.
+--
+-- 'maxResults', 'listProductSubscriptions_maxResults' - Maximum number of results to return in a single call.
+--
+-- 'nextToken', 'listProductSubscriptions_nextToken' - Token for the next set of results.
+--
+-- 'identityProvider', 'listProductSubscriptions_identityProvider' - An object that specifies details for the identity provider.
+--
+-- 'product', 'listProductSubscriptions_product' - The name of the user-based subscription product.
+newListProductSubscriptions ::
+  -- | 'identityProvider'
+  IdentityProvider ->
+  -- | 'product'
+  Prelude.Text ->
+  ListProductSubscriptions
+newListProductSubscriptions
+  pIdentityProvider_
+  pProduct_ =
+    ListProductSubscriptions'
+      { filters =
+          Prelude.Nothing,
+        maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        identityProvider = pIdentityProvider_,
+        product = pProduct_
+      }
+
+-- | An array of structures that you can use to filter the results to those
+-- that match one or more sets of key-value pairs that you specify.
+listProductSubscriptions_filters :: Lens.Lens' ListProductSubscriptions (Prelude.Maybe [Filter])
+listProductSubscriptions_filters = Lens.lens (\ListProductSubscriptions' {filters} -> filters) (\s@ListProductSubscriptions' {} a -> s {filters = a} :: ListProductSubscriptions) Prelude.. Lens.mapping Lens.coerced
+
+-- | Maximum number of results to return in a single call.
+listProductSubscriptions_maxResults :: Lens.Lens' ListProductSubscriptions (Prelude.Maybe Prelude.Int)
+listProductSubscriptions_maxResults = Lens.lens (\ListProductSubscriptions' {maxResults} -> maxResults) (\s@ListProductSubscriptions' {} a -> s {maxResults = a} :: ListProductSubscriptions)
+
+-- | Token for the next set of results.
+listProductSubscriptions_nextToken :: Lens.Lens' ListProductSubscriptions (Prelude.Maybe Prelude.Text)
+listProductSubscriptions_nextToken = Lens.lens (\ListProductSubscriptions' {nextToken} -> nextToken) (\s@ListProductSubscriptions' {} a -> s {nextToken = a} :: ListProductSubscriptions)
+
+-- | An object that specifies details for the identity provider.
+listProductSubscriptions_identityProvider :: Lens.Lens' ListProductSubscriptions IdentityProvider
+listProductSubscriptions_identityProvider = Lens.lens (\ListProductSubscriptions' {identityProvider} -> identityProvider) (\s@ListProductSubscriptions' {} a -> s {identityProvider = a} :: ListProductSubscriptions)
+
+-- | The name of the user-based subscription product.
+listProductSubscriptions_product :: Lens.Lens' ListProductSubscriptions Prelude.Text
+listProductSubscriptions_product = Lens.lens (\ListProductSubscriptions' {product} -> product) (\s@ListProductSubscriptions' {} a -> s {product = a} :: ListProductSubscriptions)
+
+instance Core.AWSPager ListProductSubscriptions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listProductSubscriptionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listProductSubscriptionsResponse_productUserSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listProductSubscriptions_nextToken
+          Lens..~ rs
+          Lens.^? listProductSubscriptionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListProductSubscriptions where
+  type
+    AWSResponse ListProductSubscriptions =
+      ListProductSubscriptionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListProductSubscriptionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "ProductUserSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListProductSubscriptions where
+  hashWithSalt _salt ListProductSubscriptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` identityProvider
+      `Prelude.hashWithSalt` product
+
+instance Prelude.NFData ListProductSubscriptions where
+  rnf ListProductSubscriptions' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf identityProvider
+      `Prelude.seq` Prelude.rnf product
+
+instance Data.ToHeaders ListProductSubscriptions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListProductSubscriptions where
+  toJSON ListProductSubscriptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ("IdentityProvider" Data..= identityProvider),
+            Prelude.Just ("Product" Data..= product)
+          ]
+      )
+
+instance Data.ToPath ListProductSubscriptions where
+  toPath =
+    Prelude.const "/user/ListProductSubscriptions"
+
+instance Data.ToQuery ListProductSubscriptions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListProductSubscriptionsResponse' smart constructor.
+data ListProductSubscriptionsResponse = ListProductSubscriptionsResponse'
+  { -- | Token for the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Metadata that describes the list product subscriptions operation.
+    productUserSummaries :: Prelude.Maybe [ProductUserSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListProductSubscriptionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listProductSubscriptionsResponse_nextToken' - Token for the next set of results.
+--
+-- 'productUserSummaries', 'listProductSubscriptionsResponse_productUserSummaries' - Metadata that describes the list product subscriptions operation.
+--
+-- 'httpStatus', 'listProductSubscriptionsResponse_httpStatus' - The response's http status code.
+newListProductSubscriptionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListProductSubscriptionsResponse
+newListProductSubscriptionsResponse pHttpStatus_ =
+  ListProductSubscriptionsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      productUserSummaries = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Token for the next set of results.
+listProductSubscriptionsResponse_nextToken :: Lens.Lens' ListProductSubscriptionsResponse (Prelude.Maybe Prelude.Text)
+listProductSubscriptionsResponse_nextToken = Lens.lens (\ListProductSubscriptionsResponse' {nextToken} -> nextToken) (\s@ListProductSubscriptionsResponse' {} a -> s {nextToken = a} :: ListProductSubscriptionsResponse)
+
+-- | Metadata that describes the list product subscriptions operation.
+listProductSubscriptionsResponse_productUserSummaries :: Lens.Lens' ListProductSubscriptionsResponse (Prelude.Maybe [ProductUserSummary])
+listProductSubscriptionsResponse_productUserSummaries = Lens.lens (\ListProductSubscriptionsResponse' {productUserSummaries} -> productUserSummaries) (\s@ListProductSubscriptionsResponse' {} a -> s {productUserSummaries = a} :: ListProductSubscriptionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listProductSubscriptionsResponse_httpStatus :: Lens.Lens' ListProductSubscriptionsResponse Prelude.Int
+listProductSubscriptionsResponse_httpStatus = Lens.lens (\ListProductSubscriptionsResponse' {httpStatus} -> httpStatus) (\s@ListProductSubscriptionsResponse' {} a -> s {httpStatus = a} :: ListProductSubscriptionsResponse)
+
+instance
+  Prelude.NFData
+    ListProductSubscriptionsResponse
+  where
+  rnf ListProductSubscriptionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf productUserSummaries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/ListUserAssociations.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/ListUserAssociations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/ListUserAssociations.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.LicenseManagerUserSubscriptions.ListUserAssociations
+-- 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 user associations for an identity provider.
+--
+-- This operation returns paginated results.
+module Amazonka.LicenseManagerUserSubscriptions.ListUserAssociations
+  ( -- * Creating a Request
+    ListUserAssociations (..),
+    newListUserAssociations,
+
+    -- * Request Lenses
+    listUserAssociations_filters,
+    listUserAssociations_maxResults,
+    listUserAssociations_nextToken,
+    listUserAssociations_identityProvider,
+    listUserAssociations_instanceId,
+
+    -- * Destructuring the Response
+    ListUserAssociationsResponse (..),
+    newListUserAssociationsResponse,
+
+    -- * Response Lenses
+    listUserAssociationsResponse_instanceUserSummaries,
+    listUserAssociationsResponse_nextToken,
+    listUserAssociationsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListUserAssociations' smart constructor.
+data ListUserAssociations = ListUserAssociations'
+  { -- | An array of structures that you can use to filter the results to those
+    -- that match one or more sets of key-value pairs that you specify.
+    filters :: Prelude.Maybe [Filter],
+    -- | Maximum number of results to return in a single call.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | Token for the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | An object that specifies details for the identity provider.
+    identityProvider :: IdentityProvider,
+    -- | The ID of the EC2 instance, which provides user-based subscriptions.
+    instanceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListUserAssociations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'listUserAssociations_filters' - An array of structures that you can use to filter the results to those
+-- that match one or more sets of key-value pairs that you specify.
+--
+-- 'maxResults', 'listUserAssociations_maxResults' - Maximum number of results to return in a single call.
+--
+-- 'nextToken', 'listUserAssociations_nextToken' - Token for the next set of results.
+--
+-- 'identityProvider', 'listUserAssociations_identityProvider' - An object that specifies details for the identity provider.
+--
+-- 'instanceId', 'listUserAssociations_instanceId' - The ID of the EC2 instance, which provides user-based subscriptions.
+newListUserAssociations ::
+  -- | 'identityProvider'
+  IdentityProvider ->
+  -- | 'instanceId'
+  Prelude.Text ->
+  ListUserAssociations
+newListUserAssociations
+  pIdentityProvider_
+  pInstanceId_ =
+    ListUserAssociations'
+      { filters = Prelude.Nothing,
+        maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        identityProvider = pIdentityProvider_,
+        instanceId = pInstanceId_
+      }
+
+-- | An array of structures that you can use to filter the results to those
+-- that match one or more sets of key-value pairs that you specify.
+listUserAssociations_filters :: Lens.Lens' ListUserAssociations (Prelude.Maybe [Filter])
+listUserAssociations_filters = Lens.lens (\ListUserAssociations' {filters} -> filters) (\s@ListUserAssociations' {} a -> s {filters = a} :: ListUserAssociations) Prelude.. Lens.mapping Lens.coerced
+
+-- | Maximum number of results to return in a single call.
+listUserAssociations_maxResults :: Lens.Lens' ListUserAssociations (Prelude.Maybe Prelude.Int)
+listUserAssociations_maxResults = Lens.lens (\ListUserAssociations' {maxResults} -> maxResults) (\s@ListUserAssociations' {} a -> s {maxResults = a} :: ListUserAssociations)
+
+-- | Token for the next set of results.
+listUserAssociations_nextToken :: Lens.Lens' ListUserAssociations (Prelude.Maybe Prelude.Text)
+listUserAssociations_nextToken = Lens.lens (\ListUserAssociations' {nextToken} -> nextToken) (\s@ListUserAssociations' {} a -> s {nextToken = a} :: ListUserAssociations)
+
+-- | An object that specifies details for the identity provider.
+listUserAssociations_identityProvider :: Lens.Lens' ListUserAssociations IdentityProvider
+listUserAssociations_identityProvider = Lens.lens (\ListUserAssociations' {identityProvider} -> identityProvider) (\s@ListUserAssociations' {} a -> s {identityProvider = a} :: ListUserAssociations)
+
+-- | The ID of the EC2 instance, which provides user-based subscriptions.
+listUserAssociations_instanceId :: Lens.Lens' ListUserAssociations Prelude.Text
+listUserAssociations_instanceId = Lens.lens (\ListUserAssociations' {instanceId} -> instanceId) (\s@ListUserAssociations' {} a -> s {instanceId = a} :: ListUserAssociations)
+
+instance Core.AWSPager ListUserAssociations where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listUserAssociationsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listUserAssociationsResponse_instanceUserSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listUserAssociations_nextToken
+          Lens..~ rs
+          Lens.^? listUserAssociationsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListUserAssociations where
+  type
+    AWSResponse ListUserAssociations =
+      ListUserAssociationsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListUserAssociationsResponse'
+            Prelude.<$> ( x
+                            Data..?> "InstanceUserSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListUserAssociations where
+  hashWithSalt _salt ListUserAssociations' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` identityProvider
+      `Prelude.hashWithSalt` instanceId
+
+instance Prelude.NFData ListUserAssociations where
+  rnf ListUserAssociations' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf identityProvider
+      `Prelude.seq` Prelude.rnf instanceId
+
+instance Data.ToHeaders ListUserAssociations where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListUserAssociations where
+  toJSON ListUserAssociations' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ("IdentityProvider" Data..= identityProvider),
+            Prelude.Just ("InstanceId" Data..= instanceId)
+          ]
+      )
+
+instance Data.ToPath ListUserAssociations where
+  toPath = Prelude.const "/user/ListUserAssociations"
+
+instance Data.ToQuery ListUserAssociations where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListUserAssociationsResponse' smart constructor.
+data ListUserAssociationsResponse = ListUserAssociationsResponse'
+  { -- | Metadata that describes the list user association operation.
+    instanceUserSummaries :: Prelude.Maybe [InstanceUserSummary],
+    -- | Token for the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListUserAssociationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceUserSummaries', 'listUserAssociationsResponse_instanceUserSummaries' - Metadata that describes the list user association operation.
+--
+-- 'nextToken', 'listUserAssociationsResponse_nextToken' - Token for the next set of results.
+--
+-- 'httpStatus', 'listUserAssociationsResponse_httpStatus' - The response's http status code.
+newListUserAssociationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListUserAssociationsResponse
+newListUserAssociationsResponse pHttpStatus_ =
+  ListUserAssociationsResponse'
+    { instanceUserSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Metadata that describes the list user association operation.
+listUserAssociationsResponse_instanceUserSummaries :: Lens.Lens' ListUserAssociationsResponse (Prelude.Maybe [InstanceUserSummary])
+listUserAssociationsResponse_instanceUserSummaries = Lens.lens (\ListUserAssociationsResponse' {instanceUserSummaries} -> instanceUserSummaries) (\s@ListUserAssociationsResponse' {} a -> s {instanceUserSummaries = a} :: ListUserAssociationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Token for the next set of results.
+listUserAssociationsResponse_nextToken :: Lens.Lens' ListUserAssociationsResponse (Prelude.Maybe Prelude.Text)
+listUserAssociationsResponse_nextToken = Lens.lens (\ListUserAssociationsResponse' {nextToken} -> nextToken) (\s@ListUserAssociationsResponse' {} a -> s {nextToken = a} :: ListUserAssociationsResponse)
+
+-- | The response's http status code.
+listUserAssociationsResponse_httpStatus :: Lens.Lens' ListUserAssociationsResponse Prelude.Int
+listUserAssociationsResponse_httpStatus = Lens.lens (\ListUserAssociationsResponse' {httpStatus} -> httpStatus) (\s@ListUserAssociationsResponse' {} a -> s {httpStatus = a} :: ListUserAssociationsResponse)
+
+instance Prelude.NFData ListUserAssociationsResponse where
+  rnf ListUserAssociationsResponse' {..} =
+    Prelude.rnf instanceUserSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/RegisterIdentityProvider.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/RegisterIdentityProvider.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/RegisterIdentityProvider.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.LicenseManagerUserSubscriptions.RegisterIdentityProvider
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Registers an identity provider for user-based subscriptions.
+module Amazonka.LicenseManagerUserSubscriptions.RegisterIdentityProvider
+  ( -- * Creating a Request
+    RegisterIdentityProvider (..),
+    newRegisterIdentityProvider,
+
+    -- * Request Lenses
+    registerIdentityProvider_settings,
+    registerIdentityProvider_identityProvider,
+    registerIdentityProvider_product,
+
+    -- * Destructuring the Response
+    RegisterIdentityProviderResponse (..),
+    newRegisterIdentityProviderResponse,
+
+    -- * Response Lenses
+    registerIdentityProviderResponse_httpStatus,
+    registerIdentityProviderResponse_identityProviderSummary,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRegisterIdentityProvider' smart constructor.
+data RegisterIdentityProvider = RegisterIdentityProvider'
+  { -- | The registered identity provider’s product related configuration
+    -- settings such as the subnets to provision VPC endpoints.
+    settings :: Prelude.Maybe Settings,
+    -- | An object that specifies details for the identity provider.
+    identityProvider :: IdentityProvider,
+    -- | The name of the user-based subscription product.
+    product :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisterIdentityProvider' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'settings', 'registerIdentityProvider_settings' - The registered identity provider’s product related configuration
+-- settings such as the subnets to provision VPC endpoints.
+--
+-- 'identityProvider', 'registerIdentityProvider_identityProvider' - An object that specifies details for the identity provider.
+--
+-- 'product', 'registerIdentityProvider_product' - The name of the user-based subscription product.
+newRegisterIdentityProvider ::
+  -- | 'identityProvider'
+  IdentityProvider ->
+  -- | 'product'
+  Prelude.Text ->
+  RegisterIdentityProvider
+newRegisterIdentityProvider
+  pIdentityProvider_
+  pProduct_ =
+    RegisterIdentityProvider'
+      { settings =
+          Prelude.Nothing,
+        identityProvider = pIdentityProvider_,
+        product = pProduct_
+      }
+
+-- | The registered identity provider’s product related configuration
+-- settings such as the subnets to provision VPC endpoints.
+registerIdentityProvider_settings :: Lens.Lens' RegisterIdentityProvider (Prelude.Maybe Settings)
+registerIdentityProvider_settings = Lens.lens (\RegisterIdentityProvider' {settings} -> settings) (\s@RegisterIdentityProvider' {} a -> s {settings = a} :: RegisterIdentityProvider)
+
+-- | An object that specifies details for the identity provider.
+registerIdentityProvider_identityProvider :: Lens.Lens' RegisterIdentityProvider IdentityProvider
+registerIdentityProvider_identityProvider = Lens.lens (\RegisterIdentityProvider' {identityProvider} -> identityProvider) (\s@RegisterIdentityProvider' {} a -> s {identityProvider = a} :: RegisterIdentityProvider)
+
+-- | The name of the user-based subscription product.
+registerIdentityProvider_product :: Lens.Lens' RegisterIdentityProvider Prelude.Text
+registerIdentityProvider_product = Lens.lens (\RegisterIdentityProvider' {product} -> product) (\s@RegisterIdentityProvider' {} a -> s {product = a} :: RegisterIdentityProvider)
+
+instance Core.AWSRequest RegisterIdentityProvider where
+  type
+    AWSResponse RegisterIdentityProvider =
+      RegisterIdentityProviderResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RegisterIdentityProviderResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "IdentityProviderSummary")
+      )
+
+instance Prelude.Hashable RegisterIdentityProvider where
+  hashWithSalt _salt RegisterIdentityProvider' {..} =
+    _salt
+      `Prelude.hashWithSalt` settings
+      `Prelude.hashWithSalt` identityProvider
+      `Prelude.hashWithSalt` product
+
+instance Prelude.NFData RegisterIdentityProvider where
+  rnf RegisterIdentityProvider' {..} =
+    Prelude.rnf settings
+      `Prelude.seq` Prelude.rnf identityProvider
+      `Prelude.seq` Prelude.rnf product
+
+instance Data.ToHeaders RegisterIdentityProvider where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RegisterIdentityProvider where
+  toJSON RegisterIdentityProvider' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Settings" Data..=) Prelude.<$> settings,
+            Prelude.Just
+              ("IdentityProvider" Data..= identityProvider),
+            Prelude.Just ("Product" Data..= product)
+          ]
+      )
+
+instance Data.ToPath RegisterIdentityProvider where
+  toPath =
+    Prelude.const
+      "/identity-provider/RegisterIdentityProvider"
+
+instance Data.ToQuery RegisterIdentityProvider where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRegisterIdentityProviderResponse' smart constructor.
+data RegisterIdentityProviderResponse = RegisterIdentityProviderResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Metadata that describes the results of an identity provider operation.
+    identityProviderSummary :: IdentityProviderSummary
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisterIdentityProviderResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'registerIdentityProviderResponse_httpStatus' - The response's http status code.
+--
+-- 'identityProviderSummary', 'registerIdentityProviderResponse_identityProviderSummary' - Metadata that describes the results of an identity provider operation.
+newRegisterIdentityProviderResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'identityProviderSummary'
+  IdentityProviderSummary ->
+  RegisterIdentityProviderResponse
+newRegisterIdentityProviderResponse
+  pHttpStatus_
+  pIdentityProviderSummary_ =
+    RegisterIdentityProviderResponse'
+      { httpStatus =
+          pHttpStatus_,
+        identityProviderSummary =
+          pIdentityProviderSummary_
+      }
+
+-- | The response's http status code.
+registerIdentityProviderResponse_httpStatus :: Lens.Lens' RegisterIdentityProviderResponse Prelude.Int
+registerIdentityProviderResponse_httpStatus = Lens.lens (\RegisterIdentityProviderResponse' {httpStatus} -> httpStatus) (\s@RegisterIdentityProviderResponse' {} a -> s {httpStatus = a} :: RegisterIdentityProviderResponse)
+
+-- | Metadata that describes the results of an identity provider operation.
+registerIdentityProviderResponse_identityProviderSummary :: Lens.Lens' RegisterIdentityProviderResponse IdentityProviderSummary
+registerIdentityProviderResponse_identityProviderSummary = Lens.lens (\RegisterIdentityProviderResponse' {identityProviderSummary} -> identityProviderSummary) (\s@RegisterIdentityProviderResponse' {} a -> s {identityProviderSummary = a} :: RegisterIdentityProviderResponse)
+
+instance
+  Prelude.NFData
+    RegisterIdentityProviderResponse
+  where
+  rnf RegisterIdentityProviderResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf identityProviderSummary
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/StartProductSubscription.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/StartProductSubscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/StartProductSubscription.hs
@@ -0,0 +1,232 @@
+{-# 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.LicenseManagerUserSubscriptions.StartProductSubscription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts a product subscription for a user with the specified identity
+-- provider.
+--
+-- Your estimated bill for charges on the number of users and related costs
+-- will take 48 hours to appear for billing periods that haven\'t closed
+-- (marked as __Pending__ billing status) in Amazon Web Services Billing.
+-- For more information, see
+-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/invoice.html Viewing your monthly charges>
+-- in the /Amazon Web Services Billing User Guide/.
+module Amazonka.LicenseManagerUserSubscriptions.StartProductSubscription
+  ( -- * Creating a Request
+    StartProductSubscription (..),
+    newStartProductSubscription,
+
+    -- * Request Lenses
+    startProductSubscription_domain,
+    startProductSubscription_identityProvider,
+    startProductSubscription_product,
+    startProductSubscription_username,
+
+    -- * Destructuring the Response
+    StartProductSubscriptionResponse (..),
+    newStartProductSubscriptionResponse,
+
+    -- * Response Lenses
+    startProductSubscriptionResponse_httpStatus,
+    startProductSubscriptionResponse_productUserSummary,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStartProductSubscription' smart constructor.
+data StartProductSubscription = StartProductSubscription'
+  { -- | The domain name of the user.
+    domain :: Prelude.Maybe Prelude.Text,
+    -- | An object that specifies details for the identity provider.
+    identityProvider :: IdentityProvider,
+    -- | The name of the user-based subscription product.
+    product :: Prelude.Text,
+    -- | The user name from the identity provider of the user.
+    username :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartProductSubscription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domain', 'startProductSubscription_domain' - The domain name of the user.
+--
+-- 'identityProvider', 'startProductSubscription_identityProvider' - An object that specifies details for the identity provider.
+--
+-- 'product', 'startProductSubscription_product' - The name of the user-based subscription product.
+--
+-- 'username', 'startProductSubscription_username' - The user name from the identity provider of the user.
+newStartProductSubscription ::
+  -- | 'identityProvider'
+  IdentityProvider ->
+  -- | 'product'
+  Prelude.Text ->
+  -- | 'username'
+  Prelude.Text ->
+  StartProductSubscription
+newStartProductSubscription
+  pIdentityProvider_
+  pProduct_
+  pUsername_ =
+    StartProductSubscription'
+      { domain = Prelude.Nothing,
+        identityProvider = pIdentityProvider_,
+        product = pProduct_,
+        username = pUsername_
+      }
+
+-- | The domain name of the user.
+startProductSubscription_domain :: Lens.Lens' StartProductSubscription (Prelude.Maybe Prelude.Text)
+startProductSubscription_domain = Lens.lens (\StartProductSubscription' {domain} -> domain) (\s@StartProductSubscription' {} a -> s {domain = a} :: StartProductSubscription)
+
+-- | An object that specifies details for the identity provider.
+startProductSubscription_identityProvider :: Lens.Lens' StartProductSubscription IdentityProvider
+startProductSubscription_identityProvider = Lens.lens (\StartProductSubscription' {identityProvider} -> identityProvider) (\s@StartProductSubscription' {} a -> s {identityProvider = a} :: StartProductSubscription)
+
+-- | The name of the user-based subscription product.
+startProductSubscription_product :: Lens.Lens' StartProductSubscription Prelude.Text
+startProductSubscription_product = Lens.lens (\StartProductSubscription' {product} -> product) (\s@StartProductSubscription' {} a -> s {product = a} :: StartProductSubscription)
+
+-- | The user name from the identity provider of the user.
+startProductSubscription_username :: Lens.Lens' StartProductSubscription Prelude.Text
+startProductSubscription_username = Lens.lens (\StartProductSubscription' {username} -> username) (\s@StartProductSubscription' {} a -> s {username = a} :: StartProductSubscription)
+
+instance Core.AWSRequest StartProductSubscription where
+  type
+    AWSResponse StartProductSubscription =
+      StartProductSubscriptionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartProductSubscriptionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ProductUserSummary")
+      )
+
+instance Prelude.Hashable StartProductSubscription where
+  hashWithSalt _salt StartProductSubscription' {..} =
+    _salt
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` identityProvider
+      `Prelude.hashWithSalt` product
+      `Prelude.hashWithSalt` username
+
+instance Prelude.NFData StartProductSubscription where
+  rnf StartProductSubscription' {..} =
+    Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf identityProvider
+      `Prelude.seq` Prelude.rnf product
+      `Prelude.seq` Prelude.rnf username
+
+instance Data.ToHeaders StartProductSubscription where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartProductSubscription where
+  toJSON StartProductSubscription' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Domain" Data..=) Prelude.<$> domain,
+            Prelude.Just
+              ("IdentityProvider" Data..= identityProvider),
+            Prelude.Just ("Product" Data..= product),
+            Prelude.Just ("Username" Data..= username)
+          ]
+      )
+
+instance Data.ToPath StartProductSubscription where
+  toPath =
+    Prelude.const "/user/StartProductSubscription"
+
+instance Data.ToQuery StartProductSubscription where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartProductSubscriptionResponse' smart constructor.
+data StartProductSubscriptionResponse = StartProductSubscriptionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Metadata that describes the start product subscription operation.
+    productUserSummary :: ProductUserSummary
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartProductSubscriptionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'startProductSubscriptionResponse_httpStatus' - The response's http status code.
+--
+-- 'productUserSummary', 'startProductSubscriptionResponse_productUserSummary' - Metadata that describes the start product subscription operation.
+newStartProductSubscriptionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'productUserSummary'
+  ProductUserSummary ->
+  StartProductSubscriptionResponse
+newStartProductSubscriptionResponse
+  pHttpStatus_
+  pProductUserSummary_ =
+    StartProductSubscriptionResponse'
+      { httpStatus =
+          pHttpStatus_,
+        productUserSummary = pProductUserSummary_
+      }
+
+-- | The response's http status code.
+startProductSubscriptionResponse_httpStatus :: Lens.Lens' StartProductSubscriptionResponse Prelude.Int
+startProductSubscriptionResponse_httpStatus = Lens.lens (\StartProductSubscriptionResponse' {httpStatus} -> httpStatus) (\s@StartProductSubscriptionResponse' {} a -> s {httpStatus = a} :: StartProductSubscriptionResponse)
+
+-- | Metadata that describes the start product subscription operation.
+startProductSubscriptionResponse_productUserSummary :: Lens.Lens' StartProductSubscriptionResponse ProductUserSummary
+startProductSubscriptionResponse_productUserSummary = Lens.lens (\StartProductSubscriptionResponse' {productUserSummary} -> productUserSummary) (\s@StartProductSubscriptionResponse' {} a -> s {productUserSummary = a} :: StartProductSubscriptionResponse)
+
+instance
+  Prelude.NFData
+    StartProductSubscriptionResponse
+  where
+  rnf StartProductSubscriptionResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf productUserSummary
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/StopProductSubscription.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/StopProductSubscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/StopProductSubscription.hs
@@ -0,0 +1,225 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LicenseManagerUserSubscriptions.StopProductSubscription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops a product subscription for a user with the specified identity
+-- provider.
+module Amazonka.LicenseManagerUserSubscriptions.StopProductSubscription
+  ( -- * Creating a Request
+    StopProductSubscription (..),
+    newStopProductSubscription,
+
+    -- * Request Lenses
+    stopProductSubscription_domain,
+    stopProductSubscription_identityProvider,
+    stopProductSubscription_product,
+    stopProductSubscription_username,
+
+    -- * Destructuring the Response
+    StopProductSubscriptionResponse (..),
+    newStopProductSubscriptionResponse,
+
+    -- * Response Lenses
+    stopProductSubscriptionResponse_httpStatus,
+    stopProductSubscriptionResponse_productUserSummary,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStopProductSubscription' smart constructor.
+data StopProductSubscription = StopProductSubscription'
+  { -- | The domain name of the user.
+    domain :: Prelude.Maybe Prelude.Text,
+    -- | An object that specifies details for the identity provider.
+    identityProvider :: IdentityProvider,
+    -- | The name of the user-based subscription product.
+    product :: Prelude.Text,
+    -- | The user name from the identity provider for the user.
+    username :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopProductSubscription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domain', 'stopProductSubscription_domain' - The domain name of the user.
+--
+-- 'identityProvider', 'stopProductSubscription_identityProvider' - An object that specifies details for the identity provider.
+--
+-- 'product', 'stopProductSubscription_product' - The name of the user-based subscription product.
+--
+-- 'username', 'stopProductSubscription_username' - The user name from the identity provider for the user.
+newStopProductSubscription ::
+  -- | 'identityProvider'
+  IdentityProvider ->
+  -- | 'product'
+  Prelude.Text ->
+  -- | 'username'
+  Prelude.Text ->
+  StopProductSubscription
+newStopProductSubscription
+  pIdentityProvider_
+  pProduct_
+  pUsername_ =
+    StopProductSubscription'
+      { domain = Prelude.Nothing,
+        identityProvider = pIdentityProvider_,
+        product = pProduct_,
+        username = pUsername_
+      }
+
+-- | The domain name of the user.
+stopProductSubscription_domain :: Lens.Lens' StopProductSubscription (Prelude.Maybe Prelude.Text)
+stopProductSubscription_domain = Lens.lens (\StopProductSubscription' {domain} -> domain) (\s@StopProductSubscription' {} a -> s {domain = a} :: StopProductSubscription)
+
+-- | An object that specifies details for the identity provider.
+stopProductSubscription_identityProvider :: Lens.Lens' StopProductSubscription IdentityProvider
+stopProductSubscription_identityProvider = Lens.lens (\StopProductSubscription' {identityProvider} -> identityProvider) (\s@StopProductSubscription' {} a -> s {identityProvider = a} :: StopProductSubscription)
+
+-- | The name of the user-based subscription product.
+stopProductSubscription_product :: Lens.Lens' StopProductSubscription Prelude.Text
+stopProductSubscription_product = Lens.lens (\StopProductSubscription' {product} -> product) (\s@StopProductSubscription' {} a -> s {product = a} :: StopProductSubscription)
+
+-- | The user name from the identity provider for the user.
+stopProductSubscription_username :: Lens.Lens' StopProductSubscription Prelude.Text
+stopProductSubscription_username = Lens.lens (\StopProductSubscription' {username} -> username) (\s@StopProductSubscription' {} a -> s {username = a} :: StopProductSubscription)
+
+instance Core.AWSRequest StopProductSubscription where
+  type
+    AWSResponse StopProductSubscription =
+      StopProductSubscriptionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StopProductSubscriptionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ProductUserSummary")
+      )
+
+instance Prelude.Hashable StopProductSubscription where
+  hashWithSalt _salt StopProductSubscription' {..} =
+    _salt
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` identityProvider
+      `Prelude.hashWithSalt` product
+      `Prelude.hashWithSalt` username
+
+instance Prelude.NFData StopProductSubscription where
+  rnf StopProductSubscription' {..} =
+    Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf identityProvider
+      `Prelude.seq` Prelude.rnf product
+      `Prelude.seq` Prelude.rnf username
+
+instance Data.ToHeaders StopProductSubscription where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopProductSubscription where
+  toJSON StopProductSubscription' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Domain" Data..=) Prelude.<$> domain,
+            Prelude.Just
+              ("IdentityProvider" Data..= identityProvider),
+            Prelude.Just ("Product" Data..= product),
+            Prelude.Just ("Username" Data..= username)
+          ]
+      )
+
+instance Data.ToPath StopProductSubscription where
+  toPath =
+    Prelude.const "/user/StopProductSubscription"
+
+instance Data.ToQuery StopProductSubscription where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopProductSubscriptionResponse' smart constructor.
+data StopProductSubscriptionResponse = StopProductSubscriptionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Metadata that describes the start product subscription operation.
+    productUserSummary :: ProductUserSummary
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopProductSubscriptionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'stopProductSubscriptionResponse_httpStatus' - The response's http status code.
+--
+-- 'productUserSummary', 'stopProductSubscriptionResponse_productUserSummary' - Metadata that describes the start product subscription operation.
+newStopProductSubscriptionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'productUserSummary'
+  ProductUserSummary ->
+  StopProductSubscriptionResponse
+newStopProductSubscriptionResponse
+  pHttpStatus_
+  pProductUserSummary_ =
+    StopProductSubscriptionResponse'
+      { httpStatus =
+          pHttpStatus_,
+        productUserSummary = pProductUserSummary_
+      }
+
+-- | The response's http status code.
+stopProductSubscriptionResponse_httpStatus :: Lens.Lens' StopProductSubscriptionResponse Prelude.Int
+stopProductSubscriptionResponse_httpStatus = Lens.lens (\StopProductSubscriptionResponse' {httpStatus} -> httpStatus) (\s@StopProductSubscriptionResponse' {} a -> s {httpStatus = a} :: StopProductSubscriptionResponse)
+
+-- | Metadata that describes the start product subscription operation.
+stopProductSubscriptionResponse_productUserSummary :: Lens.Lens' StopProductSubscriptionResponse ProductUserSummary
+stopProductSubscriptionResponse_productUserSummary = Lens.lens (\StopProductSubscriptionResponse' {productUserSummary} -> productUserSummary) (\s@StopProductSubscriptionResponse' {} a -> s {productUserSummary = a} :: StopProductSubscriptionResponse)
+
+instance
+  Prelude.NFData
+    StopProductSubscriptionResponse
+  where
+  rnf StopProductSubscriptionResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf productUserSummary
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/Types.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/Types.hs
@@ -0,0 +1,241 @@
+{-# 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.LicenseManagerUserSubscriptions.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.LicenseManagerUserSubscriptions.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _InternalServerException,
+    _ResourceNotFoundException,
+    _ServiceQuotaExceededException,
+    _ThrottlingException,
+    _ValidationException,
+
+    -- * ActiveDirectoryIdentityProvider
+    ActiveDirectoryIdentityProvider (..),
+    newActiveDirectoryIdentityProvider,
+    activeDirectoryIdentityProvider_directoryId,
+
+    -- * Filter
+    Filter (..),
+    newFilter,
+    filter_attribute,
+    filter_operation,
+    filter_value,
+
+    -- * IdentityProvider
+    IdentityProvider (..),
+    newIdentityProvider,
+    identityProvider_activeDirectoryIdentityProvider,
+
+    -- * IdentityProviderSummary
+    IdentityProviderSummary (..),
+    newIdentityProviderSummary,
+    identityProviderSummary_failureMessage,
+    identityProviderSummary_identityProvider,
+    identityProviderSummary_product,
+    identityProviderSummary_settings,
+    identityProviderSummary_status,
+
+    -- * InstanceSummary
+    InstanceSummary (..),
+    newInstanceSummary,
+    instanceSummary_lastStatusCheckDate,
+    instanceSummary_statusMessage,
+    instanceSummary_instanceId,
+    instanceSummary_products,
+    instanceSummary_status,
+
+    -- * InstanceUserSummary
+    InstanceUserSummary (..),
+    newInstanceUserSummary,
+    instanceUserSummary_associationDate,
+    instanceUserSummary_disassociationDate,
+    instanceUserSummary_domain,
+    instanceUserSummary_statusMessage,
+    instanceUserSummary_identityProvider,
+    instanceUserSummary_instanceId,
+    instanceUserSummary_status,
+    instanceUserSummary_username,
+
+    -- * ProductUserSummary
+    ProductUserSummary (..),
+    newProductUserSummary,
+    productUserSummary_domain,
+    productUserSummary_statusMessage,
+    productUserSummary_subscriptionEndDate,
+    productUserSummary_subscriptionStartDate,
+    productUserSummary_identityProvider,
+    productUserSummary_product,
+    productUserSummary_status,
+    productUserSummary_username,
+
+    -- * Settings
+    Settings (..),
+    newSettings,
+    settings_securityGroupId,
+    settings_subnets,
+
+    -- * UpdateSettings
+    UpdateSettings (..),
+    newUpdateSettings,
+    updateSettings_securityGroupId,
+    updateSettings_addSubnets,
+    updateSettings_removeSubnets,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.LicenseManagerUserSubscriptions.Types.ActiveDirectoryIdentityProvider
+import Amazonka.LicenseManagerUserSubscriptions.Types.Filter
+import Amazonka.LicenseManagerUserSubscriptions.Types.IdentityProvider
+import Amazonka.LicenseManagerUserSubscriptions.Types.IdentityProviderSummary
+import Amazonka.LicenseManagerUserSubscriptions.Types.InstanceSummary
+import Amazonka.LicenseManagerUserSubscriptions.Types.InstanceUserSummary
+import Amazonka.LicenseManagerUserSubscriptions.Types.ProductUserSummary
+import Amazonka.LicenseManagerUserSubscriptions.Types.Settings
+import Amazonka.LicenseManagerUserSubscriptions.Types.UpdateSettings
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2018-05-10@ of the Amazon License Manager User Subscriptions SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev =
+        "LicenseManagerUserSubscriptions",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix =
+        "license-manager-user-subscriptions",
+      Core.signingName =
+        "license-manager-user-subscriptions",
+      Core.version = "2018-05-10",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error =
+        Core.parseJSONError
+          "LicenseManagerUserSubscriptions",
+      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 don\'t have sufficient access to perform this action.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+
+-- | The request couldn\'t be completed because it conflicted with the
+-- current state of the resource.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+
+-- | An exception occurred with the service.
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+
+-- | The resource couldn\'t be found.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | The request failed because a service quota is exceeded.
+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceQuotaExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceQuotaExceededException"
+
+-- | The request was denied because of request throttling. Retry the request.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+
+-- | A parameter is not valid.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/Types/ActiveDirectoryIdentityProvider.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/ActiveDirectoryIdentityProvider.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/ActiveDirectoryIdentityProvider.hs
@@ -0,0 +1,90 @@
+{-# 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.LicenseManagerUserSubscriptions.Types.ActiveDirectoryIdentityProvider
+-- 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.LicenseManagerUserSubscriptions.Types.ActiveDirectoryIdentityProvider 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
+
+-- | Details about an Active Directory identity provider.
+--
+-- /See:/ 'newActiveDirectoryIdentityProvider' smart constructor.
+data ActiveDirectoryIdentityProvider = ActiveDirectoryIdentityProvider'
+  { -- | The directory ID for an Active Directory identity provider.
+    directoryId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ActiveDirectoryIdentityProvider' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'directoryId', 'activeDirectoryIdentityProvider_directoryId' - The directory ID for an Active Directory identity provider.
+newActiveDirectoryIdentityProvider ::
+  ActiveDirectoryIdentityProvider
+newActiveDirectoryIdentityProvider =
+  ActiveDirectoryIdentityProvider'
+    { directoryId =
+        Prelude.Nothing
+    }
+
+-- | The directory ID for an Active Directory identity provider.
+activeDirectoryIdentityProvider_directoryId :: Lens.Lens' ActiveDirectoryIdentityProvider (Prelude.Maybe Prelude.Text)
+activeDirectoryIdentityProvider_directoryId = Lens.lens (\ActiveDirectoryIdentityProvider' {directoryId} -> directoryId) (\s@ActiveDirectoryIdentityProvider' {} a -> s {directoryId = a} :: ActiveDirectoryIdentityProvider)
+
+instance
+  Data.FromJSON
+    ActiveDirectoryIdentityProvider
+  where
+  parseJSON =
+    Data.withObject
+      "ActiveDirectoryIdentityProvider"
+      ( \x ->
+          ActiveDirectoryIdentityProvider'
+            Prelude.<$> (x Data..:? "DirectoryId")
+      )
+
+instance
+  Prelude.Hashable
+    ActiveDirectoryIdentityProvider
+  where
+  hashWithSalt
+    _salt
+    ActiveDirectoryIdentityProvider' {..} =
+      _salt `Prelude.hashWithSalt` directoryId
+
+instance
+  Prelude.NFData
+    ActiveDirectoryIdentityProvider
+  where
+  rnf ActiveDirectoryIdentityProvider' {..} =
+    Prelude.rnf directoryId
+
+instance Data.ToJSON ActiveDirectoryIdentityProvider where
+  toJSON ActiveDirectoryIdentityProvider' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("DirectoryId" Data..=) Prelude.<$> directoryId]
+      )
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/Types/Filter.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/Filter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/Filter.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LicenseManagerUserSubscriptions.Types.Filter
+-- 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.LicenseManagerUserSubscriptions.Types.Filter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A filter name and value pair that is used to return more specific
+-- results from a describe operation. Filters can be used to match a set of
+-- resources by specific criteria, such as tags, attributes, or IDs.
+--
+-- /See:/ 'newFilter' smart constructor.
+data Filter = Filter'
+  { -- | The name of an attribute to use as a filter.
+    attribute :: Prelude.Maybe Prelude.Text,
+    -- | The type of search (For example, eq, geq, leq)
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | Value of the filter.
+    value :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Filter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attribute', 'filter_attribute' - The name of an attribute to use as a filter.
+--
+-- 'operation', 'filter_operation' - The type of search (For example, eq, geq, leq)
+--
+-- 'value', 'filter_value' - Value of the filter.
+newFilter ::
+  Filter
+newFilter =
+  Filter'
+    { attribute = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The name of an attribute to use as a filter.
+filter_attribute :: Lens.Lens' Filter (Prelude.Maybe Prelude.Text)
+filter_attribute = Lens.lens (\Filter' {attribute} -> attribute) (\s@Filter' {} a -> s {attribute = a} :: Filter)
+
+-- | The type of search (For example, eq, geq, leq)
+filter_operation :: Lens.Lens' Filter (Prelude.Maybe Prelude.Text)
+filter_operation = Lens.lens (\Filter' {operation} -> operation) (\s@Filter' {} a -> s {operation = a} :: Filter)
+
+-- | Value of the filter.
+filter_value :: Lens.Lens' Filter (Prelude.Maybe Prelude.Text)
+filter_value = Lens.lens (\Filter' {value} -> value) (\s@Filter' {} a -> s {value = a} :: Filter)
+
+instance Prelude.Hashable Filter where
+  hashWithSalt _salt Filter' {..} =
+    _salt
+      `Prelude.hashWithSalt` attribute
+      `Prelude.hashWithSalt` operation
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Filter where
+  rnf Filter' {..} =
+    Prelude.rnf attribute
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON Filter where
+  toJSON Filter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Attribute" Data..=) Prelude.<$> attribute,
+            ("Operation" Data..=) Prelude.<$> operation,
+            ("Value" Data..=) Prelude.<$> value
+          ]
+      )
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/Types/IdentityProvider.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/IdentityProvider.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/IdentityProvider.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.LicenseManagerUserSubscriptions.Types.IdentityProvider
+-- 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.LicenseManagerUserSubscriptions.Types.IdentityProvider where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types.ActiveDirectoryIdentityProvider
+import qualified Amazonka.Prelude as Prelude
+
+-- | Details about an identity provider.
+--
+-- /See:/ 'newIdentityProvider' smart constructor.
+data IdentityProvider = IdentityProvider'
+  { -- | An object that details an Active Directory identity provider.
+    activeDirectoryIdentityProvider :: Prelude.Maybe ActiveDirectoryIdentityProvider
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IdentityProvider' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeDirectoryIdentityProvider', 'identityProvider_activeDirectoryIdentityProvider' - An object that details an Active Directory identity provider.
+newIdentityProvider ::
+  IdentityProvider
+newIdentityProvider =
+  IdentityProvider'
+    { activeDirectoryIdentityProvider =
+        Prelude.Nothing
+    }
+
+-- | An object that details an Active Directory identity provider.
+identityProvider_activeDirectoryIdentityProvider :: Lens.Lens' IdentityProvider (Prelude.Maybe ActiveDirectoryIdentityProvider)
+identityProvider_activeDirectoryIdentityProvider = Lens.lens (\IdentityProvider' {activeDirectoryIdentityProvider} -> activeDirectoryIdentityProvider) (\s@IdentityProvider' {} a -> s {activeDirectoryIdentityProvider = a} :: IdentityProvider)
+
+instance Data.FromJSON IdentityProvider where
+  parseJSON =
+    Data.withObject
+      "IdentityProvider"
+      ( \x ->
+          IdentityProvider'
+            Prelude.<$> (x Data..:? "ActiveDirectoryIdentityProvider")
+      )
+
+instance Prelude.Hashable IdentityProvider where
+  hashWithSalt _salt IdentityProvider' {..} =
+    _salt
+      `Prelude.hashWithSalt` activeDirectoryIdentityProvider
+
+instance Prelude.NFData IdentityProvider where
+  rnf IdentityProvider' {..} =
+    Prelude.rnf activeDirectoryIdentityProvider
+
+instance Data.ToJSON IdentityProvider where
+  toJSON IdentityProvider' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ActiveDirectoryIdentityProvider" Data..=)
+              Prelude.<$> activeDirectoryIdentityProvider
+          ]
+      )
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/Types/IdentityProviderSummary.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/IdentityProviderSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/IdentityProviderSummary.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LicenseManagerUserSubscriptions.Types.IdentityProviderSummary
+-- 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.LicenseManagerUserSubscriptions.Types.IdentityProviderSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types.IdentityProvider
+import Amazonka.LicenseManagerUserSubscriptions.Types.Settings
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes an identity provider.
+--
+-- /See:/ 'newIdentityProviderSummary' smart constructor.
+data IdentityProviderSummary = IdentityProviderSummary'
+  { -- | The failure message associated with an identity provider.
+    failureMessage :: Prelude.Maybe Prelude.Text,
+    -- | An object that specifies details for the identity provider.
+    identityProvider :: IdentityProvider,
+    -- | The name of the user-based subscription product.
+    product :: Prelude.Text,
+    -- | An object that details the registered identity provider’s product
+    -- related configuration settings such as the subnets to provision VPC
+    -- endpoints.
+    settings :: Settings,
+    -- | The status of an identity provider.
+    status :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IdentityProviderSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'failureMessage', 'identityProviderSummary_failureMessage' - The failure message associated with an identity provider.
+--
+-- 'identityProvider', 'identityProviderSummary_identityProvider' - An object that specifies details for the identity provider.
+--
+-- 'product', 'identityProviderSummary_product' - The name of the user-based subscription product.
+--
+-- 'settings', 'identityProviderSummary_settings' - An object that details the registered identity provider’s product
+-- related configuration settings such as the subnets to provision VPC
+-- endpoints.
+--
+-- 'status', 'identityProviderSummary_status' - The status of an identity provider.
+newIdentityProviderSummary ::
+  -- | 'identityProvider'
+  IdentityProvider ->
+  -- | 'product'
+  Prelude.Text ->
+  -- | 'settings'
+  Settings ->
+  -- | 'status'
+  Prelude.Text ->
+  IdentityProviderSummary
+newIdentityProviderSummary
+  pIdentityProvider_
+  pProduct_
+  pSettings_
+  pStatus_ =
+    IdentityProviderSummary'
+      { failureMessage =
+          Prelude.Nothing,
+        identityProvider = pIdentityProvider_,
+        product = pProduct_,
+        settings = pSettings_,
+        status = pStatus_
+      }
+
+-- | The failure message associated with an identity provider.
+identityProviderSummary_failureMessage :: Lens.Lens' IdentityProviderSummary (Prelude.Maybe Prelude.Text)
+identityProviderSummary_failureMessage = Lens.lens (\IdentityProviderSummary' {failureMessage} -> failureMessage) (\s@IdentityProviderSummary' {} a -> s {failureMessage = a} :: IdentityProviderSummary)
+
+-- | An object that specifies details for the identity provider.
+identityProviderSummary_identityProvider :: Lens.Lens' IdentityProviderSummary IdentityProvider
+identityProviderSummary_identityProvider = Lens.lens (\IdentityProviderSummary' {identityProvider} -> identityProvider) (\s@IdentityProviderSummary' {} a -> s {identityProvider = a} :: IdentityProviderSummary)
+
+-- | The name of the user-based subscription product.
+identityProviderSummary_product :: Lens.Lens' IdentityProviderSummary Prelude.Text
+identityProviderSummary_product = Lens.lens (\IdentityProviderSummary' {product} -> product) (\s@IdentityProviderSummary' {} a -> s {product = a} :: IdentityProviderSummary)
+
+-- | An object that details the registered identity provider’s product
+-- related configuration settings such as the subnets to provision VPC
+-- endpoints.
+identityProviderSummary_settings :: Lens.Lens' IdentityProviderSummary Settings
+identityProviderSummary_settings = Lens.lens (\IdentityProviderSummary' {settings} -> settings) (\s@IdentityProviderSummary' {} a -> s {settings = a} :: IdentityProviderSummary)
+
+-- | The status of an identity provider.
+identityProviderSummary_status :: Lens.Lens' IdentityProviderSummary Prelude.Text
+identityProviderSummary_status = Lens.lens (\IdentityProviderSummary' {status} -> status) (\s@IdentityProviderSummary' {} a -> s {status = a} :: IdentityProviderSummary)
+
+instance Data.FromJSON IdentityProviderSummary where
+  parseJSON =
+    Data.withObject
+      "IdentityProviderSummary"
+      ( \x ->
+          IdentityProviderSummary'
+            Prelude.<$> (x Data..:? "FailureMessage")
+            Prelude.<*> (x Data..: "IdentityProvider")
+            Prelude.<*> (x Data..: "Product")
+            Prelude.<*> (x Data..: "Settings")
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance Prelude.Hashable IdentityProviderSummary where
+  hashWithSalt _salt IdentityProviderSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` failureMessage
+      `Prelude.hashWithSalt` identityProvider
+      `Prelude.hashWithSalt` product
+      `Prelude.hashWithSalt` settings
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData IdentityProviderSummary where
+  rnf IdentityProviderSummary' {..} =
+    Prelude.rnf failureMessage
+      `Prelude.seq` Prelude.rnf identityProvider
+      `Prelude.seq` Prelude.rnf product
+      `Prelude.seq` Prelude.rnf settings
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/Types/InstanceSummary.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/InstanceSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/InstanceSummary.hs
@@ -0,0 +1,125 @@
+{-# 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.LicenseManagerUserSubscriptions.Types.InstanceSummary
+-- 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.LicenseManagerUserSubscriptions.Types.InstanceSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes an EC2 instance providing user-based subscriptions.
+--
+-- /See:/ 'newInstanceSummary' smart constructor.
+data InstanceSummary = InstanceSummary'
+  { -- | The date of the last status check.
+    lastStatusCheckDate :: Prelude.Maybe Prelude.Text,
+    -- | The status message for an EC2 instance.
+    statusMessage :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the EC2 instance, which provides user-based subscriptions.
+    instanceId :: Prelude.Text,
+    -- | A list of provided user-based subscription products.
+    products :: [Prelude.Text],
+    -- | The status of an EC2 instance resource.
+    status :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InstanceSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lastStatusCheckDate', 'instanceSummary_lastStatusCheckDate' - The date of the last status check.
+--
+-- 'statusMessage', 'instanceSummary_statusMessage' - The status message for an EC2 instance.
+--
+-- 'instanceId', 'instanceSummary_instanceId' - The ID of the EC2 instance, which provides user-based subscriptions.
+--
+-- 'products', 'instanceSummary_products' - A list of provided user-based subscription products.
+--
+-- 'status', 'instanceSummary_status' - The status of an EC2 instance resource.
+newInstanceSummary ::
+  -- | 'instanceId'
+  Prelude.Text ->
+  -- | 'status'
+  Prelude.Text ->
+  InstanceSummary
+newInstanceSummary pInstanceId_ pStatus_ =
+  InstanceSummary'
+    { lastStatusCheckDate =
+        Prelude.Nothing,
+      statusMessage = Prelude.Nothing,
+      instanceId = pInstanceId_,
+      products = Prelude.mempty,
+      status = pStatus_
+    }
+
+-- | The date of the last status check.
+instanceSummary_lastStatusCheckDate :: Lens.Lens' InstanceSummary (Prelude.Maybe Prelude.Text)
+instanceSummary_lastStatusCheckDate = Lens.lens (\InstanceSummary' {lastStatusCheckDate} -> lastStatusCheckDate) (\s@InstanceSummary' {} a -> s {lastStatusCheckDate = a} :: InstanceSummary)
+
+-- | The status message for an EC2 instance.
+instanceSummary_statusMessage :: Lens.Lens' InstanceSummary (Prelude.Maybe Prelude.Text)
+instanceSummary_statusMessage = Lens.lens (\InstanceSummary' {statusMessage} -> statusMessage) (\s@InstanceSummary' {} a -> s {statusMessage = a} :: InstanceSummary)
+
+-- | The ID of the EC2 instance, which provides user-based subscriptions.
+instanceSummary_instanceId :: Lens.Lens' InstanceSummary Prelude.Text
+instanceSummary_instanceId = Lens.lens (\InstanceSummary' {instanceId} -> instanceId) (\s@InstanceSummary' {} a -> s {instanceId = a} :: InstanceSummary)
+
+-- | A list of provided user-based subscription products.
+instanceSummary_products :: Lens.Lens' InstanceSummary [Prelude.Text]
+instanceSummary_products = Lens.lens (\InstanceSummary' {products} -> products) (\s@InstanceSummary' {} a -> s {products = a} :: InstanceSummary) Prelude.. Lens.coerced
+
+-- | The status of an EC2 instance resource.
+instanceSummary_status :: Lens.Lens' InstanceSummary Prelude.Text
+instanceSummary_status = Lens.lens (\InstanceSummary' {status} -> status) (\s@InstanceSummary' {} a -> s {status = a} :: InstanceSummary)
+
+instance Data.FromJSON InstanceSummary where
+  parseJSON =
+    Data.withObject
+      "InstanceSummary"
+      ( \x ->
+          InstanceSummary'
+            Prelude.<$> (x Data..:? "LastStatusCheckDate")
+            Prelude.<*> (x Data..:? "StatusMessage")
+            Prelude.<*> (x Data..: "InstanceId")
+            Prelude.<*> (x Data..:? "Products" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance Prelude.Hashable InstanceSummary where
+  hashWithSalt _salt InstanceSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` lastStatusCheckDate
+      `Prelude.hashWithSalt` statusMessage
+      `Prelude.hashWithSalt` instanceId
+      `Prelude.hashWithSalt` products
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData InstanceSummary where
+  rnf InstanceSummary' {..} =
+    Prelude.rnf lastStatusCheckDate
+      `Prelude.seq` Prelude.rnf statusMessage
+      `Prelude.seq` Prelude.rnf instanceId
+      `Prelude.seq` Prelude.rnf products
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/Types/InstanceUserSummary.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/InstanceUserSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/InstanceUserSummary.hs
@@ -0,0 +1,170 @@
+{-# 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.LicenseManagerUserSubscriptions.Types.InstanceUserSummary
+-- 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.LicenseManagerUserSubscriptions.Types.InstanceUserSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types.IdentityProvider
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes users of an EC2 instance providing user-based subscriptions.
+--
+-- /See:/ 'newInstanceUserSummary' smart constructor.
+data InstanceUserSummary = InstanceUserSummary'
+  { -- | The date a user was associated with an EC2 instance.
+    associationDate :: Prelude.Maybe Prelude.Text,
+    -- | The date a user was disassociated from an EC2 instance.
+    disassociationDate :: Prelude.Maybe Prelude.Text,
+    -- | The domain name of the user.
+    domain :: Prelude.Maybe Prelude.Text,
+    -- | The status message for users of an EC2 instance.
+    statusMessage :: Prelude.Maybe Prelude.Text,
+    -- | An object that specifies details for the identity provider.
+    identityProvider :: IdentityProvider,
+    -- | The ID of the EC2 instance, which provides user-based subscriptions.
+    instanceId :: Prelude.Text,
+    -- | The status of a user associated with an EC2 instance.
+    status :: Prelude.Text,
+    -- | The user name from the identity provider for the user.
+    username :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InstanceUserSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'associationDate', 'instanceUserSummary_associationDate' - The date a user was associated with an EC2 instance.
+--
+-- 'disassociationDate', 'instanceUserSummary_disassociationDate' - The date a user was disassociated from an EC2 instance.
+--
+-- 'domain', 'instanceUserSummary_domain' - The domain name of the user.
+--
+-- 'statusMessage', 'instanceUserSummary_statusMessage' - The status message for users of an EC2 instance.
+--
+-- 'identityProvider', 'instanceUserSummary_identityProvider' - An object that specifies details for the identity provider.
+--
+-- 'instanceId', 'instanceUserSummary_instanceId' - The ID of the EC2 instance, which provides user-based subscriptions.
+--
+-- 'status', 'instanceUserSummary_status' - The status of a user associated with an EC2 instance.
+--
+-- 'username', 'instanceUserSummary_username' - The user name from the identity provider for the user.
+newInstanceUserSummary ::
+  -- | 'identityProvider'
+  IdentityProvider ->
+  -- | 'instanceId'
+  Prelude.Text ->
+  -- | 'status'
+  Prelude.Text ->
+  -- | 'username'
+  Prelude.Text ->
+  InstanceUserSummary
+newInstanceUserSummary
+  pIdentityProvider_
+  pInstanceId_
+  pStatus_
+  pUsername_ =
+    InstanceUserSummary'
+      { associationDate =
+          Prelude.Nothing,
+        disassociationDate = Prelude.Nothing,
+        domain = Prelude.Nothing,
+        statusMessage = Prelude.Nothing,
+        identityProvider = pIdentityProvider_,
+        instanceId = pInstanceId_,
+        status = pStatus_,
+        username = pUsername_
+      }
+
+-- | The date a user was associated with an EC2 instance.
+instanceUserSummary_associationDate :: Lens.Lens' InstanceUserSummary (Prelude.Maybe Prelude.Text)
+instanceUserSummary_associationDate = Lens.lens (\InstanceUserSummary' {associationDate} -> associationDate) (\s@InstanceUserSummary' {} a -> s {associationDate = a} :: InstanceUserSummary)
+
+-- | The date a user was disassociated from an EC2 instance.
+instanceUserSummary_disassociationDate :: Lens.Lens' InstanceUserSummary (Prelude.Maybe Prelude.Text)
+instanceUserSummary_disassociationDate = Lens.lens (\InstanceUserSummary' {disassociationDate} -> disassociationDate) (\s@InstanceUserSummary' {} a -> s {disassociationDate = a} :: InstanceUserSummary)
+
+-- | The domain name of the user.
+instanceUserSummary_domain :: Lens.Lens' InstanceUserSummary (Prelude.Maybe Prelude.Text)
+instanceUserSummary_domain = Lens.lens (\InstanceUserSummary' {domain} -> domain) (\s@InstanceUserSummary' {} a -> s {domain = a} :: InstanceUserSummary)
+
+-- | The status message for users of an EC2 instance.
+instanceUserSummary_statusMessage :: Lens.Lens' InstanceUserSummary (Prelude.Maybe Prelude.Text)
+instanceUserSummary_statusMessage = Lens.lens (\InstanceUserSummary' {statusMessage} -> statusMessage) (\s@InstanceUserSummary' {} a -> s {statusMessage = a} :: InstanceUserSummary)
+
+-- | An object that specifies details for the identity provider.
+instanceUserSummary_identityProvider :: Lens.Lens' InstanceUserSummary IdentityProvider
+instanceUserSummary_identityProvider = Lens.lens (\InstanceUserSummary' {identityProvider} -> identityProvider) (\s@InstanceUserSummary' {} a -> s {identityProvider = a} :: InstanceUserSummary)
+
+-- | The ID of the EC2 instance, which provides user-based subscriptions.
+instanceUserSummary_instanceId :: Lens.Lens' InstanceUserSummary Prelude.Text
+instanceUserSummary_instanceId = Lens.lens (\InstanceUserSummary' {instanceId} -> instanceId) (\s@InstanceUserSummary' {} a -> s {instanceId = a} :: InstanceUserSummary)
+
+-- | The status of a user associated with an EC2 instance.
+instanceUserSummary_status :: Lens.Lens' InstanceUserSummary Prelude.Text
+instanceUserSummary_status = Lens.lens (\InstanceUserSummary' {status} -> status) (\s@InstanceUserSummary' {} a -> s {status = a} :: InstanceUserSummary)
+
+-- | The user name from the identity provider for the user.
+instanceUserSummary_username :: Lens.Lens' InstanceUserSummary Prelude.Text
+instanceUserSummary_username = Lens.lens (\InstanceUserSummary' {username} -> username) (\s@InstanceUserSummary' {} a -> s {username = a} :: InstanceUserSummary)
+
+instance Data.FromJSON InstanceUserSummary where
+  parseJSON =
+    Data.withObject
+      "InstanceUserSummary"
+      ( \x ->
+          InstanceUserSummary'
+            Prelude.<$> (x Data..:? "AssociationDate")
+            Prelude.<*> (x Data..:? "DisassociationDate")
+            Prelude.<*> (x Data..:? "Domain")
+            Prelude.<*> (x Data..:? "StatusMessage")
+            Prelude.<*> (x Data..: "IdentityProvider")
+            Prelude.<*> (x Data..: "InstanceId")
+            Prelude.<*> (x Data..: "Status")
+            Prelude.<*> (x Data..: "Username")
+      )
+
+instance Prelude.Hashable InstanceUserSummary where
+  hashWithSalt _salt InstanceUserSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` associationDate
+      `Prelude.hashWithSalt` disassociationDate
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` statusMessage
+      `Prelude.hashWithSalt` identityProvider
+      `Prelude.hashWithSalt` instanceId
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` username
+
+instance Prelude.NFData InstanceUserSummary where
+  rnf InstanceUserSummary' {..} =
+    Prelude.rnf associationDate
+      `Prelude.seq` Prelude.rnf disassociationDate
+      `Prelude.seq` Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf statusMessage
+      `Prelude.seq` Prelude.rnf identityProvider
+      `Prelude.seq` Prelude.rnf instanceId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf username
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/Types/ProductUserSummary.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/ProductUserSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/ProductUserSummary.hs
@@ -0,0 +1,169 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LicenseManagerUserSubscriptions.Types.ProductUserSummary
+-- 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.LicenseManagerUserSubscriptions.Types.ProductUserSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types.IdentityProvider
+import qualified Amazonka.Prelude as Prelude
+
+-- | The summary of the user-based subscription products for a user.
+--
+-- /See:/ 'newProductUserSummary' smart constructor.
+data ProductUserSummary = ProductUserSummary'
+  { -- | The domain name of the user.
+    domain :: Prelude.Maybe Prelude.Text,
+    -- | The status message for a product for a user.
+    statusMessage :: Prelude.Maybe Prelude.Text,
+    -- | The end date of a subscription.
+    subscriptionEndDate :: Prelude.Maybe Prelude.Text,
+    -- | The start date of a subscription.
+    subscriptionStartDate :: Prelude.Maybe Prelude.Text,
+    -- | An object that specifies details for the identity provider.
+    identityProvider :: IdentityProvider,
+    -- | The name of the user-based subscription product.
+    product :: Prelude.Text,
+    -- | The status of a product for a user.
+    status :: Prelude.Text,
+    -- | The user name from the identity provider of the user.
+    username :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProductUserSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domain', 'productUserSummary_domain' - The domain name of the user.
+--
+-- 'statusMessage', 'productUserSummary_statusMessage' - The status message for a product for a user.
+--
+-- 'subscriptionEndDate', 'productUserSummary_subscriptionEndDate' - The end date of a subscription.
+--
+-- 'subscriptionStartDate', 'productUserSummary_subscriptionStartDate' - The start date of a subscription.
+--
+-- 'identityProvider', 'productUserSummary_identityProvider' - An object that specifies details for the identity provider.
+--
+-- 'product', 'productUserSummary_product' - The name of the user-based subscription product.
+--
+-- 'status', 'productUserSummary_status' - The status of a product for a user.
+--
+-- 'username', 'productUserSummary_username' - The user name from the identity provider of the user.
+newProductUserSummary ::
+  -- | 'identityProvider'
+  IdentityProvider ->
+  -- | 'product'
+  Prelude.Text ->
+  -- | 'status'
+  Prelude.Text ->
+  -- | 'username'
+  Prelude.Text ->
+  ProductUserSummary
+newProductUserSummary
+  pIdentityProvider_
+  pProduct_
+  pStatus_
+  pUsername_ =
+    ProductUserSummary'
+      { domain = Prelude.Nothing,
+        statusMessage = Prelude.Nothing,
+        subscriptionEndDate = Prelude.Nothing,
+        subscriptionStartDate = Prelude.Nothing,
+        identityProvider = pIdentityProvider_,
+        product = pProduct_,
+        status = pStatus_,
+        username = pUsername_
+      }
+
+-- | The domain name of the user.
+productUserSummary_domain :: Lens.Lens' ProductUserSummary (Prelude.Maybe Prelude.Text)
+productUserSummary_domain = Lens.lens (\ProductUserSummary' {domain} -> domain) (\s@ProductUserSummary' {} a -> s {domain = a} :: ProductUserSummary)
+
+-- | The status message for a product for a user.
+productUserSummary_statusMessage :: Lens.Lens' ProductUserSummary (Prelude.Maybe Prelude.Text)
+productUserSummary_statusMessage = Lens.lens (\ProductUserSummary' {statusMessage} -> statusMessage) (\s@ProductUserSummary' {} a -> s {statusMessage = a} :: ProductUserSummary)
+
+-- | The end date of a subscription.
+productUserSummary_subscriptionEndDate :: Lens.Lens' ProductUserSummary (Prelude.Maybe Prelude.Text)
+productUserSummary_subscriptionEndDate = Lens.lens (\ProductUserSummary' {subscriptionEndDate} -> subscriptionEndDate) (\s@ProductUserSummary' {} a -> s {subscriptionEndDate = a} :: ProductUserSummary)
+
+-- | The start date of a subscription.
+productUserSummary_subscriptionStartDate :: Lens.Lens' ProductUserSummary (Prelude.Maybe Prelude.Text)
+productUserSummary_subscriptionStartDate = Lens.lens (\ProductUserSummary' {subscriptionStartDate} -> subscriptionStartDate) (\s@ProductUserSummary' {} a -> s {subscriptionStartDate = a} :: ProductUserSummary)
+
+-- | An object that specifies details for the identity provider.
+productUserSummary_identityProvider :: Lens.Lens' ProductUserSummary IdentityProvider
+productUserSummary_identityProvider = Lens.lens (\ProductUserSummary' {identityProvider} -> identityProvider) (\s@ProductUserSummary' {} a -> s {identityProvider = a} :: ProductUserSummary)
+
+-- | The name of the user-based subscription product.
+productUserSummary_product :: Lens.Lens' ProductUserSummary Prelude.Text
+productUserSummary_product = Lens.lens (\ProductUserSummary' {product} -> product) (\s@ProductUserSummary' {} a -> s {product = a} :: ProductUserSummary)
+
+-- | The status of a product for a user.
+productUserSummary_status :: Lens.Lens' ProductUserSummary Prelude.Text
+productUserSummary_status = Lens.lens (\ProductUserSummary' {status} -> status) (\s@ProductUserSummary' {} a -> s {status = a} :: ProductUserSummary)
+
+-- | The user name from the identity provider of the user.
+productUserSummary_username :: Lens.Lens' ProductUserSummary Prelude.Text
+productUserSummary_username = Lens.lens (\ProductUserSummary' {username} -> username) (\s@ProductUserSummary' {} a -> s {username = a} :: ProductUserSummary)
+
+instance Data.FromJSON ProductUserSummary where
+  parseJSON =
+    Data.withObject
+      "ProductUserSummary"
+      ( \x ->
+          ProductUserSummary'
+            Prelude.<$> (x Data..:? "Domain")
+            Prelude.<*> (x Data..:? "StatusMessage")
+            Prelude.<*> (x Data..:? "SubscriptionEndDate")
+            Prelude.<*> (x Data..:? "SubscriptionStartDate")
+            Prelude.<*> (x Data..: "IdentityProvider")
+            Prelude.<*> (x Data..: "Product")
+            Prelude.<*> (x Data..: "Status")
+            Prelude.<*> (x Data..: "Username")
+      )
+
+instance Prelude.Hashable ProductUserSummary where
+  hashWithSalt _salt ProductUserSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` domain
+      `Prelude.hashWithSalt` statusMessage
+      `Prelude.hashWithSalt` subscriptionEndDate
+      `Prelude.hashWithSalt` subscriptionStartDate
+      `Prelude.hashWithSalt` identityProvider
+      `Prelude.hashWithSalt` product
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` username
+
+instance Prelude.NFData ProductUserSummary where
+  rnf ProductUserSummary' {..} =
+    Prelude.rnf domain
+      `Prelude.seq` Prelude.rnf statusMessage
+      `Prelude.seq` Prelude.rnf subscriptionEndDate
+      `Prelude.seq` Prelude.rnf subscriptionStartDate
+      `Prelude.seq` Prelude.rnf identityProvider
+      `Prelude.seq` Prelude.rnf product
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf username
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/Types/Settings.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/Settings.hs
@@ -0,0 +1,108 @@
+{-# 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.LicenseManagerUserSubscriptions.Types.Settings
+-- 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.LicenseManagerUserSubscriptions.Types.Settings where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The registered identity provider’s product related configuration
+-- settings such as the subnets to provision VPC endpoints, and the
+-- security group ID that is associated with the VPC endpoints. The
+-- security group should permit inbound TCP port 1688 communication from
+-- resources in the VPC.
+--
+-- /See:/ 'newSettings' smart constructor.
+data Settings = Settings'
+  { -- | A security group ID that allows inbound TCP port 1688 communication
+    -- between resources in your VPC and the VPC endpoint for activation
+    -- servers.
+    securityGroupId :: Prelude.Text,
+    -- | The subnets defined for the registered identity provider.
+    subnets :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Settings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'securityGroupId', 'settings_securityGroupId' - A security group ID that allows inbound TCP port 1688 communication
+-- between resources in your VPC and the VPC endpoint for activation
+-- servers.
+--
+-- 'subnets', 'settings_subnets' - The subnets defined for the registered identity provider.
+newSettings ::
+  -- | 'securityGroupId'
+  Prelude.Text ->
+  -- | 'subnets'
+  Prelude.NonEmpty Prelude.Text ->
+  Settings
+newSettings pSecurityGroupId_ pSubnets_ =
+  Settings'
+    { securityGroupId = pSecurityGroupId_,
+      subnets = Lens.coerced Lens.# pSubnets_
+    }
+
+-- | A security group ID that allows inbound TCP port 1688 communication
+-- between resources in your VPC and the VPC endpoint for activation
+-- servers.
+settings_securityGroupId :: Lens.Lens' Settings Prelude.Text
+settings_securityGroupId = Lens.lens (\Settings' {securityGroupId} -> securityGroupId) (\s@Settings' {} a -> s {securityGroupId = a} :: Settings)
+
+-- | The subnets defined for the registered identity provider.
+settings_subnets :: Lens.Lens' Settings (Prelude.NonEmpty Prelude.Text)
+settings_subnets = Lens.lens (\Settings' {subnets} -> subnets) (\s@Settings' {} a -> s {subnets = a} :: Settings) Prelude.. Lens.coerced
+
+instance Data.FromJSON Settings where
+  parseJSON =
+    Data.withObject
+      "Settings"
+      ( \x ->
+          Settings'
+            Prelude.<$> (x Data..: "SecurityGroupId")
+            Prelude.<*> (x Data..: "Subnets")
+      )
+
+instance Prelude.Hashable Settings where
+  hashWithSalt _salt Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` securityGroupId
+      `Prelude.hashWithSalt` subnets
+
+instance Prelude.NFData Settings where
+  rnf Settings' {..} =
+    Prelude.rnf securityGroupId
+      `Prelude.seq` Prelude.rnf subnets
+
+instance Data.ToJSON Settings where
+  toJSON Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("SecurityGroupId" Data..= securityGroupId),
+            Prelude.Just ("Subnets" Data..= subnets)
+          ]
+      )
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/Types/UpdateSettings.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/UpdateSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/Types/UpdateSettings.hs
@@ -0,0 +1,107 @@
+{-# 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.LicenseManagerUserSubscriptions.Types.UpdateSettings
+-- 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.LicenseManagerUserSubscriptions.Types.UpdateSettings 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
+
+-- | Updates the registered identity provider’s product related configuration
+-- settings such as the subnets to provision VPC endpoints.
+--
+-- /See:/ 'newUpdateSettings' smart constructor.
+data UpdateSettings = UpdateSettings'
+  { -- | A security group ID that allows inbound TCP port 1688 communication
+    -- between resources in your VPC and the VPC endpoints for activation
+    -- servers.
+    securityGroupId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of one or more subnets in which License Manager will create a VPC
+    -- endpoint for products that require connectivity to activation servers.
+    addSubnets :: [Prelude.Text],
+    -- | The ID of one or more subnets to remove.
+    removeSubnets :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'securityGroupId', 'updateSettings_securityGroupId' - A security group ID that allows inbound TCP port 1688 communication
+-- between resources in your VPC and the VPC endpoints for activation
+-- servers.
+--
+-- 'addSubnets', 'updateSettings_addSubnets' - The ID of one or more subnets in which License Manager will create a VPC
+-- endpoint for products that require connectivity to activation servers.
+--
+-- 'removeSubnets', 'updateSettings_removeSubnets' - The ID of one or more subnets to remove.
+newUpdateSettings ::
+  UpdateSettings
+newUpdateSettings =
+  UpdateSettings'
+    { securityGroupId = Prelude.Nothing,
+      addSubnets = Prelude.mempty,
+      removeSubnets = Prelude.mempty
+    }
+
+-- | A security group ID that allows inbound TCP port 1688 communication
+-- between resources in your VPC and the VPC endpoints for activation
+-- servers.
+updateSettings_securityGroupId :: Lens.Lens' UpdateSettings (Prelude.Maybe Prelude.Text)
+updateSettings_securityGroupId = Lens.lens (\UpdateSettings' {securityGroupId} -> securityGroupId) (\s@UpdateSettings' {} a -> s {securityGroupId = a} :: UpdateSettings)
+
+-- | The ID of one or more subnets in which License Manager will create a VPC
+-- endpoint for products that require connectivity to activation servers.
+updateSettings_addSubnets :: Lens.Lens' UpdateSettings [Prelude.Text]
+updateSettings_addSubnets = Lens.lens (\UpdateSettings' {addSubnets} -> addSubnets) (\s@UpdateSettings' {} a -> s {addSubnets = a} :: UpdateSettings) Prelude.. Lens.coerced
+
+-- | The ID of one or more subnets to remove.
+updateSettings_removeSubnets :: Lens.Lens' UpdateSettings [Prelude.Text]
+updateSettings_removeSubnets = Lens.lens (\UpdateSettings' {removeSubnets} -> removeSubnets) (\s@UpdateSettings' {} a -> s {removeSubnets = a} :: UpdateSettings) Prelude.. Lens.coerced
+
+instance Prelude.Hashable UpdateSettings where
+  hashWithSalt _salt UpdateSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` securityGroupId
+      `Prelude.hashWithSalt` addSubnets
+      `Prelude.hashWithSalt` removeSubnets
+
+instance Prelude.NFData UpdateSettings where
+  rnf UpdateSettings' {..} =
+    Prelude.rnf securityGroupId
+      `Prelude.seq` Prelude.rnf addSubnets
+      `Prelude.seq` Prelude.rnf removeSubnets
+
+instance Data.ToJSON UpdateSettings where
+  toJSON UpdateSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SecurityGroupId" Data..=)
+              Prelude.<$> securityGroupId,
+            Prelude.Just ("AddSubnets" Data..= addSubnets),
+            Prelude.Just
+              ("RemoveSubnets" Data..= removeSubnets)
+          ]
+      )
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/UpdateIdentityProviderSettings.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/UpdateIdentityProviderSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/UpdateIdentityProviderSettings.hs
@@ -0,0 +1,252 @@
+{-# 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.LicenseManagerUserSubscriptions.UpdateIdentityProviderSettings
+-- 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 additional product configuration settings for the registered
+-- identity provider.
+module Amazonka.LicenseManagerUserSubscriptions.UpdateIdentityProviderSettings
+  ( -- * Creating a Request
+    UpdateIdentityProviderSettings (..),
+    newUpdateIdentityProviderSettings,
+
+    -- * Request Lenses
+    updateIdentityProviderSettings_identityProvider,
+    updateIdentityProviderSettings_product,
+    updateIdentityProviderSettings_updateSettings,
+
+    -- * Destructuring the Response
+    UpdateIdentityProviderSettingsResponse (..),
+    newUpdateIdentityProviderSettingsResponse,
+
+    -- * Response Lenses
+    updateIdentityProviderSettingsResponse_httpStatus,
+    updateIdentityProviderSettingsResponse_identityProviderSummary,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateIdentityProviderSettings' smart constructor.
+data UpdateIdentityProviderSettings = UpdateIdentityProviderSettings'
+  { identityProvider :: IdentityProvider,
+    -- | The name of the user-based subscription product.
+    product :: Prelude.Text,
+    -- | Updates the registered identity provider’s product related configuration
+    -- settings. You can update any combination of settings in a single
+    -- operation such as the:
+    --
+    -- -   Subnets which you want to add to provision VPC endpoints.
+    --
+    -- -   Subnets which you want to remove the VPC endpoints from.
+    --
+    -- -   Security group ID which permits traffic to the VPC endpoints.
+    updateSettings :: UpdateSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateIdentityProviderSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityProvider', 'updateIdentityProviderSettings_identityProvider' - Undocumented member.
+--
+-- 'product', 'updateIdentityProviderSettings_product' - The name of the user-based subscription product.
+--
+-- 'updateSettings', 'updateIdentityProviderSettings_updateSettings' - Updates the registered identity provider’s product related configuration
+-- settings. You can update any combination of settings in a single
+-- operation such as the:
+--
+-- -   Subnets which you want to add to provision VPC endpoints.
+--
+-- -   Subnets which you want to remove the VPC endpoints from.
+--
+-- -   Security group ID which permits traffic to the VPC endpoints.
+newUpdateIdentityProviderSettings ::
+  -- | 'identityProvider'
+  IdentityProvider ->
+  -- | 'product'
+  Prelude.Text ->
+  -- | 'updateSettings'
+  UpdateSettings ->
+  UpdateIdentityProviderSettings
+newUpdateIdentityProviderSettings
+  pIdentityProvider_
+  pProduct_
+  pUpdateSettings_ =
+    UpdateIdentityProviderSettings'
+      { identityProvider =
+          pIdentityProvider_,
+        product = pProduct_,
+        updateSettings = pUpdateSettings_
+      }
+
+-- | Undocumented member.
+updateIdentityProviderSettings_identityProvider :: Lens.Lens' UpdateIdentityProviderSettings IdentityProvider
+updateIdentityProviderSettings_identityProvider = Lens.lens (\UpdateIdentityProviderSettings' {identityProvider} -> identityProvider) (\s@UpdateIdentityProviderSettings' {} a -> s {identityProvider = a} :: UpdateIdentityProviderSettings)
+
+-- | The name of the user-based subscription product.
+updateIdentityProviderSettings_product :: Lens.Lens' UpdateIdentityProviderSettings Prelude.Text
+updateIdentityProviderSettings_product = Lens.lens (\UpdateIdentityProviderSettings' {product} -> product) (\s@UpdateIdentityProviderSettings' {} a -> s {product = a} :: UpdateIdentityProviderSettings)
+
+-- | Updates the registered identity provider’s product related configuration
+-- settings. You can update any combination of settings in a single
+-- operation such as the:
+--
+-- -   Subnets which you want to add to provision VPC endpoints.
+--
+-- -   Subnets which you want to remove the VPC endpoints from.
+--
+-- -   Security group ID which permits traffic to the VPC endpoints.
+updateIdentityProviderSettings_updateSettings :: Lens.Lens' UpdateIdentityProviderSettings UpdateSettings
+updateIdentityProviderSettings_updateSettings = Lens.lens (\UpdateIdentityProviderSettings' {updateSettings} -> updateSettings) (\s@UpdateIdentityProviderSettings' {} a -> s {updateSettings = a} :: UpdateIdentityProviderSettings)
+
+instance
+  Core.AWSRequest
+    UpdateIdentityProviderSettings
+  where
+  type
+    AWSResponse UpdateIdentityProviderSettings =
+      UpdateIdentityProviderSettingsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateIdentityProviderSettingsResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "IdentityProviderSummary")
+      )
+
+instance
+  Prelude.Hashable
+    UpdateIdentityProviderSettings
+  where
+  hashWithSalt
+    _salt
+    UpdateIdentityProviderSettings' {..} =
+      _salt
+        `Prelude.hashWithSalt` identityProvider
+        `Prelude.hashWithSalt` product
+        `Prelude.hashWithSalt` updateSettings
+
+instance
+  Prelude.NFData
+    UpdateIdentityProviderSettings
+  where
+  rnf UpdateIdentityProviderSettings' {..} =
+    Prelude.rnf identityProvider
+      `Prelude.seq` Prelude.rnf product
+      `Prelude.seq` Prelude.rnf updateSettings
+
+instance
+  Data.ToHeaders
+    UpdateIdentityProviderSettings
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateIdentityProviderSettings where
+  toJSON UpdateIdentityProviderSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("IdentityProvider" Data..= identityProvider),
+            Prelude.Just ("Product" Data..= product),
+            Prelude.Just
+              ("UpdateSettings" Data..= updateSettings)
+          ]
+      )
+
+instance Data.ToPath UpdateIdentityProviderSettings where
+  toPath =
+    Prelude.const
+      "/identity-provider/UpdateIdentityProviderSettings"
+
+instance Data.ToQuery UpdateIdentityProviderSettings where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateIdentityProviderSettingsResponse' smart constructor.
+data UpdateIdentityProviderSettingsResponse = UpdateIdentityProviderSettingsResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    identityProviderSummary :: IdentityProviderSummary
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateIdentityProviderSettingsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateIdentityProviderSettingsResponse_httpStatus' - The response's http status code.
+--
+-- 'identityProviderSummary', 'updateIdentityProviderSettingsResponse_identityProviderSummary' - Undocumented member.
+newUpdateIdentityProviderSettingsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'identityProviderSummary'
+  IdentityProviderSummary ->
+  UpdateIdentityProviderSettingsResponse
+newUpdateIdentityProviderSettingsResponse
+  pHttpStatus_
+  pIdentityProviderSummary_ =
+    UpdateIdentityProviderSettingsResponse'
+      { httpStatus =
+          pHttpStatus_,
+        identityProviderSummary =
+          pIdentityProviderSummary_
+      }
+
+-- | The response's http status code.
+updateIdentityProviderSettingsResponse_httpStatus :: Lens.Lens' UpdateIdentityProviderSettingsResponse Prelude.Int
+updateIdentityProviderSettingsResponse_httpStatus = Lens.lens (\UpdateIdentityProviderSettingsResponse' {httpStatus} -> httpStatus) (\s@UpdateIdentityProviderSettingsResponse' {} a -> s {httpStatus = a} :: UpdateIdentityProviderSettingsResponse)
+
+-- | Undocumented member.
+updateIdentityProviderSettingsResponse_identityProviderSummary :: Lens.Lens' UpdateIdentityProviderSettingsResponse IdentityProviderSummary
+updateIdentityProviderSettingsResponse_identityProviderSummary = Lens.lens (\UpdateIdentityProviderSettingsResponse' {identityProviderSummary} -> identityProviderSummary) (\s@UpdateIdentityProviderSettingsResponse' {} a -> s {identityProviderSummary = a} :: UpdateIdentityProviderSettingsResponse)
+
+instance
+  Prelude.NFData
+    UpdateIdentityProviderSettingsResponse
+  where
+  rnf UpdateIdentityProviderSettingsResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf identityProviderSummary
diff --git a/gen/Amazonka/LicenseManagerUserSubscriptions/Waiters.hs b/gen/Amazonka/LicenseManagerUserSubscriptions/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LicenseManagerUserSubscriptions/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.LicenseManagerUserSubscriptions.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.LicenseManagerUserSubscriptions.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LicenseManagerUserSubscriptions.Lens
+import Amazonka.LicenseManagerUserSubscriptions.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.LicenseManagerUserSubscriptions
+import Test.Amazonka.LicenseManagerUserSubscriptions.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "LicenseManagerUserSubscriptions"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/LicenseManagerUserSubscriptions.hs b/test/Test/Amazonka/Gen/LicenseManagerUserSubscriptions.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/LicenseManagerUserSubscriptions.hs
@@ -0,0 +1,258 @@
+{-# 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.LicenseManagerUserSubscriptions
+-- 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.LicenseManagerUserSubscriptions where
+
+import Amazonka.LicenseManagerUserSubscriptions
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.LicenseManagerUserSubscriptions.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"
+--         [ requestAssociateUser $
+--             newAssociateUser
+--
+--         , requestDeregisterIdentityProvider $
+--             newDeregisterIdentityProvider
+--
+--         , requestDisassociateUser $
+--             newDisassociateUser
+--
+--         , requestListIdentityProviders $
+--             newListIdentityProviders
+--
+--         , requestListInstances $
+--             newListInstances
+--
+--         , requestListProductSubscriptions $
+--             newListProductSubscriptions
+--
+--         , requestListUserAssociations $
+--             newListUserAssociations
+--
+--         , requestRegisterIdentityProvider $
+--             newRegisterIdentityProvider
+--
+--         , requestStartProductSubscription $
+--             newStartProductSubscription
+--
+--         , requestStopProductSubscription $
+--             newStopProductSubscription
+--
+--         , requestUpdateIdentityProviderSettings $
+--             newUpdateIdentityProviderSettings
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAssociateUser $
+--             newAssociateUserResponse
+--
+--         , responseDeregisterIdentityProvider $
+--             newDeregisterIdentityProviderResponse
+--
+--         , responseDisassociateUser $
+--             newDisassociateUserResponse
+--
+--         , responseListIdentityProviders $
+--             newListIdentityProvidersResponse
+--
+--         , responseListInstances $
+--             newListInstancesResponse
+--
+--         , responseListProductSubscriptions $
+--             newListProductSubscriptionsResponse
+--
+--         , responseListUserAssociations $
+--             newListUserAssociationsResponse
+--
+--         , responseRegisterIdentityProvider $
+--             newRegisterIdentityProviderResponse
+--
+--         , responseStartProductSubscription $
+--             newStartProductSubscriptionResponse
+--
+--         , responseStopProductSubscription $
+--             newStopProductSubscriptionResponse
+--
+--         , responseUpdateIdentityProviderSettings $
+--             newUpdateIdentityProviderSettingsResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAssociateUser :: AssociateUser -> TestTree
+requestAssociateUser =
+  req
+    "AssociateUser"
+    "fixture/AssociateUser.yaml"
+
+requestDeregisterIdentityProvider :: DeregisterIdentityProvider -> TestTree
+requestDeregisterIdentityProvider =
+  req
+    "DeregisterIdentityProvider"
+    "fixture/DeregisterIdentityProvider.yaml"
+
+requestDisassociateUser :: DisassociateUser -> TestTree
+requestDisassociateUser =
+  req
+    "DisassociateUser"
+    "fixture/DisassociateUser.yaml"
+
+requestListIdentityProviders :: ListIdentityProviders -> TestTree
+requestListIdentityProviders =
+  req
+    "ListIdentityProviders"
+    "fixture/ListIdentityProviders.yaml"
+
+requestListInstances :: ListInstances -> TestTree
+requestListInstances =
+  req
+    "ListInstances"
+    "fixture/ListInstances.yaml"
+
+requestListProductSubscriptions :: ListProductSubscriptions -> TestTree
+requestListProductSubscriptions =
+  req
+    "ListProductSubscriptions"
+    "fixture/ListProductSubscriptions.yaml"
+
+requestListUserAssociations :: ListUserAssociations -> TestTree
+requestListUserAssociations =
+  req
+    "ListUserAssociations"
+    "fixture/ListUserAssociations.yaml"
+
+requestRegisterIdentityProvider :: RegisterIdentityProvider -> TestTree
+requestRegisterIdentityProvider =
+  req
+    "RegisterIdentityProvider"
+    "fixture/RegisterIdentityProvider.yaml"
+
+requestStartProductSubscription :: StartProductSubscription -> TestTree
+requestStartProductSubscription =
+  req
+    "StartProductSubscription"
+    "fixture/StartProductSubscription.yaml"
+
+requestStopProductSubscription :: StopProductSubscription -> TestTree
+requestStopProductSubscription =
+  req
+    "StopProductSubscription"
+    "fixture/StopProductSubscription.yaml"
+
+requestUpdateIdentityProviderSettings :: UpdateIdentityProviderSettings -> TestTree
+requestUpdateIdentityProviderSettings =
+  req
+    "UpdateIdentityProviderSettings"
+    "fixture/UpdateIdentityProviderSettings.yaml"
+
+-- Responses
+
+responseAssociateUser :: AssociateUserResponse -> TestTree
+responseAssociateUser =
+  res
+    "AssociateUserResponse"
+    "fixture/AssociateUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateUser)
+
+responseDeregisterIdentityProvider :: DeregisterIdentityProviderResponse -> TestTree
+responseDeregisterIdentityProvider =
+  res
+    "DeregisterIdentityProviderResponse"
+    "fixture/DeregisterIdentityProviderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeregisterIdentityProvider)
+
+responseDisassociateUser :: DisassociateUserResponse -> TestTree
+responseDisassociateUser =
+  res
+    "DisassociateUserResponse"
+    "fixture/DisassociateUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateUser)
+
+responseListIdentityProviders :: ListIdentityProvidersResponse -> TestTree
+responseListIdentityProviders =
+  res
+    "ListIdentityProvidersResponse"
+    "fixture/ListIdentityProvidersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListIdentityProviders)
+
+responseListInstances :: ListInstancesResponse -> TestTree
+responseListInstances =
+  res
+    "ListInstancesResponse"
+    "fixture/ListInstancesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListInstances)
+
+responseListProductSubscriptions :: ListProductSubscriptionsResponse -> TestTree
+responseListProductSubscriptions =
+  res
+    "ListProductSubscriptionsResponse"
+    "fixture/ListProductSubscriptionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListProductSubscriptions)
+
+responseListUserAssociations :: ListUserAssociationsResponse -> TestTree
+responseListUserAssociations =
+  res
+    "ListUserAssociationsResponse"
+    "fixture/ListUserAssociationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListUserAssociations)
+
+responseRegisterIdentityProvider :: RegisterIdentityProviderResponse -> TestTree
+responseRegisterIdentityProvider =
+  res
+    "RegisterIdentityProviderResponse"
+    "fixture/RegisterIdentityProviderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RegisterIdentityProvider)
+
+responseStartProductSubscription :: StartProductSubscriptionResponse -> TestTree
+responseStartProductSubscription =
+  res
+    "StartProductSubscriptionResponse"
+    "fixture/StartProductSubscriptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartProductSubscription)
+
+responseStopProductSubscription :: StopProductSubscriptionResponse -> TestTree
+responseStopProductSubscription =
+  res
+    "StopProductSubscriptionResponse"
+    "fixture/StopProductSubscriptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopProductSubscription)
+
+responseUpdateIdentityProviderSettings :: UpdateIdentityProviderSettingsResponse -> TestTree
+responseUpdateIdentityProviderSettings =
+  res
+    "UpdateIdentityProviderSettingsResponse"
+    "fixture/UpdateIdentityProviderSettingsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateIdentityProviderSettings)
diff --git a/test/Test/Amazonka/LicenseManagerUserSubscriptions.hs b/test/Test/Amazonka/LicenseManagerUserSubscriptions.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/LicenseManagerUserSubscriptions.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.LicenseManagerUserSubscriptions
+-- 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.LicenseManagerUserSubscriptions
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/LicenseManagerUserSubscriptions/Internal.hs b/test/Test/Amazonka/LicenseManagerUserSubscriptions/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/LicenseManagerUserSubscriptions/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.LicenseManagerUserSubscriptions.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.LicenseManagerUserSubscriptions.Internal where
